команда linux для предотвращения атаки dos с использованием netstat и iptables

11

Я хочу сбросить более 200 запросов на IP для предотвращения атаки DDoS. это команда, которую я использовал для определения количества запросов на ip:

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

Теперь я хочу добавить все IP-адреса, которые сделали более 200 запросов в IPtables для ввода и вывода DROP.

Мортеза Солтанабадиян
источник
Как упомянул @dawud, убедитесь, что вы знаете, что можете только «смягчить» и не полностью предотвратить DDOS-атаку на ваш сервер.
Каптан

Ответы:

12

Вы также можете использовать iptables для ограничения скорости входящих соединений. Например, если вы не хотите более 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

LinuxDevOps
источник
1
Было бы здорово иметь объяснение этому также.
неопытный
18

Вы можете создать ipset. Таким образом, вы можете добавить столько IP-адресов к набору, сколько вам нужно, без изменения iptablesнабора правил.

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

Прочитайте man-страницу для более подробной информации и опций.

Есть и другие способы смягчения DDOS-атак, использующих iptablesнапрямую. Читайте на iptablesстранице Справочника раздел о connlimitи recentмодулях.

Дауд
источник
Это замечательно, потому что ипсеты намного быстрее, чем альтернативы, такие как хеш-таблицы.
isuldor