Подробная настройка роутера Mikrotik с последней, актуальной, прошивкой

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
EagleNN
Сообщения: 16
Зарегистрирован: 09 авг 2017, 19:45

Роутеры MikroTik обладают обширными возможностями как по настройке, так и по управлению трафиком. Во многом благодаря нетривиальности настройки эти возможности остаются неиспользованные у обычных пользователей.
В этой статье я попытаюсь создать пошаговую инструкцию по настройке не только простого доступа в интернет, но и по настройке некоторых типовых дополнительных функций.

1. Подключение роутера
Для первоначальной настройки необходимо подключить кабель провайдера в порт 1 и кабель от рабочей станции в порт 2.На рабочей станции установить ip адрес 192.168.3.5/24 Шлюз и DNS указывать не обязательно. Далее запустить WinBox и войти в роутер по Mac адресу используя логин admin и пустой пароль. Убедитесь, что в вашем роутере установлена прошивка новее чем 6.41.0, т.к. в ней было внесено существенное количество изменений и, некоторые возможности, присутствовавшие в предыдущих версиях, были заменены новыми.

В первую очередь выключаем ненужные сервисы:

Код: Выделить всё

/ip service set telnet address="" disabled=yes port=23 vrf=main
/ip service set ftp address="" disabled=yes port=21
/ip service set www address="" disabled=yes port=80 vrf=main
/ip service set ssh address="" disabled=yes port=22 vrf=main
/ip service set www-ssl address="" certificate=none disabled=yes port=443 tls-version=any vrf=main
/ip service set api address="" disabled=yes port=8728 vrf=main
/ip service set winbox address="" disabled=no port=8291 vrf=main
/ip service set api-ssl address="" certificate=none disabled=yes port=8729 tls-version=any vrf=main
2. Настройка основных интерфейсов
Конфигурация сетевых интерфейсов по умолчанию для Mikrotik предполагает, что первый порт устройства ether1 используется как WAN для подключения к сети провайдера, последующие порты ether2, ether3 и.т.д. используются для подключения компьютеров к локальной сети. Мы зарезервируем ether2 для подключения второго провайдера internet. В меню Interface буква R — напротив интерфейса означает что он включен, что соответствует включенным светодиодам на самом устройстве, X — выключен.
Для удобства мы можем либо переименовать интерфейсы изменив поле Name, либо задать комментарий, при в поле Comment. Интерфейсу ether1 присвоим комментарий PoE_WAN, и оставим его зарезервированным. Ether2 присвоим комментарий WAN для подключения провайдера. Назовем их PoE_ether1 и WAN_ether2.

Код: Выделить всё

/interface ethernet set [ find default-name=ether1 ] comment=PoE_WAN disabled=no name=PoE_ether1
/interface ethernet set [ find default-name=ether2 ] comment=WAN disabled=no name=WAN_ether2
Создадим основной bridge для портов:

Код: Выделить всё

/interface bridge add dhcp-snooping=no  disabled=no fast-forward=yes igmp-snooping=no name=LanBridge  port-cost-mode=short protocol-mode=none vlan-filtering=no
Затем настроим коммутацию портов объединив их в бридж. Для этого перейдем в настройки Ports окна Bridge и добавим интерфейсы с ether3 по ether5, а в поле Bridge выберем LanBridge.

Код: Выделить всё

/interface bridge port add interface=ether3 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
/interface bridge port add interface=ether4 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
/interface bridge port add interface=ether5 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
/interface bridge port add interface=ether6 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
/interface bridge port add interface=ether7 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
/interface bridge port add interface=ether8 bridge=LanBridge bpdu-guard=no broadcast-flood=yes disabled=no fast-leave=no hw=yes ingress-filtering=no  unknown-multicast-flood=yes unknown-unicast-flood=yes
3. Настройка статической адресации в MikroTik
Открываем меню IP, затем Addresses. В открывшемся окне Address List нажимаем Add (красный плюсик). В окне New Address в поле Address вводим адрес и маску локальной сети, у меня: 192.168.3.1/24. Если вы не знаете длину префикса маски, то набираем 192.168.3.1/255.255.255.0 и маска автоматически будет преобразована в 24. Interface устанавливаем как LanBridge. Нажимаем ОК.

Код: Выделить всё

/ip address add address=192.168.3.1/24 disabled=no interface=LanBridge network=192.168.3.0 

