01-20-2014, 09:27 PM
Небольшой мануальчик в продолжение темы о Mikrotik Routerboard и RouterOS.
https://forum.zone-game.info/showthread.php?t=30893
В общем то тема пойдет о базовой защите l2 сервера находящегося
за железкой поднятой на операционной системе RouterOS.
Что то типо домашная защита от школоты своими руками,
от UDP и SYN не спасет, но от нежелательного TCP избавит.
Защитит на неком уровне от брута, от превышения числа коннектов
с одного уникального хоста.
Все манипуляции будут выполняться встроенным фаерволлом.
Тема создана с учетом, что ваша подсеть уже поднята, машине с
сервером выдан локальный статический IP по средствам DHCP.
Основные понятия:
1. ether1 - интерфейс принимающий интернет, гнездо со шнурком провайдера.
2. !ВАША_ПОДСЕТЬ/24 - диапазон адресов вашей подсети.
Например 192.168.0.0/24, что включает в себя локальные адреса
в диапазоне от 192.168.0.1 до 192.168.0.254. Восклицательный знак
обозначает - применять правило ко всем хостам кроме вашей подсети.
3. ИПИ_САЙТА - яснопонятно, введено для снятия ограничений
прохождения хоста сайта сквозь все правила, что бы сайт
запрашивающий статистику или ломящийся в мускуль не забанило.
4. ЛОКАЛ_ИПИ_СЕРВЕРА - статический, локальный IP машины на которой
запущен сервер. Присваивается вручную непосредственно из
диапазона адресов !ВАША_ПОДСЕТЬ/24. Например 192.168.0.100.
5. 2106,7777,3306 - порты Логина, Гейма, Мускуля.
Для отлова нарушителей мы будем использовать всем давно приевшеюся
ловушку под названием "tarpit" да да, RouterOS умеет и не такое, так
как он основан на ядре Linux, в его пакет входит множество няшек.
Рассматривать мы будем лишь один пример, так как для всех
портов все практически одинаково, главное открыть суть.
А рассматривать на примере мы будем Login Server.
1. add action=tarpit chain=forward protocol=tcp src-address-list="L2AuthD DoS"
Так как трафик по фаерволлу как правило идет сверху-вниз, то правило
с ловушкой должно находится на самом верху нашей пирамиды.
А именно это правило проверяет занесенные адреса нарушителей
в лист L2AuthD DoS. И если они там имеются, то трафик дальше уже
пройти не сможет.
2. add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward connection-limit=10,32 dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
Данное правило проверяет количество одновременных соединений, и
если это правило обнаружит что хост имеет больше 10 одновременных
соединений с нашим портом - отправит хост в L2AuthD DoS на 10 минут.
3. add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 protocol=tcp src-address=ИПИ_САЙТА
Правило снимающее все запреты с хоста нашего сайта.
4. add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 limit=25/1m,5 protocol=tcp
Если хост не является сайтом, не имеет больше 10 соединений с портом,
и не находится в бане, то мы начинаем считать его подключения,
в данный момент правило настроено на 25 повторных подключений в минуту.
Если этот лимит не исчерпан то хост подключается к порту.
5. add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
Относится к предыдущим правилам, что захватывает последнее правило
с лимитом повторных подключений в минуту, и если их больше указанного
количества - отправляет снова в бан лист L2AuthD DoS на 10 минут.
Вот и все, базовая защита для порта собрана
Извиняюсь, тему писал на коленке, может что то разъяснил не верно.
Может что-то вовсе забыл рассказать. Далее приведу полный конфиг.
Все остальное просто дропаем
https://forum.zone-game.info/showthread.php?t=30893
В общем то тема пойдет о базовой защите l2 сервера находящегося
за железкой поднятой на операционной системе RouterOS.
Что то типо домашная защита от школоты своими руками,
от UDP и SYN не спасет, но от нежелательного TCP избавит.
Защитит на неком уровне от брута, от превышения числа коннектов
с одного уникального хоста.
Все манипуляции будут выполняться встроенным фаерволлом.
Тема создана с учетом, что ваша подсеть уже поднята, машине с
сервером выдан локальный статический IP по средствам DHCP.
Основные понятия:
1. ether1 - интерфейс принимающий интернет, гнездо со шнурком провайдера.
2. !ВАША_ПОДСЕТЬ/24 - диапазон адресов вашей подсети.
Например 192.168.0.0/24, что включает в себя локальные адреса
в диапазоне от 192.168.0.1 до 192.168.0.254. Восклицательный знак
обозначает - применять правило ко всем хостам кроме вашей подсети.
3. ИПИ_САЙТА - яснопонятно, введено для снятия ограничений
прохождения хоста сайта сквозь все правила, что бы сайт
запрашивающий статистику или ломящийся в мускуль не забанило.
4. ЛОКАЛ_ИПИ_СЕРВЕРА - статический, локальный IP машины на которой
запущен сервер. Присваивается вручную непосредственно из
диапазона адресов !ВАША_ПОДСЕТЬ/24. Например 192.168.0.100.
5. 2106,7777,3306 - порты Логина, Гейма, Мускуля.
Для отлова нарушителей мы будем использовать всем давно приевшеюся
ловушку под названием "tarpit" да да, RouterOS умеет и не такое, так
как он основан на ядре Linux, в его пакет входит множество няшек.
Рассматривать мы будем лишь один пример, так как для всех
портов все практически одинаково, главное открыть суть.
А рассматривать на примере мы будем Login Server.
1. add action=tarpit chain=forward protocol=tcp src-address-list="L2AuthD DoS"
Так как трафик по фаерволлу как правило идет сверху-вниз, то правило
с ловушкой должно находится на самом верху нашей пирамиды.
А именно это правило проверяет занесенные адреса нарушителей
в лист L2AuthD DoS. И если они там имеются, то трафик дальше уже
пройти не сможет.
2. add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward connection-limit=10,32 dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
Данное правило проверяет количество одновременных соединений, и
если это правило обнаружит что хост имеет больше 10 одновременных
соединений с нашим портом - отправит хост в L2AuthD DoS на 10 минут.
3. add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 protocol=tcp src-address=ИПИ_САЙТА
Правило снимающее все запреты с хоста нашего сайта.
4. add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 limit=25/1m,5 protocol=tcp
Если хост не является сайтом, не имеет больше 10 соединений с портом,
и не находится в бане, то мы начинаем считать его подключения,
в данный момент правило настроено на 25 повторных подключений в минуту.
Если этот лимит не исчерпан то хост подключается к порту.
5. add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
Относится к предыдущим правилам, что захватывает последнее правило
с лимитом повторных подключений в минуту, и если их больше указанного
количества - отправляет снова в бан лист L2AuthD DoS на 10 минут.
Вот и все, базовая защита для порта собрана
Извиняюсь, тему писал на коленке, может что то разъяснил не верно.
Может что-то вовсе забыл рассказать. Далее приведу полный конфиг.
Код:
add action=tarpit chain=forward protocol=tcp src-address-list="L2AuthD DoS"
add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward connection-limit=10,32 dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 protocol=tcp src-address=ИПИ_САЙТА
add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=2106 limit=25/1m,5 protocol=tcp
add action=add-src-to-address-list address-list="L2AuthD DoS" address-list-timeout=10m chain=forward dst-port=2106 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
add action=tarpit chain=forward protocol=tcp src-address-list="L2Server DoS"
add action=add-src-to-address-list address-list="L2Server DoS" address-list-timeout=10m chain=forward connection-limit=10,32 dst-port=7777 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=7777 protocol=tcp src-address=ИПИ_САЙТА
add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=7777 limit=25/1m,5 protocol=tcp
add action=add-src-to-address-list address-list="L2Server DoS" address-list-timeout=10m chain=forward dst-port=7777 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
add action=tarpit chain=forward protocol=tcp src-address-list="MySQL DoS"
add action=add-src-to-address-list address-list="MySQL DoS" address-list-timeout=10m chain=forward dst-port=3306 protocol=tcp src-address=!ВАША_ПОДСЕТЬ/24
add chain=forward dst-address=ЛОКАЛ_ИПИ_СЕРВЕРА dst-port=3306 protocol=tcp src-address=ИПИ_САЙТА
Все остальное просто дропаем
Решил положить кабель по потолку, так как очень большой пинг меня не устраивает.