服务器 频道

Linux服务器安全策略详解之Apache配置

  6.3.12  Apache服务器防范DoS

  Apache服务器对拒绝服务攻击的防范主要通过软件Apache DoS Evasive Maneuvers Module  来实现。它是一款mod_access的替代软件,可以对抗DoS攻击。该软件可以快速拒绝来自相同地址对同一URL的重复请求,通过查询内部一张各子进程的哈希表来实现。到网站http://online/. securityfocus.com/data/tools/dospatch.tar.gz上下载软件。软件安装的配置可以查看Linux中文主页http://www.linux.gov.cn/上的Apache性能和安全指南,过程比较简单,限于篇幅这里就不介绍了。

  同时可以使用Linux系统强大的命令手段防范Dos攻击。

  netstat -an | grep -i "服务器IP地址:80" | awk '{print $6}' | sort | uniq -c | sort -n

  这个命令会自动统计TCP连接的各个状态的数量,如果syn_recv很高的话,就不能排除有基于TCP协议的拒绝服务攻击的可能。于是需要打开tcp_syncookies:

  echo 1 > /proc/sys/net/ipv4/tcp_syncookies

  如果没有 /proc/sys/net/ipv4/tcp_syncookies,说明内核不支持syncookies,需要重新编译内核,同时降低SYN重试次数。

  echo "1" > /proc/sys/net/ipv4/tcp_syn_retries

  echo "1" > /proc/sys/net/ipv4/tcp_synack_retries

  同时加大syn_backlog,以保证用户的访问:

  echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog

  6.3.13  利用LDAP对Apache进行认证

  建立测试网页。

  # #mkdir /var/www/html/ldap

  #echo "LDAP Auth Test Page" > /var/www/html/ldap/index.html

  安装mod_authz_ldap模块。

  要让Apache服务器可以存取LDAP服务器上的资料,必须利用mod_authz_ldap模块作为Apache和LDAP服务器之间认证的接口,所以必须安装mod_authz_ldap模块。

  # rpm -ivh mod_authz_ldap*.rpm

  修改/etc/httpd/conf.d/auth_mysql.conf。

  若之前曾安装mod_auth_mysql认证模块,则必须将mod_auth_mysql模块功能关闭。

  #LoadModule mysql_auth_module modules/mod_auth_mysql.so

  修改/etc/httpd/conf.d/authz_ldap.conf。

  # <IfModule mod_authz_ldap.c>

  # <Location /private>

  # AuthzLDAPEngine on

  # AuthzLDAPServer localhost

  # AuthzLDAPUserBase ou=People,dc=example,dc=com

  # AuthzLDAPUserKey uid

  # AuthzLDAPUserScope base

  # AuthType basic

  # AuthName "ldap@example.com"

  # require valid-user

  # </Location>

  </IfModule>

  修改为以下文字:

  # LoadModule authz_ldap_module modules/mod_authz_ldap.so

  <IfModule mod_authz_ldap.c>

  <Directory /var/www/html/ldap>

  AuthzLDAPServer localhost

  AuthzLDAPUserBase ou=People,dc=example,dc=com

  AuthzLDAPUserKey uid

  AuthzLDAPUserScope base

  AuthType basic

  AuthName "ldap@example.com"

  require valid-user

  </Directory>

  </IfModule>

  重新启动Apache服务器。

  # #service httpd restart

  停止 httpd: [ 确定 ]

  启动 httpd: [ 确定 ]

  6.3.14  其他安全工具

  使用tcp_wrappers和AIDE可以为系统提供额外的保护。使用tcp_wrappers可以进一步控制访问权限。AIDE是一个数据完整性检测工具,可以帮助系统管理员监视系统是否被改动过,你可以在AIDE的配置文件中编制特定的策略,监视Web服务器的配置文件、数据和CGI文件是否被修改。另外Selinux也可以保护Apache服务器(第16章将会介绍)。如果对目录服务比较熟悉,还可以使用LDAP服务器对Apache服务器进行访问认证。

  在Apache配置文件中,有一些安全相关的指令可以使用。这些指令的详细用法可以参考http://httpd. apache.org/docs/mod/directives.html。

  使用以下指令可以帮助你减小拒绝服务攻击的威胁。

  -  LimitRequestbody:数字参数,控制HTTP请求的大小。

  -  LimitRequestFields:数字参数,控制请求头的数目。

  -  KeepAlive:设置连接的生存期。

  -  KeepAliveTimeout:限制等待请求的时间。

  使用以下指令可以帮助你减少缓冲区溢出的危险。

  -  LimitRequestFieldSize:限制每个请求头的大小。

  -  LimitRequestLine:限制每个请求行的大小。

  实际上,大部分Web站点被破坏者恶意攻击是因为应用程序或脚本中的漏洞。Web安全专家认为,运行在Web服务器上的脚本或应用程序是最大的危险因素。因为CGI脚本通常产生动态内容,它们经常导致很大损害。对于大部分Web服务器来说,首先应该考虑如何加强安全配置。

  6.4  本章小结

  Apache的安装维护中需要注意以下安全问题。

  - 检查文件和目录的权限是否恰当。

  -  httpd.conf的设置是否适当。

  - 使服务器日志文件能够记录尽可能详细的信息。

  - 对某些需要特别保护的目录使用密码保护(.htaccess)。

  - 对CGI脚本或者程序进行封装。

  - 检查SSI指令。

  - 使用其他安全工具,如tcp_wrappers和Tripwire。

 

0
相关文章