Мой сервер затоплен до тех пор, пока apache не перестанет отвечать, и Мне нужна помощь в поиске и блокировании ответственных IP-адресов.
Обычно у меня не более 150 подключений. Сейчас у меня тысячи:
netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
13 LAST_ACK
20 CLOSING
30 SYN_RECV
41 LISTEN
44 FIN_WAIT1
74 FIN_WAIT2
77 CLOSE_WAIT
273 ESTABLISHED
1960 TIME_WAIT
График MRTG четко показывает нормальные соединения до начала атаки:
Это результат подсчета подключений по IP (только в конце списка):
netstat -atun | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort -n
5 4.59.90.216
5 4.59.90.222
5 4.59.90.237
5 4.59.90.242
5 74.125.26.95
6 186.158.143.202
6 216.58.219.162
6 4.59.90.251
7 104.24.5.60
7 216.58.192.66
7 4.59.90.212
7 4.59.90.231
7 4.59.90.241
9 216.58.192.98
10 189.177.214.89
10 23.10.101.162
11 4.59.90.226
12 85.94.197.200
25 216.58.219.66
31 216.58.219.130
40 0.0.0.0
86 83.101.136.42
1026 10.0.0.2
Последний - это IP-адрес сервера, я не понимаю, почему он отображается. Спасибо.
Одна вещь, которую вы можете попытаться ограничить, - это ограничить влияние соединений на apache.
Есть несколько способов сделать это, но один из них может быть следующим:
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 600 --hitcount 5 -j DROP
Это позволит 5 новых подключений к порту 80 на каждый IP-адрес источника в течение 10 минут, что может помочь вам выиграть время для дальнейшего изучения. Если проблема касается не только apache, вы можете применить ее к все TCP-соединения, но я также предлагаю вам добавить исключение для вашего SSH-соединения в этом случае.
Возможно, стоит изучить, если у вас нет, это fail2ban, который вы можете настроить для просмотра журналов apache и блокировки хостов на основе определенных критериев.
Я не уверен, что рекомендовал бы развернуть это прямо сейчас (вероятность того, что что-то пойдет не так, кажется немного высоким), но стоит включить его в список потенциальных решений в более долгосрочной перспективе.
Попутно: все это предполагает, что проблема заключается в скорости реакции / нагрузке Apache, а не в нагрузке на ваше интернет-соединение.
Если весь ваш восходящий канал становится насыщенным, то вы мало что можете сделать на своем хосте, поскольку проблема стоит дальше.
Если вы работаете в облаке, возможно, стоит посмотреть, какие существуют варианты. Если нет, возможно, стоит посмотреть, может ли компания по защите CDN / DDoS (на ум приходит облачная вспышка, но я не могу говорить об их услугах) может помочь.
Я также хотел бы узнать, что ваша машина делает со всеми этими подключениями - netstat -ptn
может оказать некоторую помощь
Помимо этого, вы могли увидеть, iftop
или iptraf
поможет вам лучше понять, что происходит. Смотрите также https://stackoverflow.com/questions/368002/network-usage-top-htop-on-linux