Всем доброго дня. В этой статье я расскажу и покажу все известные мне способы защитить ваш 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. Сам список можно брать например https://secureupdates.checkpoint.com/IP-list/TOR.txt .
Теперь, если взломщик с угнанным аккаунтом подключится когда законный пользователь подключен, это отключит самого законного пользователя, что будет очень ему заметно.
Правда, подключаясь повторно, пользователь получит предупреждение:
Получив слитый в интернет аккаунт/пароль и подключившись к 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. Сам список можно брать например https://secureupdates.checkpoint.com/IP-list/TOR.txt .
Используйте доверенный сертификат SSL/TLS для VPN портала.
Ваши пользователи вам не враги, они просто делают то что привыкли делать. Приучите юзеров заходить на портал по https://myvpn.mycompany.com:13007 (а не по https://5.173.136.72:13007) и НЕ получать от браузера ошибку сертификата, и поверьте моему опыту – на первой же попытке 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 тоже телеграмм но на английском и в основном индийские спамеры просят дампов на экзамены Фортинета, но видел люди просили и им посылали прошивки.
- r/fortinet тут правилами запрещено просить прошивки но видел что не сильно кто-то следит за выполнением и люди выкладывали.
Это все на сегодня – применение всех или большинства вышеописанных мер защитит ваш фортик и вас от многих неприятностей. Всем хорошего дня и берегите себя.
Полиглот.
Последнее редактирование модератором: