Skip to content

Commit bd77a2e

Browse files
authored
Merge pull request #32 from gpas45/claude/initial-setup-script-analysis-eno3r5
Add RouterOS 6 setup script and translate ROS7 script to Russian
2 parents 1879e14 + 5fef878 commit bd77a2e

3 files changed

Lines changed: 254 additions & 54 deletions

File tree

‎routeros/README.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
| Файл | Назначение |
66
|---|---|
77
| `autorun.rsc` | Шаблон первичной настройки роутера: адресация, отключение небезопасных сервисов (telnet, ftp, api и т.д.), NTP, часовой пояс. Замените `CHANGE_ME` на свои значения. |
8-
| `initial-setup.rsc` | Расширенный шаблон настройки: bridge, interface-lists (WAN/LAN/StS/VPN), полный firewall (port knocking, anti-bruteforce, ICMP), NAT, DNS, харднинг сервисов, OSPF-фильтры, автообновление прошивки. |
8+
| `initial-setup-ros7.rsc` | Расширенный шаблон настройки для **RouterOS 7**: bridge, interface-lists (WAN/LAN/StS/VPN), полный firewall (port knocking, anti-bruteforce, ICMP), NAT, DNS, харднинг сервисов, OSPF-фильтры, автообновление прошивки. |
9+
| `initial-setup-ros6.rsc` | То же для **RouterOS 6** (6.41+): отличается синтаксисом NTP-клиента, отключением IPv6 через `/system package disable`, ROS6-фильтрами маршрутов и топиками логирования. |
910
| `check-isp.rsc` | Проверка доступности двух провайдеров пингом и сброс соединений упавшего канала (для dual-WAN). |
1011
| `rdp-bruteforce.rsc` | Защита от перебора RDP (TCP/3389): ступенчатое (`rdp_stage1`…`rdp_stage5`) добавление источников в `black-list attackers` с баном на 4w2d и правилом `drop` в filter. Списки `RDP` (доверенные клиенты) и `management` заполняются вручную; `192.168.0.0/16` не банится. |
1112
| `cloudflare-ip-updater.rsc` | Обновление address-list `CF` актуальными IPv4-подсетями Cloudflare (по расписанию). |

