Как заблокировать внешнюю атаку с помощью FortiGate и Flowmon ADS
Как заблокировать внешнюю атаку с помощью FortiGate и Flowmon ADS 06.05.2021 14:00
Часто возникает вопрос — как использовать Flowmon для блокирования атаки? Flowmon не является встроенным устройством, стоящим на пути входящего трафика, поэтому он сотрудничает со сторонними поставщиками, которые поставляют оборудование, такое как брандмауэры или унифицированные шлюзы безопасности.
В этой статье мы рассмотрим, как настроить брандмауэр Fortinet FortiGate на блокировку трафика в ответ на обнаруженную с помощью Flowmon ADS аномалию или атаку. Эта конкретная интеграция предназначена для автоматической блокировки трафика брандмауэром и остановки его по периметру.
Что вам понадобится
Скрипты интеграции доступны для загрузки с нашего партнерского портала. Также опубликована и полная документация.
В настоящее время интеграция работает только с диапазонами адресов IPv4, так как для достижения этой цели с помощью IPv6 потребуется еще один вызов API для создания объекта адреса, но в действительности это зависит от вашего сетевого подключения. Если у вас есть только IPv4, доступный на WAN-интерфейсе, то нет необходимости в блокировке IPv6.
Подготовка
Один из способов блокировать атаки на устройстве FortiGate с включенной службой IPSec VPN — это настройка политики локального входа. По умолчанию политика локального входа разрешает доступ ко всем адресам, но вы можете создавать группы адресов для блокировки определенных IP-адресов. Одна такая группа может содержать до 600 IP-адресов, хотя ограничение будет варьироваться между отдельными платформами. Существует таймер, который удалит IP-адреса из списка через заданный период, чтобы сделать ротацию списка и сохранить его коротким.
Теперь, чтобы заставить Flowmon ADS блокировать IP-адреса, вам нужно видеть сетевой трафик до того, как он достигнет FortiGate.
Другими словами, вам нужны данные NetFlow / IPFIX от зонда Flowmon Probe, размещенного перед межсетевым экраном. Не рекомендуется использовать сам FortiGate для получения этих данных, потому что его flow-данные не содержат флаги TCP, а это означает, что многие методы обнаружения не дадут надежных результатов. Это касается даже последней версии FortiOS 6.4.
Когда у вас есть источник flow-данных и ваш Flowmon ADS настроен для обнаружения аномалий, вы можете установить упомянутый выше пользовательский пакет скриптов. Он использует вызовы REST API для создания адресных объектов из событий Flowmon ADS в FortiGate и сохраняет базу данных ранее заблокированных IP-адресов для дальнейшего использования.
Этот Python скрипт требует дополнительной библиотеки, которую вы обычно не найдете на своем устройстве Flowmon, но вы можете найти ее в пакете и установить там.
Установка
Во-первых, загрузите пакет (ag-mitigation.tar.gz) и импортируйте его через Configuration Center, как и любой другой программный пакет Flowmon. Тогда он будет находиться в /data/components/fgt-mitigation/.

Список установленных пакетов в Центре конфигурации Flowmon
Пакет содержит конфигурационный файл и два скрипта: ag-mitigation.py отвечает за блокировку и потребует загрузки в Flowmon ADS (см. ниже), а другой, ag-timeout.py, удаляет заблокированные адреса с помощью таймаута.
После установки вы сможете запустить/остановить скрипт таймаута из пользовательского интерфейса. Он использует базу данных SQLite3 для хранения информации о заблокированных IP-адресах и их времени жизни в этих записях. Вы можете настроить, как долго они должны оставаться на месте и, изменив планировщик cron, как часто должен выполняться скрипт.
Затем вам нужно включить локальную политику входа в FortiGate с действием по умолчанию, чтобы блокировать любой трафик в группе Flowmon ADS, работающей всегда.

Консоль FortiGate с настроенной политикой локального входа
В начале эта группа состоит всего из одной записи, которая в основном означает «нет IP-адреса». Это происходит только потому, что группа FortiGate не может быть пустой, и эта одна запись ничего не блокирует.