Добавим адрес самого роутера в статические DNS. Для этого открываем IP, выбираем DNS и нажимаем кнопку Static. В поля добавляем локальный адрес роутера, который будет подставляться клиентам по DHCP в качестве основного DNS. В поле Name заносим алиас, например, router, в поле адрес указываем LAN ip, у меня это 192.168.3.1. Нажимаем OK.

Код: Выделить всё

/ip dns static add address=192.168.3.1 name=router  
Теперь поменяем MAC-адрес на интерфейсе ether1 поскольку часто провайдер проверяет соответствие MAC адреса. Делаем это при помощи специальной команды:

Код: Выделить всё

/interface ethernet set  [ find default-name=ether2 ] mac-address=00:02:40:A2:0C:22  
4. Настройка DHCP-сервера
Для автоматизации настройки сетевых параметров у клиентов должен быть настроен DHCP сервер. Для этого в меню IP, выбираем подменю Pool, указываем имя пула и диапазон адресов для выдачи локальным клиентам. Нажимаем ОК.
Далее в IP/DHCP Server, нажатием плюсика, добавляем DHCP Server. В поле Interface выбираем ранее созданный локальный мост LanBridge. В поле Address Pool укажем диапазон адресов dhcp-pool созданный ранее. Нажимаем ОК.
Далее переходим на вкладку Networks и прописываем ip адрес локальной сети с маской, шлюз, маску 24 и dns server. Нажимаем ОК. Перезапустим сетевой интерфейс компьютера что бы получить новый адрес по DHCP.
Аналогичную настройку можно сделать при помощи мастера нажав на кнопку DHCP Server и последовательно нажимая далее.

Код: Выделить всё

/ip pool add name=LanIpPool ranges=192.168.3.2-192.168.3.50
/ip dhcp-server add address-pool=LanIpPool interface=LanBridge name=LanDHCPServer disabled=no
/ip dhcp-server network add address=192.168.3.0/24 dns-server=192.168.3.1 gateway=192.168.3.1
Добавляем DNS сервера:

Код: Выделить всё

/ip dns set address-list-extra-time=0s allow-remote-requests=yes cache-max-ttl=1w cache-size=4096KiB doh-max-concurrent-queries=50 doh-max-server-connections=5 doh-timeout=5s max-concurrent-queries=100 max-concurrent-tcp-sessions=20 max-udp-packet-size=4096 query-server-timeout=2s query-total-timeout=10s servers=8.8.8.8,9.9.9.9 use-doh-server="" verify-doh-cert=no
5. Настройка провайдера PPPoE
Заходим во вкладку Interfaces. Нажимаем на кнопку с синим плюсом и выбираем из выпадающего списка PPPoE Client
На вкладке General задаем имя, например Dom_Ru, и интерфейс к которому подключен провайдер ether2.
На вкладке Dial Out прописываем параметры подключения, полученные от провайдера

Код: Выделить всё

/interface pppoe-client add name=Dom_Ru dial-on-demand=yes add-default-route=yes interface=ether1 disabled=no user=XXXXX password=YYYYY
Если будем использовать DNS сервера провайдера добавляем опцию Use Peer DNS

Код: Выделить всё

/interface pppoe-client set Dom_Ru use-peer-dns=yes
Для ручного ввода DNS сервера провайдера открываем IP и выбираем подменю DNS. В открывшемся окне DNS Settings в поле Servers: прописываем IP адрес основного DNS сервера, нажимаем стрелку «вниз», чтобы добавить дополнительное поле для ввода и вводим IP адрес альтернативного DNS сервера. Таких серверов может быть добавлено несколько. Отмечаем галочку Allow Remote Requests.

Код: Выделить всё

/ip dns set allow-remote-requests=yes servers=91.144.186.3,5.3.3.3
6. Настройка групп интерфейсов
Далее следует настроить группы внешних и внутренних интерфейсов.
Сначала создадим их:

Код: Выделить всё

/interface list add exclude="" include="" name=ExternalInterfaces
/interface list add exclude="" include="" name=LANInterface
/interface list add exclude="" include="" name=MainProvider
Далее наполним их содержимым:

Код: Выделить всё

