发信人: 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最大改进就是可以采用变量来简化规则的编写,同时支持用"{ }"来快速检验符合的项目。
|
|