Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion routeros/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
| Файл | Назначение |
|---|---|
| `autorun.rsc` | Шаблон первичной настройки роутера: адресация, отключение небезопасных сервисов (telnet, ftp, api и т.д.), NTP, часовой пояс. Замените `CHANGE_ME` на свои значения. |
| `initial-setup.rsc` | Расширенный шаблон настройки: bridge, interface-lists (WAN/LAN/StS/VPN), полный firewall (port knocking, anti-bruteforce, ICMP), NAT, DNS, харднинг сервисов, OSPF-фильтры, автообновление прошивки. |
| `initial-setup-ros7.rsc` | Расширенный шаблон настройки для **RouterOS 7**: bridge, interface-lists (WAN/LAN/StS/VPN), полный firewall (port knocking, anti-bruteforce, ICMP), NAT, DNS, харднинг сервисов, OSPF-фильтры, автообновление прошивки. |
| `initial-setup-ros6.rsc` | То же для **RouterOS 6** (6.41+): отличается синтаксисом NTP-клиента, отключением IPv6 через `/system package disable`, ROS6-фильтрами маршрутов и топиками логирования. |
| `check-isp.rsc` | Проверка доступности двух провайдеров пингом и сброс соединений упавшего канала (для dual-WAN). |
| `rdp-bruteforce.rsc` | Защита от перебора RDP (TCP/3389): ступенчатое (`rdp_stage1`…`rdp_stage5`) добавление источников в `black-list attackers` с баном на 4w2d и правилом `drop` в filter. Списки `RDP` (доверенные клиенты) и `management` заполняются вручную; `192.168.0.0/16` не банится. |
| `cloudflare-ip-updater.rsc` | Обновление address-list `CF` актуальными IPv4-подсетями Cloudflare (по расписанию). |
Expand Down
197 changes: 197 additions & 0 deletions routeros/initial-setup-ros6.rsc
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# Скрипт первичной настройки RouterOS 6
# На основе routeros/autorun.scr, расширен списками интерфейсов и правилами firewall.
# Для RouterOS 7 используйте initial-setup-ros7.rsc (отличается синтаксис NTP /
# IPv6 / фильтров маршрутов / топиков логирования).
#
# Использование:
# 1. Просмотрите и поправьте плейсхолдеры CHANGE_ME / <...> ниже.
# 2. Назначьте реальные интерфейсы спискам LAN / WAN / StS / VPN в
# секции "/interface list member".
# 3. Загрузите на роутер и выполните: /import file-name=initial-setup-ros6.rsc
# 4. Правила firewall "drop all other" намеренно используют action=passthrough:
# на этапе первичной настройки трафик НЕ отбрасывается, а только логируется,
# чтобы не потерять доступ к роутеру. После проверки логов и уверенности,
# что вы себя не заблокируете, смените эти правила (в цепочках input и
# forward) на action=drop.
#
# Примечания:
# StS = туннели site-to-site, VPN = удалённые VPN-клиенты.
# Последовательность port knocking: 1234 -> 2345 -> 3456, затем подключение к 12345.
# Требуется RouterOS 6.41+ (списки интерфейсов / in-interface-list).

# Настройки, зависящие от провайдера (адреса, маршруты, dhcp-клиент, пароли
# пользователей) намеренно НЕ включены — настраивайте их отдельно для каждого
# аплинка / развёртывания.

# ---------------------------------------------------------------------------
# Мост (bridge)
# ---------------------------------------------------------------------------
/interface bridge
add name=bridge comment="Local bridge"
# Порты намеренно не привязаны здесь — добавляйте их под каждое развёртывание, напр.:
# /interface bridge port
# add bridge=bridge interface=ether2

# ---------------------------------------------------------------------------
# Списки интерфейсов
# ---------------------------------------------------------------------------
/interface list
add name=WAN comment="Uplinks / Internet-facing interfaces"
add name=LAN comment="Local trusted networks"
add name=StS comment="Site-to-Site tunnels"
add name=VPN comment="Remote-access VPN clients"

/interface list member
# Назначьте здесь свои реальные интерфейсы, примеры ниже:
# add list=WAN interface=ether1
add list=LAN interface=bridge
# add list=StS interface=<gre-tunnel1>
# add list=VPN interface=<wireguard1>

