Firewall pool in spb что это

Обновлено: 04.07.2024

Количество устройств, которое можно подключить в одной ЛВС не бесконечно и обусловлено следующими ограничениями:

-физические ограничения на длину кабеля и количество узлов в сегменте;

-логические ограничения на число узлов в сегменте (Ethernet –1024);

-опасность возникновения широковещательных штормов;

-увеличение трафика в сегменте.

Для решения этих проблем используют средства сетевого уровня. Одно из таких средств разделение сети на несколько частей, которые называются подсетями (subnets).

Если сеть не планируется расширять на более чем 300-400 сетевых устройств, то можно воспользоваться Вариантом №1.

Освоить MikroTik Вы можете с помощью онлайн-куса «Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.

В данном примере рассмотрим разделение одноранговой сети класса С (маска 24 бита, 192.168.х.х) на две подсети.

При таком делении в каждой подсети возможно размещение 254 сетевых устройств (итого 508 сетевых устройств).

Компьютеры в обоих подсетях должны обмениваться пакетами и иметь доступ в интернет.

Назовем сети для понятности СЕТЬ 8 и СЕТЬ 9.

Присвоим сети 8 адрес 192.168.8.0.

Присвоим сети 9 адрес 192.168.9.0.

Выбор номера сети произвольный, без расчета масок и обусловлен занятостью в нашей ЛВС предыдущих номеров. Если других сетей, подсетей нет, можно выбрать нумерацию более стандартного вида 192.168.0.1 и 192.168.1.1.

Структура сети получается как на картинке ниже.


Разделение двух сетей происходит через маршрутизатор (роутер) MikroTik750Rb3.


В разъем №1 подключаем провод от внешней сети (Интернет).

В разъем №2 подключаем провод от СЕТИ8.

В разъем №3 подключаем провод от СЕТИ9.

В каждой из подсетей желательно иметь доступ к одному из компьютеров, чтоб убедится в выполнении настройки.

В сетевых адапторах компьютеров получение IP-адреса автоматическое (DHCP).

Настройка роутера выполняется из компьютера подключенного в СЕТЬ8 (порт2). Нет особого значения из какой подсети выполнять подключение и настройку.

Провайдер раздает IP-адрес для выхода в интернет автоматически (DHCP), без авторизации.

В различных случаях получение интернета от провайдер может быть различным: с авторизацией, через статический IP-адрес, через PPPoE и тп. Это следует учитывать при настройке каждого конкретного роутера.

1.Подключение к роутеру, сброс конфигурации.

Сбрасываем конфигурацию роутера. Если роутер новый, сбрасывать конфигурацию не нужно.

Сброс можно сделать разными вариантами, например кнопкой в корпусе (ССЫЛКА).

Можно сбросить настройки программно если известны параметры доступа к роутеру или он новый.

2.Нажимаем на вкладку Neighbors.

3 Кликаем на MAC-адрес нужного роутера.

4.Вводим логин-пароль(базовый логин admin, пароля нет).

5.Нажимаем кнопку «Connect».


Сбрасываем конфигурацию из первого пункта бокового меню Quick Set


Через командную строку терминала.


Удаляем эту заводскую конфигурацию, чтоб она не создавала дополнительных препятствий.

. Следует помнить, что удаляя базовые настройки, удалятся параметры безопасности. Если роутер будет работать шлюзом в интернет необходимо настроить интерфейсы доступа, учетные записи, фильтры и прочие настройки безопасности.

Переподключаемся еще раз.

2.Создание Bridges (мостов).

1.В боковом меню выбираем Bridge.

2.В открывшемся окне нажимаем синий крест (плюс).

3.В окне New Interface изменяем по желанию имя (оставляем по умолчанию).

4.В меню ARP выбираем proxy-arp.


Точно так же создаем еще один мост с именем по умолчанию bridge2.


В результате, в окне Bridge или Interface List должны быть видны два созданных моста.

Через командную строку терминала:

/ interface bridge add arp = proxy - arp name = bridge1 / interface bridge add arp = proxy - arp name = bridge2

Мосты нужны для работы подсетей.

Режим Proxy-ARP объединяет две не связанные сети.

3.Привязка портов роутера к созданным мостам.

Для первого моста bridge1 привяжем порт ether2 на котором подключена сеть 8 (192.168.8.0)

1.В боковом меню выбираем Bridge.

2.В раскрывшемся окне Bridge переходим на вкладку Ports.

3.Нажимаем синий крест (плюс).

В открывшемся окне Bridge Port вводим параметры:

6.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


Для второго моста bridge2 привяжем порт ether3 на котором подключена сеть 9 (192.168.9.0).

Действия все те же самые с различием в значениях.

1.В боковом меню выбираем Bridge.

2.В раскрывшемся окне Bridge переходим на вкладку Ports.

3.Нажимаем синий крест (плюс).

В открывшемся окне Bridge Port вводим параметры:

6.Нажимаем кнопку «ОК».


Через командную строку терминала:

/ interface bridge port add bridge = bridge1 interface = ether2 / interface bridge port add bridge = bridge2 interface = ether3


4.Назначение адресации для мостов.

Для первого моста назначим IP-адрес 192.168.8.1

Для второго моста назначим IP-адрес 192.168.9.1

Каждый мост будет «смотреть» в свою подсеть.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем Addresses.

3.В открывшемся окне Adress List нажимаем синий крест (плюс).

В открывшемся окне New Address вводим параметры:

7.Нажимаем кнопку «ОК».


Точно так же назначаем адрес второму мосту с данными сети 9.


В результате в окне Adress List должны появится два адреса.

Через командную строку терминала:

/ ip address add interface = bridge1 address = 192.168.8.1 / 24 / ip address add interface = bridge2 address = 192.168.9.1 / 24

5.Получение внешнего IP-адреса.

Назначим получение внешнего IP-адреса для доступа в интернет в автоматическом режиме DHCP через первый порт роутера.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем DHCP Client.

3.В открывшемся окне DHCP Client нажимаем синий крест (плюс).

В открывшемся окне New DHCP Client вводим параметры:

4.Interface: ether1 (первый порт установлен по умолчанию)

5.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


В результате в окне DHCP Client появится строка с интерфейсом ether1 к которому через некоторое время автоматически присвоится внешний IP провайдера.


Через командную строку терминала:

/ ip dhcp - client add interface = ether1 disabled = no

Следует отметить, что в данном случае провайдером, раздающим интернет, является вышестоящий роутер сети нашей же организации. По этой причине отсутствуют пароли и прочие необходимые средства авторизации и доступа. В случае предостовления доступа в Интернет на платной основе через PPPoE или при выдаче статического IP-адреса провадером по договору или еще каки-то варианты подключения, необходимо настраивать подключение в Интернет на роутере по отдельной инструкции, для каждого случая разной.

6.DHCP сервер.

Создадим DHCP-сервер, для динамической раздачи IP-адресов в подсетях.

6.1 Укажем сети для DHCP-сервера.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем DHCP Server.

3.Переходим на вкладку Networks.

4.Нажимае синий крест (плюс).

В открывшемся окне DHCP Network вводим параметры:

7.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


Точно так же создаем сеть по адресу 192.168.9.0/24.

В результате в окне DHCP Server на вкладке Networks появятся две сети.


Через командную строку терминала:

/ ip dhcp - server network add address = 192.168.8.0 / 24 gateway = 192.168.8.1 / ip dhcp - server network add address = 192.168.9.0 / 24 gateway = 192.168.9.1

6.2 Создадим Пул адресов, которые будет раздавать DHCP сервер.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем Pool.

3.В открывшемся окне IP Pool нажимаем синий крест (плюс).

В открывшемся окне NEW IP Pool вводим параметры:

6.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


Точно так же создаем Пул для сети 9.

В результате в окне IP Pool появятся два Пула раздаваемых адресов для каждой подсети.


Через командную строку терминала:

/ ip pool add name = LAN8 ranges = 192.168.8.2 - 192.168.8.254 / ip pool add name = LAN9 ranges = 192.168.9.2 - 192.168.9.254

6.3 Создадим DHCP-сервер.

Назначим его на созданный ранее мост и привяжем созданный Пул раздаваемых адресов.

Сделаем эти действия для каждой из подсетей.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем DHCP Server.

3.На вкладке DHCP нажимае синий крест (плюс).

В открывшемся окне DHCP Server вводим параметры:

6.Address Pool: LAN8

7.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


Повторяем действия и создаем DHCP сервер для подсети 9.

В результате в окне DHCP Server можно увидеть созданные сервера.


Через командную строку терминала:

/ ip dhcp - server add interface = bridge1 address - pool = LAN8 disabled = no / ip dhcp - server add interface = bridge2 address - pool = LAN9 disabled = no

7.Правила для доступа между подсетями.

Создадим в Firewall правила для беспрепятственной передачи пакетов между подсетями.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем Firewall.

3.Переходим на вкладку Filter Rules (открывается по умолчанию)

4.Нажимаем синий крест (плюс).

В открывшемся окне New Firewall Rule вводим параметры:

На вкладке General:

8.Нажимаем кнопку «Apply».


9.Переходим на вкладку Action.

11.Нажимаем кнопку «ОК».

Другие настройки не изменяем.



Создаем второе правило, в котором, по сравнению с первым меняем местами интерфейсы входа-выхода.

В результате на вкладке Filter Rules должно оказаться два правила.


Через командную строку терминала:

/ ip firewall filter add chain = forward in - interface = bridge1 out - interface = bridge2 action = accept / ip firewall filter add chain = forward in - interface = bridge2 out - interface = bridge1 action = accept

8.Правило NAT для доступа в Интернет.

Правило будет транслировать локальные IP-адреса компьютеров во внешний IP-адрес и обратно.

1.В боковом меню выбираем IP.

2.В раскрывшемся меню выбираем Firewall.

3.В открывшемся окне Firewall переходим на вкладку NAT.

4.Добавляем правило нажав синий крест (плюс).

В открывшемся окне NAT Rule вводим параметры:

На вкладке General:

7.Нажимаем кнопку «Apply».

8.Переходим на вкладку Action.


На вкладке Action:

10.Нажимаем кнопку «ОК».

Другие настройки не изменяем.


Через командную строку терминала:

/ ip firewall nat add action = masquerade chain = srcnat out - interface = ether1

9.DNS

Настройка DNS не требуется.


Динамический DNS сам прилетает от вышестоящего роутера. Причем в данном случае настройка выполняется в подсети, сети подсети, и DNS транслируется еще через три роутера и поступает в конечном итоге от верхнего роутера на компьютер пользователя в первоначальном виде.


На стороне городской АТС роутер так же раздает динамический DNS. Однако, ситуации бывают разные, как и в случае с внешним IP-адресом, при особых условиях провайдера может потребоваться вводить IP и DNS вручную (как это происходит на втором шлюзе сети нашей организации, где работает Kerio Control).

В случае ручного ввода нужно заполнить поле Servers тем адресом DNS, который сообщит провайдер. Напротив надписи Allow Remote Requests установить галочку. Так же понадобится указать DNS-сервер в раздаче DHCP на подсети.


Перезагружаем роутер, чтоб актуализировались IP-адреса раздаваемые по DHCP во все компьютеры. Можно перезагрузить компьютеры или их сетевые адапторы, или передернуть LAN-провода или через командную строку каждого компьютера (ipconfig/release, ipconfig /renew) или подождать, но это все дольше.

Проверяем пинг между компьютерами в разных подсетях.

Если пинг не проходит нужно приостановить защиту антивируса или отключить брандмауэр на тестируемых компьютерах.

Проверяем доступ в интернет из обоих сетей. Интернет работает.

Выполним еще несколько настроек, которые желательно должны быть.

10.Привязка MAC к IP.

Привязка первоначально требует настроенный DHCP-сервер.

Проще и удобнее привязывать устройства, которые уже находятся в списке Leases DHCP-сервера. Не требуется вручную вписывать MAC-адрес.

1.В боковом меню выбираем пункт IP.

2.В выпадающем меню выбираем DHCP Server.

3.В открывшемся окне переходим на вкладку Leases.

4.Нажимаем дважды левой кнопкой мыши на строчку с IP адресом.

5.В открывшемся окне нажимаем кнопку Make Static.

6.Нажимаем кнопку ОК, для сохранения настроек.




При повторном нажатии на строчку с привязанным IP откроется окно, в котором можно изменить IP-адрес на любой.


Еще один вариант привязки – нажать на синий крест (плюс), ввести MAC и IP адреса вручную. Нажать ОК для сохранения.

Как-правило, для сис.админа переписать MAC-адрес вручную составляет большие затруднения, особенно если переписать нужно 100-200 компьютеров. Проще привязать любой IP и затем откорректировать.

Другие строчки в этом окне не изменяем (или изменяем по необходимости).

Client ID – это особая функция в микротик, позволяющая делать привязку не только по MAC (на случай подделки MAC).

В комментарии (кнопка Comment) можно дописать к какому пользователю относится привязанный IP.

Небольшая шпаргалка по настройке базового VPN по протоколу l2tp с общим ключом на микротике.


Предполагается, что базовые настройки интернета/dhcp/firewall сделаны. Вся настройка происходит, через WinBox. В моём примере есть сеть 192.168.51.0/24 (офис).

Настройка IP адресации

Переходим в IP=>Addreses. Создаем отдельную подсеть для VPN-подключений. Это может быть как отдельная маска так и просто другая подсеть. В примере у нас будет другая маска.


  1. Адрес микротика для этой подсети и префикс маски;
  2. Маска;
  3. Указываем на каком интерфейсе это всё работает;
  4. Не забываем указать комментарий для чего эта настройка;
Настройка IP-пула

Переходим IP=>Pool и создаем пул адресов в нашей подсети, которую мы создали в предыдущем шаге. Эти адреса будут выдаваться VPN-клиентам.


Настройка профиля VPN

Переходим в PPP, дальше кликаем Profiles, нажимаем на плюсик. В окне вписываем данные.


Включаем l2tp сервер

Переходник на вкладку PPP, раздел Interface, нажимаем на L2TP Server


  1. Включаем L2TP-Server
  2. Default profile указываем тот, что мы создали (в примере l2tp_default)
  3. Use IPsec ставим Required
  4. IPsec Secret придумываем/генерируем ключ
  5. Caller ID Type указываем Number
Создание учёток для подключения


  1. Name можно указывать любое удобное. Я предпочитаю указывать в формате: первая буква имени + фамилия на латинском. (S.Gultyaev, например).
    Это не просто так. Так сразу будет видно, кто когда подключался, какой трафик бежит, можно проснифать пакеты. Ни в коем случае не делайте одну учётку на несколько сотрудников. Если человек уйдет из компании, то у него могут остаться данные для подключения в вашу сеть, а это не есть хорошо;
  2. Password лучше сгенерировать;
  3. Service оставляем либо Any (то есть любой) или указываем l2tp;
  4. Profile оставляем без изменений, т.к. мы уже все настроили в предыдущих шагах.

Остальные параметры не трогаем.

Настройка FireWall
Для удаленных подключений нужно открыть порты 1701,500,4500 по UPD

Для начала настроим режим работы моста, чтобы видеть сеть за микротиком.

Переходим в раздел Bridge, выбираем Bridge на котором крутиться наша подсеть 10.13.0.1. И включаем proxy-arp.


Настраиваем правила для того, чтобы VPN-клиенты видели сеть за микротиком.


Переходим в IP=>FireWall вкладка Filter Rules, создаем правило.

  1. Chain ставим forward (мы указываем, что правило работает на исходящий трафик);
  2. В Scr. Address пишем подсеть созданную для VPN-клиентов (в примере это 10.13.0.0/24);
  3. В Dst. Addreses пишем подсеть офиса или туда, куда могут ходить VPN-клиенты (в примере это 192.168.51.0/24);
  4. Переходим на вкладку Action и выбираем Accept;
  5. Неплохо было бы указать комментарий к правилу;

Такой не хитрой настройкой мы получили стабильно работающий VPN для небольшой компании. Можно также настроить приоритет трафика, скоро загрузки/отдачи, но об этом поговорим отдельно.

Примечание

Если вам тоже интересна работа с микротиком, то приглашаю почитать запись: Курсы по Микротику

Автор Статьи

Firewall – это заимствованный из английского языка термин, который переводится как «противопожарная стена». Эта система активно используется в сетевом оборудовании и компьютерах для защиты подключения от различных вирусов и хакерских атак.

Что такое Firewall

Другое название Firewall – межсетевой экран. По сути, это специальный фильтр, который проверяет информацию, полученную из интернета, на предмет наличия вредоносных данных. Например, вирусов. Он сравнивает пакеты данных, приходящие на устройства, с определенной базой, чтобы выделить среди них потенциально опасные.

Но это лишь первая «линия баррикад», потому не стоит полностью на него полагаться. Система защиты поможет избежать самых распространенных проблем, однако не гарантирует 100%-ную безопасность устройства.


Для чего нужен Firewall в роутере

Этот межсетевой экран применяется в роутерах для того, чтобы обезопасить сетевые подключения. Он блокирует вредоносные данные еще на стадии попадания в сеть пользователя, тем самым потенциально спасая все устройства, которые в нее входят.

Практически все современные устройства поставляются со встроенным Firewall, что обеспечивает хотя бы минимальную степень безопасности. Выбирая роутер, рекомендуется отдельное внимание уделить наличию или отсутствию такого функционала. Вполне возможно, что бюджетный вариант не будет им оснащен и станет причиной огромного количества проблем из-за хакерских атак или различных вирусов. На безопасности в данном случае экономить не стоит.

Firewall в роутере можно рассматривать как дополнительную антивирусную программу

Как настроить Firewall в роутере

Можно выделить 3 основных уровня защиты, которые может предоставлять среднестатистический роутер с Firewall:

  1. Минимальная. Самый слабый уровень безопасности, при котором существенно возрастает вероятность хакерской атаки компьютера или заражения вредоносными программами. С другой стороны, немного повышается скорость соединения за счет того, что система будет проверять только небольшую часть данных. Впрочем, преимущество незначительное, а вот возможные проблемы будут крайне серьезными, потому лучше такой режим защиты не выбирать.
  2. Стандартная. Обычно выставлена по умолчанию. Блокируются самые распространенные угрозы, без значительного снижения скорости соединения. Вариант можно порекомендовать пользователям, которые не очень разбираются в теме.
  3. Максимальная. Обеспечивает блокировку всех подозрительных пакетов данных, однако существенно снижает скорость подключения. Зачастую вместо такой настройки лучше использовать любую другую антивирусную программу, установленную непосредственно на устройстве, входящем в сеть.

Названия и отдельные детали этого параметра могут сильно различаться в зависимости от множества параметров. Важно помнить, что большинство провайдеров требуют, чтобы пользователи выставляли определенные настройки, оптимально подходящие для используемого подключения. Поэтому попытка самостоятельно что-то поменять может привести к отключению интернет-соединения.

Заключение

Firewall в роутере нужен в абсолютном большинстве случаев. Каждый год количество вредоносных программ и приложений, вирусов и хакерских атак возрастает на порядок. Никто не может дать 100%-ной гарантии, что устройства пользователя будут защищены абсолютно от всех угроз, однако такая система обороны ПК значительно повышает уровень безопасности сети.

Оставьте свою электронную почту и получайте самые свежие статьи из нашего блога. Подписывайтесь, чтобы ничего не пропустить


Файрвол, как и многое другое в RouterOS, пришел из Linux и представляет собой доработанный iptables. Поэтому многие мануалы по настройке iptables легко можно сконвертировать в формат RouterOS. Файрвол состоит из следующих таблиц:

  • Filter — занимается фильтрацией трафика — определяет, пропустить пакет в сеть или отбросить его. Мы будем рассматривать работу только этой таблицы;
  • NAT — Network Address Translation. Изменяет проходящие пакеты. Поменять адрес источника или порт назначения — дело именно этой таблицы. В основном она используется для обеспечения доступа в интернет из локалки и обратно. Иногда без NAT невозможно работать в плохо спроектированных сетях, а еще его, бывает, используют в качестве «костыля»;
  • Mangle — классифицирует и маркирует трафик и может менять некоторые поля в заголовке (TTL, ToS, DF). Применяется для построения сложных путей трафика (например, когда подключено два провайдера или нужны разные пути трафика для RDP и VoIP);
  • Raw — обрабатывает пакеты до их попадания в Connection Tracking. Пригодится для защиты от DoS или при работе с большими объемами трафика.

Таблицы состоят из цепочек. Цепочки в разных таблицах могут отличаться. Чуть позже станет ясно почему. В нашей таблице Filter три цепочки:

  • input — трафик к самому роутеру. Обязательное условие попадания в input — адресом назначения пакета должен быть один из адресов роутера, широковещательный адрес сети или широковещательный адрес работающей на роутере службы. Сюда попадает WinBox, SSH, WebFig, ping, VPN и другой трафик, предназначенный роутеру. Полный список можешь посмотреть в вики. В этой цепочке мы должны защищать сам роутер;
  • output — трафик от роутера. Ответы на прилетевшее в input или новые пакеты от роутера (пинг, VPN, SSH-сессия с самого роутера). Эта цепочка редко используется, так как часто роутер считается доверенным звеном и пакеты, генерируемые им, по умолчанию легитимны. Но, как показывает история взломов, контроль исходящего трафика может выявить заражение на начальных этапах;
  • forward — трафик, проходящий через роутер (когда пакет прилетел в один интерфейс и вылетел с другого или того же самого). Трафик из локалки в интернет, из интернета в локалку, из одного VLAN локалки в другой;
  • user chains — пользовательские цепочки. Админ может создавать цепочки правил по своему усмотрению. Это бывает полезно для декомпозиции больших конфигураций. К примеру, можно весь трафик на порты 80 и 443 завернуть в отдельную цепочку WEB и в ней уже делать десятки правил для фильтрации — это визуально упростит настройку, хотя качественно на прохождение трафика не повлияет.

