ポート80以外の米国以外のすべての接続をブロックすると、サーバーの負荷が高くなりますか?


16

ほとんどのサーバーと同じように(私は推測します)、24時間年中無休でサービスをブルートフォースしようとする人々がいます。私はcpHulkのIPをブラックリストに登録していますが、そもそもそこまで届かなかった方が良いと思われます。80以外のポートでサーバーに接続するのは自分とホストだけなので、ポート80を除く米国以外のすべての国からの接続をブロックしたいと思います。ホストに連絡して設定しましたが、サーバーの負荷が非常に高くなると言っていたため、heしていました。CentOS 6.6とiptablesを実行する32GB RAMを備えた専用Xeon 1230サーバーです。

まず、これをしない理由はありますか?第二に、私のホストは私に言ったことは正しいですか?第三に、パフォーマンスに大きな影響を与えずにこれを達成する方法はありますか?


12
残念ながら、ホスティング担当者は「ただし、メンテナンスを大幅に削減し、セキュリティを強化し、サーバー負荷を抑えて同じことを行う業界標準の方法があります。ExplicitDeny Allと呼ばれます。ホワイトリストに登録する必要があるIPのリストを取得してください20分で設定できるようになります。」-それは、彼らが座る椅子に値するシステム管理者から聞くことを期待するものです。
corsiKa15年

悪用された場合はブロックするだけです...この方法でメンテナンスは最小限に抑えられます...テーブル全体を更新する必要があります
-Skaperen

回答:


33

(すべての範囲をリストすることにより)すべてのIP範囲をブロックする特定のルールを設定するのは間違ったアプローチです。

iptablesのデフォルトルールを設定して、管理ポートへのすべてのトラフィックをドロップします。次に、信頼できるIP(自分とホスト)からのアクセスのみを許可するルールを追加します。

デフォルトですべてをブロックし、承認されたトラフィックのみを許可することは、通常「すべてを明示的に拒否」と呼ばれ、ベストプラクティスと見なされます。この場合、ホストが懸念するパフォーマンスへの影響を回避するのにも役立ちます。


ファイアウォールを介して少数のIPのみを明示的に許可することで暗黙的に全員を拒否しているのに、なぜ知っているなら、それはすべてを明示的に拒否するのですか?
ベン

それについての暗黙的なものは何も...本当にありません
MR-SK

ホワイトリストの潜在的な懸念の1つは、リモートアクセスです。信頼できるVPN(このサーバーとは別)が必要であり、そのIP範囲も許可する必要があります。
フーバー

9

これを行うには、各ネットブロックに1つずつ、数万のファイアウォールルールを追加する必要があります。国には1から数千のネットブロックが関連付けられている場合があります。

リクエストが届くと、すべてのルールに対してチェックする必要があります。これは、数十個またはおそらく数百個のルールでもほとんど時間がかかりませんが、使用する必要がある数のルールがあります。要求は大幅に遅くなり、(2)多くのCPUを使用します。

パフォーマンスに大きな影響を与えずにこれを行う方法は、既に実行していることを実行することです。問題のある特定のアドレスのみをブロックします。


返信ありがとう、マイケル。米国ベースのIP のみを許可し、それによって1つのルールのみをチェックする必要がある方法はありませんか?
ビッグアイアン

2
@BigIronもちろんそうではありません。また、米国には何万ものネットブロックがあります。どちらにしても負けます。
マイケルハンプトン

1
@SamuelEdwinWardいいえ、そうではありません。それらはあちこちに散らばっていますが、一般的にそのようなブロックリストは数百エントリを超えることはありません。
マイケルハンプトン

1
減速がどれほど重要かについてのリファレンスはありますか?すべてのルールセットの線形検索は非常に非効率に聞こえますが、少なくともバイナリ検索では、60,000のルールテーブルを検索するとテーブルに16のプローブしか含まれず、トラフィックをWebサーバーに通過させるよりも速くなる可能性があります要求を処理するためにディスクI / Oを実行する必要があります。iptablesの大きなルールセットに関するメトリックが見つかりませんでした。
ジョニー

1
@Johnnyのnetfilter(iptablesの)が直線的に残念ながらそれのルールを処理します。serverfault.com/questions/334885/...
ロス・リッジ

5

必要なのはipsetsというツールです

IPセットは、Linuxカーネル内のフレームワークであり、ipsetユーティリティで管理できます。現在、タイプに応じて、IPセットは、IPアドレス、(TCP / UDP)ポート番号、またはMACアドレスを含むIPアドレスを何らかの方法で保存する場合があります。

ここで注意すべき重要なことは、それが非常に高速であることです!これは、膨大な数のipネットワークがiptablesルールの数百または数千行ではなく、単一のハッシュで表現できるためです。

ブロックする国については、この例を参照してください。


1

この方法でそれを行うかどうかについて少しは無視することは良い考えです。iptablesのGeoIPモジュールを使用して、求めたことを行うことができます

モジュールをビルドしてインストールした後(およびIPリストを毎月更新し続ける)、次のようなことを行って個々の国をブロックできます。

iptables -I INPUT -m geoip --src-cc CN -j DROP

または--src-cc US -j ACCEPT、保持したい国を指定する場合などに使用します。


「明示的にすべて拒否」を使用し、単一の国のみを許可しても、それはパフォーマンス障害ではありませんか?

@AndréDaniel、私はGeoIPコード自体を見ていないことを認めますが、ネットブロックの束(例えばトライ)を連続的に比較するよりも賢い非単純な実装を使用すると仮定すると、そうである必要はありません。
スコットダドリー

また、IPv4について話しているときに、ルールごとに512 Mbの余裕がある場合、ルックアップテーブルを使用した理論的な実装では、O(1)で作業を完了できます。
スコットダドリー

1

ジオロケーションのブラックリスト/ホワイトリストを維持せずにどこからでも接続する機能を保持したい場合は、ポートノッキングを実装できます。任意のアドレスからの接続を許可しながら、ほとんどの自動化された試行を停止します。

注:開くポートに隣接してノックするポートを置かないでください。そうしないと、順次ポートスキャンによってルールがアクティブになります。


0

スタックに1つまたは2つのBGP対応ルーターがあり、何をやっているのか、それが何をしているのかを知っている人と一緒に仕事をしている、または作業しているこれの実装を支援するのに十分なほどクールなDDoS防止プロバイダーの背後に、選択的ブラックホールと呼ばれる地理的領域へのトラフィックを制限する比較的新鮮な方法があります。

https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf

http://mailman.nanog.org/pipermail/nanog/2014-February/064381.html

http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/

このメソッドはルートの操作で機能するため、サーバーの負荷の問題を回避します。

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