Маршрутизируем и защищаем сеть
Время на прочтение
9 мин
Количество просмотров 21K
Роутер (router) в переводе с английского дословно означает маршрутизатор. Но, как всегда, дословный перевод не всегда отражает реальность. Модели «роутеров для доступа в Интернет», предлагаемые большинством вендоров, по факту представляют собой межсетевой экран, сочетающий и простые функции вроде фильтрации по MAC, и «продвинутые» анализаторы, например, контроль приложений (Application Patrol).
Так что же такое маршрутизатор, межсетевой экран, и где их можно встретить?
Маршрутизатор
В самом названии маршрутизатор заключена расшифровка его предназначения.
В классическом (академическом) представлении маршрутизатор нужен для трансляции пакетов между раздельными IP сетями. Это решает вопрос объединения разрозненных LAN и предотвращения роста широковещательного трафика в одной большой локальной сети разделением её на сегменты. Разумеется, для правильного перенаправления трафика необходимо знать, куда его отправлять, то есть выстраивать маршрут (автор благодарит «Капитана Очевидность» за точную формулировку).
Современные модели маршрутизаторов работают выше 3-го уровня модели OSI. Помимо трансляции IP пакетов из одной сети в другую, эти устройства часто имеют функции управления трафиком, например, возможность закрывать/открывать TCP или UPD порты, выполнять функции Port Address Translation, PAT (иногда называется Destination NAT, DNAT) и так далее. Также для работы некоторых протоколов необходимо, чтобы маршрутизатор умел работать как Application-level gateway, ALG, для обеспечения работы таких протоколов как: PPTP, IPsec, RTSP, SIP, H.323, SMTP, DNS, TFTP.
Маршрутизатором может быть и старый компьютер с настроенной таблицей маршрутов, и специализированное сетевое устройство, которое только и делает, что анализирует простейшие условия вроде списков ACL и перебрасывает пакеты из одной сети в другую.
В частности, маршрутизаторы в виде отдельных устройств применяются, если требуется не только логическое (VLAN) но и физическое разделение на подсети. Например, нужно отделить сеть кампуса, где живут студенты, от университетской сети, где идут исследования.
В современных локальных сетях вместо маршрутизаторов в виде отдельных устройств часто используются коммутаторы L3, позволяющие управлять VLAN, и соответственно, отдельными подсетями.
Пример из практики. Сеть небольшого предприятия, где в качестве ядра сети использовался Cisco Catalyst 3750. Согласно требованиям безопасности, коммутаторы уровня доступа были настроены по принципу: один коммутатор — одна подсеть — один VLAN. Для удешевления проекта выбрали свичи от 3Com. Проще говоря, каждый 3Com был подключен строго в одном VLAN и в одной подсети, а пакеты между подсетями ходили через Catalyst.
С задачей маршрутизацией между VLAN вполне справится L3 коммутатор Zyxel XGS4600-32. Помимо перенаправления пакетов он обладает ещё множеством полезных функций.
Рисунок 1. Коммутатор Zyxel XGS4600-32 L3 с функциями маршрутизатора.
Межсетевой экран
Обычный набор встроенных функций МСЭ (межсетевой экран): антивирус, IDP, патруль приложений — позволяет проверять трафик вплоть до 7 уровня OSI. Помимо этого, есть и другие возможности контроля, отсутствующие в обычных маршрутизаторах.
Разумеется, многие межсетевые экраны обладают стандартным «джентльменским набором» типичного маршрутизатора. Но «сила» МСЭ определяется наличием функций по фильтрации и управлению трафиком, а также усиленном аппаратным обеспечением для реализации этих задач.
Стоит отметить, что набор возможностей фильтрации того или иного устройства МСЭ вовсе не означает: «Чем больше функций смогли «накрутить», тем «лучше» межсетевой экран». Основной ошибкой было бы при покупке делать акцент на длине перечня всевозможных «фишек», без учета конкретного предназначения, конструктивных особенностей, параметров быстродействия и других факторов. Все должно быть строго дозировано и сбалансировано без перекосов в сторону «сверхбезопасности» или «суперэкономии».
И тут администратор сети сталкивается с первой проблемой. Если для SOHO сегмента не так уж сложно сформулировать типичный набор требований, то для корпоративного сегмента это требует дополнительной подготовки. Для лучшего удовлетворения нужд бизнеса существуют различные устройства — каждое под свою нишу. Например, для VPN Gateway набор функций по обеспечению безопасности, разумеется, играет большую роль, но основной задачей является все же создание и поддержание работоспособности VPN каналов. В качестве примера такого устройства можно привести ZyWALL VPN1000
Рисунок 2. Межсетевой экран VPN — ZyWALL VPN1000
А вот для Secure Gateway всевозможные фильтры, «Песочница» и другие виды проверок стоят на первом месте. В качестве примера такого специализированного устройства для повышения уровня защиты можно привести ZyWALL ATP800.
Рисунок 3. Межсетевой экран для обеспечения безопасности — ZyWALL ATP800.
Как видно из рисунков, внешний вид подобных устройств может быть весьма схож, а всё отличие заключается внутри — программном и аппаратном обеспечении. Более подробно об можно прочитать в статье «Для тех, кто выбирает межсетевой экран».
Механизмы защиты межсетевых экранов
Теперь, когда мы обсудили отличия между маршрутизаторами и сетевыми экранами, а также между различными типами межсетевых экранов — самое время поговорить о методах поддержания требуемого уровня безопасности. Какие этапы защиты, через которые проходит трафик, помогают поддерживать сеть в безопасности?
Firewall
Данный сервис перешел «по наследству» от маршрутизаторов. При помощи файрвола отслеживаются и блокируются нежелательные адреса, закрываются порты, анализируются другие признаки пакетов, по которым можно «вычислить» нежелательный трафик. На этом этапе происходит отражения большого числа угроз, таких как попытки соединиться с общедоступными TCP портами, бомбардировка пакетами с целью выведения системы из строя и так далее.
IP Reputation
Это облачное расширение функций обычного файрвола и безусловный шаг вперед. Дело в том, что в обычной ситуации система ничего не знает об источнике или приемнике (в зависимости от типа трафика). Если это явно не прописано в правилах файрвола, например, «Запретить», то трафик будет проходить, пусть даже от самых вредоносных сайтов. Функция IP Reputation позволяет проверить, является ли IP-адрес подозрительным или «засветился» в той или иной базе данных по проверке репутации. Если со стороны базы данных поступили сведения о плохой репутации IP адреса, то появляется возможность для маневра: оставить прохождение трафика без изменений, запретить полностью или разрешить при определенном условии.
Проверка происходит быстро, потому что отправляется только сам IP адрес и короткий запрос, ответ также приходит в крайне лаконичной форме, что не оказывает сильного влияние на объем трафика.
SSL Inspection
Позволяет проверять трафик, зашифрованный по протоколу SSL для того, чтобы остальные профили МСЭ могли раскрывать пакеты и работать с SSL трафиком как с незашифрованным. Когда информационный поток защищен от внешнего доступа при помощи шифрования, то и проверить его не представляется возможным — для этого тоже нужен доступ к его содержанию. Поэтому на этапе проверки трафик расшифровывается, прочитывается системой контроля и повторно шифруется, после чего передается в пункт назначения.
С одной стороны, внешне это напоминает атаку man-in-middle, что выглядит как нарушение системы защиты. С другой стороны, SSL шифрование защищает не только полезную информацию, но и всевозможные нарушения корпоративной безопасности. Поэтому применение SSL Inspection на этапе санкционированной проверки выглядит весьма оправданным.
Intrusion Detection/Prevention Service
Системы обнаружения вторжений Intrusion Detection System, IDS, давно нашли применение в межсетевых экранах. Данная функция предназначена для сетевого мониторинга, анализа и оповещения в случае обнаружения сетевой атаки. Механизм IDS основывается на определённом шаблоне и оповещает при обнаружении подозрительного трафика. К сожалению, IDS сами по себе не в состоянии остановить атаку, они лишь оповещают о ней.
А вот система предотвращения вторжений — Intrusion Prevention Service, IPS, является определенным шагом вперед и, помимо обнаружения нежелательного трафика, способна сама блокировать или отбрасывать нежелательные пакеты. Тем самым предотвращая попытки взлома или просто нежелательные события.
Для обеспечения работы IPS — используются специальные сигнатуры, благодаря которым можно распознавать нежелательный трафик и защищать сеть как от широко известных, так и от неизвестных атак. Помимо предотвращения вторжения и распространение вредоносного кода, IPS позволяет снизить нагрузку на сеть, блокируя опасный или попросту бесполезный трафик. База данных IPS включает информацию о глобальных атаках и вторжениях, собранную на публичных или специализированных закрытых сайтах, что позволяет обнаружить сетевые атаки при минимальном количестве ошибочных срабатываний.
Antimalware
Исторически под этим названием понимают классический антивирус, но в последнее время область применения данного механизма защиты значительно расширена и включает в себя не только защиту от вирусов, но и от другого вредоносного кода, включая фишинговые приложения, небезопасные скрипты и так далее.
В качестве «движка» (engine) в межсетевых шлюзах Zyxel используются локальные сигнатуры от BitDefender и облачные от McAfee.
Sandbox
Традиционно из самых больших проблем сетевой безопасности является постоянное распространение новых вирусов.
Выше уже описывались другие средства защиты: IPS и антивирус (antimalware) для защиты сетей. Однако эти две функции не всегда эффективны против новых модификаций вредоносного кода. Зачастую приходится сталкиваться с мнением о том, что антивирус «на потоке» способен определить только очень простые и широко известные угрозы, в первую очередь полагаясь на записи в антивирусных базах. Для более серьезных случаев требуется поведенческий анализ. Грубо говоря, нужно создать для предполагаемого вредоносного кода комфортные условия и попробовать его запустить.
Как раз «Песочница» (Sandbox) — это и есть виртуализированная, изолированная и безопасная среда, в которой запускаются неизвестные файлы для анализа их поведения.
«Песочница» работает следующим образом:
Когда файл проходит через вирусную программу, она сначала проверяет базу данных защиты от вредоносных программ.
Если файл неизвестен, его копия перенаправляется в Sandbox.
Эта служба проверяет файл и определяет, является ли он нормальным, подозрительным или опасным.
По результатам проверки «Песочница», размещенная в облаке, получит новую информацию об этом новом элементе и сохранить её в своей базе данных для аналогичных случаев. Таким образом, облачная архитектура не только делает его общедоступным, но и позволяет постоянно обновлять в режиме реального времени.
В свою очередь, база данных защиты от вредоносных программ регулярно синхронизируется с «Песочницей», чтобы поддерживать ее в актуальном состоянии и блокировать новые вредоносные вирусы в режиме реального времени.
E-mail security
Данная служба включает в себя антиспам и проверку на фишинговые вложения.
В качестве инструментов в настройках «Anti-Spam» доступно:
- «белый список» — «White List», чтобы определять и пропускать полезную почту от доваренных отправителей.
- «черный список» — «Black List» для выявления и обработки спама;
- также возможна проверка электронной почты на наличие в «черных списках» DNS (DNSBL),
Примечание. DNSBL — это базы данных, где указываются домены и IP адреса подозрительных серверов. Существует большое число серверов DNSBL которые отслеживают IP адреса почтовых серверов, имеющих репутацию источников спама и заносят их в свои базы данных.
Content Filtering
Говоря про контентную фильтрацию, в данном случае мы будем иметь в виду ZYXEL Content Filtering 2.0, который служит для управления и контроля доступа пользователей к сети.
Механизм наблюдения Zyxel Content Filtering 2.0 изучает особенности поведения пользователей в Интернет. Это позволяет оперативно сканировать принимаемую информацию из глобальной сети.
Проще говоря, данная система повышает уровень безопасности, блокируя доступ к опасным и подозрительным веб-сайтам и предотвращает загрузку с них вредоносного кода. В целях стандартизации и унификации настроек можно применять политики, например, для точно настраиваемой блокировки и фильтрации.
Если говорить об изменениях (собственно, почему «2.0»), то в новой версии Content Filtering были внесены несколько существенных изменений, в частности:
- улучшено представление информации;
- расширен спектр обнаруживаемых угроз;
- добавлена фильтрацию по URL-адресам и доменам HTTPS;
- добавлен безопасный поиск и блокирование по GeoIP.
Переход на Content Filtering 2.0 происходит через загрузку соответствующего микрокода.
Отдельно стоит сказать о пополнении информационной базы. За счет обработки более 17 миллиардов транзакций каждый день, выполняемых 600 миллионами пользователей из 200 стран, пополняется глобальная база данных, и с каждым новым «знанием» повышается степень защиты системы. Стоит также отметить, что >99% контролируемого контента уже содержится в локальном кэше, что позволяет быстрее обрабатывать поступающие запросы.
Таблица 1. Security Service Content Filtering 2.0 — Схема применения.
Application Patrol
Данная служба работает на 7 уровне OSI и проверяет популярные сетевые приложения, включая социальные сети, игры, бизнес-приложения совместно с моделью их поведения.
В Zyxel Application Patrol применяется модуль Deep Packet Inspection (DPI) для контроля использование сети. Данный модуль распознает 19 категорий приложений, что позволяет адаптировать протоколы управления с учетом конкретных приложений и их поведения.
Среди механизмов защиты можно отметить: назначение приоритетов для приложений, контроль полосы пропускания для каждого приложения, блокировка нежелательных приложений. Данные меры не только повышают уровень безопасности, но и улучшают работу сети в целом, например, через запрет нецелевого использования полосы пропускания.
Основой для идентификации приложений служат специальные сигнатуры, полученные благодаря анализу данных, модели поведения и так далее. Собранная информация хранится в база данных Zyxel и содержит данные о большом количестве различных приложений, включая особенности их поведения, генерируемый трафик и так далее. База данных постоянно обновляется.
В итоге
Мы только поверхностно пробежали по небольшой части функций, которые отличают маршрутизатор от межсетевого экрана. Тем не менее, очевидно, что эти устройства имеют разное предназначение, функции, схемы использования. Эти особенности находят свое отражение как при проектировании новых сетей, так и при эксплуатации уже существующих.
Полезные ссылки
- Telegram chat Zyxel
- Форум по оборудованию Zyxel
- Много полезного видео на канале Youtube
- Для тех, кто выбирает межсетевой экран
- Коммутаторы Zyxel L3 серии XGS4600
- Межсетевой экран VPN ZyWALL VPN1000
- Межсетевой экран ATP ZyWALL ATP800
- Фильтрация контента Content Filtering 2.0
- Zyxel Application Patrol
- Что такое DNSBL и как туда вам не попасть
Межсетевой экран, он же брандмауэр или файрвол — важнейшая служба вашего роутера, отвечающая как за его безопасность, так и за безопасность всей сети. Мы до сих пор не рассматривали базовую настройку брандмауэра в отрыве от общей настройки роутера, но как показала практика, многие администраторы откровенно плавают в этом вопросе и имеют некорректно или не оптимально настроенные системы. Как минимум это выливается в повышенную нагрузку на оборудование, а в самом плохом варианте ставит под угрозу безопасность всей сети. Поэтому давайте отдельно разберемся в этом вопросе.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Общие принципы построения брандмауэра
Существует два основных типа настройки брандмауэра: нормально открытый брандмауэр и нормально закрытый. В первом случае разрешено все, что явно не запрещено, во втором случае — запрещено все, что явно не разрешено.
Возможно, для кого-то будет новостью, но оба этих подхода обычно гармонично сочетаются в рамках одного устройства. Нормально открытый брандмауэр применяется для внутренних сетей и исходящих соединений, а нормально закрытый — для все остальных соединений из внешних сетей. Это позволяет достичь простоты и удобства для собственных пользователей и в тоже время надежно защититься от внешнего мира.
Любое новое соединение первоначально находится в статусе нового (new) и мы должны принять решение: одобрить его или запретить. Для этой задачи и предназначены создаваемые нами правила, в нормально закрытом брандмауэре мы описываем, какие соединения и по каким критериям следует разрешить. Если же пакет не соответствует ни одному правилу, то мы запрещаем такое соединение.
После того, как соединение было установлено — оно переходит в состояние установлено (established), при этом специальный механизм ядра Connection Tracker отслеживает все проходящие пакеты и сопоставляет их соединениям, поэтому мы можем спокойно оперировать именно состоянием соединения, не задумываясь над техническими тонкостями работы.
Нужно ли каждый раз отслеживать пакеты уже установленного соединения вновь и вновь гоняя их по цепочке правил? Конечно же нет, если мы одобрили соединение, то в последующем можем и должны одобрять все его пакеты автоматически, это снижает нагрузку на устройство и позволяет использовать различные приемы, вроде Port Knocking или противодействия перебору паролей.
Очень часто одни соединения, будучи установленными, создают другие, которые называются связанными (related), как пример можно привести хорошо известные FTP или PPTP, которые имеют управляющее соединение и соединение(я) для передачи данных. Они могут использовать динамические порты и поэтому их также следует автоматически разрешать, если мы разрешили основное соединение.
Поэтому в любом корректно настроенном брандмауэре самым первым правилом должно находиться разрешающее установленные и связанные соединения, а только после него мы уже должны анализировать новые подключения.
В роутерах Mikrotik существует еще один тип соединения — неотслеживаемое (untracked), такие соединения не отслеживаются Connection Tracker, что позволяет существенно снизить нагрузку на устройство. Для чего это может быть нужно? Допустим, в фильтруемом вами трафике есть значительная доля принадлежащая доверенным узлам, для которых можно четко прописать критерии, в этом случае можно пометить их неотслеживаемыми и добавить их одобрение в самое первое правило, к уже установленным и связанным.
Таким образом, одним единственным правилом мы будем сразу пропускать подавляющую долю трафика, а к затратным операциям анализа будут доходить только новые пакеты.
Но тут самое время вспомнить еще про одно состояние соединения — недействительное (invalid), это пакеты не являющиеся новыми, но не принадлежащие никакому установленному соединению, такие пакеты могут использоваться для атак и поэтому их следует блокировать в первую очередь, сразу после того, как мы одобрили установленные и связанные соединения и до того, как приступили к анализу новых пакетов.
Ну и завершающим правилом в цепочке должно стоять запрещающее, отсекающее все соединения, которые не попали под разрешающие правила и не являются уже установленными или связанными с ними.
Конфигурация брандмауэра по умолчанию
Прежде всего рассмотрим конфигурацию, предлагаемую производителем по умолчанию. Многие считают ее наиболее оптимальной и безопасной, но это не так, конфигурация по умолчанию направлена на универсальность и совместимость с различными пользовательскими сценариями, не позволяя ему наделать грубых ошибок, которые могут фатально сказаться на безопасности.
Все правила сгруппированы в две цепочки: input — для входящего трафика самого роутера и forward — для транзитного, между интерфейсами роутера. Сразу напомним, что у роутеров Mikrtoik нет жестко заданных «внешних» и «внутренних» интерфейсов, и вообще все эти понятия находятся исключительно у нас в голове, согласно логическому плану сети.
В конфигурации по умолчанию также присутствует два списка интерфейсов: WAN — куда включен порт, настроенный как внешний, обычно ether1 и LAN, в состав которого входит мост, объединяющий оставшиеся порты. и эти списки активно применяются в правилах.
Самих правил немного, всего 11 штук: 5 для input и 6 для forward.
Рассмотрим их подробнее. Правило с нулевым номером в расчет не берем, это пустышка для вывода счетчиков Fasttrack. Начнем с первых двух, это классическая связка, о которой мы говорили выше: разрешаем established, related и untracked для всех входящих соединений, без привязки к интерфейсам. Затем запрещаем invalid, вполне очевидно, что далее пройдут только пакеты соединений в состоянии new.
/ip firewall filter
add chain=input action=accept connection-state=established,related,untracked comment="defconf: accept established,related,untracked"
add chain=input action=drop connection-state=invalid comment="defconf: drop invalid"
Третье правило разрешает входящий ICMP, у многих администраторов с ним напряженные отношения, часто его блокируют полностью, чтобы устройство не пинговалось, но так делать не нужно, протокол ICMP важен для нормальной работы сети. Либо фильтровать нужные его типы выборочно, что выходит за рамки данной статьи.
add chain=input action=accept protocol=icmp comment="defconf: accept ICMP"
Следующее правило весьма специфично, оно разрешает входящие на петлевой интерфейс, точнее адрес 127.0.0.1, поскольку интерфейс петли явно в RouterOS не доступен, а также снабжено комментарием, что это для CAPsMAN. Его смысл станет понятен чуть ниже.
add chain=input action=accept dst-address=127.0.0.1 comment="defconf: accept to local loopback (for CAPsMAN)"
И завершает цепочку input блокирующее правило:
add chain=input action=drop in-interface-list=!LAN comment="defconf: drop all not coming from LAN"
Которое блокирует входящие подключения для всех, кроме интерфейса LAN, а так как локальная петля туда не входит, то выше потребовалось отдельное правило.
Как видим конфигурация слегка избыточна, но при этом универсальна. А блокировка входящих по такой широкой маске — все, кроме локальной сети — позволяет сохранить должный уровень безопасности, даже если пользователь подключит другие внешние сети, скажем VPN.
А где же здесь размещать свои собственные правила? А вот здесь:
/ip firewall filter
add chain=input action=accept connection-state=established,related,untracked comment="defconf: accept established,related,untracked"
add chain=input action=drop connection-state=invalid comment="defconf: drop invalid"
add chain=input action=accept protocol=icmp comment="defconf: accept ICMP"
<собственные правила>
add chain=input action=accept dst-address=127.0.0.1 comment="defconf: accept to local loopback (for CAPsMAN)"
add chain=input action=drop in-interface-list=!LAN comment="defconf: drop all not coming from LAN"
Теперь о цепочке forward, самыми первыми здесь теперь добавлены два правила, разрешающие транзит соединений, подпадающих под действие политик IPsec. Это связано с тем, что IPsec сегодня применяется все чаще, но правильно настроить правила для него умеют не все пользователи. Поэтому появились эти правила, обеспечивающие гарантированное прохождение любых соединений, использующих IPsec через роутер в любом направлении.
add chain=forward action=accept ipsec-policy=in,ipsec comment="defconf: accept in ipsec policy"
add chain=forward action=accept ipsec-policy=out,ipsec comment="defconf: accept out ipsec policy"
Затем идет правило, включающее Fasttrack для всех установленных и связанных соединений. Подробнее про Fasttrack мы писали в нашей статье:
Правильное использование Fast Path и FastTrack в Mikrotik
Если коротко, то Fasttrack значительно снижает нагрузку на оборудование, но фактически пускает трафик в обход брандмауэра. Но так как фильтровать established и related нам не надо, то почему бы и не пустить их коротким путем?
add chain=forward action=fasttrack-connection connection-state=established,related comment="defconf: fasttrack"
Далее та же самая классика: разрешаем established, related и untracked, запрещаем invalid. Для всех направлений без разбора.
add chain=forward action=accept connection-state=established,related,untracked comment="defconf: accept established,related, untracked"
add chain=forward action=drop connection-state=invalid comment="defconf: drop invalid"
Ну и, наконец, запрещающее правило, оно тоже интересно:
add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN comment="defconf: drop all from WAN not DSTNATed"
Оно запрещает транзит только новым соединениям, только с внешнего списка интерфейсов, кроме соединений прошедших через DNAT. А так как DNAT обычно используется для проброса портов, то таким образом мы избегаем необходимости создавать для них разрешающие правила.
Да, опять очень и очень общие критерии, но в состоянии абсолютной неопределенности возможных конфигураций это, пожалуй, лучшее решение. Особенно если роутер будет использоваться вместе с UPnP, где сетевые приложения могут самостоятельно пробрасывать произвольные порты.
Поэтому мы еще раз повторимся, что конфигурация по умолчанию не является самой оптимальной или самой безопасной, но она наиболее универсальна, одновременно закрывая самые разные сценарии использования роутера.
Куда добавлять собственные правила? Да вот сюда:
add chain=forward action=accept connection-state=established,related,untracked comment="defconf: accept established,related, untracked"
add chain=forward action=drop connection-state=invalid comment="defconf: drop invalid"
<собственные правила>
add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN comment="defconf: drop all from WAN not DSTNATed"
Стоит ли оставлять и использовать конфигурацию по умолчанию? Да, если вы еще не уверены в собственных силах, плохо понимаете работу межсетевого экрана или вам нужно просто быстро настроить роутер для типовых задач.
Собственная конфигурация брандмауэра
В среде опытных пользователей Mikrotik принято сбрасывать устройство и настраивать конфигурацию с нуля. Для этих целей мы используем следующую конфигурацию брандмауэра, она во многом повторяет стандартную, но имеет ряд отличий. В плане именования интерфейсов мы также будем использовать листы WAN и LAN, с таким же набором интерфейсов.
При построении данного набора правил мы исходили из соображений, что администратор представляет как устроена его сеть, каким службам нужен доступ извне, какие сети являются внешними, а какие внутренними. При этом всеми силами старались избегать широких критериев в правилах, так как «проходной двор», даже вроде-бы в довольно безопасных вещах, таких как IPsec или DNAT может иногда сыграть злую шутку. Все мы помним, что если на стене висит ружье, то оно обязательно выстрелит.
Правил в нашем варианте меньше, всего 9, из них 4 для input и 5 для forward.
Набор правил для input приведем сразу и целиком, здесь тот же самый классический набор, но за одним исключением: мы знаем, какие сети являются внешними и фильтруем только подключения из них. Это упрощает конфигурацию и снижает нагрузку. При этом в каждом правиле мы четко указываем список входящих интерфейсов.
/ip firewall filter
add action=accept chain=input connection-state=established,related in-interface-list=WAN comment="accept established,related"
add action=drop chain=input connection-state=invalid in-interface-list=WAN comment="drop invalid"
add action=accept chain=input in-interface-list=WAN protocol=icmp comment="accept ICMP"
<собственные правила>
add action=drop chain=input in-interface-list=WAN comment="drop all from WAN"
Мы точно также разрешаем установленные и связанные, запрещаем invalid, разрешаем ICMP. Можно заметить, что у нас нет untracked, это сознательное решение, если мы будем использовать неотслеживаемые соединения — то всегда можем добавить этот параметр, но сделаем это осознанно. Собственные правила мы можем добавлять выше запрещающего весь остальной трафик с внешних интерфейсов.
Также следует отметить несколько иную политику блокировки остального трафика. Стандартная конфигурация подходит достаточно радикально, запрещая все, кроме LAN. Мы же используем более мягкий подход, и блокируем только внешние сети — WAN. Это позволяет сделать конфигурацию проще и не прописывать дополнительные правила для того же CAPsMAN, при этом мы помним, что администратор знает какие сети являются внутренними, а какие нет и контролирует актуальность списков.
Перейдем к forward, в нашей базовой конфигурации правил для IPsec нет, опять-таки осознанно, по причине их ненужной избыточности. Как появится IPsec — так и создадим правила, а просто так нечего им небо коптить.
А вот к Fasttrack у нас подход другой. В стандартной конфигурации он включен для всех established и related, вне зависимости от направления. Это здорово разгружает роутер, но со временем у вас неизбежно появятся туннели, VPN, прочие сети и Fasttrack будет там чаще мешать, чем помогать, порой приводя к неожиданным результатам. Поэтому четко указываем, что применяем коротки путь только для соединений из локальной сети наружу и извне в локальную сеть. Часто можно даже отойти от использования списков и просто указать интерфейсы.
add action=fasttrack-connection chain=forward connection-state=established,related in-interface-list=WAN out-interface-list=LAN comment="fasttrack"
add action=fasttrack-connection chain=forward connection-state=established,related in-interface-list=LAN out-interface-list=WAN
Кстати, внимательный читатель может заметить, что комментарий стоит только у одного правила, первого. Это сделано специально. Для чего? Посмотрите на скриншот выше, там комментарий отделяет сразу два правила.
Ну и дальше все тоже самое. Разрешаем established и related, запрещаем invalid и обязательно указываем, что это именно для внешних сетей, ниже запрещаем все остальное, также для внешних интерфейсов.
add action=accept chain=forward connection-state=established,related in-interface-list=WAN comment="accept established,related"
add action=drop chain=forward connection-state=invalid in-interface-list=WAN comment="drop invalid"
<собственные правила>
add action=drop chain=forward in-interface-list=WAN comment="drop all from WAN"
Что касается DNAT, то мы не сторонники давать доступ в сеть самыми широкими мазками. Если появляется проброс — создаем отдельное правило под проброс. Может это и увеличивает количество работы, но дает более читаемую и безопасную конфигурацию брандмауэра, когда вы явно видите кому и что разрешено без изучения дополнительных разделов.
Но если вы используете роутер дома и самый широкий набор приложений пробрасывает порты при помощи UPnP, то последнее правило действительно будет удобнее заменить на:
add action=drop chain=forward connection-nat-state=!dstnat in-interface-list=WAN comment="drop all from WAN"
Данный набор правил является базовым костяком нормально настроенного брандмауэра и должен присутствовать по умолчанию на любом устройстве. Уже потом он будет обрастать дополнительными правилами, но общий принцип построения защиты должен неукоснительно соблюдаться. Это позволит вам достичь высокого уровня безопасности при небольшой нагрузке на устройство.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Среди множества брандмауэров, доступных на рынке безопасности, есть брандмауэры маршрутизаторов. В отличие от программного брандмауэра, брандмауэр маршрутизатора пытается и блокирует входящие запросы на уровне сервера, тем самым обеспечивая безопасность всей сети. Поскольку маршрутизатор является конечной точкой большинства сетей и является единственной точкой, соединяющей любой компьютер в вашей сети с Интернетом, включение брандмауэра маршрутизатора обеспечивает безопасность вашей сети.
Содержание
- Настройте межсетевой экран маршрутизатора
- Откройте страницу настройки и настройки брандмауэра маршрутизатора
- Настроить межсетевой экран маршрутизатора
- Важные порты на компьютере/сети
Настройте межсетевой экран маршрутизатора
В этой статье рассказывается, как настроить межсетевой экран маршрутизатора или настроить маршрутизатор для активации межсетевого экрана. Мы также рассмотрим, какие порты вам нужны для нормальной работы.
Откройте страницу настройки и настройки брандмауэра маршрутизатора
Прежде чем вы сможете включить брандмауэр маршрутизатора, вам потребуется IP-адрес, чтобы перейти на страницу конфигурации. Чтобы получить адрес, откройте диалоговое окно RUN, нажав клавишу Windows + R. Введите CMD и нажмите Enter.
В командном окне введите IPCONFIG/ALL и нажмите Enter. Запишите IP-адрес, указанный рядом со шлюзом. Вам нужно будет ввести этот адрес (в виде чисел, включая точки) в адресную строку браузера, чтобы открыть страницу конфигурации маршрутизатора. Это число будет работать в большинстве случаев. Если это не работает, обратитесь в службу поддержки маршрутизатора за адрес.
Настроить межсетевой экран маршрутизатора
Это просто включение/выключение брандмауэра. Если вы установили Windows, скорее всего, операционная система уже настроила ваш маршрутизатор во время установки. Вы также можете настроить его вручную, используя браузер по своему вкусу.
Чтобы настроить межсетевой экран маршрутизатора:
1 Войдите на домашнюю страницу маршрутизатора, введя IP-адрес маршрутизатора в браузере (тот, который вы указали в предыдущем разделе; пример: 192.168.1.1)
2 Проверьте наличие параметра «Брандмауэр» на домашней странице маршрутизатора. Эта опция может быть сгруппирована под разными именами, такими как Расширенные настройки
3 Если брандмауэр деактивирован или не включен, нажмите, чтобы выбрать и активировать его
На изображении ниже показан включенный межсетевой экран на маршрутизаторе Binatone Ethernet.
Важные порты на компьютере/сети
Страница конфигурации маршрутизатора отличается у разных производителей. Однако возможность открывать или блокировать набор портов должна присутствовать на всех. Вам следует искать «переадресацию портов», чтобы блокировать запросы несанкционированного доступа таким образом, чтобы вы не блокировали важные интернет-соединения. Ниже приведен список портов, которые необходимо держать открытыми. Если на Windows, вам не нужно беспокоиться, так как он заботится об ограничениях портов.
ПОРТ НОМЕР 80 позволяет доступ в Интернет (HTTP)
Номер порта 443 обеспечивает безопасный доступ в Интернет (HTTPS)
Порт № 25 – это порт, через который вы можете получать доступ к электронной почте (SMTP).
Сохранение открытых выше портов достаточно для нормальной работы в Интернете и работы с электронной почтой. Дополнительные порты могут потребоваться в зависимости от ваших специальных потребностей программного обеспечения. В этом случае само программное обеспечение позаботится об открытии необходимого порта.
СОВЕТ: порт 80 может создавать проблемы. Чтобы узнать, правильно ли настроен маршрутизатор, посетите grc.com и запустите тест ShieldsUP. Этот тест проверяет, отвечает ли ваш маршрутизатор или игнорирует запросы UPnP (универсальные устройства Plug and Play) на доступ к вашей сети. Результат должен быть «игнорировать». Если вы видите отрицательные результаты, то есть, если ваш маршрутизатор «реагирует» на любые такие запросы, вы можете обратиться за помощью к тому, кто хорошо разбирается в маршрутизаторах, чтобы лучше его настроить. Или вы можете добавить дополнительный программный брандмауэр. В клубе Windows также есть хорошая статья о разнице между аппаратным и программным брандмауэром.
Здесь объясняется, как настроить и настроить межсетевой экран маршрутизатора – и какие порты следует учитывать, если вам необходимо использовать расширенные настройки. Если у вас есть какие-либо вопросы, сомнения или даже советы, пожалуйста, поделитесь с нами, используя раздел комментариев. Перейдите по этой ссылке, чтобы прочитать, как управлять брандмауэром Windows .
C распространением широкополосного доступа в интернет и карманных гаджетов стали чрезвычайно популярны беспроводные роутеры (маршрутизаторы). Такие устройства способны раздавать сигнал по протоколу Wi-Fi как на стационарные компьютеры, так и на мобильные устройства — смартфоны и планшеты, — при этом пропускной способности канала вполне достаточно для одновременного подключения нескольких потребителей.
Сегодня беспроводной роутер есть практически в любом доме, куда проведён широкополосный интернет. Однако далеко не все владельцы таких устройств задумываются над тем, что при настройках по умолчанию они чрезвычайно уязвимы для злоумышленников. И если вы считаете, что не делаете в интернете ничего такого, что могло бы вам повредить, задумайтесь над тем, что перехватив сигнал локальной беспроводной сети, взломщики могут получить доступ не только к вашей личной переписке, но и к банковскому счёту, служебным документам и любым другим файлам.
Хакеры могут не ограничиться исследованием памяти исключительно ваших собственных устройств — их содержимое может подсказать ключи к сетям вашей компании, ваших близких и знакомых, к данным всевозможных коммерческих и государственных информационных систем. Более того, через вашу сеть и от вашего имени злоумышленники могут проводить массовые атаки, взломы, незаконно распространять медиафайлы и программное обеспечение и заниматься прочей уголовно наказуемой деятельностью.
Между тем, чтобы обезопасить себя от подобных угроз, стоит следовать лишь нескольким простым правилам, которые понятны и доступны даже тем, кто не имеет специальных знаний в области компьютерных сетей. Предлагаем вам ознакомиться с этими правилами.
1. Измените данные администратора по умолчанию
Чтобы получить доступ к настройкам вашего роутера, необходимо зайти в его веб-интерфейс. Для этого вам нужно знать его IP-адрес в локальной сети (LAN), а также логин и пароль администратора.
Внутренний IP-адрес роутера по умолчанию, как правило, имеет вид 192.168.0.1, 192.168.1.1, 192.168.100.1 или, например, 192.168.123.254 — он всегда указан в документации к аппаратуре. Дефолтные логин и пароль обычно также сообщаются в документации, либо их можно узнать у производителя роутера или вашего провайдера услуг.
Вводим IP-адрес роутера в адресную строку браузера, а в появившимся окне вводим логин и пароль. Перед нами откроется веб-интерфейс маршрутизатора с самыми разнообразными настройками.
Ключевой элемент безопасности домашней сети — возможность изменения настроек, поэтому нужно обязательно изменить все данные администратора по умолчанию, ведь они могут использоваться в десятках тысяч экземпляров таких же роутеров, как и у вас. Находим соответствующий пункт и вводим новые данные.
В некоторых случаях возможность произвольного изменения данных администратора заблокирована провайдером услуг, и тогда вам придётся обращаться за помощью к нему.
2. Установите или измените пароли для доступа к локальной сети
Вы будете смеяться, но всё ещё встречаются случаи, когда щедрый обладатель беспроводного роутера организует открытую точку доступа, к которой может подключиться каждый. Гораздо чаще для домашней сети выбираются псевдопароли типа «1234» или какие-то банальные слова, заданные при установке сети. Чтобы минимизировать вероятность того, что кто-то сможет с лёгкостью забраться в вашу сеть, нужно придумать настоящий длинный пароль из букв, цифр и символов, и установить уровень шифрования сигнала — желательно, WPA2.
3. Отключите WPS
Технология WPS (Wi-Fi Protected Setup) позволяет быстро наладить защищённую беспроводную связь между совместимыми устройствами без подробных настроек, а лишь нажатием соответствующих кнопок на роутере и гаджете или путём ввода цифрового кода.
Между тем, у этой удобной системы, обычно включённой по умолчанию, есть одно слабое место: поскольку WPS не учитывает число попыток ввода неправильного кода, она может быть взломана «грубой силой» путём простого перебора с помощью простейших утилит. Потребуется от нескольких минут до нескольких часов, чтобы проникнуть в вашу сеть через код WPS, после чего не составит особого труда вычислить и сетевой пароль.
Поэтому находим в «админке» соответствующий пункт и отключаем WPS. К сожалению, внесение изменений в настройки далеко не всегда действительно отключит WPS, а некоторые производители вообще не предусматривают такой возможности.
4. Измените наименование SSID
Идентификатор SSID (Service Set Identifier) — это название вашей беспроводной сети. Именно его «вспоминают» различные устройства, которые при распознавании названия и наличии необходимых паролей пытаются подключиться к локальной сети. Поэтому если вы сохраните стандартное название, установленное, например, вашим провайдером, то есть вероятность того, что ваши устройства будут пытаться подключиться ко множеству ближайших сетей с тем же самым названием.
Более того, роутер, транслирующий стандартный SSID, более уязвим для хакеров, которые будут примерно знать его модель и обычные настройки, и смогут нанести удар в конкретные слабые места такой конфигурации. Потому выберите как можно более уникальное название, ничего не говорящее ни о провайдере услуг, ни о производителе оборудования.
При этом часто встречающийся совет скрывать трансляцию SSID, а такая опция стандартна для подавляющего большинства роутеров, на самом деле несостоятелен. Дело в том, что все устройства, пытающиеся подключиться к вашей сети, в любом случае будут перебирать ближайшие точки доступа, и могут подключиться к сетям, специально «расставленным» злоумышленниками. Иными словами, скрывая SSID, вы усложняете жизнь только самим себе.
5. Измените IP роутера
Чтобы ещё более затруднить несанкционированный доступ к веб-интерфейсу роутера и его настройкам, измените в них внутренний IP-адрес (LAN) по умолчанию.
6. Отключите удалённое администрирование
Для удобства технической поддержки (в основном) во многих бытовых роутерах реализована функция удалённого администрирования, при помощи которой настройки роутера становятся доступны через интернет. Поэтому, если мы не хотим проникновения извне, эту функцию лучше отключить.
При этом, однако, остаётся возможность зайти в веб-интерфейс через Wi-Fi, если злоумышленник находится в поле действия вашей сети и знает логин и пароль. В некоторых роутерах есть функция ограничить доступ к панели только при наличии проводного подключения, однако, к сожалению, эта опция встречается довольно редко.
7. Обновите микропрограмму
Каждый уважающий себя и клиентов производитель роутеров постоянно совершенствует программное обеспечение своего оборудования и регулярно выпускает обновлённые версии микропрограмм («прошивок»). В свежих версиях прежде всего исправляются обнаруженные уязвимости, а также ошибки, влияющие на стабильность работы.
Именно поэтому мы настоятельно рекомендуем регулярно проверять обновления микропрограмм и устанавливать их на свой роутер. В большинстве случаев это можно сделать непосредственно через веб-интерфейс.
Обратите внимание на то, что после обновления все сделанные вами настройки могут сброситься до заводских, поэтому есть смысл сделать их резервную копию — также через веб-интерфейс.
8. Перейдите в диапазон 5 ГГц
Базовый диапазон работы сетей Wi-Fi — это 2,4 ГГц. Он обеспечивает уверенный приём большинством существующих устройств на расстоянии примерно до 60 м в помещении и до 400 м вне помещения. Переход в диапазон 5 ГГц снизит дальность связи в два-три раза, ограничив для посторонних возможность проникнуть в вашу беспроводную сеть. За счёт меньшей занятости диапазона, вы сможете также заметить повысившуюся скорость передачи данных и стабильность соединения.
Минус у этого решения только один — далеко не все устройства работают c Wi-Fi стандарта IEEE 802.11ac в диапазоне 5 ГГц.
9. Отключите функции PING, Telnet, SSH, UPnP и HNAP
Если вы не знаете, что скрывается за этими аббревиатурами, и не уверены, что эти функции вам обязательно потребуются, найдите их в настройках роутера и отключите. Если есть такая возможность, вместо закрытия портов, выберите скрытый режим (stealth), который при попытках зайти на них извне сделает эти порты «невидимыми», игнорируя запросы и «пинги».
10. Включите брандмауэр роутера
Если в вашем роутере есть встроенный брандмауэр, то рекомендуем его включить. Конечно, это не бастион абсолютной защиты, но в комплексе с программными средствами (даже со встроенным в Windows брандмауэром) он способен вполне достойно сопротивляться атакам.
11. Отключите фильтрацию по MAC-адресам
Хотя на первый взгляд кажется, что возможность подключения к сети только устройств с конкретными MAC-адресами полностью гарантирует безопасность, в действительности это не так. Более того, оно делает сеть открытой даже для не слишком изобретательных хакеров. Если злоумышленник сможет отследить входящие пакеты, то он быстро получит список активных MAC-адресов, поскольку в потоке данных они передаются в незашифрованном виде. А подменить MAC-адрес не проблема даже для непрофессионала.
12. Перейдите на другой DNS-сервер
Вместо использования DNS-сервера вашего провайдера, можно перейти на альтернативные, например, Google Public DNS или OpenDNS. С одной стороны, это может ускорить выдачу интернет-страниц, а с другой, повысить безопасность. К примеру, OpenDNS блокирует вирусы, ботнеты и фишинговые запросы по любому порту, протоколу и приложению, и благодаря специальным алгоритмам на базе Больших Данных способен предсказывать и предотвращать разнообразные угрозы и атаки. При этом Google Public DNS — это просто скоростной DNS-сервер без дополнительных функций.
13. Установите альтернативную «прошивку»
И, наконец, радикальный шаг для того, кто понимает, что делает, — это установка микропрограммы, написанной не производителем вашего роутера, а энтузиастами. Как правило, такие «прошивки» не только расширяют функциональность устройства (обычно добавляются поддержка профессиональных функций вроде QoS, режима моста, SNMP и т.д), но и делают его более устойчивым к уязвимостям — в том числе и за счёт нестандартности.
Среди популярных open-source «прошивок» можно назвать основанные на Linux DD-WRT, OpenWrt и Tomato.
RouterOS — сетевая ОС, изначально предназначенная для устройств RouterBoard латвийской компании Mikrotik, но в дальнейшем перекочевавшая на x86 и в облака (версия Cloud Hosted Router). В этой статье поговорим о том, как грамотно настроить межсетевой экран в этой ОС.
Безопасность периметра локальной сети — одна из приоритетных задач любого системного администратора и в компании Mikrotik это прекрасно понимают. Так что как только вы включили устройство на RouterBoard с настройками по умолчанию — там уже будет некоторое количество преднастроенных правил. В случае Mikrotik CHR — по умолчанию правил не будет, но Mikrotik настоятельно рекомендует их настроить.
Сразу оговоримся, что в рамках этой статьи мы будет пользоваться исключительно интерфейсом командной строки (CLI) и облачной версией RouterOS CHR. Логика настройки точно такая же, как и при использовании WinBox или WebFig, но предпочтительнее изначально пользоваться CLI.
Немного теории: настройка firewall
Одним из базовых понятий настройки файервола Mikrotik является цепочка (chain). По умолчанию их 3, но есть возможность и создания собственных цепочек:
- Цепочка INPUT — входящий трафик, приходящий на маршрутизатор.
- Цепочка OUTPUT — исходящий трафик, создаваемый маршрутизатором.
- Цепочка FORWARD — трафик, проходящий сквозь через маршрутизатор.
Если к нам должен прийти какой-либо трафик извне, например, из интернета, то мы его будем обрабатывать цепочкой INPUT. Чтобы обработать правилами трафик, уходящий наружу (например, в тот же интернет), задействуем цепочку OUTPUT. Если же наш маршрутизатор не находится на границе сети, а служит промежуточным узлом между сетями, то тогда для обработки трафика применяем цепочку FORWARD.
Причем тут странное название «цепочка»? Все элементарно. Все создаваемые правила обработки действуют не вместе, а строго по очереди одно за другим. Точно также, как формируется цепь — одно звено следует за другим. Именно поэтому списки правил стали именовать «цепочками».
Теперь коснемся статусов соединения. Каждое соединение условно можно разделить на 4 категории:
- New — исходя из названия ясно, что это новое соединение, а не одно из существующих.
- Established — соединение установлено, по нему можно передавать пакеты данных.
- Related — соединение, которое относится уже к какому-либо из существующих, но используемое в иных целях. Пока не будем заострять на этом внимание, чтобы не усложнять.
- Invalid — некорректное соединение, то есть маршрутизатор понятия не имеет, что это за соединение и как его обрабатывать.
И сразу к практике: фильтрация
Открываем консольный интерфейс и посмотрим на существующие правила:
[admin@MikroTik] > ip firewall filter print
Flags: X - disabled, I - invalid, D - dynamic
Пока что правил нет, отображается только «легенда» про флаги. Переходим в раздел настройки фильтров:
[admin@MikroTik] > ip firewall filter
[admin@MikroTik] /ip firewall filter>
Полезный чит-код: узнать все варианты команд в любом разделе можно, нажав клавишу со знаком вопроса «?«
Теперь создадим несколько правил и расскажем для чего они нужны:
add action=accept chain=input comment="default configuration" connection-state=established,related
Эту команду можно читать прямо дословно. Разберем прямо по пунктам:
- add action=accept — принимать пакеты.
- chain=input — правило будет работать в цепочке входящего трафика.
- comment=»default configuration» — это просто комментарий-напоминалка, в нашем случае указываем, что это конфигурация по умолчанию, но можно вообще этот параметр не указывать.
- connection-state=established,related — указываем какие статусы соединения будем принимать.
Таким образом эта длинная команда всего лишь превращается во вполне логичную фразу «Принимать извне все пакеты со статусом соединения Established и Related». Это правило позволяет четко указать маршрутизатору что если из внешней сети прилетают соединения с указанными статусами, то их следует принять.
Теперь переходим к следующему правилу, рекомендуемому Mikrotik:
add action=accept chain=input src-address-list=allowed_to_router
Тут мы заострим внимание только на параметре src-address-list=allowed_to_router. При обработке трафика мы можем формировать различные списки IP-адресов. Каждый список будет иметь имя. Так что дословный «перевод» этого правила всего лишь «Принять пакеты, если IP-адрес с которого обращаются, есть в списке allowed_to_router. Нам это правило пригодится для дальнейшего формирования списка разрешенных IP-адресов.
Еще небольшое пояснение. Из-за того, что правила в цепочке обрабатываются одно за другим, то вначале следует прописывать разрешающие правила, а только после этого запрещающие.
Теперь следующее правило, оно достаточно спорное. Мы разрешим маршрутизатору отвечать на команду ping, приходящую извне. С одной стороны — это потенциально раскрывает то, что на нашем IP-адресе есть действующее устройство, а с другой это часто требуется для организации мониторинга. У нас в Selectel, к примеру есть услуга «Мониторинг состояния сервисов», которая позволяет отслеживать доступность любого хоста из разных стран мира. Если вам нужно, отключить ping, то в action надо прописать не accept, а drop.
add action=accept chain=input protocol=icmp
Тут все просто — эта команда разрешает принимать извне и обрабатывать ICMP-пакеты. И завершающая команда:
add action=drop chain=input
Этим в финале цепочки INPUT мы будем отбрасывать (дропать) все оставшиеся пакеты, не подпадающие под правила выше. Посмотрим как у нас сформировались правила:
[admin@MikroTik] /ip firewall filter> print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; default configuration
chain=input action=accept connection-state=established,related
1 chain=input action=accept src-address-list=allowed_to_router
2 chain=input action=accept protocol=icmp
3 chain=input action=drop
Рассмотрим как же это работает. Представим, что мы пингуем маршрутизатор извне. Это выглядит примерно так:
- Прилетел снаружи ICMP-пакет. Машрутизатор смотрит в правило номер 0 — есть ли уже установившееся соединение. Если нас пингуют впервые, то статус соединение будет New, а не Established или Related. Так что правило не срабатывает.
- Смотрим дальше — есть ли IP-адрес с которого пришел пакет в списке allowed_to_router. Поскольку мы этот список еще не формировали, то его еще не существует и, следовательно, правило также не срабатывает.
- Наконец доходим до правила 2, которое однозначно говорит маршрутизатору, что следует принять (Accept) и обработать по протоколу ICMP данный пакет. Маршрутизатор отвечает на ICMP-пакет соответствующим эхо-ответом. До четвертого правила пакет уже не добирается, т.к. процедура обработки фактически завершена.
Рассмотрим еще один случай. На этот раз к нам на маршрутизатор извне прилетел некий неизвестный UDP-пакет с данными. Как будет действовать маршрутизатор:
- Смотрим правило 0. Существующего Established или Related соединения у нас нет, поэтому правило не срабатывает.
- Правило 1 — смотрим в список разрешенных адресов allowed_to_router, но там пусто. Еще одно правило не сработало.
- Дошли до правила 2 — является ли пришедший пакет ICMP-пакетом. Нет, не является, так что правило не срабатывает.
- И вот мы дошли до конца цепочки INPUT, где нас поджидает «правило-вышибала”. Поскольку у правила chain=input action=drop нет условий для срабатывания, то оно по умолчанию срабатывает всегда и наш неизвестный UDP-пакет дропается и перестает существовать.
Надеемся, что столь подробный разбор логики немного прояснил как именно работает файервол в Mikrotik RouterOS, поэтому приступим к дальнейшей настройке. Сформируем список разрешенных адресов. Для этого вернемся в главное меню, нажав символ / и подтвердив нажатием клавиши Enter. Теперь перейдем в раздел консольного интерфейса Mikrotik – ip firewall и посмотрим какие адресные списки у нас существуют:
[admin@MikroTik] > ip firewall address-list
[admin@MikroTik] /ip firewall address-list> print
Flags: X - disabled, D - dynamic
# LIST ADDRESS CREATION-TIME TIMEOUT
Как видим, список пока пустой. Добавим туда адреса из стандартной локальной подсети 192.168.88.0/24 за исключением 192.168.88.1 (адрес маршрутизатора). Эта подсеть обычно используется по умолчанию на устройствах Mikrotik и именно ее чаще всего используют для раздачи адресов в локальной сети. Выполним добавление:
add address=192.168.88.2-192.168.88.254 list=allowed_to_router
Команда максимально проста для понимания мы говорим, что нам нужно добавить адреса 192.168.88.2-192.168.88.254 в список с именем allowed_to_router. Подразумевается то, что если списка с таким именем не существует, то при выполнении команды он будет создан. Проверим:
[admin@MikroTik] /ip firewall address-list> print
Flags: X - disabled, D - dynamic
# LIST ADDRESS CREATION-TIME TIMEOUT
0 allowed_to_router 192.168.88.2-192.168.88.254 feb/05/2021 13:01:55
Теперь, когда файервол в цепочке INPUT дойдет до правила номер 1, то в случае поступления данных с IP-адресом отправителя из диапазона 192.168.88.2-192.168.88.254 — правило сработает и маршрутизатор будет знать, что данные следует принять. Этим мы будем пользоваться для обращений к маршрутизатору из локальной сети.
Разделяем и властвуем
Списки адресов — крайне полезная штука при настройке файервола. Тут важно следовать стандартам, разработанным такой крутой организацией, как IETF (Internet Engineering Task Force) — Инженерный совет Интернета. Это международное сообщество с конца 80-х годов занимается развитием протоколов и архитектуры интернета.
Результаты работы IEFT публикуются в виде RFC (Request for Comments) — информационных документов, содержащих в себе детальное описание спецификаций и стандартов. Этих документов уже создано несколько тысяч, все они представлены на английском языке. Один из них поможет нам корректно сформировать списки адресов, а именно RFC6890.
Наша задача при настройке файервола четко разделить адреса, относящиеся к локальному сегменту и адреса глобальной сети интернет. Именно их мы возьмем из RFC и пропишем в нашем маршрутизаторе списком с названием not_in_internet. В дальнейшем это поможет нам сформировать правила в которых будут абстракции «это адрес из интернета» и «это адрес не из интернета».
Поочередно выполняем команды, создавая и дополняя список not_in_internet, помимо всего прочего указывая в комментарии номер RFC, которым мы руководствовались:
add address=0.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=172.16.0.0/12 comment=RFC6890 list=not_in_internet
add address=192.168.0.0/16 comment=RFC6890 list=not_in_internet
add address=10.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=169.254.0.0/16 comment=RFC6890 list=not_in_internet
add address=127.0.0.0/8 comment=RFC6890 list=not_in_internet
add address=198.18.0.0/15 comment=RFC6890 list=not_in_internet
add address=192.0.0.0/24 comment=RFC6890 list=not_in_internet
add address=192.0.2.0/24 comment=RFC6890 list=not_in_internet
add address=198.51.100.0/24 comment=RFC6890 list=not_in_internet
add address=203.0.113.0/24 comment=RFC6890 list=not_in_internet
add address=100.64.0.0/10 comment=RFC6890 list=not_in_internet
add address=240.0.0.0/4 comment=RFC6890 list=not_in_internet
Есть еще две важные подсети, которые тоже стоит добавить в этот список. Первая подсеть — это 224.0.0.0/4. Эта подсеть зарезервирована для технологии многоадресного вещания (мультикаст) и это зафиксировано в соответствующем RFC2780. Вторая подсеть специфична для переходного механизма 6to4, позволяющего передавать IPv6 трафик через IPv4 сети. Этот механизм реализован в подсети 192.88.99.0/24, что также зафиксировано в отдельном RFC3068.
add address=224.0.0.0/4 comment=Multicast_RFC2780 list=not_in_internet
add address=192.88.99.0/24 comment="6to4_RFC 3068" list=not_in_internet
Теперь, когда мы все сделали «по фен-шую», у нас есть список всех адресов, которые будут опознаваться как локальные, т.е. пришедшие не из интернета. Проверим:
[admin@MikroTik] /ip firewall address-list> print
Flags: X - disabled, D - dynamic
# LIST ADDRESS CREATION-TIME TIMEOUT
0 allowed_to_router 192.168.88.2-192.168.88.254 feb/05/2021 13:01:55
1 ;;; RFC6890
not_in_internet 0.0.0.0/8 feb/05/2021 13:43:03
2 ;;; RFC6890
not_in_internet 172.16.0.0/12 feb/05/2021 13:43:03
3 ;;; RFC6890
not_in_internet 192.168.0.0/16 feb/05/2021 13:43:03
4 ;;; RFC6890
not_in_internet 10.0.0.0/8 feb/05/2021 13:43:03
5 ;;; RFC6890
not_in_internet 169.254.0.0/16 feb/05/2021 13:43:03
6 ;;; RFC6890
not_in_internet 127.0.0.0/8 feb/05/2021 13:43:03
7 ;;; RFC6890
not_in_internet 198.18.0.0/15 feb/05/2021 13:43:03
8 ;;; RFC6890
not_in_internet 192.0.0.0/24 feb/05/2021 13:43:03
9 ;;; RFC6890
not_in_internet 192.0.2.0/24 feb/05/2021 13:43:03
10 ;;; RFC6890
not_in_internet 198.51.100.0/24 feb/05/2021 13:43:03
11 ;;; RFC6890
not_in_internet 203.0.113.0/24 feb/05/2021 13:43:03
12 ;;; RFC6890
not_in_internet 100.64.0.0/10 feb/05/2021 13:43:03
13 ;;; RFC6890
not_in_internet 240.0.0.0/4 feb/05/2021 13:43:03
14 ;;; Multicast_RFC2780
not_in_internet 224.0.0.0/4 feb/05/2021 13:43:12
15 ;;; 6to4_RFC3068
not_in_internet 192.88.99.0/24 feb/05/2021 13:43:12
Теперь, используя эти листы, создадим еще правила уже в цепочке FORWARD, которые защитят устройства в локальной сети от различных посягательств. Возвращаемся в раздел с правилами:
/ip firewall filter
Первым правилом мы сделаем так, чтобы наш файервол не срабатывал, когда имеет дело с уже установленными соединениями, это лишь тратит ресурсы маршрутизатора и никоим образом не помогает в обеспечении безопасности:
add action=fasttrack-connection chain=forward comment=FastTrack connection-state=established,related
Обрабатываем установленные соединения в цепочке Forward:
add action=accept chain=forward comment="Established, Related" connection-state=established,related
Отбрасываем «битые» соединения:
add action=drop chain=forward comment="Drop invalid" connection-state=invalid log=yes log-prefix=invalid
Отбрасываем пакеты, исходящие из локальной сети к частным IP-адресам и фиксируем срабатывание правила в логах:
add action=drop chain=forward comment="Drop tries to reach not public addresses from LAN" dst-address-list=not_in_internet in-interface=bridge1 log=yes log-prefix=!public_from_LAN out-interface=!bridge1
Отбрасываем входящие пакеты, которые не подходят для NAT и фиксируем срабатывание:
add action=drop chain=forward comment="Drop incoming packets that are not NATted" connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes log-prefix=!NAT
Отбрасывать пакеты из сети интернет, пришедшие не с публичных IP-адресов и заносить информацию в лог:
add action=drop chain=forward comment="Drop incoming from internet which is not public IP" in-interface=ether1 log=yes log-prefix=!public src-address-list=not_in_internet
Отбрасывать пакеты из локальной сети, не имеющие IP-адресов этой локальной сети, и также отправляем сообщение в лог:
add action=drop chain=forward comment="Drop packets from LAN that do not have LAN IP" in-interface=bridge1 log=yes log-prefix=LAN_!LAN src-address=!192.168.88.0/24
Защита от атак перебором
Брутфорс-атаки давно стали повседневностью. Десятки тысяч ботов регулярно сканируют весь интернет в поисках открытых портов SSH и затем начинают весьма активно «стучаться» на внешний интерфейс и перебирать пароли в попытке захватить контроль над подключенным устройством. У тех, кто контролирует эти сети есть весьма обширные словари паролей, использующие как дефолтные реквизиты доступа большинства устройств.
Но даже если вы задали сложный пароль — это еще не гарантирует безопасности. Длительная атака перебором способна сломать этот барьер защиты, поэтому проще всего пресекать попытки злоумышленников сразу, как только замечен процесс перебора. Настройка правил firewall у устройств Mikrotik достаточно тривиальна:
Вначале создадим правило firewall по которому все входящие соединения с IP-адресов, находящихся в списке ssh_blacklist будут сбрасываться:
add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="Drop SSH brutforce" disabled=no
Теперь сформируем сам список ssh_blacklist. Любой имеет право на ошибку, поэтому если легитимный пользователь три раза ошибся во вводе пароля — это нормально. Так что позволим пользователю сделать 3 ошибки с интервалом в 1 минуту. Большее количество будет свидетельствовать о переборе паролей и IP-адрес атакующего будет попадать в черный список и включается блокировка на 10 дней.
Так что нам потребуется создать еще три списка IP-адресов. Первый назовем ssh_stage1. Как только создается новое соединение на порт SSH мы вносим IP-адрес источника в список. При этом задаем удаление через 1 минуту. Это гарантирует нам то, что если соединение прошло успешно — IP-адрес будет удален из списка.
add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="Stage1" disabled=no
Если даже пользователь ошибся, то ничего страшного, однако если он попробует в течение этой минуты еще раз подключиться, то его адрес мы закидываем во второй список ssh_stage2 из первого списка ssh_stage1.
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="Stage2" disabled=no
Если пользователь ошибется второй раз, то закидываем IP-адрес источника из списка ssh_stage2 в список ssh_stage3.
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="" disabled=no
Третья ошибочная попытка приводит к копированию IP из списка ssh_stage3 в список ssh_blacklist и все входящие соединения с этого IP будут заблокированы сроком на 10 дней.
add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="" disabled=no
Для разблокировки адреса будет достаточно его удалить из черного списка.
NAT: базовая настройка и проброс портов
Технология трансляции сетевых адресов (NAT — Network Address Translation) используется во многих случаях. Чаще всего с ней можно встретиться при организации широкополосного доступа к сети интернет. Смысл технологии в том, чтобы дать возможность выходить в сеть множеству устройств, используя всего лишь один внешний IP-адрес.
Все устройства в этом случае будут иметь локальные IP-адреса, например, 192.168.XXX.XXX. Когда устройство запрашивает какой-либо внешний ресурс, то маршрутизатор точно знает от какого адреса в локальной сети пришел запрос и соответственно знает куда направлять обратный поток данных. Но если из внешней сети придет какой-либо запрос, то маршрутизатор его отбросит, поскольку не знает какому устройству в локальной сети его направить.
Решением проблемы является так называемый проброс портов (Port Forwarding). Создавая правило проброса портов мы даем маршрутизатору указания какому устройству перенаправить запрос извне. На логическом уровне подобный запрос может выглядеть как «Если на порт XXX придет TCP-запрос, то перенаправь его на локальный адрес 192.168.XXX.XXX на порт YYY». Давайте посмотрим 2 способа как нам настроить NAT на Mikrotik.
Способ 1. Когда выходной IP-адрес может меняться
Изначально Mikrotik ничего о нашем намерении использовать NAT не знает. Для начала укажем, что хотим все пакеты, пришедшие из локальной сети выводились во внешнюю сеть через общий IP-адрес:
ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
где ether1 — интерфейс, смотрящий в интернет. Также можно задать не один выходной интерфейс, а сразу несколько, заранее сформировав список out-interface-list.
Этот способ наиболее простой и удобный для пользователей с динамическим IP-адресом.
Способ 2. Когда выходной IP-адрес статический и не меняется
Теперь еще один вариант организации NAT. Рассмотрим пример:
ip firewall nat add chain=srcnat out-interface=ether1 action=src-nat to-addresses=XXX.XXX.XXX.XXX
где XXX.XXX.XXX.XXX — статический IP-адрес, а ether1 — выходной интерфейс.
Теперь переходим к пробросу портов. Для примера предположим, что у нас в локальной сети 192.168.88.0/24 есть небольшой сервер по адресу 192.168.88.10 с поднятым SSH. Нам нужно подключаться к серверу удаленно, используя номер порта 1122. Для этого выполним проброс портов, созданием правила:
ip firewall nat add chain=dstnat in-interface=ether1 protocol=tcp dst-port=1122 action=dst-nat to-addresses=192.168.88.10 to-ports=22
Почему мы взяли такой странный номер порта 1122? Все просто — чтобы затруднить злоумышленникам нахождение номера порта и последующего перебора реквизитов. Таким образом, мы создали правило, однозначно позволяющее маршрутизатору понять, что все TCP-пакеты, пришедшие на порт 1122 следует переадресовывать на локальный адрес 192.168.88.10 на порт 22.
Вместо заключения
Мы рассмотрели основные команды для выстраивания базовой защиты для устройств на базе RouterBoard, а также облачной версии Mikrotik CHR и взглянули на то, как можно парой команд настроить NAT. Разумеется, для каждого неиспользуемого сервиса можно закрыть доступ извне, исходя из используемых портов, протоколов и типа трафика.
Угроз безопасности с каждым днем становится все больше и каждая из них заслуживает внимания и адекватного ответа.