SuSEfirewall2は、/etc/sysconfig/SuSEfirewall2から変数を読み取って一連のiptablesルールを生成するスクリプトです。このスクリプトは、次に示す3つのセキュリティゾーンを定義します(ただし、以降のサンプル設定では1番目と2番目のセキュリティゾーンについてのみ考察します)。
外部ネットワークで何が発生しているかを制御できないことを考えれば、ホストを外部ネットワークから保護する必要があることがわかります。外部ネットワークはほとんどの場合インターネットですが、WLANなどそれ以外の安全でないネットワークであることもあります。
これはプライベートネットワークを表します。ほとんどの場合はLANになります。内部ネットワーク内のホストがプライベート範囲のIPアドレス(30.1.2項 「ネットマスクとルーティング」を参照)を使用している場合、ネットワークアドレス変換(NAT)を有効にして内部ネットワークのホストが外部ネットワークにアクセスできるようにします。
このゾーンのホストには外部ネットワークと内部ネットワークの両方からアクセスできますが、このゾーンのホストは自身では内部ネットワークにアクセスできません。DMZ内のシステムは内部ネットワークから隔離されるため、内部ネットワークの周りに追加の防衛線を設けたい場合にこのゾーンを設定します。
フィルタリングルールセットで明示的に許可されていないあらゆる種類のネットワークトラフィックは、iptablesによって抑止されます。したがって、着信トラフィックを持つそれぞれのインタフェースは、3つのゾーンのいずれかに配置する必要があります。各ゾーンに対して、許可するサービスやプロトコルを定義します。ルールセットは、外部ホストから送信されたパケットにのみ適用されます。ローカルに生成されたパケットは、ファイアウォールによって捕捉されません。
設定はYaSTで行うことができます(43.4.1項 「YaSTを使ったファイアウォールの設定」を参照)。または、ファイル/etc/sysconfig/SuSEfirewall2に手動で設定することもできます。このファイルには、詳しい注釈が付けられています。また、さまざまな設定例が/usr/share/doc/SuSEfirewall2/EXAMPLESに格納されています。
![]() | 自動ファイアウォール設定 |
|---|---|
インストール後に、YaSTは、すべての設定済みインタフェース上で自動的にファイアウォールを起動します。システム上でサーバが設定されており有効になっていれば、YaSTは、サーバ設定モジュールの[]オプションまたは[]オプションを使用して、生成されたファイアウォール設定に自動的に変更を加えます。サーバモジュールの一部のダイアログでは、[]ボタンをクリックすると、追加のサービスとポートを有効にできます。YaSTのファイアウォール設定モジュールは、ファイアウォールを有効または無効にする作業、あるいは再設定する作業に使用できます。 | |
グラフィカル設定用のYaSTダイアログには、YaSTコントロールセンターからアクセスできます。+の順に選択します。設定は7つのセクションに分かれており、画面左側のツリー構造で各セクションに直接ジャンプすることができます。
このダイアログでは起動動作を設定します。デフォルトのインストールでは、SuSEfirewall2は自動的に起動します。このダイアログで、ファイアウォールを起動または停止することもできます。動作中のファイアウォールに新しい設定を適用するには、[]をクリックします。
ここには、認識されているすべてのネットワークインタフェースがリストされます。ゾーンからインタフェースを削除するには、削除するインタフェースを選択して、[]をクリックし、[]を選択します。ゾーンにインタフェースを追加するには、追加するインタフェースを選択して、[]をクリックし、使用可能のいずれかのゾーンを選択します。[]を使用して、ユーザ固有の設定で特殊なインタフェースを作成することもできます。
このオプションは、システムに対するアクセスが禁止されているゾーンに対してシステムサービスを提供するために使用します。デフォルトでは、システムには、外部ゾーンからの保護だけが設定されています。外部のホストで利用可能にするサービスだけを、明示的に許可してください。から該当するゾーンを選択して、リストからサービスを有効にします。
マスカレードは、インターネットのような外部のネットワークから内部のネットワークを隠します。その一方で、内部のネットワークのホストからは外部のネットワークに透過的にアクセスできるようにします。外部ネットワークから内部ネットワークへの要求はブロックされますが、内部ネットワークからの要求は、外部から見ると、マスカレードサーバから発信されたように見えます。内部ホストの特殊なサービスを外部ネットワークから利用可能にする必要がある場合は、そうしたサービス用の特殊なリダイレクトルールを追加します。
このダイアログでは、ブロードキャストが可能なUDPポートを設定します。各ゾーンで必要なポート番号またはサービス名を、スペースで区切って指定してください。/etc/servicesも参照してください。
ここでは、受け付けられなかったブロードキャストについてのログを有効にすることもできます。ただし、Windowsホストは、互いを認識するためにブロードキャストを使用するため、大量のパケットが禁止されることになります。このため、ログを有効にすると大量のパケットがすべてログに記録されてしまいます。
このダイアログでは、外部ネットワークに対するIPsecサービスを利用できるようにするかどうかを設定します。どのパケットを信頼するかは、[]で設定します。
ログには、受け付けられたパケットと、受け付けられなかったパケットの2つのルールがあります。受け付けられなかったパケットは、捨てられるか拒否されます。その両方について、、、のいずれかを選択します。
機能設定が終わったら、[]をクリックしてダイアログを閉じます。ゾーンごとのファイアウォール設定の概要が表示されます。設定がすべて正しいかどうかチェックしてください。このサマリーには、許可されたすべてのサービス、ポート、プロトコルがリストされます。設定を修正するには、[]をクリックします。設定内容を保存するには、[]をクリックします。
以降では、適切に設定するための手順を順を追って説明します。各設定項目には、ファイアウォールとマスカレードのどちらに関連するかを示してあります。必要に応じて、ポート範囲(500:510など)使用します。設定ファイルで述べられているDMZ (非武装地帯)関連の設定については、ここでは取り上げません。DMZは、大規模な組織に見られる複雑なネットワークインフラストラクチャ(企業ネットワークなど)でのみ使用されるものであり、広範な設定とこの分野に関する深い知識を必要とします。
はじめに、YaSTのシステムサービスモジュール(ランレベル)を使用して、使用中のランレベル(通常(3または 5)でSuSEfirewall2を有効にします。これにより、/etc/init.d/rc?.d/ディレクトリ内のSuSEfirewall2_*スクリプトへのシンボリックリンクが設定されます。
FW_DEV_EXT (ファイアウォール、マスカレード)
インターネットへの接続デバイス。モデム接続の場合は、ppp0を指定します。IDSNリンクの場合は、ippp0を指定します。DSL接続には、dsl0を指定します。デフォルトルートに対応するインタフェースを使用する場合は、autoを指定します。
FW_DEV_INT (ファイアウォール、マスカレード)
内部プライベートネットワークへの接続デバイス(eth0など)。内部ネットワークがなく、ファイアウォールが動作するホストのみを保護する場合は、空にします。
FW_ROUTE (ファイアウォール、マスカレード)
マスカレード機能が必要な場合は、yesに設定します。内部ホストのネットワークアドレス(例: 192.168.x.x)がインターネットルータで無視されるようになるため、内部ホストは外部から見えなくなります。
マスカレード機能なしのファイアウォールで、内部ネットワークへのアクセスを許可する場合は、これをyesに設定します。この場合、内部ホストでは公式のIPアドレスを使用する必要があります。ただし、外部ネットワークから内部ネットワークへのアクセスは許可しないのが普通です。
FW_MASQUERADE (マスカレード)
マスカレード機能が必要な場合は、yesに設定します。これにより、内部ホストからインターネットへの仮想的な直接接続が実現されます。内部ネットワークのホストとインターネット間にプロキシを設定すると、セキュリティが強化されます。プロキシサーバが提供するサービスにはマスカレードは必要ありません。
FW_MASQ_NETS (マスカレード)
マスカレードを行うホストやネットワークを指定します。各エントリはスペースで区切ります。たとえば、次のようにします。
FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT (ファイアウォール)
内部ネットワークからの攻撃に対してファイアウォールホストを保護するには、yesに設定します。サービスは、明示的に有効にした場合にのみ、内部ネットワークに対して提供されます。FW_SERVICES_INT_TCPおよびFW_SERVICES_INT_UDPも参照してください。
FW_SERVICES_EXT_TCP (ファイアウォール)
使用可能にするTCPポートを指定します。一般的な自宅用のワークステーションでは、通常サービスは提供していないため、空にします。
FW_SERVICES_EXT_UDP (ファイアウォール)
UDPサービスを実行しており、それを外部から使用できるようにする場合を除き、空にします。UDPを使用したサービスとしては、DNSサーバ、IPSec、TFTP、DHCPなどがあります。これらのサービスを使用可能にする場合は、使用するUDPポートを指定します。
FW_SERVICES_INT_TCP (ファイアウォール)
この変数には、内部ネットワークに対して使用可能にするサービスを指定します。記述形式はFW_SERVICES_EXT_TCPと同じですが、この設定は内部ネットワークに適用されます。この変数は、FW_PROTECT_FROM_INTをyesに設定した場合のみ設定します。
FW_SERVICES_INT_UDP (ファイアウォール)
FW_SERVICES_INT_TCPの項を参照してください。
ファイアウォールの設定が完了したら、設定をテストします。ファイアウォールのルールセットは、root権限でSuSEfirewall2 startを実行すると作成されます。次に、telnetを使用して、たとえば外部ホストから接続が実際に拒否されるかどうかを確認します。その後、/var/log/messagesを参照します。次のようなログが記録されているはずです。
Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A061AFEBC0000000001030300)
他にも、nmapやnessusといったパッケージを使用して、ファイアウォールの設定をテストできます。パッケージをインストールすると、nmapのドキュメントは/usr/share/doc/packages/nmapに、nessusのドキュメントは/usr/share/doc/packages/nessus-coreに置かれます。