Данная статья пишется VoIP специалистом, которому важно самому разобраться в тонкостях сетевых технологий в общем, и в работе межсетевого экрана (Firewall) в частности. Поэтому статья подойдёт для начинающих системных администраторов, сетевых инженеров или для IT специалистов из смежных областей (например как автор - из IP телефонии, а ранее просто телефонии).
Для тех, кто желает разобраться в технологии глубже - есть ряд источников информации, которыми я пользовался сам при написании этой статьи и рекомендую всем для более глубокого изучения материала. Ссылки вы можете найти в конце данной публикации.
Межсетевой экран ( Firewall) служит для контроля, ограничения и преобразования трафика по различным критериям и признакам.
Различают L2 Firewall, работающий на 2 сетевом уровне, оперирующем MAC адресами и протоколами, такими как ARP, и L3, соответственно, работающий на 3-м уровне. L2 я оставлю более компетентным сетевым специалистам. Ну а мы же с вами разберём наиболее часто применяемый L3 Firewall.
IP пакет, попадая в обработку на входящий интерфейс Mikrotik следует по пути вот такой сложной диаграммы (источник):
Но это вовсе не значит, что пакет пройдёт весь путь. Он может выйти из этой схемы на любом этапе, если удовлетворит условию правила, которое к нему применяется. При настройке Firewall иногда надо посматривать на эту диаграмму. Потому что графический интерфейс Mikrotik Firewall не даёт понимания логики его работы. Более того, на мой взгляд, он даже вводит в заблуждение.
Из диаграммы, например видно, что правило dstnat применяется раньше filter input. Поэтому если мы настроили «проброс» портов через dstnat, то никакие правила в filter rules к пакетам, удовлетворяющим «пробросу», применимы не будут. И напротив, чтобы добраться до srcnat, пакет вынужден будет сначала пройти практически весь путь межсетевого экрана. Хотя и srcnat и dstnat находятся в одной вкладке графического интерфейса.
Второй пример, который виден из этой диаграммы: если IP пакет прошмыгнул незамеченным через Filter Input - это вовсе не значит, что он проскочил фильтр и останется жив. Его еще может поджидать «сюрприз» в этой же таблице (с точки зрения графического интерфейса) но уже в цепочке Output.
Перед тем как мы с вами приступим к выполнению практического задания - предлагаю также раз и навсегда разобраться с понятиями NAT, а также Source NAT (srcnat) и Destination NAT (dstnat).
Технология NAT (Network Address Translation) возникла на фоне дефицита в мире IPv4 адресов. Диапазон IPv4 включает сеть 0.0.0.0 - 255.255.255.255 (0.0.0.0/0) или 4,294,967,295 адресов. Сетевых устройств в мире уже давным давно намного больше 4-х миллиардов. Однако, благодаря NAT, мы пока еще обходимся адресацией IPv4, не смотря на то, что уже активно проходит обкатку IPv6.
Компьютерам в локальной вычислительной сети назначают IP адреса из диапазона рекомендуемых адресов для частных сетей. Таких диапазонов всего 3:
10.0.0.0 - 10.255.255.255 или 10.0.0.0/8 (максимальное кол-во хостов в сети 16,777,215)
172.16.0.0 -172.31.255.255 или 172.16.0.0/12 (максимальное кол-во хостов в сети 1,048,575)
192.168.0.0 - 192.168.255.255 или 192.168.0.0/16 (максимальное кол-во хостов в сети 65,535)
Как мы видим, эти диапазоны в состоянии обеспечить IP адресами практически любую, даже очень большую частную сеть. Адреса должны быть уникальными только в пределах одной частной сети.
Остальные адреса (за исключением еще некоторых служебных диапазонов) являются публичными и уникальными во всём интернете. Вот их как раз и не хватает.
Технология NAT позволяет заменить адрес получателя или отправителя. Таким образом, имея маршрутизатор с одним публичным адресом, доступ в интернет получают все компьютеры частной сети. При выходе в интернет IP адрес компьютера (т.е. источника source) будет меняться на публичный адрес маршрутизатора. Такая технология называется Source NAT. И наоборот, когда маршрутизатору отвечает хост в интернете (например web сайт), маршрутизатор меняет адрес получателя, т.е. свой на адрес компьютера частной сети. И такая технология называется Destination NAT. При настройке Firewall, как правило, настраивают только Source NAT. "Обратный" Destination NAT срабатывает автоматически для уже установившегося соединения. Отдельной настройки Destination NAT требует, если необходим доступ из интернета к ресурсам частной сети. И такую задачу мы решим чуть ниже в практическом задании.
Описанный пример является, пожалуй, самым распространённым случаем применения NAT, но, однако, всё же частным. Естественно, технологию NAT можно применять и для других целей.
Настройка Firewall Mikrotik.
Сначала составим ТЗ для настройки нашего Firewall. Предполагается, что роутер Mikrotik уже преднастроен и нам осталось настроить только Firewall (читайте мою статью базовая настройка Mikrotik, а также про сегментирование сети и VLAN-ы).
У нас есть компьютер 192.168.40.100, которому необходимо обеспечить доступ в интернет. И есть веб-сервер 192.168.20.3, которому доступ в интернет должен быть запрещён. Но к нему должна быть возможность подключиться по портам TCP 7070 и 7071, как из локальной сети, так и из сети интернет. Для безопасности совместно с NAT применим технологию PAT - Port Address Translation. Так, чтобы пользователи интернета заходили на адрес с портом 8070 и 8071 соответственно.
1. Все настройки будем производить в одной вкладке IP-> Firewall
2. В цепочках Filter Input и Filter Forward разрешим любой трафик для установившихся соединений:
3. Запретим трафик неизвестных и неверных соединений также для цепочек input и forward :
4. После этого запретим любой трафик из интернета:
Вот так должны выглядеть правила в таблице filter rules
5. Теперь для работы интернета в локальной сети необходимо добавить правило Source NAT:
После этой настройки во всей локальной сети должен появится интернет.
6. В цепочке Prerouting destnat Cледует создать правило для доступа к нашему web серверу из интернета:
7. Пробуем подключиться из интернета на адрес https://31.41.165.23:8071:
8. Создаём такое же правило dstnat для порта 8071.
Кстати, обратите внимание, что dstnat срабатывает, несмотря на запреты в filter rulez. Для понимания - почему так происходит, необходимо обратиться к рис. 1 в начале статьи.
9. Теперь ограничим хосту 192.168.20.3 доступ в интернет и в локальную сеть. Сделать это можно в разных таблицах (см. рис 1), но давайте всё будем делать в filter rules. Сделать такой запрет можно с помощью одного правила:
10. Правило необходимо разместить ниже других правил для цепочки forward:
11. Проверяем, используя интерфейс web-сервера:
12. Теперь нам осталось ограничить доступ из локальной сети к серверу портами 7070 и 7071, закрыв все остальные порты. И это мы сделаем двумя правилами:
Сначала разрешим трафик на хост 192.168.20.3 по портам 7070 и 7071
А затем запретим любой трафик:
Обращу внимание на то, что здесь важна последовательность применения этих правил:
Что ж, друзья, на этом наш Firewall Mikrotik настроен. Я надеюсь, что вы вместе со мной почерпнули что-то новое для себя. Если остались вопросы - смело задавайте их в комментариях. Вы также можете обращаться ко мне через социальные сети (ссылки в профиле).
Обещанные источники вдохновения:
https://habr.com/ru/post/435070/
https://ru.wikibooks.org/wiki/Iptables
https://www.opennet.ru/docs/RUS/iptables/