Linux: предотвратить исходящий поток TCP

9

Я запускаю несколько сотен веб-серверов за балансировщиками нагрузки, размещая множество различных сайтов с множеством приложений (которые я не контролирую). Примерно раз в месяц один из сайтов взламывается, и загружается сценарий наводнения для атаки на какой-либо банк или политическое учреждение. В прошлом это всегда были UDP-потоки, которые эффективно устранялись путем блокирования исходящего UDP-трафика на отдельном веб-сервере. Вчера они начали наводнять крупный банк США с наших серверов, используя множество TCP-соединений к порту 80. Поскольку эти типы соединений идеально подходят для наших приложений, просто их блокировка не является приемлемым решением.

Я рассматриваю следующие варианты. Какой из них вы бы порекомендовали? Вы реализовали это и как?

  • Ограничение исходящих TCP-пакетов веб-сервера (iptables) с портом источника! = 80
  • То же самое, но с очередями (tc)
  • Ограничение скорости исходящего трафика на пользователя на сервер. Довольно административная нагрузка, поскольку на сервере приложений потенциально могут быть тысячи разных пользователей. Может быть, это: как я могу ограничить пропускную способность для каждого пользователя?
  • Что-нибудь еще?

Естественно, я также ищу способы минимизировать вероятность того, что хакеры попадут на один из наших хостинговых сайтов, но, поскольку этот механизм никогда не будет на 100% водонепроницаемым, я хочу серьезно ограничить воздействие вторжения.

Обновление: я в настоящее время тестирую с этими правилами, которые предотвратили бы эту специфическую атаку. Как бы вы предложили сделать их более общими? Я пропускаю известную TCP DoS-атаку, когда я ограничиваю скорость только для пакетов SYN?

iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset

Ура!

Willem
источник

Ответы:

3

На мой взгляд, наилучшее решение, которое мне очень помогло, - это ограничить количество соединений / пакетов для IP-адреса назначения. Установка разумного уровня ограничения не позволит злоумышленнику отправить большое количество подключений к цели. Настройка порта и протокола не очень хорошая идея, потому что если сегодня злоумышленник отправляет http-флуд, завтра он будет использовать другой тип атаки. таким образом, ограничение соединений на IP в целом будет решением вашей проблемы.

Я надеюсь, что это помогает :)

наговор
источник
-3

Позиция, которую я всегда придерживался, заключается в том, что веб-сервер вообще не должен устанавливать исходящие TCP-соединения, а только отправляет трафик как сервер, отвечающий на входящие запросы. (Я также разрешаю входящий TCP только для веб-сервера и SSH.) (В связи с этим я также считаю, что веб-сервер никогда не является подходящим хостом для отправки почты.) Это не только предотвратит исходящие атаки - это также добавляет некоторые трудности атак на ваши системы (хакеры не могут получить окно xterm или wget свой инструментарий для вашего хоста).

Питер
источник
Хорошо, тогда как веб-сайт может получить RSS-канал с другого веб-сайта?
Майкл Хэмптон