Два важных момента, о которых нужно помнить.

Момент первый. У трафика в forward всегда есть входящий и исходящий интерфейсы — трафик влетел в input, обработался процессом маршрутизации и должен вылететь в output. У входного трафика не может быть исходящего интерфейса — он обработается внутри роутера и никуда дальше не полетит. Также у выходного трафика не может быть входящего интерфейса — этот трафик генерируется самим роутером (это либо новый трафик, либо созданный роутером ответ на трафик, пришедший в input).

Момент второй. У трафика не существует «внешнего» или «внутреннего» интерфейсов. Роутеру плевать, что ты считаешь внешним, — для него есть интерфейс, в который трафик вошел, и интерфейс, с которого трафик уйдет.

Правила образуют цепочки. У каждого правила может быть только одна цепочка. По умолчанию политика у всех цепочек — все разрешено. Правила срабатывают в таблицах в зависимости от их порядка: сначала пакет обработается первым правилом, затем вторым и так далее. Хорошим тоном считается упорядочивать правила внутри таблиц по цепочкам: сначала — пачка правил input, затем — forward, в конце — output.

Трафик будет проходить по правилам только в пределах своей цепочки. И если сначала идет input, потом forward, затем снова input, то трафик input все равно никогда не попадет в forward, то есть такое расположение правил не повлияет на прохождение трафика, а только запутает админа. В пределах одной таблицы пакет не перепрыгнет из одной цепочки в другую, пока админ это явно не укажет.

table_chain_rule

table_chain_rule

Connection Tracking

Еще одна важная вещь для понимания работы файрвола — механизм определения состояния соединений — Connection Tracking (или просто ConnTrack). У RouterOS есть специальная таблица, в которой хранятся данные о состоянии соединений. Благодаря ей работает NAT и многие другие части файрвола.

Механизмы ConnTrack проверяют, принадлежит ли пришедший на роутер пакет какому-либо из потоков, чтобы применить к нему политики всего потока или как-то упорядочить пакеты в пределах одного или нескольких потоков (например, для нарезки скорости).

Для ConnTrack существуют четыре состояния пакетов:

  • new — новый пакет, не принадлежащий ни одному из известных потоков. Это может быть первый пакет для коннекта к серверу RDP, или первый пакет в потоке WinBox, или запрос к DNS. Система запоминает Source IP, Source Port, Destination IP, Destination Port и некоторые другие параметры и записывает эти данные в таблицу. Следующий пакет с такими же данными будет относиться к записанному потоку;
  • established — пакет, принадлежащий существующему потоку. То есть пакет, у которого Source IP, Source Port, Destination IP, Destination Port подходят под одну из записей таблицы ConnTrack (или обратный пакет);
  • related — пакет, порожденный другим потоком. Некоторые протоколы, такие как FTP, SIP, PPTP, используют для работы несколько потоков. Например, управляющие команды FTP ходят по порту TCP 21, но данные передаются с порта TCP 20. При попытке получения или отправки данных на FTP в потоке на порт 21 сервер сообщает: «А сейчас я открою 20-й порт, и ты забирай данные с него», после этого клиент посылает пакет на 20-й порт сервера. Этот пакет будет считаться related, так как он порожден потоком 21-го порта;
  • invalid — все, что не относится к перечисленным выше состояниям. Пример: сессия корректно закрылась, но из-за ошибок маршрутизации часть пакетов из середины сессии улетела другим путем. Когда они пришли, их сессия уже закрыта и роутер о них ничего не знает. Они не new и не относятся к существующим соединениям, поэтому считаем их invalid.

Состояние потока не связано с флагами TCP: SYN, ACK, FIN. Для UDP и других stateless-протоколов в таблице ConnTrack тоже содержатся все возможные состояния.

Работа ConnTrack требует ресурсов процессора и при больших объемах трафика может существенно нагрузить CPU. Но ConnTrack нужен не везде, и его можно отключить. Например, у провайдеров на стыке с вышестоящим провайдером стоят роутеры, которые молотят десятки гигабит трафика. На этих роутерах, как правило, нет NAT (прямая маршрутизация), а трафик фильтруется уровнем ниже, чтобы не перегружать и без того нагруженный бордер. То есть в этом случае ни к чему проверять каждый пакет на принадлежность какому-либо потоку.

Нажав кнопку Tracking, можно отключить механизм ConnTrack или подкрутить таймеры. В большинстве случаев тебе не понадобится заходить в эти настройки, но знать о них нужно. Режима ConnTrack три: что такое yes и no , думаю, понятно, а в режиме auto ConnTrack выключен до тех пор, пока хотя бы один пакет не попадет в существующие правила таблицы NAT или Filter.

WARNING

Выключенный ConnTrack ломает NAT и фичи файрвола, основанные на трекинге потоков: connection-bytes, connection-mark, connection-type, connection-state, connection-limit, connection-rate, layer7-protocol, new-connection-mark, tarpit.

Рекомендации по настройке

Переходим к практике настройки. В этой статье я расскажу о таблице Filter — той, что занимается фильтрацией трафика. Как мы выяснили чуть выше, за трафик к самому роутеру отвечает цепочка input, а за трафик, который проходит через роутер, — forward. Займемся защитой самого роутера.

Первое и самое главное, что нужно помнить при работе с файрволом, было описано еще в утерянной главе «Слова о полку Игореве»: «удаленная настройка файрвола — к дальней дороге». Так что уважай предков — чти их заветы и используй Safe Mode.

Работает этот режим так: ты нажимаешь кнопку Safe Mode в интерфейсе, и она остается нажатой. Дальше ты делаешь все, что собирался, но применятся эти изменения, только когда ты снова кликнешь по кнопке. Если они приведут к обрыву взаимодействия роутера и конфигуратора WinBox (например, если ты зафильтровал свои же пакеты или отключил интерфейс), то роутер вернется в состояние, которое было до входа в Safe Mode.

Запоминается только 100 действий, но этого хватит на большинство случаев. Перезагрузки не будет — откат мгновенный. Из консоли этот режим активируется по Ctrl-X.

Есть два подхода к настройке файрвола:

  • разрешено все, что не запрещено;
  • запрещено все, что не разрешено.

Ни один из них нельзя назвать однозначно правильным. Я приверженец второго подхода, но в незнакомых сетях применяю первый.

Чтобы разрешить нужный трафик, нужно определиться с этим самым трафиком. В случае с input это сделать довольно просто. Вот что нужно для корректной работы роутера.

  1. Management: WinBox, SSH, в некоторых случаях WebFig, например для просмотра графиков нагрузки.
  2. Если провайдер выдает адрес по DHCP, то разрешить этот протокол на внешнем интерфейсе.
  3. Если роутер является сервером DHCP, то разрешить этот протокол на внутренних интерфейсах.
  4. То же самое с DNS.
  5. Если будем поднимать туннели, то разрешить их.
  6. OSPF.
  7. ICMP.
  8. NTP.
  9. Neighbor Discovery.
  10. SNMP. .

Определились? Открываем нужное и закрываем все остальное.

Файрвол работает по принципу «если [условие], то [действие]». Если выполняются условия, заданные во вкладках General, Advanced, Extra, то к пакету применяется действие из вкладки Action. На сегодня нам будет достаточно условий src/dst address, protocol, src/dst port, in/out interface, connection-state. Их значения понятны по названию, но если вдруг неясно — вперед, читать про основы TCP/IP. Самые распространенные действия: accept — разрешено, drop — запрещено (пакет просто уничтожится), reject — запрещено, но отправитель получит информацию, что пакет был уничтожен по причине, указанной в reject-with.

Каждое правило на пути пакета отнимает процессорное время. И если в небольших сетях это некритично, то при серьезных объемах трафика нужно учитывать этот момент. Рассмотрим на примере.

В этом случае при попытке подключиться к роутеру по SSH с адреса 10.11.0.11 файрвол будет шесть раз обращаться к CPU с вопросом, пропустить ли этот трафик. Выглядит это примерно так: «8291 — не наш порт — пропускаем дальше. 10.0.0.0/24 — не наша подсеть, пропускаем дальше. То же для 10.10.0.0/24, и только шестое правило подходит». На шестом шаге файрвол поймет, что трафик легитимный и его можно пропустить.

Пакеты FTP и весь другой неразрешенный трафик будет дергать CPU семь раз — первые шесть и последний дроп. И это в выдуманном примере из семи правил. В реальной жизни правил на порядок или два больше.

Первое, что мы можем сделать, — объединить два порта в одном правиле:


Немного снизили нагрузку. Но осталось три идентичных правила с разницей лишь в адресах. С помощью списка адресов (Address List) мы можем объединить их в одно.

Address List — фича RouterOS, которая позволяет объединять IP-адреса, подсети и DNS-имена в одну запись.

