はじめに
ファイアウォールの設定は、最新のオペレーティングシステムのほとんどを保護する上で重要な段階です。ほとんどのLinuxディストリビューションには、ファイアウォールの構成に使用できるさまざまなファイアウォールツールが装備されています。このガイドでは、IptablesファイアウォールをUbuntu14.04に構成する方法について説明します。
注: このチュートリアルでは、IPv4セキュリティについて説明します。 Linuxでは、IPv6のセキュリティはIPv4とは別に維持されます。たとえば、「iptables」はIPv4アドレスのファイアウォールルールのみを維持しますが、「ip6tables」と呼ばれるIPv6の対応物があり、IPv6ネットワークアドレスのファイアウォールルールを維持するために使用できます。
基本コマンド
このガイドに従う前に、サーバーにsudo権限が設定された非rootスーパーユーザーアカウントにアクセスできる必要があります。まず、iptablesコマンドはroot権限でのみ実行する必要があることを知っておく必要があります。この条件を実装するには、このガイドのすべてのコマンドの前に「sudo」を追加します。 「su」または「sudo-i」コマンドを使用してrootユーザーとしてログインすることもできますが、このガイドでは「sudo」を使用します。
最初に、iptables用に構成されている現在のルールを見つける必要があります。これは、次のコマンドを使用して実行されます。
#sudo iptables -L
Chain INPUT(policy ACCEPT)target prot opt source destination Chain FORWARD(policy ACCEPT)target prot opt source prot opt source cept destination source ac hain OUTPUT現在のルールは、-Lフラグの代わりに-Sフラグを使用して、より単純な形式で表示することもできます:
#sudo iptables -S-P INPUT ACCEPT-P FORWARD ACCEPT-P OUTPUT ACCEPT両方の結果で、3つのチェーンがINPUT、FORWARD、およびOUTPUTとして表示されていることがわかります。また、各チェーンのデフォルトポリシーがACCEPTとして設定されていることもわかりますが、上記の結果には実際のルールは設定されていません。これは、Ubuntuにはデフォルトのルールが設定されていないためです。
Iptablesにすでに設定されているルールがある場合は、次のように-Fフラグを使用してルールを完全にフラッシュできます。
注:ルールをリモートでフラッシュする場合は、INPUTチェーンとOUTPUTチェーンのポリシーをACCEPTに設定する必要があります。これは、次のように入力することで実行できます
#sudo iptables -P INPUT ACCEPT#sudo iptables -P OUTPUT ACCEPT#sudo iptables -FIptablesのルールの設定
iptablesのルールは2つの方法で設定できます。 1つの方法は、特定のルールを設定することにより、デフォルトのルールが不要なトラフィックを受け入れてブロックできるようにすることです。もう1つの方法は、許可されたトラフィックを構成し、他のすべてをブロックすることです。多くの場合、2番目の方法が推奨されます。
割り当てる必要のある最初のルールは、次のコマンドを入力して、すべてのインバウンドトラフィックを受け入れることです。
#sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED、RELATED -j ACCEPT-Lフラグを再度使用すると、上記のコマンドの結果を確認できます。
#sudo iptables -Lチェーン入力目標PROTオプトソース先がすべてACCEPT(ポリシーはACCEPT) - 、どこでもどこでもctstate RELATEDをESTABLISHEDChain FORWARD(ポリシーはACCEPT)ターゲットPROTオプトソース宛先チェーン出力(ポリシーはACCEPT)ターゲットPROTオプトソース宛先ここでは、ルールを適用する前と比較して、INPUTチェーンのポリシーが変更されていることがわかります。
次のステップは、特定のポートへのトラフィックを許可してSSH接続を有効にすることです。これは、次の方法で実行できます。
#sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT「ssh」はデフォルトでポート番号22に変換されます。 「ssh」の代わりに任意のポート番号を使用できます。 HTTP Webサーバーへのアクセスを許可するには、次のコマンドを入力します。
#sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTサーバーが正しく動作するように、Iptablesに割り当てる必要のあるACCEPTルールがもう1つあります。
#sudo iptables -I INPUT 1 -i lo -j ACCEPTドロップルールの追加
これまで、IptablesにACCEPTルールのみを追加しました。すべてのネットワークパケットはIptablesに割り当てられたルールに従って受け入れられるため、ブロックルールも割り当てる必要があります。 1つの方法は、DROPルールをINPUTチェーンのデフォルトポリシーに割り当てることです。これにより、INPUTチェーンを通過するすべてのパケットがキャッチされ、ドロップされます。
#sudo iptables -P INPUT DROPこのタイプの設計の影響の1つは、ルールがフラッシュされた場合にパケットのドロップにフォールバックすることです。
別のアプローチは、チェーンのデフォルトポリシーを受け入れたままにして、残りのすべてのパケットをチェーン自体の最下部にドロップするルールを追加することです。
上記のINPUTチェーンのデフォルトのポリシーを変更した場合は、次のように入力することで、ポリシーを元に戻すことができます。
#sudo iptables -P INPUT ACCEPTこれで、残りのパケットをドロップするルールをチェーンの最下部に追加できます:
#sudo iptables -A INPUT -j DROPIptablesを保存する前に、割り当てられたルールを一度確認することをお勧めします。現在のルールは次のように設定されています:
-P INPUT ACCEPT-P FORWARD ACCEPT-P OUTPUT ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate RELATED、ESTABLISHED -j ACCEPT-A INPUT -p tcp -m tcp- dport 22 -j ACCEPT-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT-A INPUT -j DROPIptablesルールの保存
デフォルトでは、サーバーが再起動されるとIptablesルールが消去されます。 Iptabelsルールを永続的に保存するには、いくつかの異なる方法で設定を保存できますが、最も簡単な方法は「iptables-persistent」パッケージを使用することです。これは、Ubuntuのデフォルトのリポジトリからダウンロードできます:
#sudo apt-get update#sudo apt-get install iptables-persistent次のコマンドでファイアウォールルールを保存します:
#sudo invoke-rc.d iptables-persistent saveUbuntu 10.04 / Debian 6.0でiptables-persistentを使用してファイアウォールルールを構成および保存する方法を知るには、以下のリンクをクリックしてください。
Iptablesを構成および保存する方法-Ubuntu10.04/Debian6.0に永続的
Ubuntu