针对stand-alone的DoS防范
Linux下以stand-alone模式运行的服务器主要是Apache、Sendmail。
1.Apache服务器防范DoS措施
Apache服务器对拒绝攻击的防范主要通过软件Apache DoS Evasive Maneuvers Module来实现。它是一款mod_access的替代软件,可以对抗DoS攻击。该软件可以快速拒绝来自相同地址对同一URL的重复请求,这是通过内部一张各子进程的哈希表查询来实现的。软件下载链接:http://online.securityfocus.com/data/tools/dospatch.tar.gz,软件安装的配置可以查看相关页面。
另外,在Apache配置文件中,有一些安全相关的指令可以使用。http://httpd.apache.org/docs/mod/directives.html。使用以下指令可以帮助您减小DoS的威胁:
LimitRequestBody:数字参数,控制HTTP请求的大小。
LimitRequestFields:数字参数,控制请求头的数目。
KeepAlive:设置连接的生存期。
KeepAliveTimeout:限制等待请求的时间。
使用以下指令可以帮助您减少缓冲区溢出的危险:
LimitRequestFieldSize:限制每个请求头的大小。
LimitRequestLine:限制每个请求行的大小。
此外,Apache服务器管理员还应该经常去http://www.apache.org/dist/httpd/查看、下载补丁程序,以确保Web服务器的安全。
2.Sendmail服务器防范DoS措施
由于电子邮件的性质,一个要攻击邮件服务器的攻击者可以轻易地使用邮件来充斥服务器,从而导致DoS。通过设置/etc/mail/sendmail.mc以下目录的限度,这类攻击的有效性就会大受限制。
confCONNECTION_RATE_THROTTLE:服务器每秒能够接受的连接数量。按照默认设置,Sendmail是不限制连接数量。如果连接数量达到限度,以后的连接就会被延迟。推荐值:40。
confMAX_DAEMON_CHILDREN:服务器能够Fork出的子进程的最大数量。按照默认设置,Sendmail不限制子进程的数量。如果限度被设置,达到限度后的连接就会被延迟。推荐根据内存容量设置:128M内存建议值为40。
confMIN_FREE_BLOCKS:文件系统用来接受标准SMTP(简单邮件传输协议)邮件的队列中的最少自由块数,越小越容易被攻击致命。默认为100块,推荐值为4000或者更大。
confMAX_HEADERS_LENGTH:消息头可接受的最大限度(以字节为单位)。默认为不限制,推荐值是64。
confMAX_MESSAGE_SIZE:单个消息可接受大小的最大限度(以字节为单位)。越大越容易被攻击致命。默认为不限制,推荐值为5242880。
另外,不要把邮件假脱机目录/var/spool/mail/放在NFS共享文件卷上。因为NFS对用户组群ID没有控制,几个UID相同的用户可以收到和阅读彼此的邮件。
限制整体资源的占用
还可以对系统资源做限制,使得系统增强抗DoS能力。
编辑/etc/security/limits.conf文件,添加下面几行:
* hard core 0
* hard rss 10000
* hard nproc 30
说明:“core 0”表示禁止创建core文件;“nproc 30”把最多进程数限制到30;“rss 10000”表示除了root之外,其他用户都最多只能用10MB内存。 “*”表示的是所有登录到系统中的用户。
上面这些对登录到系统中的用户有效。通过这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。最后编辑“/etc/pam.d/login”文件,在文件末尾加入:
session required /lib/security/pam_limits.so