关于linux下apache优化,自己在网上查了点资料,并实践了一下,感觉很好,特整理一下,供各位参考
为了防止恶意用户对
Apache
进行攻击,我们需要安装
mod_security
这个安全模块
mod_security 1.9.x
模块的下载与安装
下载地址:
http://www.modsecurity.org/download/index.html
建议使用
1.9.x
,因为
2.x
的配置指令与
1.x
完全不同,解压后进入解压目录,执行:
/home/apache/bin/apxs -cia mod_security.c
编译完成后,
/home/apache/modules
下会生成一个
mod_security.so
文件
然后
kate /home/apache/conf/httpd.conf
加入以下选项(如果没有的话)
#
启用
mod_security
这个安全模块
LoadModule security_module modules/mod_security.so (
这一句通常会被自动加入
)
#
打开过滤引擎开关。如果是
Off
,那么下面这些都不起作用了。
SecFilterEngine On
#
把设置传递给字目录
SecFilterInheritance Off
#
检查
url
编码
SecFilterCheckURLEncoding On
#
检测内容长度以避免堆溢出攻击
#SecFilterForceByteRange 32 126
#
日志的文件和位置。一定要先建立好目录,否则
apache
重新启动的时候会报错。
SecAuditLog logs/audit_log
# debug
的设置
#SecFilterDebugLog logs/modsec_debug_log
#SecFilterDebugLevel 1
#
当匹配
chmod,wget
等命令的时候
,
重新定向到一个特殊的页面
,
让攻击者知难而退
SecFilter chmod redirect:http://www.sina.com
SecFilter wget redirect:http://www.sina.com
#
检测
POST
数据,注意,请甚用这个开关,可能会导致一些
post
页面无法访问。详细的信息,请察看
www.modsecurity.org的文档,其中有详细的post编码要求。
#SecFilterScanPOST Off
#
缺省的动作
SecFilterDefaultAction “deny,log,status:406″
#
重新定向用户
#SecFilter xxx redirect:http://www.sina.com
#
防止操作系统关键词攻击
SecFilter /etc/*passwd
SecFilter /bin/*sh
#
防止
double dot
攻击
SecFilter “\.\./”
#
防止跨站脚本
(CSS)
攻击
SecFilter “<( |\n)*script”
# Prevent XSS atacks (HTML/Javascript injection)
SecFilter “<(.|\n)+>”
#
防止
sql
注入式攻击
SecFilter “delete[[:space:]]+from”
SecFilter “insert[[:space:]]+into”
SecFilter “select.+from”
#
重定向
exe
和
asp
请求
SecFilterSelective REQUEST_URI “\.exe” “redirect:http://www.google.com”
SecFilterSelective REQUEST_URI “\.asp” “redirect:http://www.google.com”
#
下面是限制了
upload.php
文件只能用来上传
jpeg.bmp
和
gif
的图片
#
#SecFilterInheritance On
#SecFilterSelective POST_PAYLOAD “!image/(jpeg|bmp|gif)”
#
#
伪装服务器标识
SecServerSignature “Microsoft-IIS/6.0″
保存后重启
apache
即可!
为了防止
Web
服务器被
DDoS
攻击,我们需要安装
mod_evasive
这个防
DDoS
的模块
mod_evasive 1.10.x
防
DDoS
模块的下载与安装
下载地址:
http://www.zdziarski.com/projects/mod_evasive/
解压后进入解压目录,执行
/home/apache/bin/apxs -cia mod_evasive20.c
编译完成后,
/home/apache/modules
下会生成一个
mod_evasive20.so
文件
然后
kate /home/apache/conf/httpd.conf
加入以下选项(如果没有的话)
#
启用
mod_evasive for Apache 2.x
防
DDoS
模块
LoadModule evasive20_module modules/mod_evasive20.so (
这一句通常会被自动加入
)
#
记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSHashTableSize 3097
#
同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在
DosPageInterval
参数中设置。
DOSPageCount 3
#
同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在
DOSSiteInterval
中设置。
DOSSiteCount 40
#
设置
DOSPageCount
中时间长度标准,默认值为
1
。
DOSPageInterval 2
#DOSSiteInterval 2
设置
DOSSiteCount
中时间长度标准,默认值为
1
。
DOSSiteInterval 2
#
被封时间间隔秒,这中间会收到
403 (Forbidden)
的返回。
DOSBlockingPeriod 10
#
设置受到攻击时接收攻击信息提示的邮箱地址。
#DOSEmailNotify [email protected]
#
受到攻击时
Apache
运行用户执行的系统命令
#DOSSystemCommand “su - someuser -c ‘/sbin/… %s …’”
#
攻击日志存放目录,
BSD
上默认是
/tmp
#DOSLogDir “/var/lock/mod_evasive”