Всем привет!
Сегодня вашему вниманию предоставлю небольшую защиту для вашего сервера.
Сразу прошу строго не судить, здесь будет описано то, что помогло мне в защите своего сервера.
Итак начнем.
Что такое ddos-атака вы можете поглядеть сами в гугле или другом поисковике, в нашем случае речь пойдет не о том,
что это такое, а как с этим бороться.
Нашим щитом пусть будет мощная штука под название iptables
Именно этот щит позволит нам послать нафиг небольших неприятелей куда подальше
1-Защита WEB-сервера:
Введем команду, которая позволит отключать клиента за огромное кол-во запросов на некое время
Код:
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --set --name web
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name web -j DROP
"60" и "5" значения, которые вы редактировать можете под себя, как душе угодно.
2-Защита Game-сервера:
(зачем я и фильтр поставил сюда не знаю, но лишний раз предохраниться не помешает^^, думаю вы понимаете ;-) )
Код:
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --set --name pw
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 --rttl --name pw -j DROP
iptables -A INPUT -p tcp --syn --dport 29000 -m connlimit --connlimit-above 3 -j REJECT
Первые команды напоминают те, которые мы вводили для защиты Web-сервера - так и должно быть А вот последняя позволяет блокировать несколько параллельных конектов к игровому сервера.
--connlimit-above 3 (мах. допустимое кол-во параллельных конектов)
3-Защита Authd-сервера:
Самый модный способ повалить сервер или изавляться от конкурентов
Путем метода тыка, проб и ошибок выяснил, что если конектиться к IP:29200 (порт, на котором работает authd-сервер), то можно
добиться желаемого результата - падение сервера авторизации.
Нам как-то не в кайф каждый раз перезагружать сервер, поэтому аналогично ставим наш любимый "щит"
Код:
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --set --name authd
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --update --seconds 604800 --hitcount 1 --rttl --name authd -j DROP
--seconds 604800 (кол-во секунд на которые пошлет сервер клиента)
--hitcount 1 (кол-во конектов перед которыми сервер пошлет клиента нафиг)
Нужно запрещать конект к этому адресу, поэтому, если кто-то и попытается это сделать , сервер моментально пошлет нафиг на целую неделю
Завершение.
Чтобы эти команды вводили автоматически при запуске выделенного сервера или иной машины
-Залазием в файлик (/etc/rc.local)
И приводим к такому виду:
Код:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
iptables -A INPUT -p tcp --syn --dport 29000 -m connlimit --connlimit-above 3 -j REJECT
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --set --name pw
iptables -A INPUT -i eth0 -p tcp --dport 29000 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 --rttl --name pw -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --set --name web
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name web -j DROP
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --set --name authd
iptables -A INPUT -i eth0 -p tcp --dport 29200 -m state --state NEW -m recent --update --seconds 604800 --hitcount 1 --rttl --name authd -j DROP
exit 0
Повторяю каждый вправе писать свою защиту, я же описал свои действия, которые мне помогли.
Модераторы, если сочтете тему не нужной, прошу удалить.
2011 © by stellz, он же drakon1
Если же самостоятельно заниматься всем этим вам не хочется, то защиту от DDoS атак для игровых серверов Perfect World по весьма доступной цене можно заказать на GShost.net по адресу -
http://gshost.net/?page_id=498.
Спасибо за внимание.