首页 > 学技术 > 技术网文 > 网络安全 > 正文

[原创] 如何加固apache 用modsecurity


来源 chinaunix.net 酷勤网整理

之所以写这个文档主要的目的就是对去年翻译的ModSecurity 1.8.7的中文版的一个补充以及更加实用性的一个参考.最初的计划是和1.8.7的中文手册一起推出.但是当时由于工作的关系我并不能将大多数的精力放在这些事情上.所以一直将这个事情延期到2006年.文档中的大多数内容和文字采用的是1.8.7中文手册中的内容.并针对1.9.2的版本加以了补充.由于章数所限我并不能将所有的新功能以及所有的特性完全写在这个文档中.所以更加详细和准确的信息请参考相关软件的文档.
写这个资料的另外一个目的就是看到国内有很多站点或者是从业人员并不是对安全防护有所了解.而且针对应用程序的攻击防护方面并不是很多.所以我就写了这些关于如何加固apache web服务器的这些资料.希望能够对有用的人有用.这里之所以说对有用的人有用是因为很多人包括我的很多好朋友都认为我写的东西都是比较"冷门"的东西(比如早些年无线网络802.1x 认证 ).不是大众所喜欢的.但是我还是坚信这些"冷门"的东西才是大家所需要的东西.我将一直坚信我这样的"怪僻"继续下去:-)
希望能够和大家分享这些优秀的技术和想法.我认为学习技术和知识以及将这些知识传播和分享给需要他们的人是一种快乐:) 同时希望更多的人能够和我交流这些技术和相关信息.
最后感谢在翻译ModSecurity 1.8.7中文手册中给予我大量帮助的sakulagi 和sunmarmot 如果是没有他们的辛勤努力我不可能写出这个文档.希望他们能够永远幸福快乐
我爱臭豆腐
2006-3-16


[url=http://www.cublog.cn/u/12/?u=http://www.cublog.cn/u/12/showart.php?id=88774]mod_security 配置手册下载



 jyhuang 回复于:2006-03-21 22:04:08

支持兄弟的东西,闻着臭,可是吃着香啊?

是不是我有这怪癖??!·#


 Mythikal 回复于:2006-03-21 22:53:16

我怎么闻着也香。。:lol:

感觉apache默认已经很安全,chroot一下已完全够用。不太安全的是那些php脚本。


 我爱臭豆腐 回复于:2006-03-22 08:50:59

引用:原帖由 Mythikal 于 2006-3-21 22:53 发表
我怎么闻着也香。。:lol:

感觉apache默认已经很安全,chroot一下已完全够用。不太安全的是那些php脚本。 




默认"安全"也是分级别的.
chroot是一个很好的方法.但是还是停留在系统这个层面上.
这个是基于7层应用的.所以是针对应用这个级别来进行防护的.
任何程序语言如果不进行严格的编写都是不安全的.不光光是php.php已经不算是一种脚本了.它现在已经是一种广泛的语言了.和其他的语言一样都是语言的一种:mrgreen:


 初学vb 回复于:2006-03-23 13:20:53

这个是要支持的!!


 solano 回复于:2006-03-23 13:31:42

鼎一鼎。。。。。。


 wallace888 回复于:2006-03-25 08:32:32

支持豆腐兄弟!!


 ainimeiban 回复于:2006-03-28 22:42:57

下载看看..


 liutongzhu 回复于:2006-04-07 14:02:09

顶啊。谢谢共巷  支持,支持 ,再支持


 我爱臭豆腐 回复于:2006-04-07 14:12:32

引用:原帖由 liutongzhu 于 2006-4-7 14:02 发表
顶啊。谢谢共巷  支持,支持 ,再支持 


谢谢.希望能干对那些有用的人有用就行了.


 wind521 回复于:2006-04-07 16:41:56

支持:)


 Kenbaby 回复于:2006-04-13 12:39:10

从不看好该模块,硬件反应的速度比软件快多了。


 我爱臭豆腐 回复于:2006-04-13 13:30:20

引用:原帖由 Kenbaby 于 2006-4-13 12:39 发表
从不看好该模块,硬件反应的速度比软件快多了。 


