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
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
マンページのセクションをお読みください。