关于linux下apache优化,自己在网上查了点资料,并实践了一下,感觉很好,特整理一下,供各位参考
为了防止恶意用户对
Apache
进行***,我们需要安装
mod_security
这个安全模块<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
mod_security 1.9.x
模块的下载与安装
建议使用
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 ( 这一句通常会被自动加入 )
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 “!p_w_picpath/(jpeg|bmp|gif)”
#
# 伪装服务器标识
SecServerSignature “Microsoft-IIS/6.0″
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 “!p_w_picpath/(jpeg|bmp|gif)”
#
# 伪装服务器标识
SecServerSignature “Microsoft-IIS/6.0″
保存后重启
apache
即可!
为了防止
Web
服务器被
DDoS
***,我们需要安装
mod_evasive
这个防
DDoS
的模块
mod_evasive 1.10.x 防 DDoS 模块的下载与安装
mod_evasive 1.10.x 防 DDoS 模块的下载与安装
解压后进入解压目录,执行
/home/apache/bin/apxs -cia mod_evasive20.c
/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 ( 这一句通常会被自动加入 )
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 you@yourdomain.com
# 受到***时 Apache 运行用户执行的系统命令
#DOSSystemCommand “su - someuser -c ‘/sbin/… %s …’”
# ***日志存放目录, BSD 上默认是 /tmp
#DOSLogDir “/var/lock/mod_evasive”
DOSHashTableSize 3097
# 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为***,同一时间的数值可以在 DosPageInterval 参数中设置。
DOSPageCount 3
# 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在 DOSSiteInterval 中设置。
DOSSiteCount 40
# 设置 DOSPageCount 中时间长度标准,默认值为 1 。
DOSPageInterval 2
#DOSSiteInterval 2 设置 DOSSiteCount 中时间长度标准,默认值为 1 。
DOSSiteInterval 2
# 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
DOSBlockingPeriod 10
# 设置受到***时接收***信息提示的邮箱地址。
#DOSEmailNotify you@yourdomain.com
# 受到***时 Apache 运行用户执行的系统命令
#DOSSystemCommand “su - someuser -c ‘/sbin/… %s …’”
# ***日志存放目录, BSD 上默认是 /tmp
#DOSLogDir “/var/lock/mod_evasive”
转载于:https://blog.51cto.com/zihang/182771