发信人: zenz.hu(乱了) 
整理人: zhcharles(2002-01-30 15:36:56), 站内信件
 | 
 
 
★原文转载自openbsd版zenz.hu的《PF防火墙使用》★
 PF防火墙确实和IPF的语法很相似,下面是我使用PF的一点经验。
 1、编辑/etc/pf.conf文件,加入规则如下:
 ExtIf="tun0"      #管理的网络界面
 ServicePorts="{ 21, 22, 80, 443 }"        #开放的端口
 BlockPorts="{ 13, 23, 79, 111, 113, 139, 143, 3050, 3306 }"  #封闭的端口
 
 scrub in all    #先把非正常或者紊乱的包修正(对于使用Win客户的,但是会增加系统的负担,如能不用就不用)
 
 block in log quick on $ExtIf inet proto { tcp, udp } from any to any port $BlockPorts      #封闭掉不希望开放的端口对应于IPv4的udp/tcp访问
 block in log quick on $ExtIf inet proto tcp from any to any port = 53   #对于53端口保留udp访问(DNS需要)
 
 pass in quick on $ExtIf inet proto tcp from any to any port $ServicePorts flags S/SA     #允许开放的端口tcp访问,并保持连接
 
 pass out on $ExtIf proto tcp from any to any keep state    #从内部发起的访问全部通过,并保持连接
 
 pass in on lo0 all
 pass out on lo0 all    #localhost全部允许。
 
 2。修改/etc/rc.conf文件,把
 pf=NO
 改为
 pf=YES
 
 3。创建一个新的pflog文件(很奇怪他不象IPF一样自动生成)
 touch /var/log/pflog
 
 重新启动后PF防火墙就生效了。
 
 生成的pflog是tcpdump数据流格式的,必须用tcpdump来观看
 tcpdump -n -ttt -r /var/log/pflog
 
 如果希望不重新启动系统让PF工作,则
 # ifconfig pflog0 up
 # pfctl -R /etc/pf.conf -e
 
 
 个人认为PF最大改进就是可以采用变量来简化规则的编写,同时支持用"{ }"来快速检验符合的项目。
 
  | 
 
 
 |