Linux のファイアウォールの設定方法
多くの Linux では、デフォルトでファイアウォールの機能が有効になっており、 ASTEC-X との通信に必要なポートのへのアクセスが制限されています。 Linux ホストに接続する場合は、 ファイアウォールが有効になっていないかを確認していただいて、 必要に応じてポートの制限を適切に変更してください。
このページでは、
Kernel 2.4 以降を採用している Linux ディストリビューションで使われている、
iptables
というファイアウォーのル設定ツールついて説明しています。
iptables
は主に以下のディストリビューションで使用されています。
- Red Hat Enterprise Linux
- SuSE Linux
- Fedora Core
- Vine Linux 2.6 以降
なお、kernel 2.2 以前のディストリビューションでは ipchains というツールが一般的に使われています。 ipchains については、 Linux のソフトウェアファイアウォール(ipchains)の設定方法 をご覧ください。
GUI を利用した設定
以下は、Fedora Core 6 の例です。
- GUI パネルを開きます
メニューから "システム" → "管理" → "セキュリティレベルとファイヤーウォールの設定" を選んで、"セキュリティレベルの設定" のパネルを開きます。
または、/usr/bin/system-config-securitylevel をコマンド実行します。 - もし、ファイアウォールを一切解除する場合は、
パネルの中の "ファイアウォール" のプルダウンメニューを "無効" に切り替えてください。
"無効" を選んで [OK] のボタンを押すと確認のダイアログが表示されます。 [はい] を選ぶと、設定が反映されます。
ファイアウォールを有効にしたまま、 ASTEC-X の利用で必要なポートを空ける場合にはさらに次のステップに進んでください。
- "その他のポート" をクリックします。
開いているポートの一覧と、開くポートを追加/削除するボタンが表示されます。
- [追加] ボタンを押して、"ポートの追加" パネルを開きます。
接続方法やお使いの機能にあわせて以下のように記述してください。
- "ポート" の欄には、"ポート番号" の値、または、"サービス名" のどちらかを記述してください。どちらを記述しても結構です。
- セキュアシェルについても以下に掲げましたが、ここで記述しなくても、 "信頼できるサービス" 欄の "SSH" の項目にチェックをしていただけば結構です。
接続方法等 ポート プロトコル ポート番号 サービス名 XDMCP 177 xdmcp udp rexec 512 exec tcp セキュアシェル 22 ssh tcp フォントサーバ 7100 xfs tcp ロードバランス 111 sunrpc udp -
開いているポートの一覧に、先ほどの追加したポート番号、またはサービス名が表示されていることを確認します。
必要なポートをすべて登録して作業が終わったら、[OK] ボタンを押してください。
"セキュリティレベルの設定" パネルの [OK] を押すと確認ダイアログが開きますので、[はい] を押すと、ファイアウォールの設定が更新されます。
コマンド実行による設定
ファイアウォールの設定を確認する
/sbin/iptables に -L オプションをつけて実行すると、現時点で iptables に適用されているパケットフィルタリングのルールが一覧表示されます。
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Lokkit-0-50-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Lokkit-0-50-INPUT (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT udp -- dns.astec-x.com anywhere udp spt:domain
REJECT tcp -- anywhere anywhere tcp flags:SYN,RST,ACK/SYN reject-with icmp-port-unreachable
REJECT udp -- anywhere anywhere udp reject-with icmp-port-unreachable
iptables では、チェインという単位でルールを細かく設定できるようになっています。
上記の結果を見ると、明示的に許可されていないアクセスは、最後の 2行ですべて REJECT されるようになっています。ASTEC-X との接続を行うためには XDMCP で利用する 177 番のポートや、rexec 接続で利用する 512 番のポート、セキュアシェル 接続で利用する 22番のポートへのアクセスを必要に応じて許可しなければいけません。
フィルタリングのルールを編集する
コマンドラインから下記のコマンドを実行すると、
一時的に iptables のルールを変更し、
外部からの接続要求を受け入れるようになります。
ここでは、INPUT というチェインに対して設定を行っていますが、
別にチェインを作成して細かく制御を行っている場合には、
実際の環境に合わせて変更してください。
rexec 接続のために、 rexec デーモンが待ち受ける 512番ポートに対して tcp による通信を許可する場合
XDMCP 接続のために、 Xディスプレイマネージャが待ち受ける 177番ポートに対して udp による通信を許可する場合
セキュアシェル接続のために、 セキュアシェルサーバデーモンが待ち受ける 22番ポートに対して tcp による通信を許可する場合
フィルタリングのルールを保存する
iptables-save
コマンドの出力結果をそのまま保存したものを
iptables の設定ファイルとして利用することができます。
上記のコマンドによる指定を保存する場合には、
例えば下記のようにして、
iptables-save コマンドの出力をファイルにリダイレクトして保存してください。
iptables が起動時に読み込む設定は、
初期設定では /etc/sysconfig/iptables
に置かれることになっていますので、保存した iptables.astecx を
/etc/sysconfig/iptables にコピーすれば、
起動する時点で修正した設定が有効になります。
このとき、念のため元の /etc/sysconfig/iptables
ファイルのバックアップを取っておくことをお勧めします。