Захист Mikrotik від брутфорсу. Mikrotik: Корисні поради щодо налаштування Створення резервної копії конфігурації

Маршрутизатори від виробника Mikrotik набувають все більшої популярності завдяки привабливій ціні та багатому функціоналу. Мабуть, у SOHO сегменті Mikrotik є лідером. Сьогодні хочемо розповісти про корисні опції налаштування, які допоможуть зміцнити стійкість до зовнішніх атак та забезпечити стабільну роботу для вашого офісного Mikrotik.

Захист Mikrotik

1. Зміна логіну та паролю адміністратора

Почнемо з первинного захисту нашого маршрутизатора – створення стійкого до зламів логіну та паролю адміністратора. За замовчуванням, у Mikrotik використовується логін adminта порожній пароль. Давайте виправимо це: підключаємося через Winbox до нашого маршрутизатора та переходимо в розділ налаштування SystemUsers. Бачимо користувача admin, який налаштовано за замовчуванням:

Додамо нового користувача, який матиме більш суворі до злому реквізити (логін/пароль). Для цього натисніть на значок «+» у верхньому лівому куті:


Зверніть увагу, у полі Group необхідно вибрати full, щоб надати адміністраторські привілеї користувача. Після налаштувань видаляємо користувача adminі відтепер використовуємо лише нового користувача для підключення до інтерфейсу адміністрування.

2. Сервісні порти

У маршрутизаторі Мікротик «зашито» деякі служби, порти яких доступні для доступу з публічної мережі Інтернет. Потенційно це вразливість для Вашого мережевого контуру. Тому ми пропонуємо перейти в розділ налаштування IPServices:


Якщо ви використовуєте доступ до Mikrotik тільки Winbox, то ми пропонуємо Вам відключити всі сервіси, за винятком winboxі ssh(про всяк випадок залишити ssh), а саме:

  • api-ssl
  • www-ssl

Щоб вимкнути, натисніть червоний значок «х». Оскільки ми залишили SSHдоступ до сервера, давайте «засек'юримо» його, змінивши порт з 22 на 6022. Для цього, двічі натисніть на сервісний порт SSH і у вікні вкажіть налаштування:


Натискаємо Applyі ОК.

3. Захист від брут – форсу (перебору)

На офіційному сайті Mikrotik є рекомендації про те, як захистити свій маршрутизатор від перебору паролів по FTP та SSH доступу. У попередньому кроці ми закрили FTP доступ, тому, якщо Ви суворо дотримуєтесь цієї інструкції, то використовуйте тільки код для захисту від SSH – атак. Інакше скопіюйте обидва. Отже, відкриваємо термінал керування маршрутизатором. Для цього у правому меню навігації натисніть New Terminal. Послідовно скопіюйте вказаний нижче код в консоль роутера:

/ip firewall filter #Блокуємо атаки по FTP add chain=input protocol=tcp dst-port=21 src-address-list=ftp_blacklist action=drop \ comment="drop ftp brute forcers" add chain=output action=accept protocol=tcp content="530 Login incorrect" dst-limit=1/1m,9,dst-address/1m add chain=output action=add-dst-to-address-list protocol=tcp content="530 Login incorrect" \ address- list=ftp_blacklist address-list-timeout=3h #Блокуємо атаки по SSH 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-por t=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

Створення резервної копії конфігурації

На випадок виходу з ладу або аварії роутера необхідно мати під рукою його конфіг для оперативного відновлення. Зробити його дуже просто: відкриваємо термінал, натиснувши в меню навігації New Terminalта вказуємо наступну команду:

Export file=backup2020-02-10_01:01:22

Файл можна знайти, натиснувши в меню навігації на розділ Files. Завантажте його собі на ПК, натиснувши правою кнопкою миші та вибравши Download


Блокування доступу до сайту

У робочий час працівники мають працювати. Тому давайте заблокуємо доступ до розважальних ресурсів, таких як Youtube, Facebook та Вконтакте. Для цього, перейдіть до розділу IPFirewall. Натискаємо на вкладку Layer 7 Protocolа потім натискаємо на значок «+» у лівому верхньому кутку:


Даємо ім'я нашому правилу, яке оперуватиме на 7 рівні моделі OSI, а в розділі Regexp додаємо:

^.+(youtube.com|facebook.com|vk.com).*$

Натискаємо OKі переходимо до вкладки Filter Rulesта натискаємо значок «+»:


У розділі Chain вибираємо Forward. Переходимо у тому ж вікні у вкладку Advancedі в полі Layer 7 Protocol вибираємо створене правило блокування:


Переходимо у вкладку Action, і там вибираємо Action = Drop:


Після закінчення налаштувань натискаємо Applyі OK.

Чи корисна ця стаття?

Будь ласка, розкажіть чому?

