В данной статье поговорим о цепочке input в firewall Mikrotik. Разберем зачем она нужна и научимся создавать новые правила.
Если нам необходимо защитить наш роутер от злоумышленников, например из интернета. Мы должны создавать правила в цепочке Input.
Эта цепочка также необходима для публикации различных сервисов RouterOS, например, во внешнюю сеть.
Давайте ознакомимся с правилами цепочки input, содержащимися в конфигурации firewall по умолчанию.
Для этого переходимо в раздел IP -> Firewall -> Filter Rules и с помощью фильтра в верхнем правом углу выбираем input. Таким образом мы отфильтруем только правила, принадлежащие этой цепочке.
/ip firewall filter print where chain=input
Flags: X - disabled, I - invalid; D - dynamic
1 ;;; defconf: accept established,related,untracked
chain=input action=accept
connection-state=established,related,untracked
2 ;;; defconf: drop invalid
chain=input action=drop connection-state=invalid
3 ;;; defconf: accept ICMP
chain=input action=accept protocol=icmp
4 ;;; defconf: accept to local loopback (for CAPsMAN)
chain=input action=accept dst-address=127.0.0.1
5 ;;; defconf: drop all not coming from LAN
chain=input action=drop in-interface-list=!LAN
Default конфигурация, которую мы сейчас видим, обычно присутствует в SOHO роутерах после первого включения. Если она отсутствует, то базовые правила для firewall можно просмотреть командой /system default-configuration print. Подробнее описано в статье https://mikrotik-training.ru/kb/1-firewall-v-mikrotik/
Здесь мы можем увидеть несколько правил. Самое главное среди них — последнее правило, запрещающее трафик к внутренним сервисам Mikrotik со всех интерфейсов, кроме локальной сети.
Напоминаем, что обозначение локальных интерфейсов, например LAN в данном случае, в Mikrotik RouterOS весьма условно. Настройка логических интерфейсов производится в разделе Interface -> Interface List
В этом разделе мы назначаем различные интерфейсы тому или иному логическому определению.
/interface list member print
Columns: LIST, INTERFACE
# LIST INTERFACE
;;; defconf
0 LAN bridge
;;; defconf
1 WAN ether1
В данном случае имеется два логических определения – это LAN (Local Area Network) и WAN (Wide Area Network), которым сопоставляются интерфейсы bridge и ether1 соответственно.
Последнее правило, о котором мы говорили ранее, является самым главным и обладает тремя важными параметрами: chain=input – указывает на то, что относится к цепочке input; in-interface-list=!LAN — означает, что распространяет свое действие на все интерфейсы, кроме LAN; action=drop – говорит роутеру, что нужно сделать с пакетом, а именно отбросить.
/ip firewall filter add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
Если мы будем использовать наш роутер в качестве VPN-сервера, то нам понадобится публиковать порты наших VPN серверов в цепочке Input. И естественно, правило, связанное с запретом внешних соединений со всех интерфейсов кроме локальной сети будет нам этому мешать.
Для того, чтобы это исправить нам потребуется добавить в цепочку Input разрешающее правило. Например, к OpenVPN серверу.
По умолчанию OpenVPN сервер имеет порт 1194 по протоколу TCP.
Для создания правила в Winbox выбираем цепочку input, выбираем протокол TCP, а также Destination Port 1194.
Также мы можем указать с какого интерфейса будет разрешен доступ к нашему OpenVPN серверу. Это может быть конкретный интерфейс, тогда мы выбираем его в поле In. Interface, или же это может быть Interface List, в таком случае мы заполняем поле In. Interface List. Для примера, выберем In. Interface List – WAN.
/ip firewall filter add chain=input protocol=tcp dst-port=1194 in-interface-list=WAN action=accept comment="OpenVPN"
В данном случае нам понадобится переместить наше правило выше, чем Input Drop.
Если мы хотим открыть доступ для администрирования нашего роутера с какой-то удаленной площадки, то для этого можно сделать правило Input. Выбрать протокол TCP, параметр In. Interface List задать WAN и указать порты, связанные с управлением роутером, например SSH (порт 22) и Winbox (порт 8291).
Данное правило позволит управлять нашим роутером удаленно.
/ip firewall filter add chain=input protocol=tcp dst-port=22,8291 in-interface-list=WAN action=accept comment="SSH,Winbox"
Поэтому, если мы хотим сделать безопасную настройку, то в наше правило нужно добавить Address List.
Более подробно об Address Lists мы поговорим в следующих видео.
В разделе IP -> Firewall -> Address Lists добавляем Address List, например admin, и в этот Address List добавляем IP-адреса, с которых мы будем подключаться.
Для примера мы указали адрес 1.1.1.1. В реальности же, вместо него мы должны указать IP-адрес, который находится на нашей удаленной площадке.
/ip firewall address-list add list=admin address=1.1.1.1
Нам осталось добавить этот Address List в существующее правило firewall. Для этого в поле Scr. Address List указываем, созданный нами лист admin.
В результате получится такое правило:
/ip firewall filter add chain=input protocol=tcp dst-port=22,8291 in-interface-list=WAN src-address-list=admin action=accept comment="SSH,Winbox"
Теперь только с адреса, указанного в Address List, мы сможем подключаться к нашему роутеру.
С вами скоро свяжутся