Сервер в кармане, или просто о сложном!

главная - Статьи - Беспроводные сети WiFi

Защита Mikrotik от брутфорса

Теги: SSH Mikrotik

Брутфорс - это когда кто-то пытается, порой долго и упорно, подобрать наш пароль к чему-угодно методом перебора. В Linux для защиты от этого успешно используется fail2ban. В микротике такого удовольствия нет, поэтому мы будем иметь удовольствие создавать защиту от brutforce своими руками.

Полный листинг команд, который вы наверняка видели в официальной wiki (http://wiki.mikrotik.com/wiki/Bruteforce_login_prevention):

add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="drop ssh brute forcers" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="" disabled=no
add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="" disabled=no

И в сети много где есть этот наборчик. Я просто чуть-чуть объясню, что он делает.

Идея такова: даем три легитимные попытки в течение короткого времени на коннект по ssh (22/tcp, если у вас другой порт - поставте свой). При четвертой попытке - баним на 10 дней. Имеем право. Итак, по шагам.

1. При установлении нового соединения (connection-state=new) с портом 22/tcp мы запоминаем ip источника и помещаем его в список "ssh_stage1" на 1 минуту:

add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="" disabled=no

2. Если в течение этой минуты этот "кто-то" (а его мы запомнили в "ssh_stage1") еще раз захочет установить новое соединение с 22/tcp, мы его добавим в список "ssh_stage2", и тоже на 1 минуту:

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="" disabled=no

3. Если в течение этой минуты этот "кто-то" (теперь он в "ssh_stage2") опять захочет соединиться с 22/tcp, мы его добавляем в список "ssh_stage3" (да, вы угадали, опять на 1 минуту):

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="" disabled=no

4. Если же он упорный, то что же, мы его на 10 дней добавим в наш "черный список" "ssh_blacklist", ибо нефиг.

add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="" disabled=no

5. А этой командой всех из списка "ssh_blacklist" баним без тени сомнения (обратите внимание, что правило по-умолчанию неактивно):

add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="drop ssh brute forcers" disabled=yes

В реальности, когда я сделал такую схему и попробовал соединиться из консоли Linux к внешнему ip моего mikrotik, уже со второй попытки (а не с 3 или 4) ip "злоумышленника" попал в список "ssh_blacklist". Я ssh к микротик не использую, поэтому в моем случае это не смертельно, но если вы в самом деле подключаетесь так удаленно, то сначала может быть неплохо не включать правило (disabled=yes), отвечающее за бан. В список пускай попадают, нет вопросов. Оцените на практике, сколько раз вам требуется подключаться подряд до попадания всписок бана. После проверок активируйте правило бана по списку "ssh_blacklist"! Прошу прощения, что команды длинные, но парсер съедает обратный слеш, так что приходится в одну строку.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?