Веб — интерфейс конфигурации FortiGate с группой адресов, настроенной для скрипта
Затем настройте один интерфейс мониторинга устройства Flowmon, подключенного к коммутатору управления в качестве WAN-порта для FortiGate. Это позволяет собирать весь трафик, проходящий через точку наблюдения, и видеть любую атаку на IP-адреса FortiGate WAN.
Используя конфигурацию Flowmon ADS, загрузите скрипт без каких-либо параметров и добавьте его в качестве пользовательского сценария запуска для работы с возможными проблемами безопасности при обнаружении события средней серьезности или выше.

Настройка пользовательского скрипта Flowmon ADS
Блокирование
Прежде чем любая атака будет заблокирована, вы можете легко пропинговать WAN IP-адрес FortiGate. На рисунке ниже приведен пример мирного сценария, когда входящий трафик пропускается.

Успешная команда ping с IP — адресом FortiGate
При запуске скрипта информация в FortiGate обновляется через REST API, включая диапазон IP-адресов или определение подсети и включение в группу адресов Flowmon ADS.

IP-адрес, добавленный Flowmon ADS с идентификатором события

Событие также появляется в группе адресов
Теперь список обновлен, и машина с IP-адресом 192.168.47.79 больше не может пинговать FortiGate или подключаться к нему ни на одном из своих портов. Это означает, что брандмауэр блокирует его на основе инструкций от Flowmon ADS.

Команда ping без ответа
Скрипт таймаута используется для очистки списка заблокированных IP-адресов. После нескольких итераций сценария тайм-аута все возвращается в исходное состояние.

Многократное выполнение сценария таймаута
На приведенном выше экране показано, что в группу был добавлен еще один IP-адрес. Он будет храниться в базе данных как целочисленный тип для облегчения манипуляций.
В заключение
Это один из способов использования Flowmon в сочетании со сторонним встроенным устройством для автоматической минимизации последствий атак. Другой вариант — вы также можете использовать стандартную политику брандмауэра, где вы можете использовать дополнительный IP-адрес для интерфейса обратной связи, чтобы нежелательный трафик мог быть заблокирован. Все дело в приспособлении продуктов к вашим потребностям и обстоятельствам.
TravelingPacket – A blog of network musings
Fortigate 6.0 Adding and removing IPs from Quarantine list
Starting in 5.4.1 you could “Quarantine” an IP address. This means that the quarantined host cannot communicate through the firewall.
There are many different parts of the firewall the quarantine an IP address. For example the AV and IPS can both automatically quarantine an IP if it meets a defined violation.
In 6.0 you can view the IPs that have been quarantined by going to Monitor- Quarantine. From here you can see what IPs are blocked, and for what reason. As you can see in the image below 5.188.86.10 has been blocked for 26 days by an admin. If an admin blocks an IP address (as we will see) it shows up with “Administrative” as the source.The other IPs have been blocked by the IPS engine. The below image shows the monitor section.

So, lets say that you look into Fortiview and see that a remote IP is sending/receiving a ton of bandwidth and you want make sure that stops. in this example lets quarantine the IP 67.247.21.7.
In this example we can act like I was looking through Fortiview and found an issue that makes me want to block the above IP. You can just click on the IP you would like to block, right click and then select to “quarantine”. When you do this, it will pop up and ask for the length of time you would like to block them for.

The above shows that it will ban the IP from communication for the given period of time.
So, lets say we want to remove an IP address that has been quarantined – No problem, just need to go to Monitor-Quarantine and click on the IP and delete that individual or click to delete all entries.

You can modify how long and for what reason the IPS/AV quarantine an address for within the policy. For example, below shows modifying the reason/time of quarantine. The AV settings are within the CLI of the AV policy under “nac-quar”. Something to note, sources are not quarantined by default.
6. Fortinet Getting Started v6.0. Web Filtering и Application Control

