■■ iptables の設定 ■■

     iptables とは、パケットフィルタを行うソフトウェアです。主に、PCをルータとして使うとき、通過するパケットを検査して、いらないパケットを破棄したりします。この機能を使うことで、ファイアウォールとして活用することができます。

■注意するべきこと

     ここでは VineLinux2.6r4 の環境で iptables を使った、自端末への入力パケットの許可/破棄の方法を簡単に紹介してます。検査するのは入力パケットだけで、出力パケットは検査してません。

     あくまで、簡単な設定なので、ルータのNAT変換やファイアウォール機能との併用をつよくお奨めします。

■ルータの設定の確認

    NET
     左が、前提となるネットワークの構成です。

     Webの80、POPの110、smtpの25、FTPの20と21、それぞれのポートは、IPマスカレードテーブルによって、下のアドレス変換は済んでいるものとします。

      g1.g2.g3.g4 ←---→ 192.168.0.23

     また、同ネットワーク内にあるクライアントより Webmin のアクセスを許可します。

■iptables の設定

     私は root でログインして設定を行いました。

     VineLinux2.6r4 では、iptables は標準でインストールされていますが、一応、コマンドラインから iptables -L と打ち込んで、下のようになることを確認します。

     (iptables本体 は /sbin/ にあります。もし、パスが通っていなければ /sbin/iptables と入力してください)

      # iptables -L
      Chain INPUT (Policy ACCEPT)
      target  prot opt source     destination

      Chain FORWARD (Policy ACCEPT)
      target  prot opt source     destination

      Chain OUTPUT (Policy ACCEPT)
      target  prot opt source     destination


        ※インストール直後は、ルールが設定されておらず、入力/出力、すべてのパケット
         を許可しています。

     iptables の設定の順序は、次のようになります。

      1.ポリシーを決める。
      2.ルールをクリアする。
      3.ルールをキー入力する。
      4.設定をセーブする。
      5.iptables を再起動する。



    1.ポリシーを決める

       まず INPUT については、一旦すべて ACCEPT(許可) します。FORWARD は使わないので DROP(破棄) します。OUTPUT は、すべて ACCEPT(許可) します。

      # iptables -P INPUT ACCEPT
      # iptables -P FORWARD DROP
      # iptables -P OUTPUT ACCEPT

        ※FORWARD はルータとして動作させるときに設定します。

    2.ルールをクリアする

       ひとまず、ルールをクリアしておきます。

      # iptables -F


    3.ルールをキー入力する

       それではルールを入力していきましょう。

      icmp(ping)と自端末からの入力を許可
      # iptables -A INPUT -p icmp -j ACCEPT
      # iptables -A INPUT -i lo -j ACCEPT

      Web、FTP、POP、smtp による接続を許可
      # iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      # iptables -A INPUT -p tcp --dport 21 -j ACCEPT
      # iptables -A INPUT -p tcp --dport 110 -j ACCEPT
      # iptables -A INPUT -p tcp --dport 25 -j ACCEPT

        DNSサーバの運用があるなら次の2行を追加
        # iptables -A INPUT -p tcp --dport 53 -j ACCEPT
        # iptables -A INPUT -p udp --dport 53 -j ACCEPT

      ssh による接続を許可
      # iptables -A INPUT -p tcp --dport 22 -j ACCEPT

      ローカルの他端末からWebminでの接続を許可(Webminのポート:10000)
      # iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT

      TCPの接続開始と応答、FTPデータなどを許可
      # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

      他の接続はすべて破棄(ポリシーの再設定)
      # iptables -P INPUT DROP


    4.設定をセーブする

       ここまでキー入力したルールは、サーバを再起動すると消えてしまいます。よって、ルールをセーブし、次回の起動時にも適用されるようにします。

      ルールをセーブする
      # /etc/init.d/iptables save


    5.iptables を再起動する。

       それでは、念のため iptables を再起動してルールをしっかり適用させましょう。

      iptables の再起動
      # service iptables restart
      現在のすべてのルールとユーザ定義チェインを初期化中:    [ OK ]
      現在のすべてのルールとユーザ定義チェインを破棄:      [ OK ]
      iptablesファイアウォールルールを適用中:          [ OK ]
                                    [ OK ]

dance & dance

表紙へもどります