/interface list member add disabled=no interface=PoE_ether1 list=ExternalInterfaces
/interface list member add disabled=no interface=WAN_ether2 list=ExternalInterfaces
/interface list member add disabled=no interface=Dom_Ru list=ExternalInterfaces
/interface list member add disabled=no interface=Dom_Ru list=MainProvider
/interface list member add disabled=no interface=LanBridge list=LANInterface
Разрешаем поиск внутри сети:

Код: Выделить всё

/ip neighbor discovery-settings set discover-interface-list=!ExternalInterfaces lldp-med-net-policy-vlan=disabled mode=tx-and-rx protocol=cdp,lldp,mndp
Разрешаем fast-path:

Код: Выделить всё

/ip settings set accept-redirects=no accept-source-route=no allow-fast-path=yes arp-timeout=30s icmp-rate-limit=10 icmp-rate-mask=0x1818 ip-forward=yes max-neighbor-entries=8192 rp-filter=strict secure-redirects=yes send-redirects=yes tcp-syncookies=yes
/mpls settings set allow-fast-path=yes dynamic-label-range=16-1048575 propagate-ttl=yes
7. Настройка безопасности доступа к маршрутизатору
Отключаем лишние сервисы управления для доступа к Mikrotik. Переходим в меню IP\Services и отключаем их нажатием на крестик.
Зададим, фильтр подключений с определенного ip-адреса или сети задав его в поле «Available From».

Код: Выделить всё

/ip service print
/ip service disable 0,1,2,4,5,7
/ip service set www port=80 address=192.168.3.0/24
Изменяем имя и пароль учетной записи администратора в меню System\Users. В поле Group — задаем права доступа. Возможные варианты: full — полный доступ, read — просмотр информации о настройках и событиях и выполнение команд, не затрагивающих изменение конфигурации, write — изменение настроек за исключением настроек пользователей системы.

Код: Выделить всё

/user set admin password=12345678 group=full
8. Настройка фильтрации трафика, выхода в интернет
По умолчанию скрипт настраивает firewall таким образом, чтобы пропускать из локальной сети наружу любой трафик (mascarading), а снаружи только тот, который запрашивается локальными хостами (dnat) и ping.
Скрипт автонастройки прописывает 6 правил фильтрации. В одном правиле можно задавать несколько состояний соединения (connection state) включая соединения отвечающее за сетевую трансляцию адресов (connection NAT state).
Создадим правило запрещающее доступ к wan-интерфейсу с диапазона IP, которые не должны использоваться в таблицах маршрутизации в Интернет. (bogon-сети). Для этого зададим список этих сетей в IP\Firewall\Address Lists:

Код: Выделить всё

/ip firewall address-list add address=0.0.0.0/8 disabled=no list=BOGON
/ip firewall address-list add address=10.0.0.0/8 disabled=no list=BOGON
/ip firewall address-list add address=100.64.0.0/10 disabled=no list=BOGON
/ip firewall address-list add address=127.0.0.0/8 disabled=no list=BOGON
/ip firewall address-list add address=169.254.0.0/16 disabled=no list=BOGON
/ip firewall address-list add address=172.16.0.0/12 disabled=no list=BOGON
/ip firewall address-list add address=192.0.0.0/24 disabled=no list=BOGON
/ip firewall address-list add address=192.0.2.0/24 disabled=no list=BOGON
/ip firewall address-list add address=192.168.0.0/16 disabled=yes list=BOGON
/ip firewall address-list add address=198.18.0.0/15 disabled=no list=BOGON
/ip firewall address-list add address=198.51.100.0/24 disabled=no list=BOGON
/ip firewall address-list add address=203.0.113.0/24 disabled=no list=BOGON
/ip firewall address-list add address=224.0.0.0/4 disabled=no list=BOGON
/ip firewall address-list add address=240.0.0.0/4 disabled=no list=BOGON
/ip firewall address-list add address=192.168.3.0/24 disabled=no list=lan-access
Если в сети присутствуют указанные адреса или провайдер выдает сетевые настройки, ip-адрес или dns-сервера, которых как раз попадают в некоторые из диапазонов, такие диапазоны необходимо отключить. Добавим само правило для внешних интерфейсов в raw и filter. В принципе достаточно оставить его в raw, но для наглядности пусть будет в обоих местах:

Код: Выделить всё