Приветствую! Добро пожаловать на шестой урок курса Fortinet Getting Started. На прошлом уроке мы освоили основы работы с технологией NAT на FortiGate, а также выпустили нашего тестового пользователя в Интернет. Теперь пришло время позаботиться о безопасности пользователя на его просторах. В данном уроке мы рассмотрим следующие профили безопасности: Web Filtering, Application Control, а также HTTPS инспекцию.
Для того, чтобы начать знакомство с профилями безопасности, нам необходимо разобраться еще с одной вещью — режимами инспекции.
По умолчанию используется Flow Based режим. Он проверяет файлы, когда они проходят через FortiGate без буферизации. Как только пакет пребывает, он обрабатывается и передается дальше, без ожидания получения целого файла или веб страницы. Он требует меньше ресурсов и обеспечивает большую производительность, чем Proxy режим, но в то же время в нем доступен не весь Security функционал. Например, систему предотвращения утечки данных (DLP) можно использовать только в Proxy режиме.
Proxy режим работает по другому. Он создает два TCP соединения, одно между клиентом и FortiGate’ом, второе между FortiGate’oм и сервером. Это позволяет ему буферизировать трафик, т.е получать полный файл или веб страницу. Сканирование файлов на различные угрозы начинается только после того, как забуферизировался весь файл. Это позволяет применять дополнительные возможности, которые недоступны во Flow based режиме. Как видите, этот режим будто бы противоположность Flow Based — безопасность здесь играет главную роль, а производительность отходит на второй план.
Очень часто спрашивают — какой режим лучше? Но здесь нет общего рецепта. Все всегда индивидуально и зависит от ваших потребностей и задач. Я же далее в течение курса постараюсь показать отличия профилей безопасности во Flow и Proxy режимах. Это поможет сравнить функционал и решить, что лучше подойдет вам.
Перейдем непосредственно к профилям безопасности и первым рассмотрим Web Filtering. Он помогает контролировать или отслеживать, какие веб сайты посещают пользователи. Думаю, не стоит углубляться в объяснения необходимости такого профиля в нынешних реалиях. Лучше разберемся, как он работает.

После того, как установлено TCP соединение, пользователь с помощью запроса GET запрашивает содержимое определенного веб сайта.
Если веб сервер отвечает положительно, он отсылает информацию о веб сайте в ответ. Здесь в дело вступает веб фильтр. Он проверяет содержимое данного ответа.Во время проверки FortiGate в режиме реального времени отправляет запрос в FortiGuard Distribution Network (FDN), чтобы определить категорию данного веб сайта. После определения категории конкретного веб сайта, веб фильтр, в зависимости от настроек выполняет конкретное действие.
Во Flow режиме доступно три действия:
- Allow — разрешить доступ к веб сайту
- Block — запретить доступ к веб сайту
- Monitor — разрешить доступ к веб сайту и записать это в логи
- Warning — выдавать пользователю предупреждение о том, что он пытается посетить определенный ресурс и дать пользователю выбор — продолжить или уйти с веб сайта
- Authenticate — запросить учетные данные пользователя — это позволяет разрешить определенным группам доступ к запрещенным категориям веб сайтов.
Про Application Control можно сказать совсем немного. Из названия видно, что он позволяет контролировать работу приложений. А делает он это с помощью паттернов различных приложений, так называемых сигнатур. По этим сигнатурам он может определить конкретное приложение и применить к нему определенное действие:
- Allow — разрешить
- Monitor — разрешить и записать это в логи
- Block — запретить
- Quarantine — записать событие в логи и заблокировать IP адрес на определенное время

Теперь рассмотрим механизм HTTPS инспекции. Согласно статистике за конец 2018 года доля HTTPS трафика превысила 70%. То есть, без использования HTTPS инспекции мы сможем проанализировать только около 30% ходящего по сети трафика. Для начала рассмотрим работу HTTPS в грубом приближении.
Клиент инициирует TLS запрос к веб серверу и получает TLS ответ, а также видит цифровой сертификат, который должен быть доверенным для данного пользователя. Это тот необходимый минимум, который нам нужно знать про работу HTTPS, на самом деле схема его работы намного сложнее. После успешного TLS хэндшейка начинается передача данных в зашифрованном виде. И это хорошо. Никто не может получить доступ к данным, которыми вы обмениваетесь с веб сервером.

