Всем доброго дня. В этой статье я расскажу и покажу все известные мне способы защитить ваш Fortigate от уязвимости CVE-2018-13379 (кроме очевидного обновления до последней версии). Подтолкнуло написать именно сейчас (уязвимость 3-x летней давности) два события - увлекательный рассказ на соседнем форуме рансомщиков о проникновении в сеть японской Capcom через такой вот непатченный Fortigate, с комментарием автора "... фортики фортики, их на всю жизнь хватит ...", и очередной слив Groov-ом деталей 85000 уязвимых фортиков по всему миру.
Пару слов для тех кто не в курсе - уязвимость позволяет атакующему без какой либо аутентикации скачать/просмотреть системные файлы самого межсетевого экрана (далее МСЭ) удаленно по https. А конкретнее, взломщик может скачать кэш SSL VPN который содержит в текстовом виде аккаунты и их пароли пользователей которые подсоединялись к этому Fortigate по VPN SSL. Все что для этого требуется, например в curl (где 192.1.1.1 это адрес уязвимого форти):
Уязвимость опубликована в 2018, паблик эксплойт доступен как минимум с начала 2019 а может и раньше. Решение производителя (Fortinet) — это обновление операционной системы Fortigate до 5.4.12, 5.6.7, или 6.0.4. К сожалению, жизнь показывает, что не так все просто с этим, казалось бы, «простым» решением.
У фортика нет никаких проблем работать на ЛЮБОМ высоком порте (кроме 3-4х уже используемых - 5247, 8001). Так можно изменить порт, например на порт 13007:
или в CLI:
Это изменение не требует рестарта. Единственное замечание – если удаленные работники работают из гостиниц/кафе/итд, то там как правило закрыты все исходящие порты кроме 80, 443 и изменение порта на нестандартный может повлиять на них.
Шаг 1 – установите через какой почтовый сервер посылать одноразовый пароль System -> Settings:
То же в CLI:
Шаг 2 – включите MFA через email для пользователя (тут dorothygale), только через CLI:
Результат:
Теперь только после успешного ввода пароля пользователь получит на емейл дополнительно одноразовый код и требование в VPN клиенте ввести его.
1. Создайте новый объект типа Geography в Policy & Objects -> Addresses и присвойте ему значение подходящей страны, тут Казахстан
2. Теперь установите его в VPN Settings:
Дополнительный способ это использовать списки Tor Exit нодов как текстовый файл в External Threat Feed. Сам список можно брать например
Теперь, если взломщик с угнанным аккаунтом подключится когда законный пользователь подключен, это отключит самого законного пользователя, что будет очень ему заметно.
Правда, подключаясь повторно, пользователь получит предупреждение:
Получив слитый в интернет аккаунт/пароль и подключившись к VPN SSL, 99% взломщиков со своей локальной машины запустят сетевой скан/поиск расшаренных папок/удаленное исполнение WMI/PowerShell и.т.д. Все это можно предотвратить разрешая правилами безопасности в Fortigate пользователям попасть только на определенные хосты и по определенным протоколам. Если ничего другого, так хотя бы ограничьте доступ только к определенным хостам/терминальному серверу по RDP и закройте другие протоколы.
И напоследок – где можно достать свежую версию прошивки для Fortigate. Если у вас нет активной подписки на сайте support.fortinet.com то скачать образ новой прошивки не получится – после регистрации и всех дисклеймеров даст ошибку. В таких случаях можно обратиться к коммуне, вот некоторые места.
Это все на сегодня – применение всех или большинства вышеописанных мер защитит ваш фортик и вас от многих неприятностей. Всем хорошего дня и берегите себя.
Полиглот.
Пару слов для тех кто не в курсе - уязвимость позволяет атакующему без какой либо аутентикации скачать/просмотреть системные файлы самого межсетевого экрана (далее МСЭ) удаленно по https. А конкретнее, взломщик может скачать кэш SSL VPN который содержит в текстовом виде аккаунты и их пароли пользователей которые подсоединялись к этому Fortigate по VPN SSL. Все что для этого требуется, например в curl (где 192.1.1.1 это адрес уязвимого форти):
curl -k https://192.1.1.1:10443//remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession --output -
Уязвимость опубликована в 2018, паблик эксплойт доступен как минимум с начала 2019 а может и раньше. Решение производителя (Fortinet) — это обновление операционной системы Fortigate до 5.4.12, 5.6.7, или 6.0.4. К сожалению, жизнь показывает, что не так все просто с этим, казалось бы, «простым» решением.
- Скачать обновленную версию с сайта Фортинет могут только клиенты с активной подпиской на такой сервис (далее расскажу как достать обновленные прошивки без подписки и бесплатно).
- Обновленные прошивки доступны не для всех моделей Fortigate, чем старше модель тем раньше Фортинет прекращают выпускать обновления для них.
- Клиенты SMB уровня как правило не имеют собственного штата IT, а пользуются аутсорсингом сторонних интеграторов. Как следствие, часто такие клиенты не знают не то что версию и обновленность своего МСЭ, но понятия не имеют какой МСЭ у них установлен. Соответственно, у таких клиентов форти будет стоять непатченный годами.
Измените всем известный порт сервиса VPN SLL (443/10443)
Все дампы уязвимых фортиков, если вы обратили внимание, включают только фортики у которых VPN SSL сервис доступен на портах 443 или 10443. Исключительно, то есть 100% всех публичных сливов. Это легко объяснить – вся документация Фортинета дает примеры используя порт 10443, и немногие администраторы его меняют. Взломщикам даже сканировать интернет для поиска не надо – поиск в Shodun по слову Fortinet нашел 95000 целей рансома для ленивых.У фортика нет никаких проблем работать на ЛЮБОМ высоком порте (кроме 3-4х уже используемых - 5247, 8001). Так можно изменить порт, например на порт 13007:
или в CLI:
Код:
config vpn ssl settings
set port 13007
end
Это изменение не требует рестарта. Единственное замечание – если удаленные работники работают из гостиниц/кафе/итд, то там как правило закрыты все исходящие порты кроме 80, 443 и изменение порта на нестандартный может повлиять на них.
Не создавайте локальных пользователей на Fortigate.
Когда вся необходимая взломщику информация находится в одной коробке, это плохо, очень плохо. Уязвимость CVE-2018-13379 относится только к локальным учетным записям. Аккаунты хранимые на другом оборудовании (например Домен Контроллер) или аккаунты хранимые на Форти но их пароли нет (тот же LDAP/Radius) этой уязвимости НЕ ПОДВЕРЖЕНЫ. Fortigate это периметр МСЭ, открытый интернету и всем входящим атакам, храните как можно меньше информации на нем. Касается этой и будущих уязвимостей.Включите многофакторную аутентикацию для VPN пользователей.
Включив MFA вы также делаете эту уязвимость не актуальной для вашего МСЭ. В Fortigate есть несколько возможностей MFA – SMS, Mobile FortiToken, email, сертификат PKI. Самый надежный способ это мобильный FortiToken, но он стоит денег. Если нет денег – то email как раз для вас (PKI надежнее, но намного больше головной боли с поддержкой). После введения пароля пользователь получит на заранее установленный для него в Fortigate почтовый ящик одноразовый пароль. Теперь взломщику нужен не только слитый пароль аккаунта VPN в Fortigate, но и контроль над почтовым ящиком пользователя, что отрубит 95% взломщиков-халявщиков.Шаг 1 – установите через какой почтовый сервер посылать одноразовый пароль System -> Settings:
То же в CLI:
Код:
config system email-server
set reply-to fortitoken@mycompany.com
set server smtp.yandex.com
set port 465
set authenticate enable
set username vasyapupkin@yandex.ru
set password secretp@ssword
set security smtps
end
Шаг 2 – включите MFA через email для пользователя (тут dorothygale), только через CLI:
Код:
config user local
edit " dorothygale "
set type password
set two-factor email
set email-to " dorothygale@mycompany.com"
next
end
Результат:
Теперь только после успешного ввода пароля пользователь получит на емейл дополнительно одноразовый код и требование в VPN клиенте ввести его.
Разрешите доступ к VPN SSL порталу только со статических адресов IP.
Для тех (согласен – редких) случаев когда пользователи подсоединяются к VPN с одних и тех же адресов, есть возможность дать только им доступ к порталу. Все остальные не получат даже поле ввода пользователя/пароля.Более мягкий вариант сказанного выше – ограничьте доступ к VPN порталу по GeoIP локации.
Да, с изобилием Anonymizing VPN (ProtonVPN, NordVPN, Express VPN …) сегодня это так себе защита, но нервы взломщикам попортить может. Обычно VPN-ом пользуются работники находящиеся в определенной стране. И, если все ваши работники скажем в Казахстане, то нет смысла разрешать всему миру попадать на ваш VPN портал. Делается это так:1. Создайте новый объект типа Geography в Policy & Objects -> Addresses и присвойте ему значение подходящей страны, тут Казахстан
2. Теперь установите его в VPN Settings:
Заблокируйте всякий доступ к чему либо в вашей сети из Tor Exit node-в.
Тоже, отрубит 95% кулхацкеров-брутеров. Fortigate имеет встроенный объект включающий все адреса Tor Exit нодов – «Tor-Exit node». Делается это так, в Policy & Objects -> Firewall Policy создаем новую политику где источником ставим объект Tor-Exit.Node и блок как действие.Дополнительный способ это использовать списки Tor Exit нодов как текстовый файл в External Threat Feed. Сам список можно брать например
Ссылка скрыта от гостей
.Используйте доверенный сертификат SSL/TLS для VPN портала.
Ваши пользователи вам не враги, они просто делают то что привыкли делать. Приучите юзеров заходить на портал по
Ссылка скрыта от гостей
(а не по
Ссылка скрыта от гостей
) и НЕ получать от браузера ошибку сертификата, и поверьте моему опыту – на первой же попытке MiTM кулхацкера подменить им портал/сертификат, вы первый узнаете от них об этом. У кого нет денег Let’s Encrypt был и останется бесплатным. А начиная с FortiOS 7 (2021), Фортинет запилили certbot прямо в Fortigate и всю процедуру запроса/получения сертификата у Let’ Encrypt можно делать за два клика прямо в Fortigate. Так например можно попросить Let’s Encrypt выдать нам сертификат (System -> Certificates -> Import Local …) для домена myvpn.mycompany.com автоматически. После получения сертификата можно указать Fortigate использовать его в VPN -> SSL Settings.Посылайте себе емейл-алерт на каждое успешное подключение пользователей по VPN.
Немного параноидально, но как известно только параноики выживут. У Fortigate есть возможность автоматических действий на определенные типы логов. Один из логов это создание туннеля при подключении пользователя. Предварительно надо сконфигурировать почтовый сервер как я описывал выше.Отключите возможность подсоединяться одним аккаунтом больше одного раза параллельно.
К сожалению, по умолчанию каждый пользователь может подсоединиться к VPN сколько угодно раз без отключения уже установленных сессий. Отключается эта возможность легко: VPN -> SSL Portals -> Edit …Теперь, если взломщик с угнанным аккаунтом подключится когда законный пользователь подключен, это отключит самого законного пользователя, что будет очень ему заметно.
Правда, подключаясь повторно, пользователь получит предупреждение:
'You already have an open ssl vpn connection , opening multiple connections are not permitted. If you proceed, your other connection will be disconnected'
Ограничьте политики безопасности по адресам IP и сервисам в локальной сети.
Получив слитый в интернет аккаунт/пароль и подключившись к VPN SSL, 99% взломщиков со своей локальной машины запустят сетевой скан/поиск расшаренных папок/удаленное исполнение WMI/PowerShell и.т.д. Все это можно предотвратить разрешая правилами безопасности в Fortigate пользователям попасть только на определенные хосты и по определенным протоколам. Если ничего другого, так хотя бы ограничьте доступ только к определенным хостам/терминальному серверу по RDP и закройте другие протоколы.
И напоследок – где можно достать свежую версию прошивки для Fortigate. Если у вас нет активной подписки на сайте support.fortinet.com то скачать образ новой прошивки не получится – после регистрации и всех дисклеймеров даст ошибку. В таких случаях можно обратиться к коммуне, вот некоторые места.
- Fortinet Community в телеграмме на русском Fortinet Community - чат серьезных профи по Фортикам, просьба не спамить, но когда люди вежливо просили то не помню чтоб отказали в помощи найти обновленную прошивку.
- Fortinet Experts Fortinet Experts тоже телеграмм но на английском и в основном индийские спамеры просят дампов на экзамены Фортинета, но видел люди просили и им посылали прошивки.
-
Ссылка скрыта от гостейтут правилами запрещено просить прошивки но видел что не сильно кто-то следит за выполнением и люди выкладывали.
Это все на сегодня – применение всех или большинства вышеописанных мер защитит ваш фортик и вас от многих неприятностей. Всем хорошего дня и берегите себя.
Полиглот.
Последнее редактирование модератором: