検索
連載

natテーブルを利用したLinuxルータの作成習うより慣れろ! iptablesテンプレート集(2)(3/6 ページ)

iptablesのNAT機能を利用すれば、Linuxをルータにできる。さらに、NATの応用例として透過型プロキシを構築してみる。(編集部)

Share
Tweet
LINE
Hatena

テンプレート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型ファイル共有アプリケーションなどのサービスをブロックできます()。

注:Winnyなど、使用するポート番号を特定することができないツールでは、別の手段を講じる必要があります。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る