トップ > Ubuntu 8.04によるサーバーの構築 >

ルータ・ファイアウォール (iptables)の設定

iptables の設定

 ネットワーク接続の前にファイアウォールを設定すると,ネットワーク接続ができない場合の原因がネットワークの設定にあるのか,ファイアウォールの設定にあるのかが分からなくなります。したがって, iptables の設定は,当該サーバーの NIC 及びネットワークの設定完了後に行います。

  1. /etc/network/if-pre-up.d/iptables を,以下のように作成する。
    #!/bin/sh

    # NAT の設定を削除
    iptables -F -t nat
    # 送信元アドレスを 61.205.232.19 に変換して ppp0 から送信するための NAT の設定
    iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to 61.205.232.19
    # 全てのルールを削除
    iptables -F
    # 全てのユーザ定義チェインを削除
    iptables -X

    # 基本的には外部からのパケットの通過を拒否
    iptables -P INPUT DROP
    # 基本的には外部へのパケットの通過を許可
    iptables -P OUTPUT ACCEPT
    # 基本的には他のインターフェイスへ再送信を拒否
    iptables -P FORWARD DROP

    # 確立しているコネクションの INPUT を許可
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    # 確立しているコネクションの FORWARD を許可
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # lo ( ループバック)からの INPUT を許可
    iptables -A INPUT -i lo -j ACCEPT
    # eth1 (LAN) からの INPUT を許可
    iptables -A INPUT -i eth1 -j ACCEPT

    # LAN から外部 SMTP サーバーへの新規アクセスを許可
    iptables -A FORWARD -i eth1 -p tcp --dport smtp --syn -m state --state NEW -j ACCEPT
    # LAN から外部 SMTPS (465) サーバーへの新規アクセスを許可
    iptables -A FORWARD -i eth1 -p tcp --dport smtps --syn -m state --state NEW -j ACCEPT
    # LAN から外部 POP3 サーバーへの新規アクセスを許可
    iptables -A FORWARD -i eth1 -p tcp --dport pop3 --syn -m state --state NEW -j ACCEPT
    # LAN から外部 POP3S (995) サーバーへの新規アクセスを許可
    iptables -A FORWARD -i eth1 -p tcp --dport pop3s --syn -m state --state NEW -j ACCEPT

    # 不正なアドレスによる ppp0 からのアクセスを拒否(IP スプーフィング対策)
    iptables -A INPUT -i ppp0 -s 0.0.0.0/8 -j DROP
    iptables -A INPUT -i ppp0 -s 10.0.0.0/8 -j DROP
    iptables -A INPUT -i ppp0 -s 127.0.0.0/8 -j DROP
    iptables -A INPUT -i ppp0 -s 169.254.0.0/16 -j DROP
    iptables -A INPUT -i ppp0 -s 172.16.0.0/12 -j DROP
    iptables -A INPUT -i ppp0 -s 192.0.2.0/24 -j DROP
    iptables -A INPUT -i ppp0 -s 192.168.0.0/16 -j DROP
    iptables -A INPUT -i ppp0 -s 224.0.0.0/4 -j DROP
    iptables -A INPUT -i ppp0 -s 240.0.0.0/5 -j DROP
    iptables -A INPUT -i ppp0 -s 248.0.0.0/5 -j DROP
    iptables -A INPUT -i ppp0 -s 255.255.255.255/32 -j DROP
    # 自分のグローバルアドレスによる ppp0 からのアクセスを拒否(IP スプーフィング対策)
    iptables -A INPUT -i ppp0 -s 61.205.232.19 -j DROP

    # Ping of Death 対策
    iptables -N ping-of-death
    iptables -A ping-of-death -m limit --limit 1/sec --limit-burst 4 -j ACCEPT
    iptables -A ping-of-death -i ppp0 -j LOG --log-level info --log-prefix 'ping-of-death '
    iptables -A ping-of-death -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-request -j ping-of-death
    iptables -A FORWARD -p icmp --icmp-type echo-request -j ping-of-death

    # SYN フラッド攻撃対策
    iptables -N syn-flood
    iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
    iptables -A syn-flood -i ppp0 -j LOG --log-level info --log-prefix 'syn-flood '
    iptables -A syn-flood -j DROP
    iptables -A INPUT -p tcp --syn -j syn-flood
    iptables -A FORWARD -p tcp --syn -j syn-flood

    # ポートスキャン対策
    iptables -N port-scan
    iptables -A port-scan -m limit --limit 1/s --limit-burst 4 -j RETURN
    iptables -A port-scan -i ppp0 -j LOG --log-level info --log-prefix 'port-scan '
    iptables -A port-scan -j DROP
    iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan
    iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j port-scan

    # SMTP サーバーへの新規アクセスを許可
    iptables -A INPUT -p tcp --dport smtp --syn -m state --state NEW -j ACCEPT
    # DNS サーバーへの新規アクセスを許可
    iptables -A INPUT -p udp --dport domain -m state --state NEW -j ACCEPT
    # WWW サーバーへの新規アクセスを許可
    iptables -A INPUT -p tcp --dport http --syn -m state --state NEW -j ACCEPT
    # NTP サーバーへの新規アクセスを許可
    iptables -A INPUT -p udp --dport ntp -m state --state NEW -j ACCEPT
    # WWW サーバー (SSL) への新規アクセスを許可
    iptables -A INPUT -p tcp --dport https --syn -m state --state NEW -j ACCEPT
  2. 以下のコマンドを実行して, /etc/network/if-pre-up.d/iptables のアクセス権を変更する。
    $ sudo chmod 755 /etc/network/if-pre-up.d/iptables
  3. 以下のコマンドを実行して,設定した iptables を有効にする。
    $ sudo /etc/init.d/networking restart
    • ネットワークを再起動する前に, iptables 設定の妥当性について十分に検討する必要がある。

(参考)各種NATの設定

 ppp0 の IP アドレスが 61.205.232.19 , eth1 の IP アドレスが 192.168.0.1 のサーバー( NIC 2 枚差し)において,以下のようなケースの NAT (IPv4) の設定をします。

 このサイトに書かれていることが原因でトラブルが発生しても,私は責任を取ることができません。したがいまして,ここで述べられていることに関する実行は,自己責任でお願いいたします。なお,このサイトはリンクフリーで,リンク時の連絡も不要です。

サイト内関連リンク:なし