/ip firewall filter add action=drop chain=input comment="boggon input drop" disabled=no in-interface-list=ExternalInterfaces src-address-list=BOGON
/ip firewall raw add action=drop chain=prerouting comment="boggon input drop" in-interface-list=ExternalInterfaces src-address-list=BOGON
Далее, защита от IP-спуфинга (ответ RST-пакетом на SYN-ACK-пакет, если он является первым в соединении):

Код: Выделить всё

/ip firewall filter add action=reject chain=input comment="ip spoofing protect" connection-state=new protocol=tcp reject-with=tcp-reset tcp-flags=syn,ack
Добавляем ловушку для особо ретивых извне и ставим их на паузу на 30 минут. Порты советую поменять на свои:

Код: Выделить всё

/ip firewall raw add action=add-src-to-address-list address-list=HoneyPotBlocked address-list-timeout=30m chain=prerouting dst-port=5061,81,400 in-interface-list=ExternalInterfaces protocol=tcp
/ip firewall raw add action=add-src-to-address-list address-list=HoneyPotBlocked address-list-timeout=30m chain=prerouting dst-port=5061,81,400 in-interface-list=ExternalInterfaces protocol=udp
/ip firewall raw add action=drop chain=prerouting comment="HoneyPot block" in-interface-list=ExternalInterfaces src-address-list=HoneyPotBlocked
Защита от перебора для протокола SSH (для ускорения не забываем добавить правило в raw):

Код: Выделить всё

/ip firewall filter add action=drop chain=input dst-port=22 protocol=tcp src-address-list=ssh_blacklist comment=«Block SSH brute forcers»
/ip firewall filter add action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1h30m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage3
/ip firewall filter add action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage2
/ip firewall filter add action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp src-address-list=ssh_stage1
/ip firewall filter add action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m chain=input connection-state=new dst-port=22 protocol=tcp
/ip firewall filter add chain=input connection-state=new dst-port=22 protocol=tcp
/ip firewall raw add action=drop chain=prerouting comment="Block SSH brute forcers" dst-port=22 in-interface-list=ExternalInterfaces protocol=tcp src-address-list=ssh_blacklist
Защита от перебора для протокола FTP:

Код: Выделить всё

/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=3h
/ip firewall raw add action=drop chain=prerouting comment="Block FTP brute forcers" dst-port=21 in-interface-list=ExternalInterfaces protocol=tcp src-address-list=ftp_blacklist
Запрещаем запросы в DNS извне:

Код: Выделить всё

/ip firewall raw add action=drop chain=prerouting comment="Drop external DNS requests" dst-port=53 in-interface-list=ExternalInterfaces protocol=udp src-address-list=!Router_address
/ip firewall raw add action=drop chain=prerouting comment="Drop external DNS requests" dst-port=53 in-interface-list=ExternalInterfaces protocol=tcp src-address-list=!Router_address
Ограничиваем ICMP снаружи. Полностью запрещать нельзя, т.к. может привести к ряду неожиданных проблем. Например некорректной обработке фрагментированных пакетов.

Код: Выделить всё

/ip firewall filter add action=jump chain=input comment="jump to ICMP chain" in-interface-list=ExternalInterfaces jump-target=icmp protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:allow echo request" icmp-options=8:0 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:echo reply" icmp-options=0:0 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:net unreachable" icmp-options=3:0 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:host unreachable" icmp-options=3:1 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:host unreachable fragmentation required" icmp-options=3:4 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:allow time exceed" icmp-options=11:0 protocol=icmp
/ip firewall filter add action=accept chain=icmp comment="ICMP chain:allow parameter bad" icmp-options=12:0 protocol=icmp
/ip firewall filter add action=drop chain=icmp comment="ICMP chain:deny all other types"
И разрешаем остальные

Код: Выделить всё

/ip firewall filter add action=accept chain=input comment=ping in-interface-list=!ExternalInterfaces protocol=icmp
Разрешаем fast track для установленных соединений

Код: Выделить всё

/ip firewall filter add action=fasttrack-connection chain=input comment="accept established & related" connection-state=established,related,untracked disabled=no hw-offload=yes
/ip firewall filter add action=accept chain=input comment="accept established & related" connection-state=established,related,untracked disabled=no
/ip firewall filter add action=fasttrack-connection chain=forward comment="established forward & related" connection-state=established,related,untracked disabled=no hw-offload=yes
/ip firewall filter add action=accept chain=forward comment="established forward & related" connection-state=established,related,untracked disabled=no
Закрываем все остальное с внешних интерфейсов:

