Мой сервер сейчас находится под атакой Apache ddos. Существует масса одиночных IP-адресов с 30+ подключениями.
Когда я использую эту команду SSH:
netstat -n | grep ':80' | awk -F' ' '{print $5}' | awk -F':' '{print $1}' | sort | uniq -c | sort -n
Я получаю это:
30 69.144.146.74
31 190.216.242.195
31 92.20.224.127
34 24.127.224.73
37 197.34.29.122
37 85.225.133.82
38 108.29.62.196
38 86.95.44.115
40 66.62.146.84
40 94.123.91.147
46 24.117.238.91
48 70.112.112.127
48 71.58.158.150
48 75.65.172.192
51 99.127.238.167
52 99.98.74.66
53 107.7.34.66
54 95.238.27.3
Я уже внес в черный список более 100 IP, но в течение 5 минут. есть все новые ip с 50+ подключениями.
Я понятия не имею, что делать прямо сейчас. Есть ли способ разрешить только IP-адресу иметь одно соединение за раз? Или есть брандмауэр, который может защитить от этого? Я здесь волнуюсь, как это можно исправить? Спасибо.
Есть оборудование / брандмауэры, которые могут это сделать. Ваш вариант на уровне apache - это функция, называемая «дросселирование». Раньше для этого был модуль, но вроде убрали.
https://stackoverflow.com/questions/7467183/throttling-requests-by-ip-address-on-apache
Проверьте fail2ban и, возможно, просмотрите свои правила iptables.
fail2ban это традиционный, широко используемый и поддерживаемый инструмент для решения вашей ситуации и тому подобного. Он заносит в черный список IP-адреса, которые атакуют вас, (в зависимости от того, как вы его настроили), добавляя специальную цепочку к iptables и автоматически заполняя правила отбрасывания для атакующих IP-адресов.
Это зависит от степени серьезности, но вы всегда можете попробовать использовать mod_evasive или mod_security. Это программные брандмауэры, каждый из которых выполняет разные действия для реагирования в случае атаки. Если на вас сейчас нападают, я бы рекомендовал использовать mod_evasive
сразу, так как это легче понять, чем mod_security
и очень настраиваемый с самого начала. mod_security
- гораздо лучшее долгосрочное решение, но вам может потребоваться много времени, чтобы правильно его настроить, чтобы он не мешал ожидаемому поведению на вашем сервере.