- 论坛徽章:
- 2
|
pfctl: DIOCOSFPFLUSH: Operation not permitted??
#macros
ext_if="fxp0"
#定义外网网卡
tcp_services="{20,21,22}"
#内部可访问的端口
user1="a.b.c.d"
user2="a1.b1.c1.d1"
allow_ssh_ip="{" $user1 $user2 "}"
#允许ssh登录的ip
priv_nets="{192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 127.0.0.0/8, 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 204.152.64.0/23, 224.0.0.0/3, 20.20.20.0/24}"
#定义不该在外网网卡上出现的数据包
#options
set block-policy drop
#block的默认规则是drop,不再返回任何回应数据包,节省资源
set loginterface $ext_if
#pf统计ext_if网卡的进/出流量和pass/block的数据包数目
set optimization aggressive
#自状态表中主动终止空闲连接
#scrub
scrub in all
#流量整形,避免最终的数据包出现非法目的,同时也会重组数据包碎片,保护操作系统免受攻击,丢失某些带有非法联合标记的TCP数据包。
#filter rules
block all
#block所有的包,然后依实际情况开放
pass quick on lo0 all
#允许localhost数据包通行
block drop in quick on $ext_if from $priv_nets to any
#拒绝所有私有地址进入ext_if网卡
block drop out quick on $ext_if from any to $priv_nets
#拒绝所有私有地址出去ext_if网卡
pass in on $ext_if proto tcp from any to $ext_if port 80 flags S/SA synproxy state
#允许80端口的数据包进入ext_if网卡,因为要提供www服务
pass in on $ext_if proto tcp from $allow_ssh_ip to $ext_if port $tcp_services flags S/SA keep state
#允许内部访问的端口的数据包进入ext_if网卡
pass out on $ext_if proto tcp all modulate state flags S/SA
#ext_if网卡上允许tcp数据包出去,并为匹配规则的数据包产生强壮的初始化序列号
#pass out on $ext_if proto {udp,icmp} all keep state
#ext_if网卡上允许udp、icmp数据包出去 |
|