Как бороться с атакой TCP-соединений в Linux

Мой сервер переполняется до тех пор, пока 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 ясно показывает нормальные соединения до начала атаки: 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-адрес сервера, я не понимаю, почему он отображается. Спасибо.

1
задан 9 March 2017 в 17:53
1 ответ

Одна вещь, которую вы можете попытаться ограничить влияние соединений на 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 (всплывает на ум "cloudflare", но я не могу говорить за их услуги) помочь.

Я также хотел бы узнать, что ваша машина делает со всеми этими соединениями - netstat -ptn может быть полезен

Кроме того, вы можете посмотреть, поможет ли iftop или iptraf получить немного больше информации о том, что происходит. Смотрите также https://stackoverflow.com/questions/368002/network-usage-top-htop-on-linux

3
ответ дан 3 December 2019 в 18:31

Теги

Похожие вопросы