#! /bin/sh # # F/W PCの設定 # ============ # # 前提条件 # -------- # # trust : eth1:192.168.0.100 # untrust : eth0:global address(dhcp) # # アドレス定義 # localhost=127.0.0.1 office=xxx.xxx.xxx.xxx/28 # # ルール設定 # ---------- # # 初期化 # /usr/sbin/iptables -F # # 基本ポリシー # # 固定ポリシー(通過は禁止) /usr/sbin/iptables -P FORWARD DROP # 固定ポリシー(ローカルプロセスからの発信は許可) /usr/sbin/iptables -P OUTPUT ACCEPT # # 可変ポリシー(入力は禁止) /usr/sbin/iptables -P INPUT DROP # #======================================== # # input ルールの設定 # #---------------------------------------- # for lo(loopback) # # 全て受け付ける /usr/sbin/iptables -A INPUT -p all -i lo -j ACCEPT # #---------------------------------------- # for eth1(trust) # # 全て受け付ける /usr/sbin/iptables -A INPUT -p all -i eth1 -j ACCEPT # #---------------------------------------- # for eth0(untrust) # # プライベートIPを名乗る奴はログ取って、はじく /usr/sbin/iptables -A INPUT -p all -s 10.0.0.0/8 -i eth0 -j LOG --log-level info /usr/sbin/iptables -A INPUT -p all -s 10.0.0.0/8 -i eth0 -j DROP /usr/sbin/iptables -A INPUT -p all -s 172.16.0.0/12 -i eth0 -j LOG --log-level info /usr/sbin/iptables -A INPUT -p all -s 172.16.0.0/12 -i eth0 -j DROP /usr/sbin/iptables -A INPUT -p all -s 192.168.0.0/16 -i eth0 -j LOG --log-level info /usr/sbin/iptables -A INPUT -p all -s 192.168.0.0/16 -i eth0 -j DROP # # < 応答 > # # 新規(NEW) # 接続済み(ESTABLISHED) # 関連性(RELATED) # 無効 (INVALID) # # tcpの応答パケットを(全て)受け付ける /usr/sbin/iptables -A INPUT -p tcp ! --syn -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT # # icmpの応答パケットをを受け付ける # echo-reply は ping に必要 # destination-unreachable は 全ての tcp/udp トラフィックに必要 # time-exceeded は traceroute に必要 /usr/sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -i eth0 -j ACCEPT /usr/sbin/iptables -A INPUT -p icmp --icmp-type destination-unreachable -i eth0 -j ACCEPT /usr/sbin/iptables -A INPUT -p icmp --icmp-type time-exceeded -i eth0 -j ACCEPT # # udpの応答(dns)を受け付ける /usr/sbin/iptables -A INPUT -p udp --sport 53 -i eth0 -j ACCEPT # # udpの応答(ntp)を受け付ける /usr/sbin/iptables -A INPUT -p udp --sport 123 -i eth0 -j ACCEPT # # udpの応答(dhcp)を受け付ける /usr/sbin/iptables -A INPUT -p udp --sport 67 --dport 68 -i eth0 -j ACCEPT # # udpの応答(rtsp)を受け付ける #DEL_/usr/sbin/iptables -A INPUT -p udp --sport 554 -i eth0 -j ACCEPT # # udpの応答(pna)を受け付ける #DEL_/usr/sbin/iptables -A INPUT -p udp --sport 7070 -i eth0 -j ACCEPT # # udpの応答(mms)を受け付ける #DEL_/usr/sbin/iptables -A INPUT -p udp --sport 1755 -i eth0 -j ACCEPT # # < 公開サーバ > # # ${office}からのsshを受け付ける /usr/sbin/iptables -A INPUT -p tcp -s ${office} --dport 22 -i eth0 -j ACCEPT # # ${office}からのproxyを受け付ける /usr/sbin/iptables -A INPUT -p tcp -s ${office} --dport 8080 -i eth0 -j ACCEPT # # httpを受け付ける /usr/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT # # httpsを受け付ける /usr/sbin/iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT # # smtpを受け付ける /usr/sbin/iptables -A INPUT -p tcp --dport 25 -i eth0 -j ACCEPT # #---------------------------------------- # # こぼれ落ちたパケットのログを取って、拒否 # /usr/sbin/iptables -A INPUT -p all -i eth0 -j LOG --log-level info /usr/sbin/iptables -A INPUT -p all -i eth0 -j DROP # # 確認表示 # /usr/sbin/iptables -L -n -v