今回の記事は,パケットフィルタリングの設定が主題ではないため,具体的なパケットフィルタリングルールについては説明をしない。フィルタリングルールの詳細は,JFの「Linux IPCHAINS-HOWTO」などを参照してほしい。
上記で設定したパケットフィルタリングのルールは,/etc/sysconfig/ipchainsファイルに書き込まれる。例えば,TCPポートの137〜139の入力(input)を拒否する設定にした場合には,ipchainsファイルの内容が次のようになる。
| :input ACCEPT :forward ACCEPT :output ACCEPT :icmp - -A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -p 1 -j icmp -A input -s 0.0.0.0/0.0.0.0 137:139 -d 0.0.0.0/0.0.0.0 137:139 -p 6 -j DENY -A icmp -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -j ACCEPT |
この設定ファイルの内容は,ipchainsのサービスによって読み込まれて実行される。このため,/etc/sysconfig/ipchainsファイルに記述をしておいても,ipchainsサービスが起動していなければ設定された内容は適用されないのだ。
ipchainsファイルにファイアウォール設定内容を記述したならば,「サービスの管理」ツール(Fig.3)などで,コンピュータの起動時に常に自動実行されるよう設定しておくのがよいだろう。
なお「ファイアウォール設定」ツールは,/etc/sysconfig/ipchainsファイルに設定を書き出すが,GUI上での設定は/etc/sysconfig/firewallファイルにも書き出されている。「ファイアウォール設定」ツールが起動する際には,/etc/sysconfig/firewallファイルしか参照せず,/etc/sysconfig/ipchainsファイルが参照されないことに注意が必要だ。
このため手作業でipchainsファイルを編集したり,後述する「Lokkitファイアウォール」で/etc/sysconfig/ipchainsファイルを変更したとしても,その変更内容は「ファイアウォール設定」ツール上からは参照されない。つまり,「ファイアウォール設定」ツールを起動したときに参照できる設定は,Linux上で動作しているパケットフィルタリングの設定を反映しているのではなく,前回「ファイアウォール設定」ツールを起動した際の状態を表示させているのだ。
「Lokkitファイアウォール」は,簡易ファイアウォール設定ツールとして位置づけられている。このツールでは,前述した「ファイアウォール設定」ツールと比べ対話式のウィザード形式で設定できるのだ。より難しい設定を隠した形で簡易設定ができるようになっている。
まずはじめの「基本設定」画面では,ファイアウォールの種別を3段階に分け,「高セキュリティ」「低セキュリティ」「ファイアウォール無効」のいずれかから選択して設定ができる(Fig.26)。
Fig.26■Lookit―[基本設定]![]() |
この「基本設定」の項目によって,ipchainsのパケットフィルタリングの設定が変ってくるのも容易に想像できるだろう。具体的には,これらの設定で/etc/sysconfig/ipchainsファイルが上書きされる形だ。つまり,このツールで設定を行うと,前述した「ファイアウォールの設定」で行った内容(/etc/sysconfig/ipchainsファイル)は失われてしまうのだ。
例えば,「ファイアウォール無効」を設定した場合には,/etc/sysconfig/ipchainsファイルが削除される。これによってipchainsコマンドによるパケットフィルタリングの設定は一切行わないという設定になるのだ。
一方,「低セキュリティ」に設定した場合には,それ以降のウィザードの設定内容にもよるが,DHCP(ポート67,68)を通し,ポート1023番以下やNFS(ポート2049)を拒否,X Windowシステム(ポート6000〜6009および7100)も通さないという設定内容になる。具体的に設定される内容は,次の通りだ。
|
# Firewall configuration written by lokkit # Manual customization of this file is not recommended. # Note: ifup-post will punch the current nameservers through the # firewall; such entries will *not* be listed here. :input ACCEPT :forward ACCEPT :output ACCEPT -A input -s 0/0 67:68 -d 0/0 67:68 -p udp -i eth0 -j ACCEPT -A input -s 0/0 67:68 -d 0/0 67:68 -p udp -i eth1 -j ACCEPT -A input -s 0/0 -d 0/0 -i lo -j ACCEPT -A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT -A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT -A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT -A input -p udp -s 0/0 -d 0/0 2049 -j REJECT -A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT -A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT |
さらに,「高セキュリティ」を設定した場合には,次のようにDHCP(ポート67、68)とDNS(ポート53)以外はすべて拒否される。
|
# Firewall configuration written by lokkit # Manual customization of this file is not recommended. # Note: ifup-post will punch the current nameservers through the # firewall; such entries will *not* be listed here. :input ACCEPT :forward ACCEPT :output ACCEPT -A input -s 0/0 67:68 -d 0/0 67:68 -p udp -i eth0 -j ACCEPT -A input -s 0/0 67:68 -d 0/0 67:68 -p udp -i eth1 -j ACCEPT -A input -s 0/0 -d 0/0 -i lo -j ACCEPT -A input -s 192.168.0.1 53 -d 0/0 -p udp -j ACCEPT -A input -s 0/0 -d 0/0 -p tcp -y -j REJECT -A input -s 0/0 -d 0/0 -p udp -j REJECT |
3つそれぞれの基本設定を選択した後には,次に主要な各サービスへの動作を設定するかどうかを尋ねられる(Fig.27)。ここで「はい」を選択すると,各サービスを実行して関係するポートが透過され,接続が許されるのだ。
Fig.27■Lookit―[サービス]![]() |
- http(Webサーバ)
- SMTP(メールサーバ)
- ssh(セキュアシェル)
- telnet
例えばtelnetを透過するように設定すると,telnetで使われるポート23番へのアクセスが許可される。/etc/sysconfig/ipchainsファイル内では次の項目が追加されるのだ。
| -A input -s 0/0 -d 0/0 23 -p tcp -y -j ACCEPT |
「Lookitファイアウォール」の使い道はさまざまだが,取りあえずセキュリティを高めたいのであれば「高セキュリティ」を選択し,作成された/etc/sysconfig/ipchainsファイルを手作業で変更して好みの形にしていくという手もある。NATでサーバを公開しているといった口では,必要なサービスに接続するためのポートを1つずつ許可するよう追加設定していけばよい。
| 4/6 |


