web-dev-qa-db-ja.com

iptables:NEW、ESTABLISHED、RELATEDパケットの違い

サーバー上のファイアウォールの一部:

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

オンラインで検索すると、常にそのルールでNEWが使用されているのがわかりますが、ESTABLISHEDおよびRELATEDが使用されていない理由を理解するのに苦労しています。

このような :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

新しいパケットがESTABLISHEDおよびRELATEDに変更されたときに、誰かが私に説明できますか?

47
Kris

受信者がピックアップする前に、電話の新しいパケットを考えてみましょう。 ESTABLISHEDパケットは、「こんにちは」です。そして、RELATEDパケットは、送信しようとしている電子メールについてそれらに伝えるために呼び出す場合です。 (メールは関連しています。)

私の類推があまりよくない場合は、manページでそれをうまく処理できると思います。

NEW-パケットが新しい接続を開始したか、または双方向でパケットを確認していない接続に関連付けられていることを意味します。

ESTABLISHED-パケットは、双方向でパケットを見た接続に関連付けられていることを意味します。

RELATED-パケットは新しい接続を開始していますが、FTPデータ転送やICMPエラーなどの既存の接続に関連付けられています。

iptables(8)-Linuxのマニュアルページ

48
Aaron Copley

サーバーとクライアントの両方でINPUTを制限し、OUTPUTを開くと想定します。

_iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
_

そして iptables-extensions(8) から、アクティブモードでのFTPの例について:

1。 NEW

NEWパケットは新しい接続を開始したか、または双方向でパケットを確認していない接続に関連付けられています。

ポート_50000_(任意の非特権ポート)上のクライアントは、ポート_21_上のFTPサーバーに接続します。サーバーは、この着信接続を受け入れるために少なくともこれが必要です。

_iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT
_

2。 ESTABLISHED

ESTABLISHEDパケットは、双方向でパケットを見た接続に関連付けられています。

クライアント側で、ローカルポート_21_を使用してポート_50000_でサーバーへの発信接続を開き、server (21)からclient (50000)

_Sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
_

3。関連

RELATEDパケットは新しい接続を開始していますが、FTPデータ転送やICMPエラーなどの既存の接続に関連付けられています。

FTP接続が確立され、データ接続が実行されようとすると、クライアントはポート_60000_でサーバーソケットを開きます(はい、アクティブなFTPクライアントがデータ接続のサーバーになります)(私の理解に)クライアントはこのポートに_60000_をRELATEDとして_50000->21_)から他の接続にマークし、FTP PORTコマンドを使用してこのポート番号をサーバーに送信します。次に、FTPサーバーは、クライアントのポート_20_からポート_60000_への新しい接続を開きます。この新しい接続を成功させるには、クライアントで次のことが必要になります。

_Sudo iptables -A INPUT -m state --state RELATED -j ACCEPT
_

最後に、これが機能するためには、システムが接続/パッケージをRELATEDとしてマークできるように_ip_conntrack_ftp_カーネルモジュールを有効にする必要があります(これは私の理解ですが、あまり深く掘り下げていません)。

_modprobe ip_conntrack_ftp
_
14
Jaime Hablutzel