• 视频教程下载地址:请使用WinRAR或者7-Zip进行解压
  • 点击进入下载页面: 下载地址3


在Apache环境下,除了修改httpd.conf 来提高安全性,

还可以安装mod_security这个模块来提高web程序的安全性。

而且这个模块提供的安全内容挺有针对性,大多针对现在网上对网站的攻击手段。

下面是从网上找到的一些资料作为参考进行演示。

下载安装相关的包:

#export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
#pkg_add modsecurity-apache

modsecurity-apache-1.9.3p2: complete
--- modsecurity-apache-1.9.3p2 -------------------
To finish the install of modsecurity-apache-1.9.3p2, you need
to enable the module using the following command

  /usr/local/sbin/mod_security-enable

The manual is found at /usr/local/share/doc/mod_security.

If you already have Apache running on your machine,
you should not use "apachectl restart" - instead,
you should fully stop and then start the server.

出现上面信息,说明成功安装。
=====================================
下面启用mod_security:

/usr/local/sbin/mod_security-enable

Enabling  module...
[activating module `security' in /var/www/conf/httpd.conf]
cp /usr/local/lib/mod_security.so /usr/lib/apache/modules/mod_security.so
chmod 755 /usr/lib/apache/modules/mod_security.so
cp /var/www/conf/httpd.conf /var/www/conf/httpd.conf.bak
cp /var/www/conf/httpd.conf.new /var/www/conf/httpd.conf
rm /var/www/conf/httpd.conf.new

看到命令其实就是一些文件的移动和权限。。。

mod_security可以用来抵御XSS和SQL注入等攻击,我们需要把一些“防御”指令加到mod_security的配置文件中:

========================================

下面添加 mod_security 的配置文件
vi /var/www/conf/modules/modsecurity.conf

输入下面的内容:

# 启用mod_security过滤
SecFilterEngine On

# 分析URL请求
SecFilterCheckURLEncoding On

# 检查字节长度以避免栈溢出攻击(数字请酌情修改)
SecFilterForceByteRange 32 126

# 有效记录日志信息
SecAuditEngine RelevantOnly

# 定义日志文件
SecAuditLog logs/audit_log

# 定义DEBUG文件
SecFilterDebugLog logs/modsec_debug_log
SecFilterDebugLevel 0

# 检查POST请求(某些POST请求可能会和这个冲突)
# 使用phpMyAdmin管理数据库时,某些操作会被这个拦截(例如新建数据库和用户时)
# 遇此情况,则把此行注释掉,重启Apache
# 操作完后记得恢复,以提高数据库的安全性
SecFilterScanPOST On

# 阻止返回406错误
SecFilterDefaultAction "deny,log,status:406"

# 阻止返回500错误
SecFilterDefaultAction "deny,log,status:500"

# 当攻击者使用chmod,chgrp,wget等命令的時候,重定向到特殊的页面(请按照实际情况修改)
SecFilter chmod redirect:http://www.google.com
SecFilter chgrp redirect:http://www.google.com
SecFilter wget redirect:http://www.google.com

# 防止操作系统关键词攻击
SecFilter /bin
SecFilter /sbin
SecFilter /etc
SecFilter /bsd
SecFilter /usr
SecFilter /var

# 只接受知道如何处理的请求
# GET请求是个例外,是因为某些客户端把text/html当做请求内容的一部分
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"

# 不接受仅有GET和HEAD头的请求
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"

# 要求每个POST请求提供长度
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"

# 不接受无法处理的转换
SecFilterSelective HTTP_Transfer-Encoding "!^$"

# 防止目录遍历攻击
SecFilter "\.\./"

# 防止跨站(XSS)攻击(HTML/Javascript注入)
SecFilter "<( |\n)*script"
SecFilter "<(.|\n)+>"

# 防止SQL注入攻击(简单示例,请自行完善)
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
SecFilter "union[[:space:]]+from" 
SecFilter "drop[[:space:]]"

# 需要HTTP头确认
SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

# 把服务器伪装成M$机器
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"

# 限制upload.php文件只能用来上传jpeg,bmp和gif的文件(仅为示例,按照实际情况修改)
#<Location /upload.php>
#SecFilterInheritance Off
#SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)"
#</Location>

然后保存退出。

记住把mod_security的配置文件保存在/var/www/conf/modules目录,例如上面的:/var/www/conf/modules/modsecurity.conf

mod_security的配置按需修改好后,保存退出,重启Apache即可!

重启apache ,

#apachectl restart

现在 apachectl 不能启动, 可能是上面配置文件复制时候有问题,换行问题吧。

记事本现在设置不自动换行,重新复制一次。

先删除刚才的配置文件

rm /var/www/conf/modules/modsecurity.conf

再重新新建一个。
vi /var/www/conf/modules/modsecurity.conf

好了,没有问题了,可以正常启动。

上面的具体修改内容,和设置的情况,请注意小心修改,防止不能访问。

还有提醒大家就是 复制配置文件内容时,注意换行问题,我刚才就是这个情况。

上面这个资料是网上找到的,我本人现在还没有对它的效果进行测试,呵呵。

不过刚才配置文件我写错了一些东西 导致 apache 不能启动,这个说明有进行运作的。

至于配置内容上面的安全设置,我是没有进行测试,以后有时间测试一下吧。

谢谢观看。。。


“OpenBSD4.4 apache 安装 mod_security 提高web安全 视频演示”没有评论

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。