Настраиваем Iptables под геймсервер
Описание
Правила для iptables для работы геймсервера
Написаны под OS CentOS 6.x
Под другие системы могут потребоваться незначительные корректировки, такие как путь к бинарнику iptables/
Логинимся под рутом и поехали.
1. Вырубаем из автозагрузки фаеры по дефолту
chkconfig iptables off
chkconfig ip6tables off
2. Создаем свой скрипт
touch /etc/init.d/rc.firewall
3. Редактируем
vi /etc/init.d/rc.firewall
Нажимаем INSERT пишем набор правил:
#!/bin/sh
###Определяем переменную iptables (может отличаться на других OS)
IPT="/sbin/iptables"
###Сбрасываем все правила
$IPT -F
$IPT -X
$IPT -Z
###Политика по умолчанию, рубим все кроме исходящих.
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
###Разрешаем локалхост
$IPT -A INPUT -i lo -j ACCEPT
###Если интерфейс не lo, то запрещаем входить в список его адресов.
$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
### Защита от спуфинга
$IPT -I INPUT -m state --state NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
### Защита от попытки открыть входящее соединение TCP не через SYN
$IPT -I INPUT -m state --state NEW -p tcp ! --syn -j DROP
###Разрешаем уже установленные соединения
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
###Разрешаем входящие коннекты MySQL только для себя и для IP сервера с вэбобвязкой (настоятельно не рекомендую держать открытым для всех)
###Где хх.ххх.хх.ххх - ip адрес для которого разрешить доступ, если у Вас динамический IP желательно указать в виде хх.ххх.хх.ххх/24 (с маской)
### Примеры 88.134.1.0/24 или 84.134.0.0/16 - в зависимости от сети Вашего провайдера
$IPT -A INPUT -p tcp -i eth0 -s хх.ххх.хх.ххх --dport 3306 -j ACCEPT
$IPT -A INPUT -p tcp -i eth0 -s ххх.ххх.хх.ххх --dport 3306 -j ACCEPT
###Рубим попытки побрутить логин порт и разрешаем входящие коннекты по данному порту
$IPT -A INPUT -p tcp --syn --dport 2106 -m recent --name radiator --set
$IPT -A INPUT -p tcp --syn --dport 2106 -m recent --name radiator --update --seconds 30 --hitcount 3 -j DROP
###Разрешаем логинпорт
$IPT -A INPUT -p tcp -i eth0 --dport 2106 -j ACCEPT
###Разрешаем геймпорт
$IPT -A INPUT -p tcp -i eth0 --dport 7777 -j ACCEPT
###Рубим попытки побрутить SSH порт
$IPT -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --set
$IPT -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --update --seconds 30 --hitcount 3 -j DROP
###Разрешаем SSH
$IPT -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
###Рубим все остальное, что не подпало под правила выше
$IPT -A INPUT -j DROP
Выходим из редактора с сохранением нажатиями Esc и затем Shift+zz
5. Выставляем права на запуск
chmod +x /etc/init.d/rc.firewall
6. Прописываем в автозагрузку
vi /etc/rc.d/rc.local
Дописываем внизу
/etc/init.d/rc.firewall
Выходим с сохранением.
8. reboot
Теперь небольшой FAQ
eth0 - имя Вашего сетевого интерфейса, выудить можно командой ifconfig
2106, 7777 - логин и гейм порты, какие они у Вас такие и пишем.
Если предполагается дос атака придется изворачиваться, немного меняем сл. правила:
Вместо $IPT -A INPUT -p tcp -i eth0 --dport 2106 -j ACCEPT пишем $IPT -A INPUT -p tcp -i eth0 --dport 2106 -m connlimit --connlimit-above 10 -j DROP
Вместо $IPT -A INPUT -p tcp -i eth0 --dport 7777 -j ACCEPT пишем $IPT -A INPUT -p tcp -i eth0 --dport 7777 -m connlimit --connlimit-above 10 -j DROP
Этим мы ограничиваем число одновременных подключений с одного IP равным десяти.
Есть и намного эффективные методы.
Не забываем про SYSCTL настройки системы, если оставить их по дефолту никакой фаервол при досе Вас не спасет. Опишу отдельной статьей.
Да и еще, с данными правилами сервер не будет и не должен пинговаться. Почему? Потому что для работы геймсервера Вам не абсолютно незачем разрешать к себе ICMP протокол. Это же относится и к входящему UDP протоколу. Не думаю что Вам в процессе работы сервера будут полезны атаки посредством UDP наводнений и icmp флуда.
На этом пожалуй все.
Рекомендуемые комментарии
Комментариев нет
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти