FreeBSD SNP 3.Client端--连线实作( 二 )


规则的处理,而icmp栏本身是过滤规则中规定数据包的协议类型,指定规;
则是用于处理哪种数据包的,FreeBSD可以处理TCP,UCP,ICMP;类型的数据,;
以及在/etc/protocols文件中定义的其他数据包的类型,上例中指定类型;
是ICMP,因为我们要对ICMP进行处理,而from;$ip;to;any是规定过滤规则;
适用的地址范围,这可以通过指定源和目的计算机的IP地址范围或数据包;
通过的网络界面来进行指定:;

--用from规定数据包的来源地址,可以是主机地址或网络;;
--用to规定数据包的目的地址,可以是主机地址或网络;;
--用in或out规定数据包是流向本机,还是向外发送的;;

所以第三条的规则意思是允许你使用到任何地址使用icmptype;8,echo-request,;
而第四条是你获得icmptype;0,echo-reponse信息,但阻止你发送echo-reponse.;

这上面的示例能比较好的阻止一些端口扫描器的扫描,因为多数端口一般开始使用;
ping来查看是否主机在线,但上面我们的traceroute就不能工作了,traceroute;
先发送UDP信息包并等待icmp包返回,因此下面的规则是阻止入站的icmp;type;8,;
但允许所需要的icmp类型入站来进行traceroute的tracing(追踪):;

参照下面的列表:;
0;echo-reply;ping;
3;destination-unreachable;Any;TCP/UDP;traffic.;(目标主机不可达);
5;redirect;routing;if;not;running;routing;daemon;(如没有有运行routing;
守护程序重定向routing);
8;echo-request;ping;
11;time-exceeded;traceroute;(traceroute超时);
当然icmp还有其他类型,请参看Request;for;Comments:;;792;


1,;;;;ipfw;add;pass;log;udp;from;$ip;to;any;
2,;;;;ipfw;add;pass;log;icmp;from;$ip;to;any;icmp;8;
3,;;;;ipfw;add;pass;log;icmp;from;not;$ip;to;any;icmp;0;
4,;;;;ipfw;add;pass;log;icmp;from;not;$ip;to;any;icmp;11;
5,;;;;ipfw;add;pass;log;icmp;from;not;$ip;to;any;icmp;3;

上面的规则4是接受icmp;type;11但拒绝你发送,规则5是接受icmp;type;3,但;
拒绝你发送icmp;type;3的信息 。;

按照上面的规则并进行测试,你可以traceroutes和ping目标主机防火墙规则能;
接受它们的回应,而你可以让你朋友traceroute/ping你的目标主机,但他讲不会;
得到任何回应或者出现超时错 。;


总结:icmp和其他协议不同之处是icmp过滤使用类型而不使用端口,一般应用程序;
可以使用端口来增加过滤功能,但icmp是用类型类规定进出站的信息,如"echo-request";
是入站信息而"echo-response"是出站信息,这样就可以对信息进行过滤 。;

具体一般协议的规则使用方法是在目标和源地址后面进行端口规定,如:;

ipfw;add;pass;tcp;from;any;[要规则处理的端口];to;$ip;[要规则处理的端口];

而ICMP是定义要规则处理的协议,如:;

ipfw;add;pass;icmp;from;any;to;$ip;[要规则处理的协议];

最后如果你有其他规则加入此文件增加过滤能力,你如果要在FREEBSD启动时候;
加入这些规则,FREEBSD有rc.firewall文件进行启动处理,只要把这些规则加入;
rc.firewall后就能自动进行处理 。;

参考文章:;
http://www.freebsdrocks.com/show.php3?ThisArticleID=6197&start=1&s;
Return=25&search_category=8&search_criteria=&search_field=;
http://freebsd.online.ha.cn/focus/FreeBSD/index.shtml;
Request;for;Comments:;;792;

xundi@xfocus.org;2000-06-17;;

推荐阅读