Код: Выделить всё

/ip firewall filter add action=drop chain=forward comment="Drop incoming packets that are not NATted" connection-nat-state=!dstnat connection-state=new disabled=no in-interface-list=ExternalInterfaces log=no log-prefix=!NAT 
/ip firewall filter add action=drop chain=input comment="drop input" disabled=no in-interface-list=ExternalInterfaces 
/ip firewall filter add action=drop chain=forward comment="drop all except DSTNAT" connection-nat-state=!dstnat disabled=no in-interface-list=ExternalInterfaces 
/ip firewall filter add action=drop chain=forward comment="drop forward" connection-state=invalid
И разрешаем дополнительный трафик:

Код: Выделить всё

/ip firewall filter add action=accept chain=input
/ip firewall filter add action=accept chain=output out-interface-list=ExternalInterfaces
/ip firewall filter add action=accept chain=output src-address-list=Router_address
Для настройки выхода в интернет используя NAT, компьютеров, указанных в группе 'lan-access' добавляем правила:

Код: Выделить всё

/ip firewall nat add action=masquerade chain=srcnat disabled=no out-interface-list=ExternalInterfaces
Добавляем необязательные правила. Например все DNS запросы перенаправляем на DNS от Google

Код: Выделить всё

/ip firewall nat add action=dst-nat chain=dstnat comment="Capture DNS traffic and redirect to google" dst-address-list=!Router_address dst-port=53 protocol=tcp to-addresses=8.8.8.8
/ip firewall nat add action=dst-nat chain=dstnat comment="Capture DNS traffic and redirect to google" dst-address-list=!Router_address dst-port=53 protocol=udp to-addresses=8.8.8.8
Так же можно скорректировать время закрытия (timeout) для подключений.

Код: Выделить всё

/ip firewall connection tracking set tcp-established-timeout=1h
9. Настройка SNTP-клиента
Для отображения корректного времени на устройстве, необходимо настроить SNTP-клиент на синхронизацию времени с внешними ntp-серверами. Переходим в меню System\SNTP Client отмечаем галку Enable и вводим ip-адреса первичного и вторичного серверов времени. Для получения самих адресов воспользуемся командой nslookup, например, на адрес ru.pool.ntp.org.

Код: Выделить всё

/system ntp client set enabled=yes mode=unicast servers=194.190.168.1,95.163.183.223,185.209.85.222,91.206.16.3 vrf=main
Для выставления корректного часового пояса без ввода команд не обойтись.

Код: Выделить всё

/system clock set time-zone-autodetect=yes time-zone-name=Europe/Moscow
Включаем сервер:

Код: Выделить всё

/system ntp server set auth-key=none broadcast=yes broadcast-addresses=192.168.3.255 enabled=yes local-clock-stratum=5 manycast=yes multicast=yes use-local-clock=yes vrf=main
10. Настройка UPnP
Переходим в меню IP\UPnP и ставим галочку Enabled
Нажимаем кнопку Interfaces и добавляем наши интерфейсы с помощью синего плюса.

Код: Выделить всё

/ip upnp set allow-disable-external-interface=no enabled=yes show-dummy-rule=yes
/ip upnp interfaces add disabled=no interface=Dom_Ru type=external
/ip upnp interfaces add disabled=no interface=LanBridge type=internal
11. Проброс портов RDP в локальную сеть
Для большинства конфигураций делать этого не требуется, но если возникла необходимость, то делаем так:

Код: Выделить всё

/ip firewall nat add chain=dstnat dst-port=3389 action=dst-nat protocol=tcp to-address=192.168.3.50 to-port=3389 comment=«RDP port mapping»
Не забываем добавить защиту от перебора

Код: Выделить всё

