7.3. 一般的な iptables フィルタリング

リモート攻撃者を LAN に近づけないようにすることは、ネットワークセキュリティの重要な部分となります。LAN の一貫性は厳重なファイアウォールルールにより悪意 のあるリモートユーザーから保護しなければなりません。ただし、すべての着信パケット、発信パケット、フォワードパケットをブロックするようセットしたデフォルトの ポリシーでは、ファイアウォール/ゲートウェイと内部 LAN ユーザーが内部や外部と 通信をすることは不可能です。ユーザーにネットワーク関連機能の実行とネットワーク アプリケーションの使用を許可するには、管理者が通信用に特定のポートを開く必要があります。

例えば、ファイアウォール上でポート80へのアクセスを許可するには、 次のルールをアペンドします。

iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 

これにより、ポート80経由で通信するウェブサイトからの普通のWeb閲覧ができるようになります。 セキュアなウェブサイト(https://www.example.com/など)へのアクセスを許可するには、 ポート443も開く必要があります。

iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT 

重要重要
 

iptablesのルールセットを作成している時、その順序が非常に 重要なので十分に注意してください。例えば、ローカルの 192.168.100.0/24 サブ ネットからのパケットはすべてドロップするように chain で指定していると、別の chain がアペンドされ(-A)、192.168.100.13 (これはドロップした制限サブネット内)からのパケットを許可し、次にアペンドされた ルールが無視されます。192.168.100.13 を最初に許可するようにルールを設定してから、 サブネット上のドロップルールを設定する必要があります。

複数のルールを持つ1つの既存 chain に1つのルールを任意に挿入するには、 -Iを使用して、その後にルールを挿入するchain、及びルールを配置するためのルール番号(1,2,3,...,n)を続けます。 例えば:

iptables -I INPUT 1 -i lo -p all -j ACCEPT

ルールがローカルのループバックデバイストラフィックを許可するために INPUT chainに1番目のルールとして挿入されます。

LAN の外から LAN へのリモートアクセスが必要になることがあります。LAN サービスへの暗号化リモート接続に SSH などのセキュアなサービスを使用できます。PPPベースのリソース(モデムバンクまたは一括 ISP アカウントなど)のある管理者に とっては、モデム接続はダイレクト接続であるため一般的にはファイアウォール/ゲート ウェイの内側に配置しているので、安全にファイアウォールのバリアを回避するためには ダイアルアップアクセスが使用できます。ただし、ブロードバンド接続のリモート ユーザーの場合は特殊な方法で行ないます。iptablesを設定して リモート SSH クライアントからの接続を受けるようにします。例えば、 リモート SSH アクセスを許可するには、以下のようなルールが使用できます:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT

ルールを定義する必要があるサービスは他にもあります。iptables 及び各種オプションについての総合情報は、Red Hat Enterprise Linux リファレンスガイドを 参照してください。

これらのルールはインターネットやファイアウォール/ゲートウェイに直接接続 されている単独 PC など個別のシステムに対し着信と発信のアクセスを許可します。しかしルールはファイアウォール/ゲートウェイの後ろにあるノード には、これらのサービスへの許可をしません。これらのサービスに LAN アクセスを 許可するには、iptablesフィルタールールを持つ NAT を使用 することができます。