|
|
Модератор форума: Dimitro, LightInDarkness |
Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » [HOWTO] Защита сервера от DoS (Зачищаем сервер на основе GNU/Linux.) |
[HOWTO] Защита сервера от DoS |
Вот как-то вечером решил написать скромный ман, как защитить WoW сервер, который стоит на GNU/Linux, от DoS. Так как на этом форуме нет разделов посвященных ОС или ПО, решил сделать тему здесь.
Скажу сразу, что это лишь примеры и скромные советы, а потому с помощью этого мана Вы сможете защитится только от DoSa обидевшихся на Вас игроков или конкурентов. От ботнета он не спасет (от ботнета пока ничего не спасает, так как ботнет в 100000 маших может "зафлудить" магистраль в 100гбит/c). Сначала пару примечаний: 1. ОС GNU/Linux и основанные на этом ядре дистрибутивы (повторяю еще раз для тех кто в танке) 2. Все команды (буду обозначать их символом #) выполняются из под суперпользователя. 3. У меня проверено и работает, но я не несу ответственности за возникшие у Вас проблемы. 4. То, что тема создана в этом разделе не значит, что такое возможно только на эмуляторах тринити. Эмуляторы сюда вообще отношения как такового не имеют. Итак, сначало узнаем ИП плохого человека, который вас Ддосит # netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more Эта команда покажет нам все ИП-адресса подключенные к нашей машине. ИП-адресс с наибольшем количеством подключений, скорее всего, и является нашим ддосером. Примечание - ИПы 0.0.0.0/8 и 127.0.0.0/8 являются замкнутыми интерфейсами и мы их не берем во внимание. Посте того, как мы получили его ИП мы можем проделать пару операций: Бан ИП-адресса: Мы можем забанить ИП обидчика, что бы все пакеты, которые он посылал, разрушались не проходя интерфейс. # iptables -A INPUT -s ИП_ОБИДЧИКА -j REJECT После чего сохраняем примененные правила # service iptables save Прелесть опции REJECT в том, что в отличии от DROP сервер не обрабатывает пакет, а потом блокирует, а блокирует сразу. Соответственно экономит ресурсы. Ограничить количество подключений на определенный порт: # iptables -A INPUT -p tcp -m tcp --dport ПОРТ -m connlimit --connlimit-above КОЛИЧЕСТВО_ПОДКЛЮЧЕНИЙ --connlimit-mask 32 -j DROP # iptables -A INPUT -p tcp -m tcp --dport ПОРТ --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT После чего сохраняем примененные правила # service iptables save Это позволяет ограничить подключение в серверу мира\авторизации. В результате чего злоумышленник не сможет открыть кучу фиктивных подключений, которые заполнят весь порт, и игрокам не останется места. Запрет сканирования портов. # iptables -P INPUT DROP # iptables -P OUTPUT ACCEPT # iptables -A INPUT -p all -i ИНТЕРФЕЙС -j ACCEPT # iptables -A OUTPUT -p all -o ИНТЕРФЕЙС -j ACCEPT # iptables -A INPUT -m recent --rcheck --seconds ВРЕМЯ_БАНА_В_СЕК --name STOPSCAN -j DROP # iptables -A INPUT -p tcp -m multiport ! --dports ПОРТ1,ПОРТ2, ПОРТn -m recent --set --name STOPSCAN -j DROP # iptables -A INPUT -p tcp --syn --dport ПОРТ1 -j ACCEPT # iptables -A INPUT -p tcp --syn --dport ПОРТ2 -j ACCEPT # iptables -A INPUT -p tcp --syn --dport ПОРТn -j ACCEPT # iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT При такой настройке iptables все запросы идущие НЕ на порты которые мы разрешили (ПОРТ1, ПОРТ2, и тд) будут блокировани на ВРЕМЯ_БАНА_В_СЕК, а вместе с запросами будет блокирован и ИП адресс отправителя. После чего сохраняем примененные правила # service iptables save Вообще, блокирование сканирования портов и ограничение количества подключений на них должно в большей мере вас обезопасить от DoS атаки и мелких DDoS атак, но, к сожалению, от флуд атаки обезопасить себя нелегко своими силами, так как даже если пакеты будут блокированы, они все равно забивают Ваш интернет канал. Всем спасибо. Позже, может. допишу еще пару интересносней Источник: Интернет.
|
| |||
| |||