これは、使用しているバージョンのApacheです-httpd-2.2.15-39.el6.centos.x86_64
最近、DoS攻撃のためにWebサイトがダウンしたため、iptablesの調査を開始し、DoS攻撃を防ぐためにそれを使用する方法を調べました。いくつかのフォーラムに出くわし、今理解しようとしている十分なルールがあります。単一のIPから作成される接続の数に上限を設けるために、クライアント(Webブラウザー)とサーバー(Webサーバー-httpd)間の通信を理解したかったのです。たとえば、Google Chromeで「www.mywebsite.com」にアクセスしてから、Webサイトのさまざまなページを調べ始めました。これで、クライアントとWebサーバー間でいくつの接続が確立されましたか。ウェブサーバーでnetstatを実行して確認しました。IP(chrome web browser)との接続が1つしか表示されません。いつもそうですか?クライアントとWebサーバー間で1つの接続のみが確立され、この1つの接続のみで通信が行われますか?この接続はどれくらい長く続きますか?
以下のルールを使用しても安全ですか?
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
上記の2つのルールは、自分のマシンからWebサーバーへの接続が非常に多くなるというシナリオのリスクを完全に排除します(1分あたり10接続を正当と見なしませんか?)。
次に、以下の2つのルールを検討します
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT
さて、上記のルールは何をしますか?私はすでに以下の質問でこれを尋ねましたが、まだこれについての全体像を得ることができませんでした。
最初のルールでは、1分あたり50の接続のみが受け入れられ、最大200までバーストできます。1分あたり200の接続が受け入れられると、連続した1分で50のみが受け入れられます。
制限バーストに関しては、200個のトークンで始まります。つまり、この1分間にWebサーバーが200のリクエストを受信したとすると、トークンカウントは50になり、次の1分間は50の接続のみが受け入れられます。さて、3分で何が起こるでしょう、それは再び200のリクエストを許可しますか?前の分と同様に、接続数は50以下でしたか?私の理解は正しいですか?
そして最後のルールは何と言っていますか?どの時点でも、確立できる接続は50のみですか?
上記の2つのルールにより、正当なトラフィックがドロップされる可能性はありますか?
他のiptablesルールがあり、DoS攻撃を防ぐことをお勧めしますが、一般的にはWebサーバーに対してですか?