Однако для безопасников компаний это настоящая головная боль, поскольку они не могут видеть этот трафик и проверять его содержимое ни антивирусом, ни системой предотвращения вторжений, ни DLP системами, ничем. Также это негативно отображается на качестве определения используемых внутри сети приложений и веб ресурсов — как раз то, что относится к нашей теме урока. Решить данную проблему призвана технология HTTPS инспекции. Её суть весьма проста — фактически, устройство, которое занимается HTTPS инспекцией, организует атаку Man In The Middle. Выглядит это примерно следующим образом: FortiGate перехватывает запрос пользователя, организует с ним HTTPS соединение, и уже от себя поднимает HTTPS сессию с ресурсом, к которому обратился пользователь. При этом на компьютере пользователя будет виден сертификат, выпущенный FortiGate’ом. Он должен быть доверенным, чтобы браузер разрешил подключение.

На самом деле HTTPS инспекция вещь довольно непростая и имеет множество ограничений, но в рамках данного курса мы это рассматривать не будем. Добавлю лишь, что внедрение HTTPS инспекции — не минутное дело, обычно это занимает примерно месяц. Необходимо собрать информацию о необходимых исключениях, сделать соответствующие настройки, собрать обратную связь от пользователей, откорректировать настройки.
Приведенная теория, а также практическая часть представлены в данном видео уроке:
В следующем уроке мы рассмотрим другие профили безопасности: антивирус и систему предотвращения вторжений. Чтобы не пропустить его, следите за обновлениями на следующих каналах:
Threat Feed in Fortigate (external IP blacklist).
This post shows how to use external black or white list of IP addresses using a new feature called Threat Feed. Starting with FortiOS 6.2 it’s possible to import external IP address and Domain Name lists for using in Firewall Policies and DNS Filter profiles. FortiOS 6.0 allowed using imported lists in Proxy Polices, but not in Firewall Policies. I will use FortiOS 6.2.3 for demo purposes.
Before we start
It is recommended to use the latest version of FortiOS, because even version 6.2.1 contains some minor bugs related to Threat Feed. For example, one of the problems with 6.2.1 is that it won’t work with HTTP servers using chunked transfer encoding.
Step 1. Create a list of IP addresses.
Create a text file which contains the list of IP addresses. The following list contains valid formats of IP addresses/subnets/ranges:
Step 2. Host the file on HTTP server
Upload the created file to your HTTP server, because Fortigate will download the file from the server via HTTP protocol. If you don’t know which web server to use you can read this post, which shows how to setup lightweight HTTP server using Chrome extension.
Check that your file is accessible via HTTP protocol. As you can see I can access my file with IP addresses using the following URL http://192.168.0.185:8887/blacklist.txt :

Step 3. Create a Threat Feed
Go to Security Fabric -> Fabric Connectors and click on Create New.
Scroll down to Threat Feeds category and select IP address.

Set the Name and the URI of external resource to configure the Threat Feed. Disable HTTP authentication if you don’t use one. Click OK to save. Use the screenshot for reference:

Step 4. Verify the status of a new Threat Feed.
After you create the new Threat Feed you should see it in Security Fabric -> Fabric Connectors. Make sure it has a green up arrow which means it successfully downloaded the text file:

You can also right-click the new Thread Feed and select View Entries. You should see the imported entries like this:

Step 5. Use the Threat Feed in a policy
Go to Policy&Objects -> IPv4 Policy and create a new policy. Now you can add the newly created Threat Feed as a Source or Destination. As you can see on the image below the Blacklist resource was added to the list of available entries to choose from:

You can hover the mouse over the Threat Feed resource and will see the details just like with any other entry:

Conclusion
Now you know how to create your own black or white list of IP addresses and use it in your firewall policies. Thank you for reading.