На написание статьи меня сподвигли воспоминания о трудоустройстве на первую работу и сопутствующие трудности, с которыми мне пришлось столкнуться. Собеседования напоминали «день сурка» — технические специалисты бубнили, что им нужны только работники с большим конкретным опытом, а не студенты-теоретики, и им некогда заниматься «глубоким обучением». В конечном итоге мне удалось устроиться в «Инфосистемы Джет» благодаря моей хорошей подготовке к собеседованию. Чтобы облегчить жизнь будущим поколениям и дать возможность выпускникам на практике ознакомиться с доступными для студента средствами защиты информации (СЗИ), я решил написать этот пост. Рассмотрим самое базовое средство защиты компьютерной сети — межсетевой экран (МЭ.)
Начало: разворачиваем стенд!
Первое, с чего следует начать, — это создать домашний стенд. Его можно поднять на своем ПК при помощи средств виртуализации. Рекомендую развернуть как минимум три ВМ: межсетевой экран посередине и два хоста для тестирования обработки трафика между ними, или добавить еще один МЭ (для стенда с кластером либо для IPSec). При желании протестировать несколько решений достаточно заменить в схеме нужный МЭ. Также подобная схема подойдет для стендирования смежных продуктов.
Можно использовать любой бесплатный гипервизор. Для тестов устанавливаются две клиентские машины (для разнообразия предлагаем одну на Windows, вторую на Linux).
Шаг 1. Выбираем межсетевой экран
Большинство корпоративных решений не предоставляет дистрибутивы и лицензии в открытом доступе. Опробовать такие решения можно, если доступна пробная версия, на отраслевых мероприятиях или в тематических каналах в соцсетях.
Если по каким-то причинам не получается достать дистрибутив системы, то можно начать практику с Open Source решений. Далее рассмотрим девять подобных систем и один коммерческий вариант:
pfSense
Популярный дистрибутив для создания межсетевого экрана и маршрутизатора, основанный на FreeBSD и разработанный Rubicon Communications (Netgate). Небольшие заказчики используют его как основной МЭ для инфраструктуры, что косвенно указывает на его функциональность и востребованность.
При настройке виртуальной машины лучше задать два сетевых интерфейса (для WAN и LAN). Процесс установки стандартный, в виде последовательных шагов мастера установки. По окончании установки выполнится перезагрузка системы и после «ребута» будет следующее меню:
Замечу, что достаточно задать IP-адрес с gateway (п. 2 на рисунке выше). После можно подключаться через браузер к заданному адресу. После ввода УЗ по умолчанию будет запущен следующий мастер настройки:
Далее настройки можно выполнять через веб-интерфейс.
Если возникают трудности с английским языком, то есть поддержка русского (System > general setup > localization > language).
Доступный функционал для изучения: настройка правил доступа, NAT, VPN (IPsec, L2TP, OpenVPN, WireGuard), прокси, интеграция с СОВ, интеграция с Nmap, кластеризация, балансировка, pfBlockerNG и другие вспомогательные пакеты.
OPNsense
FreeBSD-подобная операционная система с межсетевым экраном и маршрутизатором, разработанная Deciso B.V.
Ссылка на дистрибутив. Установка стандартная, после нее происходит перезагрузка, и при логине появится такое меню для настроек:
Далее достаточно привязать интерфейсы и задать их адреса (пп. 1, 2 на рисунке выше).
Веб-интерфейс имеет следующий вид:
Также существует поддержка русского языка. Документация доступна по ссылке.
На системе можно протестировать следующий функционал: правила доступа, двухфакторная аутентификация, VPN (IPSec, OpenVPN, интеграции OpenConnect, Stunnel, Tinc, WireGuard, Zerotier), кластеризация, proxy, системы обнаружения вторжений, фильтрация веб-трафика.
Smoothwall Express
Smoothwall Express — свободный дистрибутив Linux, предназначенный для использования в качестве межсетевого экрана, разработанный Л. Мэннингом и Р. Морреллом.
Ссылка на дистрибутив.
Во время установки достаточно задать два порта — GREEN и RED. После установки веб-интерфейс доступен по 441 порту.
Доступна бесплатная версия, которая отлично подойдет для обучения (хотя, конечно, имеется корпоративная версия с большим функционалом). Система настраивается через веб-интерфейс, который выглядит так:
Можно опробовать стандартные политики доступа, VPN, интеграцию Snort, Webfilter, Proxy.
IPCop
IPCop — бесплатный межсетевой экран и маршрутизатор на основе Linux, разработанный одноименным комьюнити.
Ссылка на дистрибутив.
Установка стандартная с заданием зон: red (выход в интернет), green (доверенная сеть), blue (беспроводная сеть), orange (DMZ).
Последняя версия была выпущена в 2015 году, но это не мешает опробовать его.
Интерфейс доступен по 8443:
Здесь доступна поддержка русского языка. Во вкладке Services можно настроить дополнительный функционал, например, прокси и UrlFilter.
Вкладка Firewall содержит объекты доступа и саму политику.
VPN настраивается в аналогичной вкладке, доступны IPsec и OpenVPN.
Вкладка Status поможет проверить службы, производительность, сеть, iptables. Увеличиваем уровень логирования в Logs-Log Settings.
Проверяем соответствующие логи.
Endian
Endian — дистрибутив Linux для машрутизаторов и шлюзов с открытым исходным кодом, разработанный комьюнити Endian.
Ссылка на дистрибутив.
Установка обычная, задаются зоны RED и GREEN.
После установки доступны действия:<![if !vml]>
Система:
Можно опробовать фильтрацию пакетов, NAT, VPN, СОВ, антиспам и AV.
Доступ в веб-портал через 10443 порт.
Русский язык можно задать в System-GUI settings. Дополнительные функции можно активировать в разделе Services. К примеру, можно активировать IPS c правилами snort. Вкладка Firewall отвечает за настройку правил доступа, NAT. Для настроек прокси и VPN имеются отдельные вкладки. Во вкладке Status можно проверить статус служб, производительности, сети и подключения. Также проверяем логи во вкладке Logs and Report.
IPFire
IPFire — свободный дистрибутив на базе Linux для создания маршрутизаторов и межсетевых экранов, разработанный командой IPFire Team.
На заглавной странице есть ссылка для скачивания актуальной версии.
Установка стандартная с задачей двух интерфейсов.
На системе можно опробовать следующий функционал: политики доступа, прокси, VPN (IPsec, OpenVPN), IPS, использование менеджера пакетов Pakfire.
Веб-интерфейс:
Следующие системы управляются преимущественно через консоль. Примеры указаны для Ubuntu.
UFW
Пакет UFW должен быть при установке Ubuntu, либо устанавливается штатными средствами установки пакетов. Можно настроить веб-интерфейс при помощи пакета GUFW. Работа системы через командную строку. Изучаем manual командой “man UFW”.
Основные команды:
До активации UFW нужно выполнить команду для того, чтобы не оборвать SSH-сессию:
ufw allow proto tcp from any to any port 22
Включение ufw: sudo ufw enable
Пример открытия порта:
ufw allow 443
Пример блокировки порта:
ufw reject 2222
При работе с утилитой можно задать приложения и связанные с ним порты.
Список приложений можно посмотреть командой:
ufw app list
Посмотреть, какие порты связаны с приложением, можно следующей командой:
ufw app info имя_профиля
Свои приложения можно добавлять в директорию /etc/ufw/applications.d/ следующим форматом:
[<name>]
title=<title>
description=<description>
ports=<ports>
Проверить, что служба включена:
ufw status
Для различных диагностик можно менять уровень логирования командой ufw logging LEVEL,
где LEVEL — это один из вариантов: 'off', 'low', 'medium', 'high' and 'full'.
Лог службы по умолчанию хранится в /var/log/ufw.log.
CSF
CSF (ConfigServer Security and Firewall) — межсетевой экран с открытым кодом.
Ссылка на дистрибутив.
Поддерживается на ряде ОС. Можно опробовать на том же Ubuntu.
Скачанный архив разархивируем и запускаем скрипт sh install.sh (ufw должен быть выключен).
Конфигурация системы находится в /etc/csf/csf.conf.
Порты открываются добавлением номера в соответствующие поля: TCP_IN, TCP_OUT, UDP_IN, UDP_OUT.
Изменения применяются командой: csf –r.
Разрешить/запретить определенные IP-адреса можно в соответствующих конфигах:
/etc/csf/csf.allow
/etc/csf/csf.deny
Адреса можно перечислять одной строкой через пробел, в том числе указывая подсети с маской.
Помимо конфигов, рекомендуем ознакомиться с синтаксисом команды csf:
man csf
Shorewall
Shorewall (Shoreline Firewall) — инструмент с открытым кодом для настройки межсетевого экрана в Linux.
Ссылка на дистрибутив.
Особенности установки следующие.
На примере той же Ubuntu ставится командой apt-get install shorewall. Система настраивается через конфигурационные файлы.
Задаем зоны в /etc/shorewall/zones (одна из зон должна быть задана как firewall).
Далее нужно задать соответствие зон интерфейсам системы в конфиге: /etc/shorewall/interfaces.
Следом задается политика /etc/shorewall/policy.
Вышеуказанных конфигов будет достаточно для запуска shorewall (shorewall start).
Также нужно посмотреть конфиг: /etc/shorewall/shorewall.conf и изучить саму утилиту: man shorewall.
Для диагностики проблем смотрим статус: shorewall status укажет версию и текущий статус утилиты. В shorewall.conf можно задать более высокий уровень логирования, если это требуется. При проблемах с выполнением команд можно добавить ключ debug при выполнении команды. Например, shorewall debug start.
CheckPoint
CheckPoint — полнофункциональный межсетевой экран нового поколения одноименной фирмы.
Ссылка на дистрибутив ISO.
Скачать консоль.
Установка межсетевого экрана проходит стандартно. После ее завершения в браузере запускается конфигурационный менеджер. Шаги настроек не составят проблем. Единственное, следует обратить внимание на выбор продуктов, от которых будет зависеть архитектура системы. CheckPoint предусматривает Standalone (mgmt.+gw на одном сервере) и distributed (mgmt и gw на отдельных серверах). Для тестов без большой нагрузки достаточно первого варианта. Security Gateway — шлюз, обеспечивающий функционал МЭ, Security Management — сервер управления шлюзами, через который выполняются практически все настройки.
После выполнения конфигурации система готова и активирует 15-дневную триальную лицензию.
Для управления системой нужно установить на личный компьютер клиент SmartConsole. Также отмечу, что в консоли есть полезная функция — demo mode, которая запустит демостенд. Это очень удобно, если нужно быстро посмотреть что-то из настроек в консоли при отсутствии под рукой живой системы.
Вендор хоть и зарубежный, но продолжает оказывать поддержку ряда российских заказчиков, поэтому это может быть отличным примером системы, которой можно обучиться, имея общедоступные дистрибутивы и триальную лицензию.
Система имеет собственную ОС Gaia. Дополнительный функционал, помимо Firewall, разделен на категории, называемые блейдами (blades). При изучении лучше пройтись по каждой из них, хотя бы теоретически. Плюсом также будет разбор основных команд системы в CLI.
Шаг 2: тренировки
Если у вас нет понимания, что можно потренировать на стенде, рекомендую следующие задачи:
Работа с правилами доступа (разрешение, блокировка доступа по различным характеристикам запроса: IP-адрес, порт, интерфейс и иные доступные настройки)
Настройка NAT-трансляций
Настройка VPN (remote access, IPsec)
Настройка режима прокси
Интеграция со сторонними сервисами (отправка логов на SIEM, интеграция с системой мониторинга, дополнительные модули МЭ, например, встроенный IPS, AV, Web-filter)
Настройка кластера, проверка его переключения
Troubleshooting (умение искать информацию в логах, собирать диагностику через известные команды или специальные утилиты, знание, как резервировать и восстанавливать систему)
Разбор примеров
Давайте на основе pfSense разберем несколько примеров.
Начнем с самого простого — добавления правила доступа.
Открытие доступа
Откроем для начала доступ между клиентами. На стенде первый клиент имел адрес 10.31.82.2 (Windows), а второй — 10.31.88.14 (Linux). Пробуем отправить ICMP-запрос и видим, что обратно ответы не приходят:
По умолчанию большинство МЭ будет блокировать неразрешенный политикой трафик. Там, где данной логики нет, желательно добавить подобное правило в конец политики, предварительно задав весь необходимый трафик как разрешенный. Иначе любой трафик, не попадающий под условие политики, будет разрешен, и есть риск прохождения нелигитимных пакетов.
Добавим правило для открытия доступа в Firewall: Rule – Add. Указываем в нем действие, принимаемое при обработке Action – Pass, задаем интерфейс, протокол (в данном примере ICMP), адреса источника трафика и получателя, также отмечаем, чтобы обработанный правилом трафик логировался Log – Enable.
Далее внизу страницы сохраняем изменения — Save. И применяем изменение: сверху веб-интерфейса появится кнопка Apply Changes.
Отмечаем на клиенте, что трафик стал обрабатываться.
При настройке правил старайтесь задать все пункты в разделе его добавления, чтобы исключить возможность прохождения нелигитимного трафика. Также имейте в виду, если условие правила совпадает с обрабатываемым трафиком, то дальнейшая обработка политикой будет остановлена. К примеру, если вы зададите правило, где значение протокола будет any, а затем ниже заблокируете какой-либо протокол, то данное правило не будет иметь никакого практического смысла.
В случае проблем с обработкой трафика первым делом проверяйте лог Status – System Logs – Firewall, задавая фильтр. Лог обработки укажет, был ли разрешен запрос, а также укажет правило и его ID, по которому оно было обработано. Если запрос блокируется, то следует внимательнее проверить параметры, относящиеся к трафику, и заданное для трафика правило. Если запрос разрешен, но вы не получаете пакеты обратно, следует проверить получателя на отсутствие каких-либо локальных блокировок, а также получение трафика (можно воспользоваться утилитой tcpdump).
Создание правила NAT
Правила NAT являются популярным функционалом на многих площадках, так как часто имеется необходимость в трансляции адресов при обработке трафика. Рассмотрим пример, когда нам нужно настроить трансляцию не сетевого адреса, а порта с http на https. Создадим на системе NAT-правило в Firewall – NAT – Port Forward с указанием нашего трафика, а именно — отправки запроса от Windows-машины к Linux по https:
Не забудьте убедиться, что данный трафик разрешен политикой доступа. После отправки запроса проверяем на получателе при помощи tcpdump, что запросы приходят по https:
Настройка OpenVPN
После этого попробуем настроить подключение к клиенту через OpenVPN. Если пакета нет в системе, то проводим его установку через SystemPackage – ManagerAvailable – Packages. Убедитесь, что в системе создан CA-сертификат, если нет, то добавьте его. Проверить можно на вкладке System – Certificate Manager – Cas. Настройку VPN выполняем в менеджере настройки VPN – OpenVPN – Wizards. Сервер указываем как Local User Access:
Далее указывается созданный CA:
Создаем сертификат сервера или указываем его, если создан ранее:
Большинство настроек можно оставить по умолчанию и только задать Tunnel Network, которая будет выдаваться клиенту. Далее ставим галки для добавления правил, заканчивая мастер настройки:
Далее нам нужно выгрузить конфиг из VPN – OpenVPN – Client Export, где указываем созданные OpenVPN-сервер в Remote Access Server. Прокрутив ниже, видим ссылки на конфиг и клиента:
Установка на Windows клиента не должна вызвать сложностей — это стандартная пошаговая установка.
После установки клиента и импорта конфигурации сможем увидеть подключенный клиент во вкладке Status — OpenVPN:
Установка Snort
На pfSense есть возможность интеграции с системой обнаружения вторжений Snort. Разберем шаги настройки. Устанавливаем пакет через System – Package Manager:
Далее настройка проводится в Services – Snort.
Выполняем обновление баз в Services – Snort – Updates.
Добавляем интерфейс для проверки: Services – Snort –
Interfaces. Там же, после выполнения настроек службы, можно ее и запустить в
столбце Snort Status. Для теста запускаем Nmap-сканирование
на интерфейс и проверяем в алертах, есть ли сработки:
Использование Nmap
Кстати, сканер портов Nmap можно настроить и на самом pfSense. Очень удобно использовать данный функционал в одном месте и с удобным интерфейсом. Как и в предыдущих примерах, устанавливаем пакет через Package Manager и переходим в Diagnostics – Nmap, где задаем адрес сканируемого хоста, метод и параметры:
После завершения сканирования результат отобразится в View Results.
Разбирая подобные примеры, приведенные выше, вы сможете лучше разобраться с логикой работы функционала подобных систем и немного набить руку.
Разумеется, указанными системами не ограничиваются знания о межсетевом экранировании. Любая практика на аналогичных системах будет плюсом и закрепит теоретические знания. Помимо этого, при выполнении заданий будет появляется понимание, как учить смежные системы.
Поделюсь еще советами, которые могут помочь начинающим в ИБ
Реальный опыт можно получить в процессе прохождения стажировки. Многие крупные компании проводят такие мероприятия с предложением последующего трудоустройства.
Старайтесь участвовать в любых ИБ-мероприятиях (CTF, Bug Bounty), либо ведите блог, или сделайте упор на получение сертификатов — все это поможет изучить теорию и показать свой интерес к индустрии на собеседовании.
Практически все компании имеют программы для высших учебных заведений. Проверьте эту информацию в интересующей вас компании — таким образом можно получить любую версию ПО их продукта для тестов.
Ищите варианты самообразования в соцсетях. В процессе мониторинга информационных ресурсов, в том числе Телеграм-каналов, YouTube-каналов, можно узнать много нового в сфере ИБ. А российские дистрибьюторы снимают целые циклы обучающих видеороликов по СЗИ.
Рекомендую тщательно выбирать тему дипломной работы в высшем учебном заведении — она должна быть актуальной и соответствовать реалиям. Правильно выбранная тема, связанная с СЗИ, даст возможность освоить фундаментальную теоретическую базу по выбранной теме.
Если вас привлекает конкретный работодатель, то вы можете заранее изучить, какие имеются вакансии и что нужно получить для того, чтобы походить на идеального кандидата. Работодатель при проведении собеседования с соискателем обращает внимание на знание не только конкретных СЗИ, но и на наличие сертификатов в сфере ИБ, знание иностранных языков, опыт участия в конференциях, наличие публикаций в журналах или блогах. Чем больше может предложить потенциальный сотрудник, тем больше уверенности у работодателя в том, что он легко адаптируется и быстро начнет выполнять поставленные задачи на должном уровне.
Пишите в комментариях пожелания, на какие темы еще хотите увидеть посты о доступных СЗИ. Чтобы облегчить выбор, предлагаем пройти опрос.
Георгий Марков
Ведущий инженер по информационной безопасности "Инфосистемы Джет"