LinuxにおけるShorewallファイアウォールの設定を探る方法
前回の記事では、Shorewallのインストール、設定ファイルのセットアップ、NATによるポートフォワーディングの設定を学びました。この記事では、Shorewallに関連する一般的なエラーを掘り下げ、解決策を提供し、コマンドラインオプションについて紹介します。
Shorewallはコマンドラインで実行できる広範なコマンドを提供します。man shorewallを見てみると多くの情報が得られるはずですが、最初に行う作業は構成ファイルのチェックです。
sudo shorewall check
Shorewall は、すべての設定ファイルとその中に含まれるオプションのチェックを印刷します。
出力はこのようになります。
Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking MAC Filtration -- Phase 1...
Checking /etc/shorewall/rules...
Checking /usr/share/shorewall/action.Invalid for chain %Invalid...
Checking MAC Filtration -- Phase 2...
Applying Policies...
Checking /etc/shorewall/routestopped...
Shorewall configuration verified私たちが探している魔法のラインは、下部にある「Shorewallの構成が確認されました」と記載されたものです。エラーが発生した場合、それはカーネル構成に不足しているモジュールが原因である可能性が最も高いです。
一般的な2つのエラーの解決方法をお見せしますが、もしあなたのマシンをファイアウォールとして使用するつもりなら、必要なモジュールをすべて含めてカーネルを再コンパイルすることが重要です。
最初のエラー、そして最も一般的なエラーは、NATに関するエラーです。
Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Checking /etc/shorewall/zones...
Checking /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Actions Files...
Checking /usr/share/shorewall/action.Drop for chain Drop...
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast...
Checking /usr/shrae/shorewall/action.Invalid for chain Invalid...
Checking /usr/share/shorewall/action.NotSyn for chain NotSyn..
Checking /usr/share/shorewall/action.Reject for chain Reject...
Checking /etc/shorewall/policy...
Adding Anti-smurf Rules
Adding rules for DHCP
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking Accept Source Routing...
Checking /etc/shorewall/masq...
ERROR: a non-empty masq file requires NAT in your kernel and iptables /etc/shorewall/masq (line 15)これに似たものが表示されている場合、現在のカーネルがNATのサポートでコンパイルされていない可能性が高いです。これは、多くのデフォルトのカーネルで一般的です。「Debianカーネルのコンパイル方法」というチュートリアルを読んで、始めてみてください。
チェックによって生じるもう一つの一般的なエラーは、iptables および logging に関するエラーです。
shorewall check
Checking...
Processing /etc/shorewall/params...
Processing /etc/shorewall/shorewall.conf
Loading Modules..
ERROR: Log level INFO requires LOG Target in your kernel and iptablesこれは新しいカーネルにコンパイルすることもできますが、ULOGを使用したい場合は簡単な修正があります。ULOGはsyslogとは異なるロギングメカニズムです。使うのはかなり簡単です。
これを設定するには、すべての設定ファイル内の「info」のすべてのインスタンスを「ULOG」に変更する必要があります。これを行うためのコマンドは次の通りです。
cd /etc/shorewall
sudo sed –i ‘s/info/ULOG/g’ *
その後、/etc/shorewall/shorewall.confファイルを編集し、その行を設定します。
LOGFILE=あなたのログを保存したい場所へ。私のは/var/log/shorewall.logにあります。
LOGFILE=/var/log/shorewall.log次のコマンドを再実行すると、健全な状態が確認できるはずです。
shorewall check
Shorewallのコマンドラインインターフェースは、システム管理者にとって便利なワンライナーが多数用意されています。特に多くの変更がファイアウォールに加えられる場合に頻繁に使用されるコマンドは、現在の設定状態を保存することで、問題が発生した場合にロールバックできるようにすることです。
これの構文はシンプルです。
sudo shorewall save <filename>
ロールバックは同じくらい簡単です。
sudo shorewall restore <filename>
Shorewallは、別の設定ディレクトリを使用するように起動および構成することもできます。これは開始コマンドで指定できますが、最初に確認することをお勧めします。
sudo shorewall check <config-directory>
構成を試してみたいだけで、それが動作しているなら、起動することができます。試すオプションを指定できます。
sudo shorewall try <config-directory> [ ]
Shorewallは、Linuxシステムで利用可能な多くの堅牢なファイアウォールソリューションのうちの一つです。ネットワーキングのスペクトルのどの端にいるとしても、多くの人々がそれをシンプルで便利だと感じています。
これはほんの小さなスタートに過ぎず、ネットワークの概念に深く入り込むことなく、あなたを道に導くことができます。いつものように、リサーチを行い、マニュアルページや他のリソースを見てください。Shorewallのメーリングリストは素晴らしい場所で、最新の情報が整備されています。