web-dev-qa-db-ja.com

iptablesに多数のルールを追加できません

非常に単純なbashスクリプト(開始時にエコー、コマンドを実行、終了時にエコー)を作成して、中国とロシアの大部分をブロックするiptablesに約7300のルールを追加しましたが、その後の試行ごとに次のエラーが発生する前に、約400のルールを追加しました。そのチェーンにルールを追加するには:

iptables: Unknown error 18446744073709551615

後で手動でルールを追加しようとしましたが、追加できません(同じエラーが発生します)。

各ルールを追加するコマンドは次のようになります。

/sbin/iptables -A sshguard -s x.x.x.0/x -j DROP

sshguardは、 sshguard デーモンで使用するために作成したチェーンであり、そこにルールを追加したかったので、INPUTチェーンを混乱させませんでした。私が提供しているIP範囲は、テスト用の有効な範囲を提供しており、同じエラーが発生するため、ここで責任を負うものではありません。ルールのチェーンをフラッシュして個々のルールを追加することはできますが、400エントリまでは機能しません。

私は事前にグーグルをしましたが、この問題を抱えている他の人は私と同じ理由でそれを持っていないようです。

Iptablesを使用したチェーンごとに何らかのルール制限はありますか?また、これはこれらの範囲をブロックするための適切な方法ですか(エラーは別として)?

# iptables -V
iptables v1.3.5

# cat /etc/issue
CentOS release 5.8 (Final)

# uname -a 
Linux domain.com 2.6.18-028stab101.1 #1 SMP Sun Jun 24 19:50:48 MSD 2012 x86_64 x86_64 x86_64 GNU/Linux

編集:明確にするために、bashスクリプトは、ファイルやIPのリストをループするのではなく、各iptablesコマンドを個別に実行しています。

また、これらの範囲をブロックする目的は予防的です。いくつかのWebサイトで、スクレイプ、クロール、またはスパムアカウントの作成を試みるボットの数を制限しようとしています。私はすでに sshguard を使用してサーバーでのブルートフォース攻撃をブロックしていますが、それは明らかに他のボットには役立ちません。

5
Brendan

OK、わかりました。

VPS用のVirtuozzoコンテナがあることを述べておかなければなりません。 http://kb.parallels.com/en/746 は次のように述べています。

また、iptablesルールを追加できるようにするには、numiptentバリア値を増やす必要がある場合があります。

~# vzctl set 101 --save --numiptent 400

参考:これを有効にするには、コンテナを再起動する必要があります。

これは、私が約400で制限に達した理由を説明しています。CentOS6を使用している場合、これらすべてのルールを追加する代わりに、ipsetiptablesモジュール(EPEL)をインストールします(ipsetは速い)。

現在のところ、CentOS 5.9では、iptables> 1.4.4とカーネルをコンパイルしてipsetを取得する必要があります。これはVPSであり、私のホストは最終的にCentOS 6にアップグレードする可能性があるため、これを追求するつもりはありません。

2
Brendan

広い範囲またはかなりの範囲のIPについては、使用することをお勧めします ipset

国全体のIPブロックをブロックする場合は、 iptablesのgeoipモジュール を使用できます。

1
Francis

デバッグは難しくありませんが、ルールを純粋なiptablesコマンドに変換し、それらを1つずつ実行すると(シェルスクリプトを使用)、エラーが表示されます。通常、一部のiptモジュールが欠落しています。

最初に_iptables-save_を使用して現在のルールをエクスポートし、次に次のようにしてその行ごとにデバッグします。

egrep '^(-A|-I)' ok.rules | while read x; do iptables $x || { echo failed $x; break; }; done

私は少しググった、それはCentOSのデフォルトのカーネル設定のバグのようだ。

1
daisy

Iptablesに関してRHELに未解決のバグがあるようです。あなたはそれを打っているかもしれません。 https://bugzilla.redhat.com/show_bug.cgi?id=59838

それまでの間、denyhostsのようなものを見たことがありますか?攻撃されると、自動的にhosts.denyにエントリが追加されます(ssh攻撃)

ちょっとした考え。

1
Mark Cohen