Firewall/iptablesの設定方法とルール設定

はじめに

iptablesを利用することによりホストごとにより細かいパケット制御が可能になります。iptablesコマンドはパケット制御のための1つのルールを1行のコマンドとして記述します。Firewallは複数のルールから成るため、普通はiptablesコマンドを複数記述したスクリプトファイルを作成しておき、それを実行することでFirewallを設定します。

設定関連ファイルなど

まずコマンドはいかのようです。

 $ /sbin/iptables

このコマンドを利用してルールなど設定することができます。また複数のルールをたまっているファイルは

 /etc/sysconfig/iptables

の中に保存してあります。

初期化とポリシーの決定

まず、すべてのポリシーを初期化します。次のコマンドで初期化できます

 $ /sbin/iptables -F

初期化したら、基本的なポリシーを決めます。基本的なポリシーとは、パケットの受信と送信についてそれぞれ「すべて許可」か「すべて拒否」かを決めます。お勧めのは「すべて拒否」です。

 $ /sbin/iptables -P INPUT DROP
 $ /sbin/iptables -P OUTPUT DROP

このようにiptablesでは「-P」オプションを使ってポリシーを指定します。

ループバックを許可する

基本的なポリシーに、新しいルールを追加します。手始めはループバックネットワークの許可です。これは、ローカルホストからのアクセスを許可するものです。

 $ /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
 $ /sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptablesでは「-A」オプションを指定することで、対象のチェインにルールを追加することができます。つまり上記の例では1行目INPUTチェンにルールを追加し、2行目はOUTPUTチェインにルールを追加しています。

「-s」オプションはソース(発信元)を指定するためのもの、「-d」オプションは宛先を指定するためのものです。従って上記では自分のホストから自分のホストへのパケットの送受信を許可していることになります。

新規のセッション確立を許可

特定のアプリケーションのパケット送受信を許可する前に、まず新規にセッション(接続状態)を確立するパケットを許可します。ここではSSHを例として説明します

 $ /sbin/iptables -A INPUT -p tcp -mstate NEW --dport 22 -j ACCEPT
 $ /sbin/iptables -A OUTPUT -p tcp -mstate NEW --dport 22 -j ACCEPT

「-p」オプションはプロとコールを指定するためのもので、「tcp」または「udp」を指定します。「-m」オプションはモジュールオプションを指定しますモジュールとはNetfilterでより詳細なパケット制御を行うための部品化されたプログラムです。モジュールはいくつかあるのですが、ここではstateモジュールを使います。stateモジュールには、さらにオプションを指定することができます。「--state」に続けてパケットのステータスを指定します。代表的なステータスは、NEW、RELATED、ESTABLISHEDがあります。NEWは新規に通信を確立するためのパケットを意味します。

例えばこのホスト自信をウェブブラウズを許可するなら以下のルールを追加する必要であります。

 $ /sbin/iptables -A OUTPUT -p tcp -mstate --state NEW --dport 80 -j ACCEPT

INPUTチェインについては、ほかのコンピュータにサービスを提供しているものだけを記述します。

セッション確立後の応答パケットを許可

セッション確立時のアプリケーションを限定したので、あとはセッションを確立後の応答パケット(ESTABLISHED)や、セッションを確立したプロとコールに関連したパケット(RELATED)の通過について許可します。

 $ /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 $ /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

最後にこれまで設定したルールをファイルに保存するために、いかのコマンドを実行します。

 $ /etc/init.d/iptables save

これで、/etc/sysconfig/iptablesに現在のルールがすべて保存され、次回起動以降、自動的に適用されます。

代表的なウェルノウンポート

ポートプロトコルサービス名内容
20tcp/udpftp-dataFTPのデータ転送
21tcp/udpftpFTPのコマンド
22tcp/udpsshSSHリモートログイン
23tcp/udptelnetTelnetリモートログイン
25tcp/udpsmtpSMTP(電子メールの送信)
53tcp/udpdomainDNS (Domain Name Service)
80tcp/udphttp,www,www-httpWWW (HTTP) Web Service
110tcp/udppop3POP3 (電子メールの受信)
123tcp/udpntpNTP (時刻の動機)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Sun, 27 Jun 2004 20:13:05 JST (7248d)