公式および推奨ドキュメントへのリンクは、Netfilter Webサイトにあります。
これは新しいテーマではなく、リソースは無限です。
ほとんどの基本的なコマンドはかなり直感的で、マンページを簡単に参照できます。
netfilterは、パケットフィルタリングを可能にするカーネルレベルの技術であり、非常に高度です。パケットをマングルしたり、パケットを変換したり、ルーティングに影響を与えたりする追加のテーブルがあります。このiptables
ユーティリティは、netfilterと対話するためのユーザーランドツールです。高度な機能について学びたい場合は、前述のドキュメントを参照することをお勧めします。基本的な機能の概要については、さらにお読みください。
既存のルールをすべてリストするには:
iptables -L -n
-n
iptablesがipsを解決できなくなり、出力が高速になります。
デフォルトのテーブルはfilter
テーブルです。これは、3つのチェーンに基本的なファイアウォールルールを適用するために使用されるものです。3つのデフォルトのチェーンfilter
テーブルがありINPUT
、OUTPUT
とFORWARD
。
チェーンの大部分は自明です。INPUTチェーンは着信パケットに影響を与え、OUTPUTチェーンはローカルで生成されたパケットに影響を与え、最後にシステムを経由するすべてのパケットを転送します。
指定できるターゲットの中で、DROP
パケットを送信できます。つまり、単に無視して応答しません。することができますREJECT
ICMP応答が否定のソースに送信されるパケット。最後に、ACCEPT
それらを使用して、パケットのルーティングを続行できます。
多くの場合、外部に面したファイアウォールでは、インターネット上のネットワークの目に見えるフットプリントを削減するDROP
ためREJECT
、デフォルトの選択肢はの代わりにデフォルトになります。たとえば、サービスを特定のホストに制限するIPは、で可視性が低くなりDROP
ます。
注意、-A
チェーンの最後に追加することを意味します。上に挿入したい場合は、を使用できます-I
。すべてのルールは上から下に処理されます。 -D
削除用。
からDROP
の着信パケットへ192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
これによりDROP
、そのIPからのすべてのプロトコルのターゲットにジャンプします。
受け入れるために:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
ローカルサーバーまたはネットワークからそのIPへのアクセスを防ぐには:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
-p
プロトコル、-s
パケットのソース、パケットの-d
宛先、宛先ポート--dport
、ソースポート--sport
、およびルールによるパケットの処理方法に影響する他の多くのフラグを指定できます。
デフォルトのINPUT
ポリシーがDROP
あり、192.168.123.0/24
サブネット上の全員がサーバー上のSSHにアクセスできるようにしたい 場合は、次の例をご覧ください。
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
そうです、CIDR表記も使用できます!
一般的に、デフォルトのポリシーはDROP
すべてのチェーンに最適です。すべてのチェーンには、-P
フラグで指定されたデフォルトポリシーがあります。ポリシーをdefault DROP
に設定している場合でも、チェーン内の最終エントリも同様にすることをお勧めしDROP
ます。
たとえばDROP
、INPUT、FORWARD、およびOUTPUTチェーンのポリシーを変更するには:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
最初に自分でSSHアクセスを許可せずに、リモートシステムでINPUTにDROPのデフォルトポリシーを指定すると、システムにアクセスできなくなる可能性があることに注意してください。リモートシステムの場合、一時的なcrontabを指定して、5分ごとにすべてのルールをフェイルセーフとしてフラッシュできます。
すべてのルールを削除し、すべてのトラフィックを許可するには:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
注、-X
作成されたすべてのチェーンを削除します。 -F
すべてのルールをフラッシュします。
ルールを保存および復元するためのネイティブツールがあります。特に、iptables-save
とiptables-restore
。最近のほとんどのLinuxディストリビューションは持っているsave
とrestore
iptablesの内の関数は、システムに付属のファイルを初期化。
不正な形式のパケットや他の種類の望ましくないトラフィックをドロップするなど、ファイアウォールのその他のベストプラクティスがあります。これは、デフォルトでこれらのポリシーの多くを実装するため、Shorewallなどのフロントエンドユーティリティを使用する利点の1つです。それにもかかわらず、私はあなたのアプローチに同意し、独自のルールを直接維持することを好みます。これらの同じベストプラクティスはフロントエンドなしで実装できます。