PF防火墙实例

2009-05-13 05:54:12来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

# macros
# macros 可想像成變數,方便套用
# int_if 對內的網卡,ext_if 對外網卡,請視需要修正
int_if = "fxp0"
ext_if = "rl0"
# 我的主機所開放的服務
my_services = "{ 22,25,53,80,110,443 }"
# 針對 Echo Request 即 icmp type 8 如 ping 做出回應
icmp_types = "echoreq"
# priv_nets 一些特殊的 ip,禁止由外 -> 內及內 -> 外,因為這不正常
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
# options
set block-policy return
set loginterface $ext_if
# scrub 重新整理
scrub in all
# nat -> 將內部 ip 轉到 ext_if 上
nat on $ext_if from $int_if:network to any -> ($ext_if)
# rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
# filter rules
block all
# 對 lo0 pass all
pass quick on lo0 all
# 對不正常的 ip 請求一律 drop 掉
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
# 開放我的服務,由於有有用 dns 故要設 udp,如你沒有 udp 的服務,可拿掉
pass in on $ext_if inet proto { tcp, udp } from any to ($ext_if) port $my_services flags S/SA keep state
# 針對 icmp type 8 予以回應
pass in inet proto icmp all icmp-type $icmp_types keep state
# 將內部 -> 外全部開放
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
這樣一個實用的 firewall 就完成了..
另外 OpenBSD 因為內含 altq 所以可做到更多的功能,在 FreeBSD 中亦可做到,不過需要 patch kernel source,


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22713/showart_214943.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FB_man(2): aio_error(2)

下一篇:mysql的安装