- 论坛徽章:
- 0
|
OpenBSD & PF 之简易防火墙设定
OpenBSD & PF 之简易防火墙设定
第一步.
开机自动启动:
#vi /etc/rc.conf
pf=YES
#vi /etc/sysctl.conf
#net.inet.ip.forwarding=1 # 将最前面的 # 号拿掉
net.inet.ip.forwarding=1
手动立即启动:
#pfctl -e
#sysctl -w net.inet.ip.forwarding=1
开启 ftp-proxy 让内部可以对外使用 FTP 的服务:
#vi /etc/inetd.conf
#127.0.0.1:8021 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy # 将"# "号拿掉开通 127.0.0.1 的 ftp-proxy
127.0.0.1:8021 stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
#kill -HUP `cat /var/run/inetd.pid`
第二步.
基本 PF 的 /etc/pf.conf 设定范例:
# macros
int_if = "de0" # 定义对内的网卡
ext_if = "fxp0" # 定义对外的网卡
tcp_services = "{ 22, 113 }" # 定义 port 22, 113 服务
icmp_types = "echoreq" # 定义 tcmp 回应状态
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }" # 定义符合 RFC 1918 私有IP 部份
comp3 = "10.10.10.3" # 定义内部的一台电脑代号 comp3 对应 10.10.10.3 这个 IP
# options
set block-policy return
set loginterface $ext_if
# scrub
scrub in all # 修整进入 NAT 的封包
# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if) # NAT 设定让内部的 IP 可转换出去
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021 # 让内部可使用 ftp client 软件连出去
rdr on $ext_if proto tcp from any to any port 80 -> $comp3 # 内部电脑 comp3 的 80 port 服务对应到外面
# filter rules
block all # 所有封包都挡掉
pass quick on lo0 all # 允许 localhost 封包通行
block drop in quick on $ext_if from $priv_nets to any # 拒绝所有 priv_nets 定义的私有 IP 进入 ext_if 网卡
block drop out quick on $ext_if from any to $priv_nets # 拒绝所有 priv_nets 定义的私有 IP 出去 ext_if 网卡
pass in on $ext_if inet proto tcp from any to ($ext_if) port $tcp_services flags S/SA keep state # 允许 tcp_services 定义之 port 进入 ext_if 网卡
pass in on $ext_if proto tcp from any to $comp3 port 80 flags S/SA synproxy state # 让内部 comp3 的 80 port 服务由 ext_if 网卡出去
pass in inet proto icmp all icmp-type $icmp_types keep state # 允许 icmp 封包进入通行
pass in on $int_if from $int_if:network to any keep state # 允许封包由 de0 进到 10.10.10.0/24 畅通
pass out on $int_if from any to $int_if:network keep state # 允许封包由 de0 出去 10.10.10.0/24 畅通
pass out on $ext_if proto tcp all modulate state flags S/SA # 允许 tcp 封包由 fxp0 出去
pass out on $ext_if proto { udp, icmp } all keep state # 允许 udp , icmp 封包由 fxp0 出去
[ 本帖最后由 菜鸟100问 于 2006-12-17 00:07 编辑 ] |
|