Создаем три записи в одном Address List.

Make Address List

Make Address List

И применяем его к нашему правилу.


Так из семи правил мы получили два и избавились от лишней нагрузки. По аналогии со списками адресов работают списки интерфейсов (я рассматривал их в предыдущей статье — «Защищаем MikroTik»): объединяем в один interface list интерфейсы разных провайдеров и вешаем правила уже не на сами интерфейсы, а на списки. Так мы не только уменьшим нагрузку, но и упростим жизнь админа: чем меньше правил, тем удобнее обслуживать систему.

Еще один способ облегчить работу файрволу — использовать ConnTrack. Понятно, что established-пакетов будет намного больше, чем new, related и invalid, вместе взятых. А раз мы разрешили первый пакет из потока, то все остальные пакеты в этом потоке можно считать легитимными. Поэтому просто создаем правило «разрешить established» и помещаем его в самом верху.


Выбирай нужные тебе протоколы и порты, создай соответствующие списки адресов и интерфейсов. Открой все, что нужно, и поставь последним правилом drop all. На этом основную настройку цепочки input можно считать завершенной.

К слову, по умолчанию файрвол снабжен достаточно крепкой настройкой — ее вполне хватит, чтобы нормально работала сеть практически любых размеров. Но всегда есть какие-то особенности и любой конфиг можно улучшить с учетом своих условий.

Для примера конфигурации можешь взять мой шаблон.

Траблшутинг

Когда файрвол не работает или работает не так, как подразумевалось при настройке, виноват админ. Магии не бывает. Первое, на что стоит обратить внимание при траблшутинге, — счетчики пакетов. Если счетчик не увеличивается, значит, трафик в него не попадает. А если трафик не попадает, значит, либо этого трафика просто нет, либо он был обработан стоящим выше правилом.

Ты же помнишь, что правила файрвола работают по принципу «кто первый встал — того и тапки»? Если пакет попал под действие правила, то дальше он уже не пойдет. Значит, нужно искать проблему выше. Просто копируем наше правило, action ставим accept (для траблшутинга не делай дроп — так при проверке можно сломать себе доступ или нарушить работу сети) и постепенно двигаем его наверх до первого увеличения счетчиков в этом правиле. Если через это правило уже проходил трафик, то счетчики будут ненулевые и можно пропустить нужные нам пакеты, — просто сбрось счетчики в этом правиле или во всех кнопками Reset Counters.

Reset Counters

Reset Counters

Предположим, мы нашли правило, в которое попадает наш трафик, а попадать не должен. Нужно понять, почему так происходит. В этом нам поможет опция Log. Во вкладке Action ставим галочку Log (можно написать префикс для правила, чтобы было проще отлавливать его в логах) и смотрим логи, где написаны все характеристики пакетов, попадающих под правило. Среди характеристик: цепочка, входящий и исходящий интерфейсы, адреса и порты источника и получателя, протокол, флаги, размер пакета, действия NAT.

Если даже в самом верху в правиле не будут увеличиваться счетчики, убирай правила из условия по одному. Начинай с интерфейсов — админы часто путаются в своих представлениях о том, откуда или куда должен идти трафик (например, при коннекте к провайдеру через PPPoE или в туннелях между филиалами или сложном роутинге). Счетчики пошли? Включаем лог и смотрим интерфейсы и другие параметры.

Если и это не помогает — пришло время тяжелой артиллерии. Идем в Tools → Torch и изучаем трафик на роутере. Может, ожидаемого трафика вовсе нет. Еще один крутой инструмент — аналог tcpdump — Tools → Packet Sniffer. Разбор работы этих инструментов тянет на отдельную статью (если она тебе интересна — сообщи об этом в комментариях к статье).

Чтобы упростить траблшутинг, можно использовать функцию комментирования. Если из-за комментов окно становится слишком большим и это мешает смотреть на правила, воспользуйся инлайновыми комментариями (Inline Comments). Так комменты встанут с правилом в одну строку и в окно будет умещаться больше правил.

Inline Comments

Inline Comments

Также рекомендую распределять правила по порядку, следуя какой-то определенной логике. И старайся ее поддерживать на всех роутерах.

Итоги

В этой статье приведены только основы настройки файрвола и главные методы диагностики. Кроме RouterOS, эти принципы применимы и для Linux. В следующей статье разберем более сложные правила, которые позволяют защититься от не самых простых атак, и разберем цепочку Forward, а также создадим свои цепочки.

Читайте также: