Защита игрового и web сервера средствами iptables - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Другие игры / Other games > Perfect World > Серверная часть

Серверная часть Установка и настройка сервера, решение проблем в процессе эксплуатации, редактирование ядра, патчи.

Ответ
Опции темы
Непрочитано 25.09.2011, 17:57   #1
Пользователь

Автор темы (Топик Стартер) Защита игрового и web сервера средствами iptables

После долгих тестов и чтения дополнительных манулов составил не большой гайд по защите игрового и web сервера средствами iptables.
Итак. Рассмотрим защиту игрового сервера на примерах ограничения портов и закрытия портов.
Для начала нужно разрешить то, что Вам нужно. К примеру нужно разрешить порты 22 (ssh) и 80 (http)
Код:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Далее нам нужно запретить все, что не разрешено.
Код:
iptables -P INPUT REJECT
Но разрешать 22 порт всем думаю не стоит. Поэтому надо его ограничить для определенного IP или маски.
Код:
iptables -A INPUT -p tcp -s IP --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT
Данное правило разрешит доступ на 22 порт только тому адресу, который Вы впишите. Всех остальных будет сбрасывать. Можно поставить вместо REJECT команду DROP. Но я пишу именно так, потому что на тестах команда DROP у меня выдавала сбой в работе защиты.
Так же можно запретить какому либо IP или маске подключаться к порту. Например, нужно запретить IP адресу 192.168.0.1 подключаться на порт 443:
Код:
iptables -A INPUT -p tcp -s 192.168.0.1 --dport 443 -j REJECT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Следует запомнить важную деталь. Все правила читаются сверху вниз! И команду "закрыть все" надо вписывать всегда последней, в противном случае защита не гарантирует стабильность.
Тоже самое можно сделать и с исходящими соединениями, но эту часть я ещё не разбирал. Если займусь, так же сделаю мини гайд. Надеюсь кому-нибудь будет полезно.
Все правила пишутся в файле rc.local перед строкой exit 0, который лежит в папке /etc/
Правила вступают в силу только после перезагрузки серверной машины или перезагрузки модуля iptables.
Огромное спасибо pilad'у и всем кто давал советы и мануалы.
Так же спасибо за помощь в тестировании Hecate, Quutamo и проекту PWPlay Online.

Защита web части.
Защищаем шлюз от проброса icmp туннеля.

Итак, рассмотрим защиту от проброса в 2 варианта.
Вариант 1: Фильтрация на основе размера пакета.
При пробрасывании icmp туннеля характерны нестандартные размеры пересылаемых icmp пакетов (echo-request), следовательно для защиты от туннеля можно фильтровать icmp трафик по длине пакета.
Ping по умолчанию посылает пакет с данными размером 56 байтов + 8 байтов icmp заголовок + 20 байтов ip заголовок, итого 84 байта.
Код:
iptables -A FORWARD -p icmp --icmp-type echo-request -m length --length 84 -j ACCEPT
Мы разрешили icmp пакет типа echo-request длинной 84 байта.
Код:
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
Пропускаем пакеты относящиеся к установленным соединениям.
Вариант 2: Фильтрация на основе номера последовательности.
При последовательной посылке icmp пакетов echo-request к хосту (ping), поле sequence number заголовка icmp пакета увеличиваться на 1 с каждым посланным пакетом.
Код:
iptables -A FORWARD -p icmp --icmp-type echo-request -m recent --name BLOCK --rcheck --seconds 240 -j DROP
Этой командой мы создадим таблицу для хранения ip адресов, которые будем блокировать, с интервалом обновления 240 секунд.
Код:
iptables -A FORWARD -p icmp --icmp-type echo-request -m string --algo kmp --from 27 --to 28 --hex-string "|0f|" -m recent --name BLOCK --set -j DROP
Проверяем вторую половину поля sequence number -from 27 --to 28, если оно равно 15 --hex-string "|0f|" , то добавляем в таблицу BLOCK для блокирования icmp пакетов с этого ip.
Код:
iptables -A FORWARD -p icmp --icmp-type echo-request -m string --algo kmp --from 26 --to 27 ! --hex-string "|00|" -m recent --name BLOCK --set -j DROP
Проверяем первую половину поля sequence number -from 26 --to 27 на отличное от нуля значения ! --hex-string "|00|" , если больше то добавляем в таблицу BLOCK для блокирования icmp пакетов с этого ip
Код:
iptables -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT
Разрешаем icmp пакет типа echo-request.
Код:
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
Пропускаем пакеты относящиеся к установленным соединениям.

