このチュートリアルでは、 iptablesを使用してファイアウォールを設定する方法を紹介します。 オペレーティングシステムとしてUbuntuまたはCentOSを実行しているLinuxVPSの場合。 Iptablesは、IPv4パケットフィルタリングとNATの管理ツールであり、LinuxカーネルでIPv4パケットフィルタールールのテーブルを設定および管理するために使用されます。
ファイアウォールを適切に構成および設定することは、サーバーを保護するために実行する必要がある最も重要で重要なことの1つです。
iptablesを使用すると、いくつかの異なるパケットマッチングテーブルが定義され、各テーブルには、ユーザーが定義したいくつかのチェーンだけでなく、いくつかの組み込みチェーンを含めることができます。チェーンは実際にはパケットのセットに一致するルールのリストであり、各ルールは一致したパケットをどう処理するかを指定します。
デフォルトのテーブルはfilter
です テーブルには、組み込みのチェーンINPUT、FORWARD、およびOUTPUTが含まれています。 INPUTチェーンはローカルソケット宛てのパケットに使用され、FORWARDチェーンはボックスを介してルーティングされるパケットに使用され、OUTPUTチェーンはローカルで生成されたパケットに使用されます。
SSH経由でサーバーに接続し、次の構文を使用して特定のチェーンで定義されたルールを一覧表示します。
sudo iptables -L CHAIN
CHAINを組み込みチェーンの1つに置き換えて、定義されたルールを確認します。チェーンが選択されていない場合、すべてのチェーンが出力に表示されます。
sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
ファイアウォールルールは、特定の基準に一致する場合に特定のパケットを処理する方法を指定し、パケットが基準に一致しない場合は、チェーンで定義されている次のファイアウォールルールが調べられます。ブロッキングルールの後にローカルIPアドレスからのパケットを受け入れるルールを定義すると、サーバーから簡単にロックアウトできるため、これはファイアウォールルールを定義するときに知っておくべき非常に重要なことです。
ファイアウォールルールに使用できるターゲットは、ACCEPT、DROP、QUEUE、およびRETURNです。 ACCEPTはパケットを通過させ、DROPはパケットをドロップし、QUEUEはパケットをユーザースペースに渡し、RETURNは現在のチェーンのパケットトラバースを停止し、前のチェーンの次のルールで再開します。デフォルトのチェーンポリシーは、パケットが特定のファイアウォールルールに一致しない場合のパケットの処理を定義します。最初のコマンドの出力でわかるように、すべての組み込みチェーンのデフォルトポリシーはACCEPTに設定されています。 ACCEPTはパケットを通過させるので、基本的に保護はありません。
特定のルールを追加する前に、次のルールを追加してください。
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
これにより、すでに確立されている接続が切断されるのを防ぎ、現在のSSHセッションがアクティブなままになります。
次に、ループバックインターフェイスでトラフィックを許可するルールを追加します。
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT
次に、ローカルIPアドレスのSSH経由でサーバーへのアクセスを許可して、自分だけがサーバーにアクセスできるようにします。
sudo iptables -A INPUT -s 111.111.111.111 -p tcp --dport 22 -j ACCEPT
ここで、111.111.111.111
はローカルIPアドレスであり、22
SSHデーモンのリスニングポートです。ローカルIPアドレスが動的に変更される場合は、-s 111.111.111.111
を省略するのが最適です。 分割し、別の方法を使用して、SSHサービスを不要なトラフィックから保護します。
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
次に、HTTP/HTTPSサーバーなどの重要なサービスへのアクセスを許可します。
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
[ecko_alert color =” blue”]どこかに行き詰まりましたか?私たちからVPSを入手してください。サーバーを適切に保護し、ファイアウォールを無料で構成します。[/ ecko_alert]
次に、現在のルールをリストし、すべてがOKかどうかを確認します。詳細な出力については、次のコマンドを使用できます。
sudo iptables -nvL
アクセスを許可したい他のサービスがある場合は、今すぐそれを行うのが最善です。完了したら、INPUT組み込みチェーンのデフォルトポリシーをDROPに設定できます。
sudo iptables -P INPUT -j DROP
これにより、ファイアウォールルールの基準に一致しないパケットがすべてドロップされます。最終的な出力は次のようになります。
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
ただし、サーバーを再起動すると、定義したファイアウォールルールがすべて失われるため、ルールを永続的にすることが非常に重要です。
Ubuntu VPSを使用している場合は、その目的のために追加のパッケージをインストールする必要があります。先に進み、次のコマンドを使用して必要なパッケージをインストールします。
sudo apt-get install iptables-persistent
Ubutnu 14.04 以下のコマンドを使用して、ファイアウォールルールを保存および再ロードできます。
sudo /etc/init.d/iptables-persistent save sudo /etc/init.d/iptables-persistent reload
Ubuntu 16.04 代わりに次のコマンドを使用してください:
sudo netfilter-persistent save sudo netfilter-persistent reload
CentOS VPSを使用している場合は、次のコマンドを使用してファイアウォールルールを保存できます。
service iptables save
もちろん、フルマネージドVPSホスティングサービスのいずれかを使用している場合は、これを行う必要はありません。その場合は、専門のLinux管理者にサーバーでのiptablesの構成を依頼するだけです。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。
PS 。 UbuntuとCentOSでiptablesを使用してファイアウォールを設定する方法に関するこの投稿が気に入った場合は、下のボタンを使用してソーシャルネットワーク上の友達と共有するか、コメントセクションにコメントを残してください。ありがとう。