/etc/rc.d/init.d/firewall
#! /bin/bash # # firewall iptablesのモジュール組み込みとテーブル設定 # #------------------# # IPアドレスの設定 # #------------------# client_ip='192.168.129.1' # 母艦(PC)のIPアドレス zaurus_ip='192.168.129.201' # ZaurusのUSBネットワーク側IPアドレス # 開始(モジュールの組み込み) start() { modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_MASQUERADE } # テーブルのリロード reload() { #------------------# # テーブルの初期化 # #------------------# iptables -F iptables -t nat -F iptables -X #-----------------------# # テーブルの設定(INPUT) # #-----------------------# # ポリシーは全て破棄 iptables -P INPUT DROP # loopbackは許可 iptables -A INPUT -i lo -j ACCEPT # 母艦->Zaurusは全て許可 iptables -A INPUT -i usbd0 -s $client_ip -d $zaurus_ip -j ACCEPT # 上記以外でもステートフル性が確認できれば許可 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #------------------------# # テーブルの設定(OUTPUT) # #------------------------# # ポリシーは全て許可 iptables -P OUTPUT ACCEPT # インターネットに向けたローカルアドレスは全て破棄 iptables -A OUTPUT -o ppp0 -d 10.0.0.0/8 -j DROP iptables -A OUTPUT -o ppp0 -d 176.16.0.0/12 -j DROP iptables -A OUTPUT -o ppp0 -d 192.168.0.0/16 -j DROP iptables -A OUTPUT -o ppp0 -d 127.0.0.0/8 -j DROP #-------------------------# # テーブルの設定(FORWARD) # #-------------------------# # ポリシーは全て破棄 iptables -P FORWARD DROP # 母艦からのファイル共有パケットはインターネットにFORWARDしない iptables -A FORWARD -p tcp -i usbd0 -o ppp0 --dport 137:139 -j DROP iptables -A FORWARD -p udp -i usbd0 -o ppp0 --dport 137:139 -j DROP iptables -A FORWARD -p tcp -i usbd0 -o ppp0 --dport 445 -j DROP iptables -A FORWARD -p udp -i usbd0 -o ppp0 --dport 445 -j DROP # 母艦からのRPCパケットはインターネットにFORWARDしない iptables -A FORWARD -p tcp -i usbd0 -o ppp0 --dport 111 -j DROP iptables -A FORWARD -p udp -i usbd0 -o ppp0 --dport 111 -j DROP # その他の母艦からのパケットはインターネットへFORWARD iptables -A FORWARD -i usbd0 -o ppp0 -s $client_ip -j ACCEPT # 上記以外でもステートフル性が確認できれば許可 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #------------------------# # テーブルの設定(その他) # #------------------------# # IPマスカレードを設定 iptables -t nat -A POSTROUTING -o ppp0 -s $client_ip -j MASQUERADE # ログの設定(今のところ未使用) #iptables -N LOGGING #iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit #iptables -A LOGGING -j DROP #iptables -A INPUT -j LOGGING #iptables -A FORWARD -j LOGGING } # モジュールの組み込み状態の確認 modstat() { lsmod | grep ^ip } # テーブルの確認 tabstat() { iptables -L ; echo ; iptables -t nat -L } case "$1" in start) start reload ;; reload) reload ;; modstat) modstat ;; tabstat) tabstat ;; *) echo "Usage: $0 {start|reload|modstat|tabstat}" exit 1 esac exit $?