|
| 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