Linux: запобігання потоку потоку TCP


9

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

Я розглядаю наступні альтернативи. Який би ви порадили? Ви реалізували це, і як?

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

Звичайно, я також розглядаю способи мінімізувати шанси хакерів потрапити на один з наших розміщених сайтів, але оскільки цей механізм ніколи не буде на 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

Ура!

Відповіді:


3

Моє найкраще рішення, на мою думку, і те, що для мене спрацювало дуже добре, - обмежити кількість з'єднань / пакетів для ip призначення. Встановлення ліміту на розумну швидкість не дозволить зловмиснику надсилати велику кількість з'єднань до цілі. Налаштування порту та протоколу - це не дуже гарна ідея, оскільки якщо зловмисник сьогодні надсилає http потоп, завтра він буде використовувати різний тип атаки. тому обмеження з'єднань на ip як загальне було б вирішенням вашої проблеми.

Я сподіваюся, що це допомагає :)


-3

Я завжди зазначав, що веб-сервер взагалі не повинен здійснювати вихідні TCP-з'єднання - лише надсилати трафік як сервер, який відповідає на вхідні запити. (Я також дозволяю вхідний TCP тільки для веб-сервера та SSH.) (З цим я також вважаю, що веб-сервер ніколи не є правильним хостом для надсилання пошти.) Це не просто запобіжить вихідним атакам - це також додасть певних труднощів до атак, здійснених на ваші системи (хакери не можуть отримати вікно xterm або передати інструментарій своєму хосту).


Гаразд, то як же веб-сайт переходить і отримує RSS-канал із іншого веб-сайту?
Майкл Хемптон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.