add action=accept chain=forward comment="Accept RDP from White List" connection-state=established,related,new,untracked disabled=no dst-port=3389-3390 protocol=tcp src-address-list=RDP_white_list 
add action=reject chain=forward comment="Block RDP bruteforce" disabled=no log=no log-prefix="Blocked RDP - " reject-with=icmp-network-unreachable src-address-list="Blocked RDP bruteforcers"
add action=add-src-to-address-list address-list="Blocked RDP bruteforcers" address-list-timeout=15m chain=forward connection-state=new disabled=no dst-port=3389-3390 log=yes log-prefix="RDP BRUTEFORCE - " protocol=tcp src-address-list=rdp_bruteforce3 
add action=add-src-to-address-list address-list=rdp_bruteforce3 address-list-timeout=10m chain=forward connection-state=new disabled=no dst-port=3389-3390 log=no log-prefix="RDP BRUTEFORCE - STAGE3 - " protocol=tcp src-address-list=rdp_bruteforce2 
add action=add-src-to-address-list address-list=rdp_bruteforce2 address-list-timeout=10m chain=forward connection-state=new disabled=no dst-port=3389-3390 log=no log-prefix="RDP BRUTEFORCE - STAGE2 - " protocol=tcp src-address-list=rdp_bruteforce1 
add action=add-src-to-address-list address-list=rdp_bruteforce1 address-list-timeout=10m chain=forward connection-state=new disabled=no dst-port=3389-3390 log=no log-prefix="RDP BRUTEFORCE - STAGE1 - " protocol=tcp src-address-list=rdp_bruteforce0
add action=add-src-to-address-list address-list=rdp_bruteforce1 address-list-timeout=10m chain=forward connection-state=new disabled=no dst-port=3389-3390 log=no log-prefix="RDP BRUTEFORCE - STAGE0 - " protocol=tcp
ВАЖНО!!! Эти правила должны быть в списке Firewall перед защитой от перебора по SSH (Block SSH brute forcers).

12. Настройка VPN
Настройка VPN во многом аналогична настройке PPPoE соединения, поэтому пройдем по ней кратко.

Код: Выделить всё

/interface wireguard add disabled=no listen-port=13231 mtu=1420 name=wireguard_VPN
/interface wireguard peers add allowed-address=0.0.0.0/0,::/0 client-endpoint="" disabled=no  endpoint-address=11.22.33.44 endpoint-port=33313 interface=wireguard_VPN persistent-keepalive=25s preshared-key="ZPXXXXXXXXXXXXXXXXXXX=" private-key="" public-key="MQYYYYYYYYYYYYYYYY="
/ip address add address=10.8.6.4 interface=wireguard network=10.8.6.0
/interface list add name=VPN
/interface list member add disabled=no interface=wireguard_VPN list=ExternalInterfaces
/interface list member add disabled=no interface=wireguard_VPN list=VPN
/routing table add disabled=no fib name=VPN
/routing table add disabled=no fib name=NoVPN
/ip route add comment="VPN passthrow" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=wireguard_VPN routing-table=VPN scope=30 suppress-hw-offload=no target-scope=10
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=Dom_Ru routing-table=NoVpn scope=30 suppress-hw-offload=no target-scope=10
/ip firewall mangle add action=change-mss chain=forward new-mss=1300 out-interface=wg2 protocol=tcp tcp-flags=syn tcp-mss=1301-65535
/ip settings set accept-redirects=no accept-source-route=no allow-fast-path=yes arp-timeout=30s icmp-rate-limit=10 icmp-rate-mask=0x1818 ip-forward=yes max-neighbor-entries=8192 rp-filter=no secure-redirects=yes send-redirects=yes tcp-syncookies=yes
/ip route add comment=Wireguard disabled=no distance=1 dst-address=11.22.33.44/32 gateway=Dom_Ru pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10
/interface pppoe-client set Dom_Ru default-route-distance=2
Важно не забыть прописать последние два правила из приведенных выше, чтобы все пакеты предназначенные для endpoint VPN ходили не через VPN и понизить приоритет соединения PPPoE для коррекрного прохождения hanshake с VPN сервером (в принципе это понижение должно быть не обязательное, но по другому не работает во многих случаях. Если кто-то сможет объяснить почему - буду рад услышать в комментариях).

Добавляем правило для списка адресов, который будет всегда ходить через VPN

Код: Выделить всё

add action=mark-routing chain=prerouting disabled=no comment="Rule for redirect to VPN" dst-address-list=ToVPN_IP new-routing-mark=VPN passthrough=yes
Или одиночного IP. Например DNS Google

Код: Выделить всё

/ip firewall mangle add action=mark-routing chain=prerouting comment="Pass DNS to VPN" dst-address=8.8.8.8 new-routing-mark=VPN passthrough=yes
Заполняем сам список таких адресов. Для примера возьмем ip 8.8.8.8