从某种程度上来说硬件确实是速度比较快.但是大多数硬件产品都是商业产品.而且价格也非常贵.我看到的2005的一些安全产品的美金报价都是在25w$左右.我不知道多少人能够接受这个价格.
当然了即使在有很多地方安装了这些模块或者是产品后依然还是会有问题.因为很多东西都需要进行不断的维护规则和相关的东西.
不然你即使放上最好的安全设备还是没有用处.
欢迎kenbaby能够多多提供更好的建议或者是思路.谢谢.


 skipjack 回复于:2006-04-13 20:50:50

引用:原帖由 我爱臭豆腐 于 2006-4-13 13:30 发表

从某种程度上来说硬件确实是速度比较快.但是大多数硬件产品都是商业产品.而且价格也非常贵.我看到的2005的一些安全产品的美金报价都是在25w$左右.我不知道多少人能够接受这个价格.
当然了即使在有很多地方安装 ... 



呵呵....应该在文章中注明这个模块适应的apache版本号,我用嵌入式的apache,这个模块好像就用处不大了,但如果是apache2.0的话,我用iptables+snort_inline也可以起到类似的效果.可能我说的不对,请指正


 我爱臭豆腐 回复于:2006-04-13 22:05:17

引用:原帖由 skipjack 于 2006-4-13 20:50 发表


呵呵....应该在文章中注明这个模块适应的apache版本号,我用嵌入式的apache,这个模块好像就用处不大了,但如果是apache2.0的话,我用iptables+snort_inline也可以起到类似的效果.可能我说的不对,请指正 




多谢关注这个帖子. 目前这个模块可以在apache 1.x or apache 2.x中使用.我测试过的是2.x的web服务器.
由于没有环境我还从来没有测试过在嵌入系统中的apache .
我刚刚在snort_inline的网站上大概的看了一下.我感觉还是多少有一些区别的.
原因如下: 1.这个模块是基于应用的.作用在7层上.针对httpd的服务.
2.虽然是这个模块支持iptables,而且我也过去测试过.但是最终我还是放弃了这个选择.原因如下:
如果是大家使用一个地址访问一个web站点的时候(nat) .发现被这个地址攻击后拒绝掉这个地址的时候会同样禁止掉其他的用户.这样攻击者也能够做到"拒绝"服务. 

有什么不对的地方还请多多指点.谢谢:D


 skipjack 回复于:2006-04-13 23:05:51

引用:原帖由 我爱臭豆腐 于 2006-4-13 22:05 发表



多谢关注这个帖子. 目前这个模块可以在apache 1.x or apache 2.x中使用.我测试过的是2.x的web服务器.
由于没有环境我还从来没有测试过在嵌入系统中的apache .
我刚刚在snort_inline的网站上大概的看了一下 ... 



apache2.0太大了,它所需要的类库比apache1.3多很多,一般嵌入式的web服务器空间大概也就二M左右吧:)
如果你的这个模块可以支持apache0.x,放到嵌入式环境中是个不错的选择.
我试了一下,在apache1.3下编译modsecurity.c的时候会有很多的头文件找不到,这些头文件在apache2.0下是存在的.
iptables + snort_inline 用的就是比较奢华,没有百八十兆的内存是跑不起来的.


 skipjack 回复于:2006-04-13 23:13:17

引用:原帖由 我爱臭豆腐 于 2006-4-13 22:05 发表



多谢关注这个帖子. 目前这个模块可以在apache 1.x or apache 2.x中使用.我测试过的是2.x的web服务器.
由于没有环境我还从来没有测试过在嵌入系统中的apache .
我刚刚在snort_inline的网站上大概的看了一下 ... 



snort_inline的检测是基于数据包的,如果重组后检测,就是基于连接的.iptables的drop规则一旦加上,如果客户在NAT后面,会有误杀的可能.


 我爱臭豆腐 回复于:2006-04-14 09:09:43

引用:原帖由 skipjack 于 2006-4-13 23:05 发表


apache2.0太大了,它所需要的类库比apache1.3多很多,一般嵌入式的web服务器空间大概也就二M左右吧:)
如果你的这个模块可以支持apache0.x,放到嵌入式环境中是个不错的选择.
我试了一下,在apache1.3下编译mods ... 



我早上测试了一下没有什么问题:
刚刚忘记写是什么系统了.现在补上:
root@testpc:[/root]uname -a
Linux testpc 2.4.21-37.ELsmp #1 SMP Wed Sep 7 13:28:55 EDT 2005 i686 i686 i386 GNU/Linux
root@testpc:[/root]cat /etc/redhat-release 
Red Hat Enterprise Linux AS release 3 (Taroon Update 6)
root@testpc:[/root]




cp /root/modsecurity-apache_1.9.3/apache1/mod_security.c /root/apache_1.3.34/src/modules/extra/
cd /root/apache_1.3.34/
./configure --help|more
ls -l /home/wanghao/
./configure --prefix=/home/wanghao/test/ --activate-module=src/modules/extra/mod_security --enable-module=security
make
make install

root@testpc:[/home/wanghao/test/bin]./httpd -v
Server version: Apache/1.3.34 (Unix)
Server built:   Apr 14 2006 08:40:08
root@testpc:[/home/wanghao/test/bin]

root@testpc:[/home/wanghao/test/bin]./httpd -l
Compiled-in modules:
  http_core.c
  mod_env.c
  mod_log_config.c
  mod_mime.c
  mod_negotiation.c
  mod_status.c
  mod_include.c
  mod_autoindex.c
  mod_dir.c
  mod_cgi.c
  mod_asis.c
  mod_imap.c
  mod_actions.c
  mod_userdir.c
  mod_alias.c
  mod_access.c
  mod_auth.c
  mod_setenvif.c
  mod_security.c
suexec: disabled; invalid wrapper /home/wanghao/test/bin/suexec
root@testpc:[/home/wanghao/test/bin]



root@testpc:[/home/wanghao/test/bin]./apachectl start
./apachectl start: httpd started
root@testpc:[/home/wanghao/test/bin]ps -ef|grep http
root     18133     1  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
nobody   18134 18133  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
nobody   18135 18133  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
nobody   18136 18133  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
nobody   18137 18133  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
nobody   18138 18133  0 08:51 ?        00:00:00 /home/wanghao/test/bin/httpd
root     18140 18060  0 08:51 pts/1    00:00:00 grep http
root@testpc:[/home/wanghao/test/bin]./apachectl stop
./apachectl stop: httpd stopped
root@testpc:[/home/wanghao/test/bin]ps -ef|grep http
root     18144 18060  0 08:51 pts/1    00:00:00 grep http
root@testpc:[/home/wanghao/test/bin]

[ 本帖最后由 我爱臭豆腐 于 2006-4-14 09:12 编辑 ]


 我爱臭豆腐 回复于:2006-04-14 09:10:53

引用:原帖由 skipjack 于 2006-4-13 23:13 发表


snort_inline的检测是基于数据包的,如果重组后检测,就是基于连接的.iptables的drop规则一旦加上,如果客户在NAT后面,会有误杀的可能. 




这个就是矛和盾的关系.


 mytool2002 回复于:2006-04-17 13:11:36

谢谢楼主


 我爱臭豆腐 回复于:2006-04-17 14:32:30

引用:原帖由 mytool2002 于 2006-4-17 13:11 发表
谢谢楼主 


不客气.希望大家能够多提宝贵意见.:mrgreen:


 testab 回复于:2006-04-19 23:33:16

不错。很早以前就这么用了。其实英文文档看着很舒服.


 我爱臭豆腐 回复于:2006-04-20 15:30:15

引用:原帖由 testab 于 2006-4-19 23:33 发表
不错。很早以前就这么用了。其实英文文档看着很舒服. 


我看的大多数资料也都是英文的.之所以翻译成中文和写这个中文资料是为了能够叫更多的人了解和使用这个东西.:D


 iammecn 回复于:2006-04-25 10:20:07

做个存栏。

060327110158.part1.rar

060327110158.part2.rar

060327110158.part3.rar

060327110158.part4.rar

060327110158.part5.rar

060327110158.part6.rar


 包子 回复于:2007-03-01 10:53:49

snort_inline和modsecurity不是一类东西,作用也不一样的,各有侧重,关键的是部署起来完全不一样,apache mod部署起来十分方便,snort inline的话问题就很多了。

modsecurity我觉得是一个很不错的模块,不过他现在的modsecurity console好像搞的比较复杂了,上次下回来玩了一下,还不知道怎么玩。。。。

以前我测试过用modsecurity保护jsp程序,不过可能数据流的先后有问题,jsp的程序直接通过apache的mod_jk2模块就走到后面去了,没经过modsecurity的处理,不知道各位有这个方面的解决办法不




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=721198
转载请注明作者名及原文出处



收藏本页到: