web-dev-qa-db-ja.com

iptablesで-j REJECTまたは-j DROPを設定する方が良いですか?

Archlinux wikiにiptablesルールの例があります:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

数日前、友人から、最近の3つのルールにREJECTがある理由を尋ねられました。代わりにDROPがあるべきだと彼は私に言った、そして彼はDROPの場合のより良いセキュリティについて何かについて言及した。

だから、私は2つの質問があります:

  1. 3つのルールは何をしますか?

  2. そこにDROPを置いたときに何か違いはありますかREJECT --reject-with?はいの場合、違いは何ですか?

33

3つのルールは何をしますか?

これら3つのルールは一目瞭然のようです。

  1. ICMPメッセージ「port unreachable」で着信UDPパケットを拒否します
  2. 着信拒否TCP "tcp reset"のパケット
  3. ICMPメッセージ「プロトコル到達不能」で(他のプロトコルの)着信パケットを拒否する

詳細(UDP/TCPパケット、ICMPについて)を探している場合は、ネットワーキングのドキュメントと、おそらくman iptablesも。

DROP REJECT --reject-withを配置すると、違いはありますか?もしそうなら、誰かが私に違いを説明できますか、私は本当に感謝します。

それは違いを生みます。そして、一般的な考えに反して、DROPREJECTよりも優れたセキュリティを提供しません。これは正当なユーザーに不便であり、悪意のあるユーザーから事実上保護されません。この投稿では、推論について詳しく説明しています。

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

REJECTではなくDROPを使用する一般的な理由は、開いているポートに関する情報を提供しないようにすることですが、パケットを破棄すると、拒否と同じくらい多くの情報が提供されます。

REJECTを使用して、スキャンを実行し、結果を「接続が確立されました」と「接続が拒否されました」に分類します。

DROPを使用すると、結果を「接続確立」と「接続タイムアウト」に分類できます。

最も簡単なスキャナーは、オペレーティングシステムの「接続」呼び出しを使用し、1つの接続試行が完了するまで待機してから次の接続を開始します。このタイプのスキャナーは、パケットをドロップすることによってかなり遅くなります。ただし、攻撃が接続試行ごとに5秒のタイムアウトを設定した場合、マシン上のすべての予約済みポート(1..1023)をわずか1.5時間でスキャンすることが可能です。スキャンは常に自動化されており、攻撃者は結果が即時でないことを気にしません。

より洗練されたスキャナーは、オペレーティングシステムのTCP実装に依存するのではなく、パケット自体を送信します。このようなスキャナーは高速で効率的で、REJECTまたはDROPの選択に影響されません。

[〜#〜]結論[〜#〜]

DROPは敵対的な力に対する効果的な障壁を提供しませんが、正当なユーザーが実行するアプリケーションを劇的に遅くする可能性があります。 DROPは通常使用しないでください。

34
janos