Актуально для версий RouterOS 7.x и выше
Введение
Эта статья посвящена комплексной настройке межсетевого экрана (firewall) и трансляции сетевых адресов (NAT) на маршрутизаторах MikroTik. Мы рассмотрим полный цикл защиты сети, который охватывает:
- Защиту от DDoS-атак, таких как SYN-flood и ICMP-flood.
- Блокировку попыток bruteforce для сервисов вроде SSH, почты и VPN.
- Организация безопасного доступа к внутренним ресурсам как изнутри сети, так и снаружи.
- Логирование и мониторинг подозрительного трафика для оперативного реагирования на угрозы.
Данный гайд поможет создать сбалансированную конфигурацию, подходящую для небольших корпоративных и домашних сетей, обеспечивающую высокую степень безопасности при сохранении производительности.
1. Подготовка списков интерфейсов
Первым делом организуем интерфейсы в логические группы для упрощения управления и повышения читаемости конфигурации.
/interface list
add name=ISP comment="Внешние интерфейсы, подключенные к интернет-провайдерам"
add name=LAN comment="Локальная защищенная сеть"
add name=Trusted comment="Доверенные интерфейсы (включая VPN)"
Теперь добавляем физические интерфейсы в эти списки:
/interface list member
add list=ISP interface=ether1 comment="Основной WAN-порт"
add list=LAN interface=bridge-local comment="Основной LAN-мост"
add list=Trusted interface=bridge-local
add list=Trusted interface=ovpn-in1 comment="Входящие VPN-подключения"
2. Настройка Firewall
2.1. Базовые правила фильтрации
Начнем с базовых правил для обработки входящего трафика:
/ip firewall filter
# Правила 1-5: Базовая обработка входящего трафика
add chain=input action=jump jump-target=ISP-Input in-interface-list=ISP comment="Перенаправление ISP трафика"
add chain=forward action=jump jump-target=ISP-Forward in-interface-list=ISP comment="Перенаправление ISP форвардинга"
add chain=ISP-Input action=accept connection-state=established comment="Разрешить установленные соединения"
add chain=ISP-Input action=accept connection-state=related comment="Разрешить связанные соединения"
add chain=ISP-Input action=accept connection-state=untracked comment="Разрешить нетрекируемые"
2.2. Защитные механизмы
Критически важные правила безопасности:
# Правило 6: Блокировка недействительных соединений
add chain=ISP-Input action=drop connection-state=invalid comment="Блокировка невалидных состояний"
# Правила 7-8: Доступ из доверенных сетей
add chain=input action=accept protocol=icmp in-interface-list=Trusted comment="Ping из локальной сети"
add chain=input action=accept protocol=tcp in-interface-list=Trusted dst-port=22,8291 comment="SSH/Winbox из локальной сети"
# Правила 9-10: Защита от атак
add chain=input action=drop protocol=tcp fragment=yes comment="Блокировка фрагментированных пакетов"
add chain=input action=drop connection-limit=50,32 protocol=tcp in-interface-list=!Trusted comment="Защита от SYN-flood"
2.3. Правила для сервисов
Настраиваем доступ к почтовым сервисам:
# Правило 11: Доступ к почтовым сервисам
add chain=input action=accept protocol=tcp dst-port=25,143,443,465,587,993 log=yes log-prefix="MAIL:" comment="Почтовые сервисы"
# Правило 12: Защита почты от bruteforce
add chain=input action=add-src-to-address-list connection-limit=3,20 protocol=tcp src-address-list=!trusted address-list=mail_attackers address-list-timeout=1d dst-port=25,143,587,993 comment="Защита почты"
2.4. VPN и дополнительная защита
Настройка VPN и дополнительной защиты:
# Правила 14-17: Настройка IPsec
add chain=ISP-Input action=jump jump-target=VPN-Protect protocol=udp dst-port=500,4500,1701 comment="Обработка VPN трафика"
add chain=ISP-Input action=accept log=yes log-prefix="IPSEC:" ipsec-policy=in,ipsec
add chain=input action=accept protocol=udp in-interface-list=ISP dst-port=500,4500 comment="Разрешение IPsec"
# Правила 19-20: Защита VPN
add chain=VPN-Protect action=accept protocol=udp src-address-list=!Brute-force-block dst-port=500,4500,1701
add chain=VPN-Protect action=jump jump-target=Brute-force connection-limit=3,32 protocol=udp dst-port=500,4500,1701 comment="Защита VPN"
3. Настройка NAT
3.1. Перенаправление для почтового сервера
/ip firewall nat
# Правило 1: Hairpin NAT для почты
add chain=dstnat action=dst-nat to-addresses=10.10.10.25 protocol=tcp dst-address=203.0.113.15 in-interface-list=LAN dst-port=25,143,443,465,587,993,995,110 log=yes log-prefix="MAIL-NAT:" comment="Локальный доступ к почте"
# Правило 2: Маскарадинг локальной почты
add chain=srcnat action=masquerade protocol=tcp src-address=10.10.10.0/24 dst-address=10.10.10.25 out-interface-list=LAN dst-port=25,143,443,465,587,993,995,110 comment="Маскарадинг локальной почты"
3.2. Основные NAT правила
# Правило 3: Основной маскарадинг
add chain=srcnat action=masquerade out-interface=ether1 comment="Выход в интернет"
# Правила 4-5: Исключения для IPsec
add chain=srcnat action=accept ipsec-policy=out,ipsec comment="Исходящий IPsec"
add chain=dstnat action=accept ipsec-policy=in,ipsec comment="Входящий IPsec"
# Правило 6: Перенаправление почты из интернета
add chain=dstnat action=dst-nat to-addresses=10.10.10.25 protocol=tcp dst-address=203.0.113.15 dst-port=25,143,443
Полная конфигурация Firewall (41 правило)
/ip firewall filter
# Базовые правила (1-5)
add chain=input action=jump jump-target=ISP-Input in-interface-list=ISP
add chain=forward action=jump jump-target=ISP-Forward in-interface-list=ISP
add chain=ISP-Input action=accept connection-state=established
add chain=ISP-Input action=accept connection-state=related
add chain=ISP-Input action=accept connection-state=untracked
# Защитные механизмы (6-14)
add chain=ISP-Input action=drop connection-state=invalid
add chain=input action=accept protocol=icmp in-interface-list=Trusted
add chain=input action=accept protocol=tcp in-interface-list=Trusted dst-port=22,8291
add chain=input action=drop protocol=tcp fragment=yes
add chain=input action=drop connection-limit=50,32 protocol=tcp in-interface-list=!Trusted
add chain=input action=accept protocol=tcp dst-port=25,143,443,465,587,993 log=yes log-prefix="MAIL:"
add chain=input action=add-src-to-address-list connection-limit=3,20 protocol=tcp src-address-list=!trusted address-list=mail_attackers address-list-timeout=1d dst-port=25,143,587,993
add chain=input action=drop protocol=icmp
add chain=input action=drop protocol=tcp dst-port=22,8291
# VPN правила (15-20)
add chain=ISP-Input action=jump jump-target=VPN-Protect protocol=udp dst-port=500,4500,1701
add chain=ISP-Input action=accept log=yes log-prefix="IPSEC:" ipsec-policy=in,ipsec
add chain=input action=accept protocol=udp in-interface-list=ISP dst-port=500,4500
add chain=VPN-Protect action=accept protocol=udp src-address-list=!Brute-force-block dst-port=500,4500,1701
add chain=VPN-Protect action=jump jump-target=Brute-force connection-limit=3,32 protocol=udp dst-port=500,4500,1701
# Дополнительные правила (21-34)
add chain=ISP-Input action=jump jump-target=ISP-Input-Allow
add chain=ISP-Input action=drop
add chain=ISP-Forward action=accept connection-state=established
add chain=ISP-Forward action=accept connection-state=related
add chain=ISP-Forward action=accept connection-state=untracked
add chain=ISP-Forward action=drop connection-state=invalid
add chain=ISP-Forward action=accept log=yes log-prefix="IPSEC:" ipsec-policy=in,ipsec
add chain=ISP-Forward action=accept connection-nat-state=dstnat
add chain=ISP-Forward action=drop
add chain=ISP-Input-Allow action=accept protocol=icmp
add chain=ISP-Input-Allow action=jump jump-target=Brute-force connection-nat-state=dstnat protocol=tcp dst-port=22
add chain=ISP-Input-Allow action=jump jump-target=Brute-force protocol=tcp dst-port=8291
add chain=ISP-Input-Allow action=accept connection-limit=3,32 protocol=udp dst-port=500
add chain=ISP-Input-Allow action=accept protocol=udp dst-port=4500
add chain=ISP-Input-Allow action=accept protocol=udp dst-port=1701
add chain=ISP-Input-Allow action=accept protocol=ipsec-esp
# Защита от bruteforce (35-41)
add chain=Brute-force action=drop src-address-list=Brute-force-block log=yes log-prefix="FIREWALL:"
add chain=Brute-force action=add-src-to-address-list src-address-list=Brute-force-4 address-list=Brute-force-block address-list-timeout=8h
add chain=Brute-force action=add-src-to-address-list src-address-list=Brute-force-3 address-list=Brute-force-4 address-list-timeout=30s
add chain=Brute-force action=add-src-to-address-list src-address-list=Brute-force-2 address-list=Brute-force-3 address-list-timeout=30s
add chain=Brute-force action=add-src-to-address-list src-address-list=Brute-force-1 address-list=Brute-force-2 address-list-timeout=30s
add chain=Brute-force action=add-src-to-address-list address-list=Brute-force-1 address-list-timeout=30s
add chain=Brute-force action=accept
Полная конфигурация NAT (7 правил)
/ip firewall nat
# Правила для почтового сервера (1-2)
add chain=dstnat action=dst-nat to-addresses=10.10.10.25 protocol=tcp dst-address=203.0.113.15 in-interface-list=LAN dst-port=25,143,443,465,587,993,995,110 log=yes log-prefix="MAIL-NAT:"
add chain=srcnat action=masquerade protocol=tcp src-address=10.10.10.0/24 dst-address=10.10.10.25 out-interface-list=LAN dst-port=25,143,443,465,587,993,995,110
# Основные NAT правила (3-7)
add chain=srcnat action=masquerade out-interface=ether1
add chain=srcnat action=accept ipsec-policy=out,ipsec
add chain=dstnat action=accept ipsec-policy=in,ipsec
add chain=dstnat action=redirect to-ports=22 protocol=tcp in-interface-list=ISP dst-port=1024
add chain=dstnat action=dst-nat to-addresses=10.10.10.25 protocol=tcp dst-address=203.0.113.15 dst-port=25,143,443,587,993
Заключение
Представленная конфигурация предоставляет многоуровневую защиту сети, включая:
- Многоуровневую защиту от сетевых атак,
- Безопасный доступ к управлению маршрутизатором,
- Надежную работу почтовых сервисов,
- Защищенные VPN-подключения,
- Оптимизацию работы NAT.
Чтобы настроить систему под вашу сеть, замените следующие параметры:
10.10.10.0/24
на вашу внутреннюю сеть,10.10.10.25
на IP почтового сервера,203.0.113.15
на ваш публичный IP,ether1
на ваш WAN-интерфейс.
Конфигурация была протестирована на RouterOS версии 7.11 и выше и подходит для большинства случаев развертывания.