web-dev-qa-db-ja.com

ポートスキャナーからどのように保護しますか?

nmapがマシンを完全に監視しないようにすることはできますか? iptablesを使用してすべての着信接続をドロップした後、ポートスキャンは「フィルター済み」として返されます。 nmapが存在するポートをまったく認識できなかった場合に適しています。これは可能ですか?

以下の解決策は機能していないようです:

http://sharadchhetri.com/2013/06/15/how-to-protect-from-port-scanning-and-smurf-attack-in-linux-server-by-iptables/

https://dangertux.wordpress.com/2011/09/18/defeating-port-scans-using-iptables/

http://prithak.blogspot.de/2011/12/blocking-nmap-scans-with-pf-and.html

Nmapがデバイスを認識しないようにすることができない場合、nmapがIPを完全にスキャンするのに本当に長い時間がかかるようにレート制限することはできますか?

4
spacemonkey

Nmapがレート制限に達するとスキャン遅延が増えるため、単純なレート制限では不十分です。 iptablesを使ってできることは次のとおりです。

最初にipsetリストを作成します

ipset create port_scanners hash:ip family inet hashsize 32768 maxelem 65536 timeout 600
ipset create scanned_ports hash:ip,port family inet hashsize 32768 maxelem 65536 timeout 60

そしてiptablesのルール

iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state NEW -m set ! --match-set scanned_ports src,dst -m hashlimit --hashlimit-above 1/hour --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name portscan --hashlimit-htable-expire 10000 -j SET --add-set port_scanners src --exist
iptables -A INPUT -m state --state NEW -m set --match-set port_scanners src -j DROP
iptables -A INPUT -m state --state NEW -j SET --add-set scanned_ports src,dst

これがどのように機能するか:

ここでは、スキャンされたポートをscanned_portsセットに保存し、ハッシュ制限ルールで新しくスキャンされたポートのみをカウントします。スキャナーが5つの異なるポート(--hashlimit-burst 5を参照)にパケットを送信する場合は、スキャナーである可能性があるため、port_scannersセットに追加します。

Port_scannersのタイムアウトは、スキャナーのブロック時間です(この例では10分)。攻撃者がスキャンを10秒間停止するまで(--existを参照)、最初からカウントを開始します(--hashlimit-htable-expire 10000を参照)

これらのパラメーターを最も適切な値に設定できます。

なりすましとしてスキャンするだけで、誰かがIPをブロックできることに注意してください。ブロックタイムアウトを長く設定しないことをお勧めします。

9
ibrahim

SSHなどのサービスを利用可能にしたい場合は、Nmapで見つけることができます。一般的に、ポートスキャンは脅威ではありません。セキュリティは実行されているサービスを知らない攻撃者に依存しません。SSHに非標準ポートを使用すると、デフォルトのポート22で非常に多くの自動総当たりが行われるため、主にログノイズの低減に役立ちます。

セキュリティの観点からの主な目標は、認識/予測、防止、検出、応答、および回復です。ポートスキャンとこれらの関係は次のとおりです。

Know/Predict:所有している資産と攻撃者が何をするかを把握します。自分自身をポートスキャンして、露出を確認します。ポートスキャンで実行できることと実行できないことを理解します。彼らは妖精の粉をハッキングする魔法ではありません。

防止:ファイアウォールを使用して、公開してはならないポート/サービスへのアクセスを防止します。アクセスを既知のIPアドレスに制限します。機密データとサーバーをネットワーク境界の背後に移動し、VPNまたはその他のアクセス制御でアクセスを制御します。レート制限は防止ではなく、遅延のみです。

検出:ポートスキャン、ブルートフォース、およびその他の攻撃の兆候についてログを監視します。通常のバックグラウンドノイズとは何か、実際には脅威となるものを理解します。侵害の兆候を示すアラートを設定します。

応答:セキュリティ違反に対処するための計画を立てます。脅威に対応するために、fail2banのような自動防御をセットアップします。レート制限はここでの応答になる可能性がありますが、実際には何を妨げますか?

回復:回復計画を立てます。定期的なバックアップを作成し、バックアップからの復元をテストします。

7
bonsaiviking

Nmapのドキュメントは、「フィルター処理された」状態について次のように述べています。

状態は、オープン、フィルター済み、クローズ、またはフィルターなしのいずれかです。オープンとは、ターゲットマシン上のアプリケーションがそのポートで接続/パケットをリッスンしていることを意味します。フィルター済みとは、ファイアウォール、フィルター、またはその他のネットワーク障害がポートをブロックしているため、Nmapはポートが開いているか閉じているかを判別できないことを意味します。閉じたポートは、それらをリッスンするアプリケーションがありませんが、開くことはできますポートは常にNmapのプローブに応答する場合、フィルタリングされていないものとして分類されますが、Nmapはポートが開いているか閉じているかを判別できません。Nmapは、 2つの状態のどちらがポートを記述しているかを判別できない場合に、開かれた状態と閉じられた状態の組み合わせ。

「クローズ」(つまり、到達可能なポートですが、サーバーがリッスンしていない)の通常の動作は、REJECTよりもiptables DROPアクションに近く、nmapの動作は「フィルタリングされた」診断はDROPを認識します(REJECTのようにすぐに閉じられるのではなく、調査中のサーバーからの完全な無音のために、最終的に接続がタイムアウトします)。

ですから、REJECTではなくDROPを試し、スキャン結果があなたの好みに合っているかどうかを確認することをお勧めします。

4
dhag