# ---------------------------------------------------------------------------
# Firewall filter
# ---------------------------------------------------------------------------
/ip firewall filter
add action=accept chain=input comment="accept established, related connections" connection-state=established,related
add action=drop chain=input comment="drop invalid connections" connection-state=invalid log-prefix="DROP INPUT INVALID:"
add action=jump chain=input comment="jump for icmp input flow" jump-target=icmp protocol=icmp
add action=jump chain=input comment="detect intrusion" connection-state=new jump-target=detect-intrusion src-address-list=!management
add action=jump chain=input comment="port knocking" connection-state=new dst-port=1234,2345,3456 in-interface-list=WAN jump-target=pk log=yes protocol=tcp
add action=drop chain=input dst-port=12345 in-interface-list=WAN protocol=tcp src-address-list=!pk-1
add action=drop chain=input dst-port=12345 in-interface-list=WAN protocol=tcp src-address-list=!pk-2
add action=add-src-to-address-list address-list=management address-list-timeout=1d chain=input connection-state=new dst-port=12345 in-interface-list=WAN log=yes log-prefix=ACCESS! protocol=tcp src-address-list=pk-3
add action=accept chain=input comment="accept management" connection-state=new dst-port=22,8291,8729 log=yes log-prefix=ACCESS! protocol=tcp src-address-list=management
add action=accept chain=input comment="accept LAN" in-interface-list=LAN
add action=accept chain=input comment="accept StS" in-interface-list=StS
add action=accept chain=input comment="accept VPN" in-interface-list=VPN
# VPN / туннельные протоколы (GRE / L2TP / IPsec): правила выключены (disabled=yes),
# включите нужные (disabled=no) при терминировании туннелей на роутере.
add action=accept chain=input comment="accept IPsec IKE (500,4500)" disabled=yes dst-port=500,4500 in-interface-list=WAN protocol=udp
add action=accept chain=input comment="accept IPsec ESP" disabled=yes in-interface-list=WAN protocol=ipsec-esp
add action=accept chain=input comment="accept IPsec AH" disabled=yes in-interface-list=WAN protocol=ipsec-ah
add action=accept chain=input comment="accept L2TP (1701)" disabled=yes dst-port=1701 in-interface-list=WAN protocol=udp
add action=accept chain=input comment="accept GRE" disabled=yes in-interface-list=WAN protocol=gre
add action=passthrough chain=input comment="drop all other (see usage note 4: passthrough)" log-prefix="IN DROP"
add action=accept chain=forward comment="accept established, related connections" connection-state=established,related
add action=drop chain=forward comment="drop invalid connections" connection-state=invalid log-prefix="INV FWD"
add action=accept chain=forward comment="accept DST-NAT" connection-nat-state=dstnat
add action=drop chain=forward comment="WAN -X" in-interface-list=WAN log-prefix=FWD
add action=jump chain=forward comment=ICMP jump-target=icmp protocol=icmp
add action=accept chain=forward comment="LAN -> WAN" in-interface-list=LAN out-interface-list=WAN
add action=accept chain=forward comment="LAN -> StS" in-interface-list=LAN out-interface-list=StS
add action=accept chain=forward comment="LAN -> VPN" in-interface-list=LAN out-interface-list=VPN
add action=accept chain=forward comment="StS -> LAN" in-interface-list=StS out-interface-list=LAN
add action=accept chain=forward comment="VPN -> LAN" in-interface-list=VPN out-interface-list=LAN
add action=passthrough chain=forward comment="drop all other (see usage note 4: passthrough)" log-prefix=FWD
add action=accept chain=icmp comment="echo request" icmp-options=8:0 protocol=icmp
add action=accept chain=icmp comment="echo reply" icmp-options=0:0 protocol=icmp
add action=accept chain=icmp comment="net unreachable" icmp-options=3:3 protocol=icmp
add action=accept chain=icmp comment="host unreachable fragmentation required" icmp-options=3:4 protocol=icmp
add action=accept chain=icmp comment="time exceed" icmp-options=11:0 protocol=icmp
add action=drop chain=icmp comment="drop all other types"
add action=add-src-to-address-list address-list=pk-1 address-list-timeout=1m chain=pk comment=port-knocking dst-port=1234 protocol=tcp
add action=add-src-to-address-list address-list=pk-2 address-list-timeout=1m chain=pk connection-state="" dst-port=2345 protocol=tcp
add action=add-src-to-address-list address-list=pk-3 address-list-timeout=1m chain=pk connection-state="" dst-port=3456 protocol=tcp
add action=return chain=detect-intrusion comment="detect intrusion" dst-limit=30,256,src-and-dst-addresses/1s
add action=add-src-to-address-list address-list="black-list attackers" address-list-timeout=1d chain=detect-intrusion
add action=drop chain=detect-intrusion src-address-list="black-list attackers"

