7) iptablesによるフィルタリング
第7回目は、各ポートを通過するパケット(制御情報を付加した返信データのまとまり)に対してアクセス制御を行うためのiptablesによるフィルタリングについてです。
インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供
iptablesの利用
iptables とは、パケットをフィルター処理する機能を設定・制御する仕組みであり、パケット内送受信データを検査し、パケット通過時のアクセス制御を行います。
iptables は、パケット通過の許可・拒否を適切に設定する事により、ファイアウォールとして活用する事ができ、接続が確立する前にアクセス制御を行う事から、TCP Wrapperやxinetdよりも先にアクセス制御が実行されます。
iptablesの設定
ここではiptablesに対し、コマンドラインでパケットフィルタリングを設定する方法について解説します。
まず、パケットのフィルタリングについてのセキュリティーポリシーを決定する必要があります。
今回は、以下のポリシーでiptablesの設定を行います。
・Webサーバー(ポート番号:80)を外部に公開する
・SSHサーバー(ポート番号:22)を外部に公開する
・セキュアWebサーバー(ポート番号:443) を外部に公開する
・上記以外の通信は非公開にする
・内部からの送信は制限しない
設定ファイルの記述例
現在の設定を一覧表示します。
# iptables –L
設定を初期化します。
# iptables -F
ポート80(http)に対しての通信を許可します。
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
次に、ポート22(ssh)に対しての通信を許可します。
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
最後にポート443(https)に対しての通信を許可します。
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
最後に全てのパケットをドロップして、上記で設定したものだけ通過可能にします。
# iptables -P INPUT DROP
システム再起動により、設定済のフィルタリング・ルールは自動的に破棄されるため、後でロードするようにフィルタリング・ルールを保存するには、次のコマンドを使います:
# iptables-save
(上記のコマンドがなければ、# service iptables save)
下記は、iptablesコマンドのオプションの説明です。
・-P → ポリシーの指定(ACCEPT, DROP, QUEUE, RETURNのどれかを指定可能)
・-A → 設定の追加
・INPUT → 受信のタイミングで処理
・OUTPUT → 送信のタイミングで処理
・DROP → ターゲットの1つで、パケットの廃棄
・ACCEPT → ターゲットの1つで、パケットの通過許可
・-p → プロトコルの指定(tcp, udp, icmp, allのどれかを指定可能)
・-m → マッチングの拡張
・-j → マッチング時の処理
・tcp → 設定するプロトコルの種類
・--sport → 送信元ポートの指定
・--dport → 宛先ポートの指定
*その他のオプションについては、個別マニュアルをご参照下さい。
次回予告
次回は、悪意のあるユーザーがサーバーシステムに侵入した際、被害を最小限に留めるための「OS標準セキュア機能の利用」についてです。


