# VPN by PPP over SSH でのフィルタリングの例(IPFilter) # このファイルを vpn-filter という名前で保存したならば # ipf -Fa -f vpn-filter # によってルールを登録する # fxp1からクライアントに出て行くtcpとestablishedを通過 pass out quick on fxp1 proto tcp from any to any keep state # fxp0, fxp1を グループ化する(物理インタフェースが変わったらここを書き換え) # 同時にデフォルトルールをblockまたはpassにする block in on fxp0 all head 100 pass out on fxp0 all head 110 block in on fxp1 all head 200 block out on fxp1 all head 210 # 自分(192.168.11.254)宛のパケットを全てグループ201に導く block in from any to 192.168.11.254 head 201 group 200 # 192.168.11.0/24 から自身への22/tcpを許可 # (グループ201は自分宛のみなので any to any でよい) pass in quick proto tcp from any to any port = ssh keep state group 201 # 自身に対するICMP(echo-request)を許可 pass in quick proto icmp from any to any icmp-type echo keep state group 201 # 上記以外の fxp1 宛のtcpにtcp-reset を返す block return-rst in quick proto tcp from any to any group 201 # 以下はお好みで… # 基幹LANから外部へのTCP接続許可 pass out on fxp0 proto tcp from 10.0.0.0/24 to any keep state # 基幹LANからの接続許可 pass in quick from 10.0.0.0/24 to any group 100 # 重要なUDPの通過 pass out quick proto udp from any to any port = domain keep state group 110 pass in quick proto udp from any to any port = domain group 100 pass out quick proto udp from any to any port = ntp keep state group 110 pass in quick proto udp from any to any port = ntp group 100 # 基幹LAN側インタフェースで参照を許すサービスを許可 pass in quick proto tcp from any to any port = ssh keep state group 100 pass in quick proto tcp from any to any port = smtp keep state group 100 pass in quick proto tcp from any to any port = http keep state group 100 # 上記以外のTCPは tcp-reset を返す block return-rst in proto tcp from any to any group 100 # 以上どれにもマッチしないものはデフォルトルールに従う