iptablesによってブロックされたIPアドレスをリストするにはどうすればよいですか?


16

sshに対するブルートフォース攻撃を防ぐために、iptablesルールをいくつか追加しました(以下)。問題は、ブロックされたIPアドレスを一覧表示するにはどうすればよいですか?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

1
iptables -L INPUT -v -nすべてのブロックされたIPを表示
動的

回答:


16

1つのオプションは、ドロップされたパケットを次のようなルールで記録することです。

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

DROPルールの直前に挿入します。次に、「FW_DROPPED」が含まれているものについてsyslogファイルをgrepすると、IPのリストがそこに表示されます。ログファイルのエントリは次のようになります。

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

そのため、「SRC =」に続くものを抜粋すると、ドロップされたIPが表示されます。並べ替えて重複を排除すると、リストが作成されます。

Iptablesチュートリアルは、iptables / netfilterの最も有用なドキュメントであることがわかりました。


はい、これがその方法です。
ブレント

これにより、同じルールを記録してドロップしないため、ルールを複製する必要があります。
デビッドパシュリー

3
ログを作成して問題のあるパケットをドロップするユーザーチェーンを作成すればさらに良いでしょう。これを行うことにより、不必要な重複が削除されます。次のように実行できます。iptables-N攻撃。iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j攻撃; iptables -A攻撃-j LOG --log-prefix "FW_DROPPED:"; iptables -A攻撃-jドロップ
クリスティアンシウピチュ2009年

1
同意した。テーブル/チェーンを使用する方法です。本当にiptablesのポイントです。私は、受け入れられた、黙って落とされた、音声で拒否された、破棄された、洪水の疑い、違法、疑わしい調査、疑わしいスキャン、未知のタイプ、および監視されたトラフィックのために別々のテーブルを作成します。:私のFWは、この古いスクリプト(:自己宣伝警告)に基づいていますcode.google.com/p/klondike-firewall/source/browse/trunk/...
yukondude

1
ipozgajとDavid Pashleyが参照したipt_recentモジュールは非常に気の利いた追加ですが、特定のIPがドロップされたのと同じきめ細かい理由を提供することはできません(異なる--log-prefix設定で可能)またはタイムスタンプ付きの攻撃の長い歴史。ただし、両方の手法を連携して使用することをお勧めします。
yukondude


4

見る

/proc/net/ipt_recent/YOURNAME

YOURNAMEは、iptablesルールの--nameオプションで使用した名前です。


一部のディストリビューション(Debianなど)では、有効なパスは次のとおりです/proc/net/xt_recent/[list-name]
。–イタチ


1

入力アドレスのなりすましなどで私がしていることは、チェーンを定義することですSPOOF_REJECT

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

偽造されたパケットをこのチェーンに送信するには:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

ドロップまたは拒否するパケットのカテゴリごとにこのようなことを実行して、syslogで行を検索し、定期的にgrep、カット、ソートして、これらのログ行からIPアドレスのみを取得できます。

各カテゴリに個別のチェーンを使用する利点は、構成がより簡単になり、iptables構成が読みやすくなることです。より多くのルールを追加すると、特定の異なるアクションに個々のチェーンを使用したことがうれしくなります。


スプーフィングされたパケットをどのくらい正確に検出しますか?私の経験では、これは一般的なケースでは不可能です。
MarkR 2009年

上記は単なる例です。ここでは、外部デバイスから送信されているが、ネットワーク内部のIPアドレスから送信されていると主張するINPUTチェーンに到着するパケットを探しています。この場合、私は絶対にアドレスのなりすましを検出できますが、はい、一般的な場合、状況は異なります。
エディ

1

「質問は、ブロックされたIPアドレスを一覧表示するにはどうすればよいですか?」

BANNEDチェーンを作成します。

iptables -N BANNED
iptables -F BANNED

ロギングチェーンを作成します。

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

他のほとんどのルールの前に、INPUTチェーンの禁止チェーンにジャンプを追加します

...
iptables -A INPUT -j BANNED
...

次に、禁止されたチェーンにipaddressesを追加します。

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

また、コメントオプションを使用してデータベースのように使用することもできるため、多くのプロセスでiptablesが頻繁に更新される場合、flockはいつどのような理由で重要かを知ることができます。iptablesにはロックが組み込まれていないようです。

禁止されたチェーン内の禁止されたアドレスとルールを表示するには:

iptables -S BANNED

ソートされた一意のIPアドレスを表示するには:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

syslogファイルとウェブログをチェックするサーバー上で多数のデーモンを実行しているので、だれかが悪意のあるものを試みた場合、以前の攻撃の種類と重大度および数に応じて、それらのアドレスは数日間自動的に禁止されます。情報はmysqlデータベースに記録され、定期的に失効します。また、アドレスはmysqlレプリケーションを介してクラスター内の他のすべてのマシンに配布されるため、それらも保護され、同期が保たれます。私のソフトウェアもネットワークの所有者を検索し、ISPに苦情をメールで送ります。

10年間の作業の後、誰もがすぐに使用できるようにしたいと考えています。現在、約150万のIPアドレスの履歴と数十万のメールおよびssh攻撃が報告されており、ネットのクリーンアップに役立っています。より多くがそれを使用する場合、私はそれがより多くの影響を与えることを望みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.