freebsdPF的TARP补丁
功能:当端口扫描时返回所有端口开放状态
系统: PF防火墙
FreeBSD 6-Current测试通过
OpenBSD 3.6未测试
安装方法:
1. 截取以下一段内容,建立新文件pf.c.diff ;或者在如下地址下载:
===============================================2858c2858,2859< !(th->th_flags & TH_RST)) {---> (!(th->th_flags & TH_RST) ||> !(th->th_flags & TH_FIN))) {2860c2861<--->2864c2865< ack++;---> return (PF_DROP);2867c2868< ntohl(th->th_ack), ack, TH_RST|TH_ACK, 0, 0,---> ntohl(th->th_ack), ack, TH_SYN|TH_ACK, 0, 0,===============================================
http://phoenix.freedemon.org//network//pf.c.diff
2. 补丁方法:
# cd /sys/contrib/pf/net/
# patch -p0 pf.c <pf.c.diff
Hmm... Looks like a normal diff to me...Patching file pf.c using Plan A...Hunk #1 succeeded at 2858.Hunk #2 succeeded at 2861.Hunk #3 succeeded at 2865.Hunk #4 succeeded at 2868.done
3. 重新配置内核,确认编译进了pf相关选项;
device pfdevice pflogdevice pfsync
4. 重新编译内核和内核模块;
# cd /sys/i386/conf/# config GENERIC# cd ../compile/GENERIC# make depend && make && make modules && make install
5. 查看/etc/rc.conf,确认打开了pf启动选项;
pf_enable="YES"
6. 编辑pf配置文件/etc/pf.conf,在初始化段加入以下选项:
set block-policy return
7. BUG:
>>-alpha版本,未广泛测试,慎重使用
>>肮脏的代码,直接修改了RETURN规则,使用时替换block return (tcp)动作
>>注意备份好原版pf.c
>>正在写完全版的tarp功能
在黑客想入侵一个系统之前,一般都会进行第一步动作,段口扫描。通过段口扫描就可以获取到目标主机上开放的网络端口或者应用服务,然后再瞄准目标有的
在防火墙的标准响应动作中,当拒绝连接时,有两种响应方法:( deny 或 drop )。
他们最大的区别就是,deny显得更为礼貌一些。例如当接收到一个被限制访问的TCP请求时,他会礼貌的回应一个[TCP RESET]包,告诉别人这个端口的访问
不幸的是,在其他大多数防火墙上,并没有实现这个非标准功能,Windows上那个号称可以抗Syn-flood和能够Tarp的8sign防火墙,测试了下,根本无效。最后只
===============================================
扫描显示所有端口全都开放......
再看一下应用连接:
===============================================
开放端口时C:Documents and SettingsAdministrator>finger toor@lucifer[lucifer.freedemon.org]Login: toor Name: Bourne-again SuperuserDirectory: /root Shell: /bin/shLast login Thu Mar 24 12:49 (UTC) on ttyp5 from 212.212.112.2No Mail.No Plan.
===============================================
使用Tarp规则时C:Documents and SettingsAdministrator>finger toor@lucifer[lucifer.freedemon.org]> Finger: read::对方将连接复位
===============================================
当然,对于完全防范黑客的端口扫描攻击,这种攻击并不完善,还有一些缺点,也可以获得详细的端口信息,例如:
1. 查看返回得详细数据包信息,通过对比TCP-Window值和TCP标志位,其实还是可以判断出那些端口真正开放的;不过目前为止没有哪个成品扫描器那么做的,
全部正常处理,显示端口打开。