取敢えず、ゲートウェイサーバーとして機能させるために設定を行ってきましたが、ファイアーウォールについては、別途設定を煮詰めていく必要があります。ここで行った設定で注意したいのは eth1 に対しては、全くの無防備 であると言う点です。
初心者に限らず、サーバーOSをインストールして先ず最初に行うのがネットワーク周りの設定ですが、Web Mail サーバーなどを構築する前に eth1 側に対して iptables による セキュリティポリシーを適用すると、初心者の場合、ネットワーク上の問題なのか、サーバー側に問題があるのか、問題の切り分けが難しくなるため、このよう にしています。
最終的には eth1(192.168.1.56) に対しても eth0(192.168.0.56) 同様に、必要なサービスポートだけ穴をあける必要があります。例え内部に悪意のある人がいなくても、トロイの木馬やワームなど、インターネット経路で感染し、内側からサーバーに攻撃を行う可能もがあるからです。
ここから先は、それぞれの環境、目的に応じてファイアーウォールを構築していく必要があります。
それぞれのネットワーク事情に応じて、ファイアーウォールを構築していく必要があります。ここで行った設定では、上記の理由から /etc/sysconfig/iptables に記述されている
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT は外して、通信を許可するポートを別途指定するようにします。
ここで使用した 「セキュリティ レベル」 ツールで作成された/etc/sysconfig/iptables 25行目 では
25行目
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
コマンド | 意味 |
---|---|
-p tcp | プロトコルはTCP |
-m state --state NEW | 新規にコネクションを開始 |
-m tcp --dport 80 | ポートに 80 ( http ) を指定 (/etc/service に定義されているサービスポート) |
-j ACCEPT | パケットを透過させる |
となっており、パケットを透過すべき方向 「送信元 IP or 宛先 IP」 又は インターフェイスeth0 / eth1 が指定されていません。つまり、外部、内部からは、port 80 を使った通信は許可されていることになります。
仮に、
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT は外したとしても、上記
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
で指定されている限り、eth1 のネットワークセグメントからの通信は行えることになります。
Webサーバーが起動している場合、試しに http://192.168.1.56
eth1に割当てた IPアドレス ブラウザでアクセスするとホームページが表示されますが、ドメインによるアクセス(http://mydomain.net)では、エラーが表示されページが見えない筈です。
なぜなら、 ここで行った設定では、DNS に関しては定義されておらず、定義されていないパケットについては、全て破棄するよう設定しているため、クライアントからDNSサーバーへの問い合わせが出来ないからです。
192.168.1.0/24 からサーバー管理者が、telnet 等でリモートでシステム制御を行う場合、特定のIPアドレスのみからしか接続要求を受け付けないようにするといった設定を例にすると、
X-VNCサーバーを192.168.1.42からのみに制限したい場合
# iptables -A FORWARD -s 192.168.1.42 -p tcp -m state --state NEW -m tcp --dport 11965 -j ACCEPT
とし、FORWARD チェーンに追加します。制限したいサービスが利用してる通信ポート番号を調べる場合は、開発元の技術資料、又は、検索エンジンで調べます。
ケースに応じた iptables テンプレートを元に、ファイアーウォール構築を行う方法が紹介されています。
参照 => @IT ステートフルパケットフィルタを使ったサービスの公開
同じく、テンプレートを元に、natテーブルで行う IPルーター構築を行う方法が紹介されています。
参照 => @IT natテーブルを利用したLinuxルータの作成
市販されている一般のルーターでも行われているフィルタリング設定ですが、RHEL4のガイドでも説明されています。ここで取り上げられている内容を説明します。
参照 => 以下の RHEL4ガイド が分かり易いかと思います。
Red Hat Enterprise Linux 4: セキュリティガイド ウィルスとなりすましIPアドレス
以下、上記サイトで紹介されている内容です。
eth0 から、つまりWAN側からは、eth1 からのプライベートアドレスによる接続はあり得ません。あるとしたら、なりすましによる不正アクセスです。このような場合、ここで行ったフィルターでは対 応出来ません。 この場合、eth0 から来る eth1 のセグメントIPアドレスからの接続を破棄することで対応する事ができます。
フィルターを追加
設定を保存
こちらは、トロイの木馬による特定ポートの攻撃の破棄です。万が一、192.168.1.0/24 セグメントのクライアントが、ブラウザや、メール経由でウイルスに感染した場合、ウイルスが感染拡大に使うポートを破棄することで、感染拡大を防止する事が出来ます。
フィルターを追加
設定を保存
あと、ここで行った(CentOS-4)デフォルトの設定で気になる点は、
/etc/sysconfig/iptables 11行目の
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
デフォルトのこの例では、 全てのICMPパケットタイプを受け付けるように設定されています。このため、大量のICMPパケット攻撃など DoS 攻撃を受ける可能性があります。
ファイアーウォールとは、その名の通り防火壁のことで、侵入経路を遮断するための仕組みの総称です。侵入経路を遮断するには、幾つかの方法があります。こ こで構築したような ゲートウェイ サーバーに適用できる ネットワーク型ファイアーウォールは、大きく以下のタイプがあります。
パケットに含まれる送信元・宛先IPアドレスにより、通信の許可、不許可を行うタイプで、ここで導入している iptables や ipchains もこのタイプになります。パケットレベルのフィルタリングを行うため、非常に柔軟で高度なファイアーウォールを構築できますが、ネットワークプロトコルな どの知識が要求される上、設定も難しく初心者には敷居が高いです。特に、送信元のIPアドレス偽装(スニッフィング)には注意が必要で、ネットワークに応 じて適切に設定を行う必要があります。
ルータで外部からの不正侵入、ワームウイルスに備えは、ルータ か ファイアウォールソフトの何れかが必要です。また、ノートパソコンなどの携帯端末を公衆無線LAN サービスなど出先のネットワークから利用する場合、ファイアウォールソフトで自分の身を守る必要があるため、ファイアウォールソフトが必須となるケースもあります。
予断になりますが、アンチウイルスソフトの中には、POP / SMTP プロトコルを監視しウイルスを除去するタイプや、内向けのファイアウォールを強化したファイアウォールソフトを統合する動きがあります。
また、内側から出て行くパケットに対してフィルタリングが木目細かに行えるといっても現在発売されているクライアント向けセキュリティソフトでは、 Winny や Share などの通信を規制、情報流出を止めることは出来ないので注意が必要です。
このようなP2P ファイル共有ソフト抑制機能など今後搭載される可能性も考えられるため、ファイアウォール、アンチウイルス、アンチスパイウェア、といったクライアント製品の垣根は今後なくなっていくのではないかと思います。
一般家庭用ルーターに実装されているのもこのパケットフィルタリングによるファイアーウォールです が、適用できるフィルタリングが少なく、サーバー公開用途には力不足です。
サーバー公開を前提としない、一般のインターネットユーザーの場合、 YahooBB のようなADSLモデムのみを配布で、モデムをPCに直結してインターネットを利用する場合は、ファイアーウォールソフトが必須になりますが、 ルーターを利用していた場合は、これらの製品は必須ではなくなります。
ローカルホストからの接続は、proxyサーバーが行う事(接続代行)で、通信に使うポートを最小限にする事ができます。ユーザーは proxy のポートに接続するのが唯一の通信手段となるため、内部からの攻撃に対しても、外部からの内部への攻撃に対してもセキュリティを確保する事が出来ます。
パ ケットフィルタリング型のファイアーウォールほど柔軟性はありませんが、提供するサービスが限定できるのであれば非常に強力なファイアーウォールとなります。出来ないことは出来ないので。企業向けのファイアーウォール アプリケーションとしても様々な製品が販売されています。これらのアプリケーション ゲートウェイは、サーバーに高負荷がかかります。
「どちらのタイプを選ぶのか」 という話ではなく、これらを上手く組み合わせることで、それぞれのネットワーク事情に応じたファイアーウォールを構築する必要がある事に注意して下さい。
初心者が良く誤解されていると思われる点について
インターネットが利用できる環境である以上、ブラウザやメールから感染するウイルスや、ブラウザのセキュリティーホールを突く攻撃に対しては、ファイアー ウォールは無力であり、あくまで WAN/LAN に関わらず、サーバー外部からの間口を閉じ、条件に応じてマッチしたものだけを通すのがファイアーウォールの目的となります。
サーバーアプリケーション毎の対策は勿論のこと、外部のウイルスプログラムと連携できるものもありますので、それぞれのサーバーアプリケーション側でも創意工夫が必要です。
また、外部、内部に限らずポートを開けてサービスを提供する以上、Apache や Sendmail などのサーバー プログラムのセキュリティホールを突く攻撃に対しては、何の効果もありません。アプリケーションごとのセキュリティ メンテナンスは重要です。自信の設定したポリシーを過信せずに、侵入の兆候を得るための監視システム、侵入された場合の対策など怠らないようにして下さ い。
このように、ファイアーウォールといっても、iptables を理解し、コマンドを使いこなした上で、初めてファイアーウォールと呼べるシステムを構築する事が出来ます。非常に重要な機能ですので、是非使いこなしたいものです。