Нам шкода, що стаття не була корисна для вас: (Будь ласка, якщо не утруднить, вкажіть чому? Ми будемо дуже вдячні за докладну відповідь. Дякую, що допомагаєте нам стати краще!

Mikrotik – маршрутизатор, роутер, точка доступу.

Як налаштувати 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


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 filtr add chain=udp protocol=udp dst-port=111 action=drop comment="Deny PRC portmapper"
ip firewall filtr add chain=udp protocol=udp dst-port=135 action=drop comment="Deny PRC portmapper"
ip firewall filtr 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 filtr add chain=udp protocol=udp dst-port=3133 action=drop comment="Deny BackOriffice"

Дозволимо тільки необхідні icmp коди для icmp ланцюжка:
ip firewall filtr add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="Drop invalid connections"
ip firewall filtr 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 filtr add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="Allow parameter bad"
ip firewall filtr add chain=icmp action=drop comment="deny all other types"

Брутфорс - це коли хтось намагається, часом довго і вперто, підібрати наш пароль до чого-небудь методом перебору. 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"!Перепрошую, що команди довгі, але парсер з'їдає зворотний сліш, так що доводиться в один рядок.

Втім, не варто думати, що проблеми з безпекою тільки у Mikrotik, вони бувають і у Ubiquiti, не кажучи про такі бренди як TP-Link і т.д. Зовсім інша річ, що не всі вразливості у публічному доступі, та й не всі компанії швидко усувають проблеми.

RouterOS 6.35.8 – Denial Of Service

A vulnerability в мережі stack of MikroTik Version 6.38.5 released 2017-03-09 можна тільки безпідставного remote attacker, щоб exhaust all available CPU via flood of TCP RST packets, роблячи відповідні router from accepting.

Якщо Ви бажаєте навчитися настроювати MikroTik, пропонуємо пройти . Детальнішу інформацію Ви можете знайти в кінці цієї публікації.


Суть уразливості ROS 6.38.5 зводиться до можливості віддаленого завантаження маршрутизатора пакетами TCP RST (флуд), що спричиняє завантаження ресурсів CPU до 100% і унеможливлює подальший прийом пакетів, викликаючи відмову в обслуговуванні – Denial Of Service (DoS).

> system resource monitor cpu-used: 100% cpu-used-per-cpu: 100% free-memory: 8480KiB

Атака провадиться на порт 8291, який використовується під Winbox. Причому у публічному доступі є і сам експлоїт , ситуація ускладнюється тим, що для його реалізації не потрібно проходити аутентифікацію, тобто. знати навіть логін.

Способи захисту

Як тимчасовий захід можна змінити порт Winbox з 8291 на нестандартний. Зробити це можна в розділі IP-Services. Недоліком даного методує те, що він не захищає від сканування портів. До речі, у Mikrotik у базових правила Firewallвзагалі немає захисту від сканування портів. Якщо вам потрапить досвідчений користувач, Зміна порту його не зупинить.



Найбільш ефективним буде захист з використанням правил Firewall, обмеження доступу до порту Winbox тільки для IP адміністратора. Зробити це можна за допомогою правила:

IP firewall filter add chain=input action=accept protocol=tcp src-address=ADMIN_IP dst-port=8291 comment=Allow_Winbox

Де необхідно замінити ADMIN_IP на свій IP. При цьому, не забудьте заборонити доступ до Winbox решти IP.

Для користувачів, які використовують маршрутизатори Mikrotik, в домашніх цілях нічого страшного немає, адже базові правила файрволу забороняють доступ до Winbox з WAN (Internet). А ось для великих корпоративних мережабо провайдерів проблема значно серйозніша, адже дії шкідника можуть призвести до відмови мережі.

Поки вразливість не усунута, не залишається нічого очікувати виходу оновлення для RouterOS.

Оновлено станом на 04-04-2014

На офіційному форумі mikrotik продовжується обговорення даної вразливості.

Користувач un1x0d повів тест експлоїту на RB751, hEX lite та CHR (8x Xeon), у результаті всі три пристрої були завантажені до 100%, що призвело до відмови всіх мережевих сервісів. Причому, як зазначив un1x0d, уразливість не залежить від порту та працює з іншими портами.

Користувач McSlash перевірив вразливість на RB951, RB2011, hAp Lite та CCR1036 - у всіх випадках експлоїт спрацював. Жодні правила файрволу не допомагають. Підтримка Mikrotik поки не визнає факту вразливості. Продовжуємо відслідковувати розвиток подій.

Відеокурс «Налаштування обладнання MikroTik» (аналог MTCNA)

Навчайтеся працювати з MikroTik? Рекомендую відеокурс. В курсі розібрано всі теми з офіційної навчальної програми MTCNA та багато додаткового матеріалу. Курс поєднує теоретичну частину та практику – налаштування маршрутизатора по технічним завданням. Консультації із завдань курсу веде його автор Дмитро Скоромнов. Підійде і для першого знайомства з обладнанням MikroTik, і для систематизації знань досвідченим фахівцям.