Apache Web服务器安全配置全攻略(Apache安全配置)

Apache Web服务器安全配置全攻略(Apache安全配置)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

作为最流行的Web服务器。Apache Server提供了较好的安全特性。使其能够应对可能的安全威胁和信息泄漏。

  Apache 服务器的安全特性

  1。 采用选择性访问控制和强制性访问控制的安全策略

  从Apache 或Web的角度来讲。选择性访问控制DAC(Discretionary Access Control)仍是基于用户名和密码的。强制性访问控制MAC(Mandatory Access Control)则是依据发出请求的客户端的IP地址或所在的域号来进行界定的。对于DAC方式。如输入错误。那么用户还有机会更正。从新输入正确的的密码;如果用户通过不了MAC关卡。那么用户将被禁止做进一步的操作。除非服务器作出安全策略调整。否则用户的任何努力都将无济于事。

  2。Apache 的安全模块

  Apache 的一个优势便是其灵活的模块结构。其设计思想也是围绕模块(Modules)概念而展开的。安全模块是Apache Server中的极其重要的组成部分。这些安全模块负责提供Apache Server的访问控制和认证。授权等一系列至关重要的安全服务。

  mod_access模块能够根据访问者的IP地址(或域名。主机名等)来控制对Apache服务器的访问。称之为基于主机的访问控制。

  mod_auth模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和mod_auth_dbm模块则分别将用户信息(如名称。组属和口令等)存于Berkeley-DB及DBM型的小型数据库中。便于管理及提高应用效率。

  mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证。但它相应的需要客户端的支持。

  mod_auth_anon模块的功能和mod_auth的功能类似。只是它允许匿名登录。将用户输入的E-mail地址作为口令。

  SSL(Secure Socket Lager)。被Apache所支持的安全套接字层协议。提供Internet上安全交易服务。如电子商务中的一项安全措施。通过对通讯字节流的加密来防止敏感信息的泄漏。但是。Apache的这种支持是建立在对Apache的API扩展来实现的。相当于一个外部模块。通过与第三方程序的结合提供安全的网上交易支持。

  Apache服务器的安全配置

  Apache具有灵活的设置。所有Apache的安全特性都要经过周密的设计与规划。进行认真地配置才能够实现。Apache服务器的安全配置包括很多层面。有运行环境。认证与授权设置等。Apache的安装配置和运行示例如下:

  1。以Nobody用户运行

  一般情况下。Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权。那么它将给系统的安全构成很大的威胁。应确保Apache Server进程以最可能低的权限用户来运行。通过修改httpd.conf文件中的下列选项。以Nobody用户运行Apache 达到相对安全的目的。

  User nobody

  Group# -1

  2。ServerRoot目录的权限

  为了确保所有的配置是适当的和安全的。需要严格控制Apache 主目录的访问权限。使非超级用户不能修改该目录中的内容。Apache 的主目录对应于Apache Server配置文件httpd.conf的Server Root控制项中。应为:

  Server Root /usr/local/apache

  3。SSI的配置

  在配置文件access.conf 或httpd.conf中的确Options指令处加入Includes NO EXEC选项。用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序。而造成服务器系统的公开化。

  

  Options Includes Noexec

  4。阻止用户修改系统设置

  在Apache 服务器的配置文件中进行以下的设置。阻止用户建立。修改 .htaccess文件。防止用户超越能定义的系统安全特性。

  

  AllowOveride None

  Options None

  Allow from all

  

  然后再分别对特定的目录进行适当的配置。

  5。改变Apache 服务器的确省访问特性

  Apache 的默认设置只能保障一定程度的安全。如果服务器能够通过正常的映射规则找到文件。那么客户端便会获取该文件。如http://local host/~ root/ 将允许用户访问整个文件系统。在服务器文件中加入如下内容:

  

  order deny,ellow

  Deny from all

  

  将禁止对文件系统的缺省访问。

  6。CGI脚本的安全考虑

  CGI脚本是一系列可以通过Web服务器来运行的程序。为了保证系统的安全性。应确保CGI的作者是可信的。对CGI而言。最好将其限制在一个特定的目录下。如cgi-bin之下。便于管理;另外应该保证CGI目录下的文件是不可写的。避免一些欺骗性的程序驻留或混迹其中;如果能够给用户提供一个安全性良好的CGI程序的模块作为参考。也许会减少许多不必要的麻烦和安全隐患;除去CGI目录下的所有非业务应用的脚本。以防异常的信息泄漏。

  以上这些常用的举措可以给Apache Server 一个基本的安全运行环境。显然在具体实施上还要做进一步的细化分解。制定出符合实际应用的安全配置方案。

  Apache Server基于主机的访问控制

  Apache Server默认情况下的安全配置是拒绝一切访问。假定Apache Server内容存放在/usr/local/apache/share 目录下。下面的指令将实现这种设置:

  

  Deny from all

  Allow Override None

  

  则禁止在任一目录下改变认证和访问控制方法。

  同样。可以用特有的命令Deny。Allow指定某些用户可以访问。哪些用户不能访问。提供一定的灵活性。当Deny。Allow一起用时。用命令Order决定Deny和Allow合用的顺序。如下所示:

  1。 拒绝某类地址的用户对服务器的访问权(Deny)

  如:Deny from all

  Deny from test.cnn.com

  Deny from 204.168.190.13

  Deny from 10.10.10.0/255.255.0.0

  2。 允许某类地址的用户对服务器的访问权(Allow)

  如:Allow from all

  Allow from test.cnn.com

  Allow from 204.168.190.13

  Allow from 10.10.10.0/255.255.0.0

  Deny和Allow指令后可以输入多个变量。

  3。简单配置实例:

  Order Allow, Deny

  Allow from all

  Deny from www.test.com

  指想让所有的人访问Apache服务器。但不希望来自www.test.com的任何访问。

  Order Deny, Allow

  Deny from all

  Allow from test.cnn.com

  指不想让所有人访问。但希望给test.cnn.com网站的来访。

  Apache Sever的用户认证与授权

  概括的讲。用户认证就是验证用户的身份的真实性。如用户帐号是否在数据库中。及用户帐号所对应的密码是否正确;用户授权表示检验有效用户是否被许可访问特定的资源。在Apache中。几乎所有的安全模块实际上兼顾这两个方面。从安全的角度来看。用户的认证和授权相当于选择性访问控制。

  建立用户的认证授权需要三个步骤:

  1。建立用户库

  用户名和口令列表需要存在于文件(mod_auth模块)或数据库(mod_auth_dbm模块)中。基于安全的原因。该文件不能存放在文挡的根目录下。如。存放在/usr/local/etc/httpd下的users文件。其格式与UNIX口令文件格式相似。但口令是以加密的形式存放的。应用程序htpasswd可以用来添加或更改程序:

  htpasswd –c /usr/local/etc/httpd/users martin

  -c表明添加新用户。martin为新添加的用户名。在程序执行过程中。两次输入口令回答。用户名和口令添加到users文件中。产生的用户文件有如下的形式:

  martin:WrU808BHQai36

  jane:iABCQFQs40E8M

  art:FadHN3W753sSU

  第一域是用户名。第二个域是用户密码。

  2。配置服务器的保护域

  为了使Apache服务器能够利用用户文件中的用户名和口令信息。需要设置保护域(Realm)。一个域实际上是站点的一部分(如一个目录。文档等)或整个站点只供部分用户访问。在相关目录下的.htaccess文件或httpd.conf ( acces.conf ) 中的段中。由AuthName来指定被保护层的域。在.htaccess文件中对用户文件有效用户的授权访问及指定域保护有如下指定:

  AuthName “restricted stuff”

  Authtype Basic

  AuthUserFile /usr/local/etc/httpd/users

  Require valid-user

  其中。AuthName指出了保护域的域名(Realm Name)。valid-user参数意味着user文件中的所有用户都是可用的。一旦用户输入了一个有效的用户/口令时。同一个域内的其他资源都可以利用同样的用户/口令来进行访问。同样可以使两个不同的区域共用同样的用户/口令。

  3。告诉服务器哪些用户拥有资源的访问权限

  如果想将一资源的访问权限授予一组客户。可以将他们的名字都列在Require之后。最好的办法是利用组(group)文件。组的操作和标准的UNIX的组的概念类似。任一个用户可以属于一个和数个组。这样就可以在配置文件中利用Require对组赋予某些权限。如:

  Require group staff

  Require group staff admin

  Require user adminuser

  指定了一个组。几个组或一个用户的访问权限。

  需要指出的是。当需要建立大批用户帐号时。那么Apache服务器利用用户文件数据库将会极大地降低效率。这种情况下。最好采用数据库格式的帐号文件。譬如 DBM数据库格式的文件。还可以根据需要利用db格式(mod_auth_db)的数据文件。或者直接利用数据库。如:mSQL(mod_auth_msql)或DBI兼容的数据库(mod_auth_dbi)。

分享到 :
相关推荐

如何将云服务器恢复到买的状态(如何将云服务器恢复到买的状态里)

将云服务器恢复出厂设置的方法1.首先。进入云服务器控制台。关闭服务器。确保服务器处[...

DHCP服务器的租约方式有哪些(dhcp服务器的租约方式有哪些)

DHCP服务器的租约方式有:1。限定租期方式。由DHCP客户端向DHCP服务器租用I...

网课平台搭建,怎么选服务器(网课平台搭建,怎么选服务器)

租在线教育服务平台网络服务器。人们要掌握一个专有名词。服务器是什么?做为构建在线教育...

美国服务器租用中的磁盘阵列是什么意思(美国服务器租用中的磁盘阵列是什么意思啊)

在租用美国服务器的时候。磁盘的类型和大小是主要考虑的指标之一。美国服务器常用的磁盘存...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注