解決策 1:
原則として、ポートに到達できないことを相手側に知らせたい場合は REJECT を使用し、人に見られたくないホストへの接続には DROP を使用します。
通常、LAN 内の接続に関するすべてのルールは REJECT を使用する必要があります。インターネットの場合、特定のサーバーの ident を除いて、インターネットからの接続は通常 DROPPED です。
DROP を使用すると、接続が占有されていない IP アドレスに接続されているように見えます。スキャナは、占有されていないように見えるアドレスのスキャンを続行しないことを選択する場合があります。ファイアウォールで接続をリダイレクトするために NAT を使用できることを考えると、既知のサービスの存在は必ずしもアドレス上のサーバーの存在を示すとは限りません。
ident は、SMTP サービスを提供するすべてのアドレスで通過または拒否される必要があります。ただし、SMTP サーバーによる Ident ルックアップの使用は使用されなくなりました。動作中の ident サービスに依存するチャット プロトコルもあります。
編集:DROP ルールを使用する場合:- UDP パケットはドロップされ、動作はサービスのないファイアウォールされていないポートに接続するのと同じになります. - TCP パケットは ACK/RST を返します。その上のサービスは で応答します。一部のルーターは、ダウンしているサーバーに代わって ACK/RST で応答します。
REJECT ルールを使用すると、ポートが使用できないことを示す ICMP パケットが送信されます。
解決策 2:
違いは、REJECT ターゲットはソースに拒否応答を送信するのに対し、DROP ターゲットは何も送信しないことです。
これは便利です。 ident サービス用。 REJECT を使用すると、クライアントはタイムアウトを待つ必要がなくなります。
詳細:http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html
解決策 3:
通常、無視したい 攻撃者から特定のポートへのプローブ。つまり、「接続が拒否されました」を送り返したくないということです。 「接続が拒否されました」とは、「ここにサーバーがある」ことを意味し、おそらくより多くの情報を提供しますが、パケットをドロップしても、ソフトウェアのバージョン、脆弱性の可能性、またはサーバーがあなたの IP をリッスンしているという事実についての手がかりは得られません.
上記は、REJECT の代わりに DROP を使用する主な理由の 1 つです。
解決策 4:
ここには相反する回答がたくさんありますが、これが適切なキーワードを使用した Google の最初の記事であることを考えると、これが正しい説明です。
それは簡単です:
DROP はパケットに対して何もしません。ホストに転送されず、応答もありません。 IPtables のマンページには、パケットをフロアにドロップする、つまりパケットに対して何もしないと書かれています。
REJECT は、パケットを送り返すという点で DROP とは異なりますが、答えは、サーバーが IP 上に配置されているが、リッスン状態のポートを持っていないかのようです。 IPtables は、TCP または UDP の場合に RST/ACK を送信し、ICMP 宛先ポートに到達できません。
解決策 5:
マシンの存在を完全に隠そうとする場合は、-j DROP
適切です。たとえば、これを使用してブラックリストを実装できます。
ポートが開いているという事実を隠そうとする場合は、ポートが開いていない場合に発生する動作を模倣する必要があります:
- TCP:
-p tcp -j REJECT --reject-with tcp-reset
- UDP:
-p udp -j REJECT --reject-with icmp-port-unreachable
ポート スキャナは、少数のポートがパケットをドロップし、ほとんどのポートがパケットを拒否していることを確認した場合、ドロップされたパケットは開いているが非表示のポートにあると見なすことができます。