web-dev-qa-db-ja.com

netstatとiptablesを使用してdos攻撃を防止するlinuxコマンド

Ddos攻撃を防ぐために、IPごとに200を超えるリクエストをドロップしたいと思います。これは、IPごとのリクエスト数を検出するために使用したコマンドです。

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

ここで、200以上の要求を行ったすべてのIPアドレスをIPtablesに追加して、入力と出力をドロップします。

Iptablesを使用して、着信接続のレートを制限することもできます。たとえば、ソースからの接続が1分あたり200を超えないようにするには、次のようにします。

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP

12
LinuxDevOps

ipsetを作成できます。このようにして、iptablesルールセットを変更せずに、必要な数のIPをセットに追加できます。

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

または、あなたのケースでは、スクリプトの出力を使用し、次のようなものでそれを読みます:

while read a; do ipset -A myset "$a"; done < <(your script here)

そして、それをiptablesルールで参照します。

iptables -A INPUT -m set --set myset src -j DROP

詳細とオプションについては manpage を参照してください。

iptablesを直接使用してDDOS攻撃を緩和する他の方法もあります。 iptablesおよびconnlimitモジュールに関するrecentマンページのセクションをお読みください。

18
dawud