# ---------------------------------------------------------------------------
# Firewall NAT
# ---------------------------------------------------------------------------
/ip firewall nat
add action=masquerade chain=srcnat comment="LAN -> Internet" out-interface-list=WAN

# ---------------------------------------------------------------------------
# DNS — резолвер для клиентов LAN / VPN / StS
# ---------------------------------------------------------------------------
/ip dns
set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8
# DNS-запросы принимаются от LAN / VPN / StS правилами цепочки input выше
# и по умолчанию отбрасываются со стороны WAN.

# ---------------------------------------------------------------------------
# Сервисы / усиление безопасности управления
# ---------------------------------------------------------------------------
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set api disabled=yes
set api-ssl disabled=no
/ip neighbor discovery-settings
set discover-interface-list=LAN
# MAC-сервер ограничен списком LAN: MAC-telnet / MAC-winbox доступны только
# из локальной сети и недоступны со стороны WAN.
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
/tool mac-server ping
set enabled=no
# Отключаем сервер bandwidth-test (по умолчанию открыт, частый вектор атаки).
/tool bandwidth-server
set enabled=no

# ---------------------------------------------------------------------------
# Отключение неиспользуемых пакетов (только RouterOS 6)
# Отключает пакеты hotspot, ipv6 и mpls. Изменения применяются после
# перезагрузки роутера. Отключение пакета ipv6 — это способ полностью
# выключить IPv6 в RouterOS 6 (в ней нет настройки "/ipv6 settings
# set disable-ipv6" монолитного пакета).
# ---------------------------------------------------------------------------
/system package disable hotspot,ipv6,mpls

# ---------------------------------------------------------------------------
# Время / NTP
# ---------------------------------------------------------------------------
/system clock
set time-zone-name=Asia/Yekaterinburg
# RouterOS 6: NTP-клиент использует server-dns-names / primary-ntp (без "servers").
/system ntp client
set enabled=yes server-dns-names=pool.ntp.org

# Работать как NTP-сервер для нижестоящих клиентов.
# ПРИМЕЧАНИЕ: в RouterOS 6 NTP-сервер входит в отдельный пакет "ntp" —
# этот блок работает только если пакет установлен.
/system ntp server
set enabled=yes

# ---------------------------------------------------------------------------
# Логирование — подавить info-сообщения для DHCP и беспроводной сети
# ---------------------------------------------------------------------------
# В RouterOS 6 нет топика "wifi"; используйте "wireless". Если на устройстве
# вообще нет беспроводного пакета — уберите !wireless, оставив только info,!dhcp.
/system logging
set [find where topics="info"] topics=info,!dhcp,!wireless

# ---------------------------------------------------------------------------
# Канал обновления пакетов RouterOS — использовать ветку long-term (стабильную)
# ---------------------------------------------------------------------------
/system package update
set channel=long-term

# ---------------------------------------------------------------------------
# Авто-обновление прошивки RouterBOARD
# Обновляет прошивку RouterBOARD при старте, если доступна более новая,
# затем перезагружается для её применения.
# ---------------------------------------------------------------------------
/system scheduler
add name=routerboard_fwupgrade policy=reboot,read,write,sensitive start-time=startup \
on-event="if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={\r\
\n/system routerboard upgrade\r\
\n:delay 15s\r\
\n/system reboot\r\
\n}"

# ---------------------------------------------------------------------------
# Фильтры маршрутизации OSPF — принимать только локальные (RFC1918) префиксы вх/исх
# Синтаксис фильтров маршрутов RouterOS 6 (prefix / prefix-length / action).
# ---------------------------------------------------------------------------
/routing filter
add chain=ospf-in prefix=192.168.0.0/16 prefix-length=16-32 action=accept
add chain=ospf-in prefix=10.0.0.0/8 prefix-length=8-32 action=accept
add chain=ospf-in prefix=172.16.0.0/12 prefix-length=12-32 action=accept
add chain=ospf-out prefix=192.168.0.0/16 prefix-length=16-32 action=accept
add chain=ospf-out prefix=10.0.0.0/8 prefix-length=8-32 action=accept
add chain=ospf-out prefix=172.16.0.0/12 prefix-length=12-32 action=accept
Loading
Loading