Защита порта 29000, 80 от сканирования.
Внимание: без некоторых дополнительных правил игровой порт станет не доступным для игроков или будет наблюдаться высокий пинг и разрывы!
Итак, что такое сканирование порта? Это отправка, как правило, одного пакета по протоколу tcp с флагом syn. Следовательно нам нужно запретить получать первый пакет и пропускать все остальные.
Код:
iptables -A INPUT -p tcp --dport 29000 -m state --state NEW -m hashlimit --hashlimit-name NAME1 --hashlimit-mode srcport --hashlimit-upto 1/m --hashlimit-burst 1 -j DROP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-name NAME1 --hashlimit-mode srcport --hashlimit-upto 1/m --hashlimit-burst 1 -j DROP
iptables -A INPUT -p tcp --syn -m multiport --dports 29000,80 -j ACCEPT
Данная политика правил запретит первый пакет по протоколу tcp с флагом syn и пропустит все остальные. При сканировании сканер покажет Вам что порт закрыт. Данная политика подходит для порта 80 (проверено), для порта 29000 на свой страх и риск. Единственный минус: не значительно увеличится время соединения.
Значение -hashlimit-upto 1/m и --hashlimit-burst 1 может быть от 1 до 4, при увеличении значения задержка установки соединения будет пропорционально увеличиваться. То есть чем больше первых пакетов пропускается, тем дольше устанавливается соединение.
Так же данный метод может хорошо защитить от syn флуда (один из методов DDoS атаки).
Правила прописываются в файл rc.local по адресу /etc/, после написания правил следует перезагрузить iptables или саму серверную машину.
P.S. Дана только начальная точка, доработку и все прочее доделываете самостоятельно исходя из гайда.
Небольшая пакость для сканеров портов. Разработано не совсем мной, я просто лишь уменьшил все в два правила.
Собственно суть заключается в следующем. Весь трафик идущий не на 80 порт будет перенаправлен на 80 порт:
Код:
iptables -A PREROUTING -t nat -p tcp ! --dport 80 -j REDIRECT --to-port 80
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 5 -j ACCEPT
--connlimit-above 5 - количество разрешенных подключений с одного IP адреса. Редактируете под себя.
Ну и в результате сканирования с набором таких правил сканер может Вам показать огромное количество открытых портов, на самом деле закрытых =)
P.S. Это не относится к серверной части Perfect World. Это только для Web-сервера.

Защищаем http proxy от пробрасывания http туннеля.
При пробрасывании http туннеля через http proxy, http заголовок пакета имеет маленький размер порядка 80-90 байт, тогда как стандартный заголовок (передаваемый браузером) в среднем равен от 350 байт. Основываясь на этом будем настраивать фильтрацию трафика.

Создаем новую цепочку правил LENGHT
Код:
iptables -N LENGTH
Проверяем длину пакета, если меньше 350 байт то блокируем
Код:
iptables -A LENGTH -p tcp --dport 3128 -m length --length :350 -j DROP
Если пакет больше 350 байт то пропускаем
Код:
iptables -A LENGTH -p tcp --dport 3128 -j ACCEPT
Разрешаем подключение на порт 3128
Код:
iptables -A INPUT -p tcp --syn --dport 3128 -j ACCEPT
В установленом соединении проверяем пакеты на запрос GET --hex-string "|47 45 54 20|" если есть такой пакет то направляем его в цепочку LENGTH для проверки длины пакета
Код:
iptables -A INPUT -p tcp --dport 3128 -m state --state ESTABLISHED -m string --algo kmp --hex-string "|47 45 54 20|" --from 52 --to 56 -j LENGTH
© ТАМИОР
Ниоро вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 25.09.2011, 18:00   #2
Эксперт

По умолчанию Re: Защита игрового и web сервера средствами iptables

http://forum.zone-game.info/showpost...61&postcount=9
Place вне форума Ответить с цитированием
Непрочитано 25.09.2011, 19:10   #3
Пользователь

Автор темы (Топик Стартер) Re: Защита игрового и web сервера средствами iptables

Сравниваем обе темы. Тут дано нормальное описание, понятное 99% посетителям форума.
К тому же, в той теме много лишнего в правилах в плане портов.
И еще, человек, создающий ПВ сервер не полезет в раздел линейки для поиска защиты.

P.S. Мозг онлайн =\
Если администрация или модераторы посчитают тему не нужной, могут удалить...
Ниоро вне форума Ответить с цитированием
Непрочитано 30.09.2011, 17:02   #4
Аватар для ZmeiChi
Пользователь

По умолчанию Re: Защита игрового и web сервера средствами iptables

Защита так для малолеток которые досят....

Добавлено через 31 секунду
Смогу продосить иптаблес без проблем....

Последний раз редактировалось ZmeiChi; 30.09.2011 в 17:02. Причина: Добавлено сообщение
ZmeiChi вне форума Ответить с цитированием
Непрочитано 30.09.2011, 17:03   #5
Пользователь

По умолчанию Re: Защита игрового и web сервера средствами iptables

Ок оставьте iP и Порт,протестируем.
Pain[The] вне форума Ответить с цитированием
Непрочитано 02.10.2011, 01:09   #6
Пользователь

Автор темы (Топик Стартер) Re: Защита игрового и web сервера средствами iptables

Цитата:
Сообщение от ZmeiChi Посмотреть сообщение
Защита так для малолеток которые досят....

Добавлено через 31 секунду
Смогу продосить иптаблес без проблем....
Моя защита установлена на трех нормальных проектах, ни один не упал под нагрузкой ДДоС. Прежде чем говорить о длине своего органа, подумайте, не окажется ли он меньше среднестатистического размера.
И да, если минус ставите, постарайтесь составить нормальное описание а не букофку "f"...
Цитата:
Сообщение от Pain[The] Посмотреть сообщение
Ок оставьте iP и Порт,протестируем.
Подробнее.
Ниоро вне форума Ответить с цитированием
Непрочитано 02.10.2011, 07:05   #7
Аватар для ZmeiChi
Пользователь

По умолчанию Re: Защита игрового и web сервера средствами iptables

Цитата:
Сообщение от Ниоро Посмотреть сообщение
Моя защита установлена на трех нормальных проектах, ни один не упал под нагрузкой ДДоС. Прежде чем говорить о длине своего органа, подумайте, не окажется ли он меньше среднестатистического размера.
И да, если минус ставите, постарайтесь составить нормальное описание а не букофку "f"...

Подробнее.
Твоя защита? пахахаха не смеши.... Эта защиту уже есть давно в шаре на морге и пвдеве и уверен на 100500% что не ты там её выложил....

Конечно если вы досили с интернет каналом 1 кб/сек Colinux даже не упадёт.

Дай ip и порт любого проекта где ты ставил эту защиту я покажу как у тебя не падает
ZmeiChi вне форума Ответить с цитированием
Непрочитано 02.10.2011, 07:08   #8
Аватар для m095
Заинтересовавшийся

По умолчанию Re: Защита игрового и web сервера средствами iptables

Цитата:
Сообщение от ZmeiChi Посмотреть сообщение
Защита так для малолеток которые досят....

Добавлено через 31 секунду
Смогу продосить иптаблес без проблем....
Чудак человек. Вы придумали лучший аналог iptables? Среди всех софтовых файрволов это лучший выбор. Заддосить можно все что угодно, даже аппаратные файрволы. Было бы желание и ресурсы.

p.s. автору хотя бы за то что написал много букв + в репу.
p.s. ZmeiChi тут понты типа "Дай ип и тебе КаПеЦ" не ценятся, а вот минус можно отхватить легко
m095 вне форума Отправить сообщение для m095 с помощью ICQ Ответить с цитированием
Непрочитано 02.10.2011, 07:13   #9
Аватар для ZmeiChi
Пользователь

По умолчанию Re: Защита игрового и web сервера средствами iptables

Цитата:
Сообщение от m095 Посмотреть сообщение
Чудак человек. Вы придумали лучший аналог iptables? Среди всех софтовых файрволов это лучший выбор. Заддосить можно все что угодно, даже аппаратные файрволы. Было бы желание и ресурсы.

p.s. автору хотя бы за то что написал много букв + в репу.
p.s. ZmeiChi тут понты типа "Дай ип и тебе КаПеЦ" не ценятся, а вот минус можно отхватить легко
Понимаешь, он решил что эта защита ///невъебеная\\\

И еще он выдаёт её за свою
ZmeiChi вне форума Ответить с цитированием
Непрочитано 02.10.2011, 07:15   #10
Аватар для m095
Заинтересовавшийся

По умолчанию Re: Защита игрового и web сервера средствами iptables

Цитата:
Сообщение от ZmeiChi Посмотреть сообщение
Понимаешь, он решил что эта защита ///невъебеная\\\

И еще он выдаёт её за свою
Каждый мануал по iptables похож на любой другой, потому как это набор команд. Даже если он его скопипастил, это не повод так себя вести.
m095 вне форума Отправить сообщение для m095 с помощью ICQ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Монетизация игрового сервера vitaxa Сервер 0 26.08.2011 04:33
[Продам] Дизайн для игрового сервера N-Gin Рынок / Marketplace 2 27.04.2011 22:06
[Продам] Дизайн Для Игрового Сервера Lineage 2 BestMan Рынок / Marketplace 0 01.11.2010 19:52
[Продам] Mu Ac 1.09 Hack Server, Защита игрового сервера MuSupport Рынок / Marketplace 1 27.07.2010 00:08
Графический информер для игрового сервера cinex PHP 6 27.06.2008 08:08


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 10:33. Часовой пояс GMT +3.

Вверх