如何测试您的Linux-Distro防火墙

最近,我写了一篇关于 “如何扫描您的Linux-Distro for Root Kits”的文章
现在这台机器是 干净的 !我想,一个好东西TO-DO,是 测试我的防火墙(AGAIN!)
好消息是我们可以使用 免费工具 FTester
坏消息是, FTester需要配置正确...
所以...让我们上班吧!


什么是 FTester
防火墙测试仪(FTester)是一种用于测试防火墙过滤策略和入侵检测系统(IDS)功能的工具。

该工具包含两个perl脚本, 一个数据包注入器(ftest)一个监听嗅探器(ftestd)
第一个脚本在 ftest.conf中定义的自定义数据包,在数据部分中具有签名,而嗅探器监听这些标记的数据包。
这两个脚本都会为两个脚本写入一个相同形式的日志文件。
两个生成的文件 (ftest.log和ftestd.log)的差异显示了由于过滤规则而无法访问嗅探器的数据包,如果这两个脚本在安装在防火墙两侧的主机上运行。
状态检测防火墙使用 “连接欺骗”选项进行处理。
称为 freport的脚本也可用于自动解析日志文件。

IDS(入侵检测系统)测试功能只能使用ftest
或者通过ftestd的额外支持来处理状态检查IDS,ftest也可以使用常见的IDS逃避技术。
而不是使用当前的配置语法,脚本也可以处理snort规则定义文件。


特征:
- 防火墙测试
- IDS测试
- 对状态检测防火墙和IDS的真实tcp连接进行仿真
- 连接欺骗
- IP分片/ TCP分段
- IDS逃避技巧


要求:
需要以下 perl模块Net :: RawIPNet :: PcapUtilsNetPacket

所以...我们将需要 Net :: RawIPNet :: PcapUtilsNetPacket Perl模块。
如果尚未安装 Net :: Pcap模块,则可能需要 Net :: Pcap模块,因为 Net :: PcapUtils模块依赖于它。
如果我们有 CPAN Perl模块 ,我们可以使用以下命令从 shell安装这些模块:

# perl -MCPAN -e "install Net::RawIP" 

# perl -MCPAN -e "install Net::Pcap"

# perl -MCPAN -e "install Net::PcapUtils"

# perl -MCPAN -e "install NetPacket"


...我们完成了 perl模块


下载:
最新版本是 ftester-1.0.tar.gz(2006-Feb-13) 。从 shell运行...
# wget http://dev.inversepath.com/ftester/ftester-1.0.tar.gz

所有版本均可在 http://dev.inversepath.com/ftester上获得


提取:
使用tar来解压缩源。从 shell运行...
# tar -xzf ftester-1.0.tar.gz



至今...
我们已经安装了几个perl模块,我们已经下载了 ftester-1.0.tar.gz(2006年2月 - 2月13日)
我们提取了文件并制作了目录 ftester-1.0
做得好 !!!


组态:
我们需要创建一个配置文件来告诉它应该生成哪些数据包。
要发送测试的数据包的定义主要是在配置文件 (ftest.conf)中指定的,主要的语法是:

Source Address:Source Port:Destination Address:Destination Port:Flags:Protocol:Type of Service


对于 TCPUDP数据包,

Source Address:Source Port:Destination Address:Destination Port:Flags:ICMP:icmp_type:icmp_pre


用于 ICMP数据包。

几个例子:

# SYN packet to 10.1.7.1 port 80 
192.168.0.10:1024:10.1.7.1:80:S:TCP:0
# PSH,ACK reply from 192.168.0.10
192.168.0.10:20:10.1.7.1:1022:AP:TCP:22
# UDP packet
192.168.0.10:53:10.1.7.1:53::UDP:0
# ICMP packet type 3 pre 5
192.168.0.10::10.1.7.1:::ICMP:3:5
# ranges are allowed for source address, source port, destination port
# source address can also be specified in CIDR form
192.168.0.1-255:1024:10.1.7.1:22:S:TCP:0
192.168.0.1:1024:10.1.7.1:1-65535:S:TCP:0
192.168.0.1:1-1024:10.7.0.1:20-25:S:TCP:22
192.168.3.0/24:1-1024:10.7.0.1:20-25:S:TCP:0
192.168.0.0/22:1024:10.7.0.1:80:S:TCP:0


告诉ftestd我们的测试完成是必需的停止信号,所以使用以下语法:

stop_signal=192.168.0.1:666:10.1.7.1:666:S:TCP:


stop_signal可以是 TCPUDPICMP数据包,这个数据包会导致
终止嗅探器,以便在stop_signal之后指定每个数据包
ftestd不会看到指令。

现在从 ...
# vi ftest.conf


你会看到很多东西在那里...只要评论你不需要的任何东西!我用了...

# checking privileged ports (<1025)
192.168.0.10:1025:10.1.7.1:1-1025:S:TCP:0
# checking proxy port
192.168.0.10:1025:10.1.7.1:3128:S:TCP:0
stop_signal=192.168.0.10:80:10.1.7.1:1025:AP:TCP:0


在启动 ftest之前,我们应该是 root ,然后从 shell启动 ftestd

# ./ftestd -i eth0


shell运行 ftest

# ./ftest -f ftest.conf



最后,我们将两个日志文件复制在同一台主机上,我们使用来自 shell的 freport进行比较:

# ./freport ftest.log ftestd.log


你会看到像...

Authorized packets:
-------------------
21 - 192.168.0.10:1025 > 10.1.7.1:21 S TCP 0
22 - 192.168.0.10:1025 > 10.1.7.1:22 S TCP 0
23 - 192.168.0.10:1025 > 10.1.7.1:23 S TCP 0
25 - 192.168.0.10:1025 > 10.1.7.1:25 S TCP 0
80 - 192.168.0.10:1025 > 10.1.7.1:80 S TCP 0
110 - 192.168.0.10:1025 > 10.1.7.1:110 S TCP 0
113 - 192.168.0.10:1025 > 10.1.7.1:113 S TCP 0
1027 - 192.168.0.10:80 > 10.1.7.1:1025 PA TCP 0

Modified packets (probably NAT): -------------------------------- 443 - 192.168.0.10:1025 > 10.1.7.1:443 S TCP 0 443 - 192.168.0.10:1025 > 10.1.7.5:443 S TCP 0
Filtered or dropped packets: ---------------------------- 1 - 192.168.0.10:1025 > 10.1.7.1:1 S TCP 0 2 - 192.168.0.10:1025 > 10.1.7.1:2 S TCP 0 3 - 192.168.0.10:1025 > 10.1.7.1:3 S TCP 0 ... ... ... 1026 - 192.168.0.10:1025 > 10.1.7.1:3128 S TCP 0



这是所有人。
一个好主意是在每次更改防火墙时运行 ftest
或者不时地要确保你的防火墙工作!


阅读更多:
人物页(ftester.8)
读我



PS:
我不认为发布我的测试结果是个好主意!
;-)
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