|
|
Локальный сервер Информация, мануалы и вопросы по локальным серверам |
|
Опции темы | Поиск в этой теме |
17.11.2014, 20:02 Вверх | #1 | |||
Коварный тип
|
Оптимальная защита от DDoS с помощью netstat и iptables
Оптимальная защита от DDoS с помощью netstat и iptables
Нашел на харбре интересную статейку. Возможно кому нибудь она и пригодится. Совсем недавно столкнулся с такой проблемой, как DDoS. Сразу скажу, я вообще ни разу не линуксоид, но зато чуточку программист, так что все что ниже, основано чисто на логике, а не на фактах, плюс переписанное с некоторыми добавками от уже известного. Перекопав полчища статей и опробовав множество вариантов, так и не нашел, что помогло бы с защитой. Взяв за основу статьи Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables и (D)DoS Deflate решил написать свой скрипт. Ну вернее не решил, а методом тыка и исправлений он получился сам. Должен заметить, что статья от Алексея Кузьмина не идеальна, т.к. в логах nginx`a не достаточно копаться, да и обработка логов может потребовать много ресурсов. А именно в моем случае создавались логи более 50 Гиг, плюс запросы шли не «GET / HTTP/1.1», а «GET / HTTP/1.0», плюс, как оказалось, мой сервер сам от себя получал редиректы (127.0.0.1), которые не отображались в логах, которые отображались в запросе PHP код:
Суть скрипта такова, что через определенное время кроном запускается скрипт и проверяет все соединения с сервером, ip и кол-во их соединений которые записываются в файл. Потом запускается другой скрипт, который смотрит, если соединения, превышают заданное число (у меня стоит 20), то создается скрипт с блокировкой этих айпишников через iptables. Я создавал отдельные файлы, чтобы прослеживать весь ход работы отдельно, и по своей некомпетентности, легко было обнаружить где и что не срабатывало. Теперь к практике: создаем каталог, где будет скрипт PHP код:
PHP код:
PHP код:
Вот в принципе и все. Теперь запускаем кронтаб, предпочитаю команду: PHP код:
PHP код:
PHP код:
Также я изменил ротацию логов в файле /etc/logrotate.d/nginx от nginx`a, чтобы многогиговые файлы не создавались PHP код:
PHP код:
ну и для больше комфорта еще и раз в сутки решил перезагружать сервак, опять же через крон: PHP код:
общий список заданий, выведенный через crontab -l: PHP код:
я записывал все под пользователем root, поэтому если вы не под этим пользователем, перед каждой командой стоит добавить root, типа: PHP код:
Все пути делал абсолютными, т.к. не все команды без полного пути срабатывали. Надеюсь кому-нибудь пригодится данная статейка. Прошу строго не судить по самому коду, т.к. я вообще впервые сам что-то делал на серваке ) Стащил тут |
|||