私は今読んだ。iptables
マニュアルページ。モジュールの場合、?をconntrack
使用/--ctproto
優先する必要があるようです。--protocol
今まで使ったことをもっとよく見せてあげます、いつかは移りますct*
。とにかく、ここにあります:
$ cat /etc/iptables/rules.v4
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
--append INPUT --in-interface lo --match comment --comment "Allow loopback" --jump ACCEPT
--append INPUT --match conntrack --ctstate INVALID --match comment --comment "Drop invalid packets" --jump DROP
--append INPUT --match conntrack --ctstate NEW --protocol tcp ! --syn --match comment --comment "Reject new non-syn TCP" --jump REJECT --reject-with tcp-reset
--append INPUT --match conntrack --ctstate NEW,ESTABLISHED --protocol tcp --match tcp --destination-port 22 --source 192.168.0.0/24 --match comment --comment "Allow local SSH on default port" --jump ACCEPT
--append INPUT --protocol icmp --icmp-type echo-request --match limit --limit 2/second --limit-burst 5 --match comment --comment "Allow only ping and within limits" --jump ACCEPT
--append INPUT --match conntrack --ctstate RELATED,ESTABLISHED --match comment --comment "Normal traffic" --jump ACCEPT
COMMIT
だから、次のように書き直してみました。
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
--append INPUT --in-interface lo --match comment --comment "Allow loopback" --jump ACCEPT
--append INPUT --match conntrack --ctstate INVALID --match comment --comment "Drop invalid packets" --jump DROP
--append INPUT --match conntrack --ctstate NEW --ctproto tcp ! --syn --match comment --comment "Reject new non-syn TCP" --jump REJECT --reject-with tcp-reset
--append INPUT --match conntrack --ctstate NEW,ESTABLISHED --ctproto tcp --match tcp --destination-port 22 --source 192.168.0.0/24 --match comment --comment "Allow local SSH on default port" --jump ACCEPT
--append INPUT --match conntrack --ctproto icmp --icmp-type echo-request --match limit --limit 2/second --limit-burst 5 --match comment --comment "Allow only ping and within limits" --jump ACCEPT
--append INPUT --match conntrack --ctstate RELATED,ESTABLISHED --match comment --comment "Normal traffic" --jump ACCEPT
COMMIT
別の方法を試してみると、次のエラーが発生し、他のエラーも発生する可能性があります。
# iptables-restore < rules.v4-ct
iptables-restore v1.8.4 (legacy): unknown option "--syn"
Error occurred at line: 7
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
# iptables-restore < rules.v4-ct
iptables-restore v1.8.4 (legacy): unknown option "--icmp-type"
Error occurred at line: 9
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
# iptables-restore < rules.v4-ct
iptables-restore: line 11 failed
# iptables-restore < rules.v4-ct
Bad argument `COMMIT'
Error occurred at line: 11
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
これについて明らかにしていただきありがとうございます。
ベストアンサー1
いくつかの注意:
- 人々が最初に使用すべき場所がどこにあるかを知りたいです
--ctproto tcp
。 - 精密OPのマンページURLリンク10年を超えました。たとえば、この回答の最後にあるコメントに使用されている
conntrack
一致モジュールは含まれていません。--ctreplsrcport
2つのマニュアルページに分割されていません。iptables
(基本)とiptables-extensions
今日、ほとんどの興味深い文書(一致とターゲット)がここにあります。私は、引数とサブコマンドへのリンクを提供するDebianのマニュアルページを好みます(例:conntrack
マッチ) が頻繁に表示されます。
質問について:
--protocol
は組み込み機能であり、追加のiptables
マッチングモジュールは必要ありません(説明を参照iptables-extensions(8)
)。一致モジュール引数ではなく、依存関係を複数のモジュールに変更します。モジュールをロードせずにモジュール固有のパラメータを使用すると、機能しません。
プロトコル固有のモジュールはプロトコルを指定する必要があります。
プロトコル(例
-p tcp
:)を宣言すると、自動的に同じ名前(例-m tcp
:)を持つモジュールをロードしようとします。その逆は真実ではありません。これがtcp
ORicmp
モジュールが明示的に書かれることはほとんどありませんが、図のように実際には常に存在する理由ですiptables-save
。これは明示的に文書化されていませんが、もしそうなら、文書は次のようになります。厳しく第二に、常に最新の文書を作成し、-p tcp
尊重する必要があります。-m tcp
したがって、使用可能であっても、--ctproto tcp
一部ではない機能が必要な場合は-p tcp -m tcp
常に必要です。 ICMPも同じだ。より具体的な方法が利用可能な場合は、conntrack
そのためにモジュールを使用することはおそらく価値がないでしょう。
また、conntrack
検索つながるテーブルは特定の方法よりも費用がかかります(ただし、実際にクエリが完了した場合(prio -200に基づいて)つながる施設)、アイテムへの参照キャッシュステータスはパケットのskbuffでも直接確認できます。
いくつかの注意:
-
システム(ネットワークネームスペース)レベルでは、このフィルタは次のことを行います。
-A INPUT -p tcp -m conntrack --ctstate NEW --ctproto tcp -m tcp ! --syn -m comment --comment "Reject new non-syn TCP" -j REJECT --reject-with tcp-reset
最終
REJECT
目標を除いて、次のように置き換えることができます。sysctl -w net.netfilter.nf_conntrack_tcp_loose=0
これらのパケットは無効と分類され、無効なルールチェックによって破棄されます(OPルールで拒否されるのではなく)。デフォルトでは、緩いモードは一時的に中断されたトラフィック(ステートフルルーティングファイアウォールの再起動など)を再開できるように有効になっています。
8号線は実際に完了することができます。いいえ
-p tcp -m tcp
なぜならこの事件のせいで
-m conntrack
置き換える機能があります。nat / PREROUTINGルールは元の宛先ポート(22と異なる場合があります)を変更できるため、
--ctreplsrcport 22
以下ではより自然なポートが選択されます--ctorigdstport 22
。-A INPUT -s 192.168.0.0/24 -m conntrack --ctstate NEW,ESTABLISHED --ctproto tcp --ctreplsrcport 22 --match comment --comment "Allow local SSH on default port" --jump ACCEPT
でも(まれに使用されるnat / INPUTはフィルタ/入力の後に発生します。一部の文書では別途説明しますが、ソースでは何も変更されず、
--ctorigsrc
自然に使用できます):-A INPUT -m conntrack --ctstate NEW,ESTABLISHED --ctproto tcp --ctreplsrcport 22 --ctorigsrc 192.168.0.0/24 --match comment --comment "Allow local SSH on default port" --jump ACCEPT