natテーブルを利用したLinuxルータの作成:習うより慣れろ! iptablesテンプレート集(2)(3/6 ページ)
iptablesのNAT機能を利用すれば、Linuxをルータにできる。さらに、NATの応用例として透過型プロキシを構築してみる。(編集部)
テンプレート7
Windowsファイル/プリンタ共有パケットのブロック
テンプレート7の想定環境
サーバとして
・外部からの接続パケットは基本的にすべて破棄
ただし接続済み通信のパケットは許可
・内部からの接続パケットは基本的にすべて許可
・ループバックアドレスに関してはすべて許可
・メンテナンスホストからのping、メンテナンスホストへのpingを許可
・メンテナンスホストからのssh(TCP 22)を許可
ルータとして
・Linuxサーバを経由して外部へ出ていくパケットのソースアドレスを変換
・内部アドレス→外部アドレス
・内部アドレスやプライベートアドレスが外部に漏れないようにブロック
・Windowsファイル/プリンタ共有パケット(TCP/UDP 137〜139、445)をブロック
・RPCパケット(TCP/UDP 111)をブロック
テンプレート6では、内部ネットから外部ネットへ出ていくパケットは特に制限を設けませんでした。テンプレート7では、Windowsファイル/プリンタ共有機能で利用されるパケットとRPCパケットに制限を掛けます。
テンプレート7の解説
テンプレート6に対して、31〜39行目が新たに追加されています。
filterテーブルのFORWARDチェインを利用してフィルタを設定しますが、フィルタを追加するタイミングが重要になります。具体的には、41、42行目が実行される前に制限を掛ける必要があります。41、42行目で、「eth1からeth0に出ていくパケットは制限を設けない」としているため、これが先に実行されると、こちらが優先されます。そのため、FORWARDチェインにデフォルトルール(DROP)を適用した直後にフィルタの設定を行います。
26 iptables -P FORWARD DROP 27 28 ########## 29 #Block SMB 30 ########## 31 iptables -A FORWARD -p tcp -i eth1 -o eth0 --dport 137:139 -j DROP 32 iptables -A FORWARD -p udp -i eth1 -o eth0 --dport 137:139 -j DROP 33 iptables -A FORWARD -p tcp -i eth1 -o eth0 --dport 445 -j DROP 34 iptables -A FORWARD -p udp -i eth1 -o eth0 --dport 445 -j DROP 35 ########## 36 #Block RFC 37 ########## 38 iptables -A FORWARD -p tcp -i eth1 -o eth0 --dport 111 -j DROP 39 iptables -A FORWARD -p udp -i eth1 -o eth0 --dport 111 -j DROP 40 41 iptables -A FORWARD -i eth1 -o eth0 -s $internal_ip -j ACCEPT 42 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Windowsファイル/プリンタ共有ではTCP 137〜139と445、UDP 137〜139と445をディスティネーションポートに使用するため、31〜34行目のようにブロックします。
同様に、RPCではTCP、UDPともに111を使用するため、38、39行目のようにブロックします。ポート番号を的確に把握できれば、NFSやPtoP型ファイル共有アプリケーションなどのサービスをブロックできます(注)。
Copyright © ITmedia, Inc. All Rights Reserved.