システムの健全性を失うことなく、いくつの命令をiptablesに詰め込むことができますか?


9

ブロックされたIPアドレスのリストが必要だとします。

次のサンプルスクリプトを見ました。

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

数千行は、数千のiptablesエントリに変換されますか?

上限は何ですか。それを超えると、システム効率が大幅に影響を受けますか?


2
あなたの質問に対する答えを見つけたようです。その場合は、質問から回答を移動して、[質問に回答する]ボタンを使用して回答を投稿してください。その後、あなたはあなたの答えを受け入れることができ、物事ははるかにうまく整理されます。
Scott Severance

@ScottSeveranceはあなたの提案どおりに行われますが、自己回答を受け入れることができるようになるまで4時間かかります。
Tzury Bar Yochay

回答:


8

この記事で解決策を見つけたと思います。IPSetが答えのようです

要するに:

IPアドレスのセットに数千のアイテムが含まれている場合、iptablesのパフォーマンスが低下します(実際には、ipfiltersがファイアウォールを管理するためのツールになり次第、netfilterのパフォーマンスが低下します)。CPU負荷も増加する可能性があります。幸いなことに、完璧なソリューションがあります– ipsets

IPSetは、次のような場合に最適なツールです。

  • 複数のIPアドレスまたはポート番号を保存し、一挙にiptablesによるコレクションと照合します。
  • パフォーマンスを低下させることなく、IPアドレスまたはポートに対してiptablesルールを動的に更新します。
  • 単一のiptablesルールで複雑なIPアドレスとポートベースのルールセットを表現し、IPセットの速度の恩恵を受ける

ipsetのインストールは簡単です sudo apt-get install ipset

次に、以下を実行します

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

iptablesチェーンに追加します。ファイアウォールの設定によって異なります。ここでは、エチンチェーンを使用します。

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

これで、すべての不良IPをipsetに追加できます。たとえば、1行に1つのIPを含むbots.txtというテキストファイルがあるとします。したがって、単純なbashスクリプトを使用してそれらをipsetに追加できます。

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

実行を確認するには:

ipset -L autoban

答えてくれてありがとう。これは、ipsetに慣れていない人のためのクイックチュートリアルです(私のように8-)- linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.