‎routeros/initial-setup-ros6.rsc‎

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
# Скрипт первичной настройки RouterOS 6
2+
# На основе routeros/autorun.scr, расширен списками интерфейсов и правилами firewall.
3+
# Для RouterOS 7 используйте initial-setup-ros7.rsc (отличается синтаксис NTP /
4+
# IPv6 / фильтров маршрутов / топиков логирования).
5+
#
6+
# Использование:
7+
# 1. Просмотрите и поправьте плейсхолдеры CHANGE_ME / <...> ниже.
8+
# 2. Назначьте реальные интерфейсы спискам LAN / WAN / StS / VPN в
9+
# секции "/interface list member".
10+
# 3. Загрузите на роутер и выполните: /import file-name=initial-setup-ros6.rsc
11+
# 4. Правила firewall "drop all other" намеренно используют action=passthrough:
12+
# на этапе первичной настройки трафик НЕ отбрасывается, а только логируется,
13+
# чтобы не потерять доступ к роутеру. После проверки логов и уверенности,
14+
# что вы себя не заблокируете, смените эти правила (в цепочках input и
15+
# forward) на action=drop.
16+
#
17+
# Примечания:
18+
# StS = туннели site-to-site, VPN = удалённые VPN-клиенты.
19+
# Последовательность port knocking: 1234 -> 2345 -> 3456, затем подключение к 12345.
20+
# Требуется RouterOS 6.41+ (списки интерфейсов / in-interface-list).
21+
22+
# Настройки, зависящие от провайдера (адреса, маршруты, dhcp-клиент, пароли
23+
# пользователей) намеренно НЕ включены — настраивайте их отдельно для каждого
24+
# аплинка / развёртывания.
25+
26+
# ---------------------------------------------------------------------------
27+
# Мост (bridge)
28+
# ---------------------------------------------------------------------------
29+
/interface bridge
30+
add name=bridge comment="Local bridge"
31+
# Порты намеренно не привязаны здесь — добавляйте их под каждое развёртывание, напр.:
32+
# /interface bridge port
33+
# add bridge=bridge interface=ether2
34+
35+
# ---------------------------------------------------------------------------
36+
# Списки интерфейсов
37+
# ---------------------------------------------------------------------------
38+
/interface list
39+
add name=WAN comment="Uplinks / Internet-facing interfaces"
40+
add name=LAN comment="Local trusted networks"
41+
add name=StS comment="Site-to-Site tunnels"
42+
add name=VPN comment="Remote-access VPN clients"
43+
44+
/interface list member
45+
# Назначьте здесь свои реальные интерфейсы, примеры ниже:
46+
# add list=WAN interface=ether1
47+
add list=LAN interface=bridge
48+
# add list=StS interface=<gre-tunnel1>
49+
# add list=VPN interface=<wireguard1>
50+
51+
# ---------------------------------------------------------------------------
52+
# Firewall filter
53+
# ---------------------------------------------------------------------------
54+
/ip firewall filter
55+
add action=accept chain=input comment="accept established, related connections" connection-state=established,related
56+
add action=drop chain=input comment="drop invalid connections" connection-state=invalid log-prefix="DROP INPUT INVALID:"
57+
add action=jump chain=input comment="jump for icmp input flow" jump-target=icmp protocol=icmp
58+
add action=jump chain=input comment="detect intrusion" connection-state=new jump-target=detect-intrusion src-address-list=!management
59+
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
60+
add action=drop chain=input dst-port=12345 in-interface-list=WAN protocol=tcp src-address-list=!pk-1
61+
add action=drop chain=input dst-port=12345 in-interface-list=WAN protocol=tcp src-address-list=!pk-2
62+
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
63+
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
64+
add action=accept chain=input comment="accept LAN" in-interface-list=LAN
65+
add action=accept chain=input comment="accept StS" in-interface-list=StS
66+
add action=accept chain=input comment="accept VPN" in-interface-list=VPN
67+
# VPN / туннельные протоколы (GRE / L2TP / IPsec): правила выключены (disabled=yes),
68+
# включите нужные (disabled=no) при терминировании туннелей на роутере.
69+
add action=accept chain=input comment="accept IPsec IKE (500,4500)" disabled=yes dst-port=500,4500 in-interface-list=WAN protocol=udp
70+
add action=accept chain=input comment="accept IPsec ESP" disabled=yes in-interface-list=WAN protocol=ipsec-esp
71+
add action=accept chain=input comment="accept IPsec AH" disabled=yes in-interface-list=WAN protocol=ipsec-ah
72+
add action=accept chain=input comment="accept L2TP (1701)" disabled=yes dst-port=1701 in-interface-list=WAN protocol=udp
73+
add action=accept chain=input comment="accept GRE" disabled=yes in-interface-list=WAN protocol=gre
74+
add action=passthrough chain=input comment="drop all other (see usage note 4: passthrough)" log-prefix="IN DROP"
75+
add action=accept chain=forward comment="accept established, related connections" connection-state=established,related
76+
add action=drop chain=forward comment="drop invalid connections" connection-state=invalid log-prefix="INV FWD"
77+
add action=accept chain=forward comment="accept DST-NAT" connection-nat-state=dstnat
78+
add action=drop chain=forward comment="WAN -X" in-interface-list=WAN log-prefix=FWD
79+
add action=jump chain=forward comment=ICMP jump-target=icmp protocol=icmp
80+
add action=accept chain=forward comment="LAN -> WAN" in-interface-list=LAN out-interface-list=WAN
81+
add action=accept chain=forward comment="LAN -> StS" in-interface-list=LAN out-interface-list=StS
82+
add action=accept chain=forward comment="LAN -> VPN" in-interface-list=LAN out-interface-list=VPN
83+
add action=accept chain=forward comment="StS -> LAN" in-interface-list=StS out-interface-list=LAN
84+
add action=accept chain=forward comment="VPN -> LAN" in-interface-list=VPN out-interface-list=LAN
85+
add action=passthrough chain=forward comment="drop all other (see usage note 4: passthrough)" log-prefix=FWD
86+
add action=accept chain=icmp comment="echo request" icmp-options=8:0 protocol=icmp
87+
add action=accept chain=icmp comment="echo reply" icmp-options=0:0 protocol=icmp
88+
add action=accept chain=icmp comment="net unreachable" icmp-options=3:3 protocol=icmp
89+
add action=accept chain=icmp comment="host unreachable fragmentation required" icmp-options=3:4 protocol=icmp
90+
add action=accept chain=icmp comment="time exceed" icmp-options=11:0 protocol=icmp
91+
add action=drop chain=icmp comment="drop all other types"
92+
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
93+
add action=add-src-to-address-list address-list=pk-2 address-list-timeout=1m chain=pk connection-state="" dst-port=2345 protocol=tcp
94+
add action=add-src-to-address-list address-list=pk-3 address-list-timeout=1m chain=pk connection-state="" dst-port=3456 protocol=tcp
95+
add action=return chain=detect-intrusion comment="detect intrusion" dst-limit=30,256,src-and-dst-addresses/1s
96+
add action=add-src-to-address-list address-list="black-list attackers" address-list-timeout=1d chain=detect-intrusion
97+
add action=drop chain=detect-intrusion src-address-list="black-list attackers"
98+
99+
# ---------------------------------------------------------------------------
100+
# Firewall NAT
101+
# ---------------------------------------------------------------------------
102+
/ip firewall nat
103+
add action=masquerade chain=srcnat comment="LAN -> Internet" out-interface-list=WAN
104+
105+
# ---------------------------------------------------------------------------
106+
# DNS — резолвер для клиентов LAN / VPN / StS
107+
# ---------------------------------------------------------------------------
108+
/ip dns
109+
set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8
110+
# DNS-запросы принимаются от LAN / VPN / StS правилами цепочки input выше
111+
# и по умолчанию отбрасываются со стороны WAN.
112+
113+
# ---------------------------------------------------------------------------
114+
# Сервисы / усиление безопасности управления
115+
# ---------------------------------------------------------------------------
116+
/ip service
117+
set telnet disabled=yes
118+
set ftp disabled=yes
119+
set www disabled=yes
120+
set api disabled=yes
121+
set api-ssl disabled=no
122+
/ip neighbor discovery-settings
123+
set discover-interface-list=LAN
124+
# MAC-сервер ограничен списком LAN: MAC-telnet / MAC-winbox доступны только
125+
# из локальной сети и недоступны со стороны WAN.
126+
/tool mac-server
127+
set allowed-interface-list=LAN
128+
/tool mac-server mac-winbox
129+
set allowed-interface-list=LAN
130+
/tool mac-server ping
131+
set enabled=no
132+
# Отключаем сервер bandwidth-test (по умолчанию открыт, частый вектор атаки).
133+
/tool bandwidth-server
134+
set enabled=no
135+
136+
# ---------------------------------------------------------------------------
137+
# Отключение неиспользуемых пакетов (только RouterOS 6)
138+
# Отключает пакеты hotspot, ipv6 и mpls. Изменения применяются после
139+
# перезагрузки роутера. Отключение пакета ipv6 — это способ полностью
140+
# выключить IPv6 в RouterOS 6 (в ней нет настройки "/ipv6 settings
141+
# set disable-ipv6" монолитного пакета).
142+
# ---------------------------------------------------------------------------
143+
/system package disable hotspot,ipv6,mpls
144+
145+
# ---------------------------------------------------------------------------
146+
# Время / NTP
147+
# ---------------------------------------------------------------------------
148+
/system clock
149+
set time-zone-name=Asia/Yekaterinburg
150+
# RouterOS 6: NTP-клиент использует server-dns-names / primary-ntp (без "servers").
151+
/system ntp client
152+
set enabled=yes server-dns-names=pool.ntp.org
153+
154+
# Работать как NTP-сервер для нижестоящих клиентов.
155+
# ПРИМЕЧАНИЕ: в RouterOS 6 NTP-сервер входит в отдельный пакет "ntp" —
156+
# этот блок работает только если пакет установлен.
157+
/system ntp server
158+
set enabled=yes
159+
160+
# ---------------------------------------------------------------------------
161+
# Логирование — подавить info-сообщения для DHCP и беспроводной сети
162+
# ---------------------------------------------------------------------------
163+
# В RouterOS 6 нет топика "wifi"; используйте "wireless". Если на устройстве
164+
# вообще нет беспроводного пакета — уберите !wireless, оставив только info,!dhcp.
165+
/system logging
166+
set [find where topics="info"] topics=info,!dhcp,!wireless
167+
168+
# ---------------------------------------------------------------------------
169+
# Канал обновления пакетов RouterOS — использовать ветку long-term (стабильную)
170+
# ---------------------------------------------------------------------------
171+
/system package update
172+
set channel=long-term
173+
174+
# ---------------------------------------------------------------------------
175+
# Авто-обновление прошивки RouterBOARD
176+
# Обновляет прошивку RouterBOARD при старте, если доступна более новая,
177+
# затем перезагружается для её применения.
178+
# ---------------------------------------------------------------------------
179+
/system scheduler
180+
add name=routerboard_fwupgrade policy=reboot,read,write,sensitive start-time=startup \
181+
on-event="if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={\r\
182+
\n/system routerboard upgrade\r\
183+
\n:delay 15s\r\
184+
\n/system reboot\r\
185+
\n}"
186+
187+
# ---------------------------------------------------------------------------
188+
# Фильтры маршрутизации OSPF — принимать только локальные (RFC1918) префиксы вх/исх
189+
# Синтаксис фильтров маршрутов RouterOS 6 (prefix / prefix-length / action).
190+
# ---------------------------------------------------------------------------
191+
/routing filter
192+
add chain=ospf-in prefix=192.168.0.0/16 prefix-length=16-32 action=accept
193+
add chain=ospf-in prefix=10.0.0.0/8 prefix-length=8-32 action=accept
194+
add chain=ospf-in prefix=172.16.0.0/12 prefix-length=12-32 action=accept
195+
add chain=ospf-out prefix=192.168.0.0/16 prefix-length=16-32 action=accept
196+
add chain=ospf-out prefix=10.0.0.0/8 prefix-length=8-32 action=accept
197+
add chain=ospf-out prefix=172.16.0.0/12 prefix-length=12-32 action=accept

0 commit comments

Comments
 (0)