Код: Выделить всё

/ip firewall address-list add list=ToVPN_IP address=8.8.8.8
Не забываем что трафик на VPN должен ходить не через VPN:

Код: Выделить всё

/ip firewall mangle add action=mark-routing chain=prerouting comment="To VPN Server" dst-address-list=VPN_Server in-interface=!Dom_Ru new-routing-mark=NoVpn passthrough=yes
Если хотим чтобы при проблемах с VPN происходило переключение на обычный канал добавляем:

Код: Выделить всё

/ip route add comment="Default gateway for VPN inactive" disabled=no distance=10 dst-address=0.0.0.0/0 gateway=Dom_Ru routing-table=VPN scope=30 suppress-hw-offload=no target-scope=10
/ip route add comment="Check that VPN available" check-gateway=ping disabled=no distance=1 dst-address=8.8.8.8/32 gateway=wireguard_VPN routing-table=main scope=30 suppress-hw-offload=no target-scope=10
13. Сохранение настроек
Бывают случаи, когда требуется сохранить параметры для последующего восстановления. Для этого случая существует специальная команда:

Код: Выделить всё

/export file=backup.rsc
Если надо включить данные о паролях используется:

Код: Выделить всё

/export file=backup.rsc show-sensitive
Далее используя меню Files можно скопировать файл с роутера на компьютер.
Для восстановления настроек из файла необходимо выполнить следующую команду:

Код: Выделить всё

/import backup.rsc
14. Скрипты
Роутер поддерживает скрипты. Один из полезных скриптов приведен ниже. Он проверяет наличие обновлений прошивки и, в случае нахождения обновления отсылает письмо. В качестве бонуса вкладывает в письмо текущие настройки.

Код: Выделить всё

{
## Check for update and send email with configuration if any
:log info "Starting Update check and backup script...";

## Notification e-mail
:local Eaccount "ASDFGHJK@gmail.com";

## Resolve SMTP name and prepare backup variable
:local sysname [/system identity get name];
:local sysver [/system package get routeros version];
:local localSubj "Empty"
:local localBody "Empty"
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:local smtpserv [:resolve "smtp.gmail.com"];

## Check for update
/system package update

## Set channel not working on the latest FW
## set channel=current

check-for-updates

## Wait on slow connections
:delay 15s;

## Changelog location
:local Changelog "https://download.mikrotik.com/routeros/$[/system package update get latest-version]/CHANGELOG";
:local ChangelogFilename "changelog_latest.txt";

## Important note: "installed-version" was "current-version" on older Router OSes
:if ([get installed-version] != [get latest-version]) do={ 

   ## New version of RouterOS available
   :log info ("Upgrade available for RouterOS on router $sysname from $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])")
   
   :set localSubj "RouterOS need to be upgraded on router $sysname"
   :set localBody "Upgrade for RouterOS available on router $sysname from $[/system package update get installed-version] to $[/system package update get latest-version] (channel:$[/system package update get channel])"

  } else={

   ## RouterOS latest, let's check for updated firmware
   :log info ("No RouterOS upgrade found, checking for HW upgrade...")

   /system routerboard

   :if ( [get current-firmware] != [get upgrade-firmware]) do={ 

      ## New version of firmware available
      :log info ("Firmware upgrade available on router $sysname from $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]")
      
      :set localSubj "Firmware need to be updated on router $sysname"
      :set localBody "Firmware upgrade available on router $sysname from $[/system routerboard get current-firmware] to $[/system routerboard get upgrade-firmware]"

    } else={

       :log info ("No Router HW upgrade found")
    }
  }

:log info "localSubj= $localSubj ";
:log info "localBody=$localBody";

:if ( !($localSubj = "Empty")) do={

   :log info "Deleting last Backups...";
   :foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \
   "$sysname-backup-"]]!="nil") do={/file remove $i}};
   :delay 2;
   :do {/file remove $ChangelogFilename} on-error={};

   ## Downloading changelog file
   /tool fetch mode=https url=("$Changelog") dst-path=("$ChangelogFilename");

   ## Backup configuration
   :local backupfile ("$sysname-backup-" . \
     [:pick [/system clock get date] 0 4] . [:pick [/system \
     clock get date] 5 7] . [:pick [/system clock get date] 8 10] . ".backup");
   :log info "Creating new Full Backup file...";
   /system backup save name=$backupfile;
   :delay 5;

   :local exportfile ("$sysname-backup-" . \
     [:pick [/system clock get date] 0 4] . [:pick [/system \
     clock get date] 5 7] . [:pick [/system clock get date] 8 10] . ".rsc");
   :log info "Creating new Setup Script file...";
   /export verbose file=$exportfile;
   :delay 5;

   :log info "Sending Full Backup file via E-mail...";
   /tool e-mail send to=$Eaccount server=$smtpserv \
     port=587 file=($backupfile ."," . $exportfile . "," . $ChangelogFilename) \
     subject=("$localSubj") \
     body=("$localBody");
   :delay 10;
  }
}
Для работы скрипта необходимо прописать в меню Tools\Email настройки отправки сообщений.

