Centosでiptablesを使用した並列接続の制限

Centosでiptablesを使用した並列接続の制限

私は現在Centos6.7を使用しており、ユーザーxがIP上で5つ以上の接続を確立できないようにいくつかの制限を設定しようとしています。 5回ログインすると5回ログインは成立しますが、6回ログインは拒否されます。

私はconnlimitを使ってこれをやろうとしましたが、何かが欠けているように感じましたが、過去に誤った場所にルールを配置して誤ってサーバーにアクセスできなくなったため、ルールの作成に少し躊躇しました。 (こんな)。

注:ポートを指定しないでください。 xxx1 と xxx2 の IP 制限は 50 より高いため、このルールを最初に適用しました。これが正しいと思いますか?

私は以下を持っています:

-A INPUT -p tcp -s x.x.x.1 --syn -m connlimit --connlimit-above 50 -j REJECT
-A INPUT -p tcp -s x.x.x.2 --syn -m connlimit --connlimit-above 50 -j REJECT
-A INPUT -p tcp --syn -m connlimit --connlimit-above 5 -j REJECT

これは正しいと思いますか?この問題を解決する他の方法はありますか?プールを合計5つの接続に制限したくなく、IPアドレスごとに5つに制限したいと思います。

答え1

ほぼ全部来ましたが、まだほとんど来ていません。作成したルールは最初にx.150以上の接続を拒否し、次にx.2どこからでも5つ以上の接続を拒否します。含む x.1そしてx.2ACCEPT共通リミッターの前に両方のソースにルールを作成する必要があります。

反転マッチングはおそらく最も簡単ですconnlimit

-A INPUT -p tcp -s x.x.x.1 --syn -m connlimit --connlimit-upto 50 -j ACCEPT
-A INPUT -p tcp -s x.x.x.2 --syn -m connlimit --connlimit-upto 50 -j ACCEPT
-A INPUT -p tcp --syn -m connlimit --connlimit-upto 5 -j ACCEPT
-A INPUT -p tcp --syn -j REJECT

共通部分()を繰り返す必要がないように、これらのルールを独自のチェーンに入れることができ、これらのルールの後に追加のフィルタリングを実行したい場合は、-p tcp --syn別のチェーン置換を使用することもできます。その後、受け入れ規則が別の場所に表示されるはずです。ACCEPTRETURN

デフォルトはconnlimitソースアドレスで作業するため、必要に応じて行う必要があります。ただし、iptables「ログイン」という概念がないため、アプリケーションレベルでログインを制限するには、その手順で行う必要があります。


自分がロックするのを防ぐために、まずコンピュータが管理アクセスを許可する別の規則があることを確認することをお勧めします(SSHである可能性があり、少なくとも接続はすでに確立されています)。もう1つの可能性は、後で使用するか、cronファイアウォールルールを既知の良好な構成にリセットしてロックされていても持続しないことです。at完了したら、その保護を取り除くことだけを覚えてください。

関連情報