Код: Выделить всё

/tool e-mail set from=<ASDFGHJK@gmail.com> port=587 server=0.0.0.0 tls=starttls user=ASDFGHJK@gmail.com vrf=main
Через UI не забыть прописать пароль для указанного пользователя.

Имеет смысл использовать встроенный планировщик и поставить вызов этого скрипта по расписанию. Например, так:

Код: Выделить всё

/system scheduler add disabled=no interval=1w name=CheckForUpdate on-event=CheckUpdateAndEmail policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-date=2024-07-11 start-time=12:00:00
В данном случае CheckUpdateAndEmail имя скрипта.

Для удобства использования можно прописать имя роутера:

Код: Выделить всё

/system identity set name=MikroTik_Configured
На этом базовую настройку считаю завершенной. Буду рад услышать в комментариях отзывы или предложения по улучшению параметров.
Последний раз редактировалось EagleNN 12 окт 2024, 14:40, всего редактировалось 2 раза.


ololo
Сообщения: 3
Зарегистрирован: 30 авг 2024, 13:26

EagleNN писал(а): 11 июл 2024, 13:37
Разрешаем fast-path:

Код: Выделить всё

/ip settings set accept-redirects=no accept-source-route=no allow-fast-path=yes arp-timeout=30s icmp-rate-limit=10 icmp-rate-mask=0x1818 ip-forward=yes max-neighbor-entries=8192 rp-filter=strict secure-redirects=yes send-redirects=yes tcp-syncookies=yes
/mpls settings set allow-fast-path=yes dynamic-label-range=16-1048575 propagate-ttl=yes
Вот из за этой настройки я 3 дня потратил на то, чтобы найти причину, почему не работает туннель между микротом и vps сервером через wireguard. Точнее если ставить rp-filter=no, то все прекрасно работает. Пинги на 8.8.8.8 через интерфейс wg идут как положено. Но если ставишь strict, то все, пинги не идут, сайты не открываются через интерфейс wg. Во така х*ня, малята....


EagleNN
Сообщения: 16
Зарегистрирован: 09 авг 2017, 19:45

ololo писал(а): 05 сен 2024, 21:38
EagleNN писал(а): 11 июл 2024, 13:37
Разрешаем fast-path:

Код: Выделить всё

/ip settings set accept-redirects=no accept-source-route=no allow-fast-path=yes arp-timeout=30s icmp-rate-limit=10 icmp-rate-mask=0x1818 ip-forward=yes max-neighbor-entries=8192 rp-filter=strict secure-redirects=yes send-redirects=yes tcp-syncookies=yes
/mpls settings set allow-fast-path=yes dynamic-label-range=16-1048575 propagate-ttl=yes
Вот из за этой настройки я 3 дня потратил на то, чтобы найти причину, почему не работает туннель между микротом и vps сервером через wireguard. Точнее если ставить rp-filter=no, то все прекрасно работает. Пинги на 8.8.8.8 через интерфейс wg идут как положено. Но если ставишь strict, то все, пинги не идут, сайты не открываются через интерфейс wg. Во така х*ня, малята....
Спасибо!
Действительно, для VPN надо скорректировать этот пункт.
Дополнительно надо скорректировать MSS, а то возникнут проблемы с прохождением некоторых больших пакетов.

Код: Выделить всё

/ip firewall mangle add action=change-mss chain=forward new-mss=1300 out-interface=wg2 protocol=tcp tcp-flags=syn tcp-mss=1301-65535
Внес изменения в первоначальный пост.
По уму то надо бы и FastPath выключать при такой настройке...


Ответить