Статья Fortigate SSL VPN CVE-2018-13379 - защитите свой Фортигейт и свою сеть от этой и будущих уязвимостей

Всем доброго дня. В этой статье я расскажу и покажу все известные мне способы защитить ваш Fortigate от уязвимости CVE-2018-13379 (кроме очевидного обновления до последней версии). Подтолкнуло написать именно сейчас (уязвимость 3-x летней давности) два события - увлекательный рассказ на соседнем форуме рансомщиков о проникновении в сеть японской Capcom через такой вот непатченный Fortigate, с комментарием автора "... фортики фортики, их на всю жизнь хватит ...", и очередной слив Groov-ом деталей 85000 уязвимых фортиков по всему миру.

Пару слов для тех кто не в курсе - уязвимость позволяет атакующему без какой либо аутентикации скачать/просмотреть системные файлы самого межсетевого экрана (далее МСЭ) удаленно по 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. К сожалению, жизнь показывает, что не так все просто с этим, казалось бы, «простым» решением.

  1. Скачать обновленную версию с сайта Фортинет могут только клиенты с активной подпиской на такой сервис (далее расскажу как достать обновленные прошивки без подписки и бесплатно).
  2. Обновленные прошивки доступны не для всех моделей Fortigate, чем старше модель тем раньше Фортинет прекращают выпускать обновления для них.
  3. Клиенты SMB уровня как правило не имеют собственного штата IT, а пользуются аутсорсингом сторонних интеграторов. Как следствие, часто такие клиенты не знают не то что версию и обновленность своего МСЭ, но понятия не имеют какой МСЭ у них установлен. Соответственно, у таких клиентов форти будет стоять непатченный годами.
Такова ситуация на сегодняшний день и не думаю что она изменится в скором времени. Так мы подходим к методам защиты вашего Fortigate от этой и будущих уязвимостей.

Измените всем известный порт сервиса VPN SLL (443/10443)​

Все дампы уязвимых фортиков, если вы обратили внимание, включают только фортики у которых VPN SSL сервис доступен на портах 443 или 10443. Исключительно, то есть 100% всех публичных сливов. Это легко объяснить – вся документация Фортинета дает примеры используя порт 10443, и немногие администраторы его меняют. Взломщикам даже сканировать интернет для поиска не надо – поиск в Shodun по слову Fortinet нашел 95000 целей рансома для ленивых.

shodun-search-fortinet.png




У фортика нет никаких проблем работать на ЛЮБОМ высоком порте (кроме 3-4х уже используемых - 5247, 8001). Так можно изменить порт, например на порт 13007:

fortigate-change-default-ssl-vpn-port.png



или в 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:

fortigate-set-mail-server.png


То же в 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

Результат:

fortigate-set-email-as-mfa.png


Теперь только после успешного ввода пароля пользователь получит на емейл дополнительно одноразовый код и требование в VPN клиенте ввести его.

Разрешите доступ к VPN SSL порталу только со статических адресов IP.​

Для тех (согласен – редких) случаев когда пользователи подсоединяются к VPN с одних и тех же адресов, есть возможность дать только им доступ к порталу. Все остальные не получат даже поле ввода пользователя/пароля.

fortigate-limit-access-to-static-ip.png



Более мягкий вариант сказанного выше – ограничьте доступ к VPN порталу по GeoIP локации.​

Да, с изобилием Anonymizing VPN (ProtonVPN, NordVPN, Express VPN …) сегодня это так себе защита, но нервы взломщикам попортить может. Обычно VPN-ом пользуются работники находящиеся в определенной стране. И, если все ваши работники скажем в Казахстане, то нет смысла разрешать всему миру попадать на ваш VPN портал. Делается это так:

1. Создайте новый объект типа Geography в Policy & Objects -> Addresses и присвойте ему значение подходящей страны, тут Казахстан

fortigate-create-geoip.png



2. Теперь установите его в VPN Settings:

fortigate-limit-access-to-geoip.png



Заблокируйте всякий доступ к чему либо в вашей сети из Tor Exit node-в.​

Тоже, отрубит 95% кулхацкеров-брутеров. Fortigate имеет встроенный объект включающий все адреса Tor Exit нодов – «Tor-Exit node». Делается это так, в Policy & Objects -> Firewall Policy создаем новую политику где источником ставим объект Tor-Exit.Node и блок как действие.

fortigate-block-tor.png



Дополнительный способ это использовать списки 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.

fortigate-lets-encrypt.png



Посылайте себе емейл-алерт на каждое успешное подключение пользователей по VPN.​

Немного параноидально, но как известно только параноики выживут. У Fortigate есть возможность автоматических действий на определенные типы логов. Один из логов это создание туннеля при подключении пользователя. Предварительно надо сконфигурировать почтовый сервер как я описывал выше.




Отключите возможность подсоединяться одним аккаунтом больше одного раза параллельно.​

К сожалению, по умолчанию каждый пользователь может подсоединиться к VPN сколько угодно раз без отключения уже установленных сессий. Отключается эта возможность легко: VPN -> SSL Portals -> Edit …

fortigate-limit-number-of-connects.png



Теперь, если взломщик с угнанным аккаунтом подключится когда законный пользователь подключен, это отключит самого законного пользователя, что будет очень ему заметно.
Правда, подключаясь повторно, пользователь получит предупреждение: '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 тоже телеграмм но на английском и в основном индийские спамеры просят дампов на экзамены Фортинета, но видел люди просили и им посылали прошивки.
  • тут правилами запрещено просить прошивки но видел что не сильно кто-то следит за выполнением и люди выкладывали.

Это все на сегодня – применение всех или большинства вышеописанных мер защитит ваш фортик и вас от многих неприятностей. Всем хорошего дня и берегите себя.

Полиглот.
 
Последнее редактирование модератором:
Вот за чатики спасибо. Откликнулся добрый человек и скинул прошивку)
 
  • Нравится
Реакции: Polyglot
Вот за чатики спасибо. Откликнулся добрый человек и скинул прошивку)
Более того, там действительно много толковых людей, которые помогают решить проблему.

В догонку
Описывает как настроить The default login-attempt-limit for SSL VPN users is 2 and the login-block-time is 60 seconds., можно изменить время блокировки и количество попыток.



ПС: за статью спасибо. Приятно удивлен, что добавили сертбота (его года два просили сделать), но при этом никто о нем в релизах особо не упоминал (я был на презентации форти ос 7 и там ни слова об этой отличной фиче).
ППС: иногда действительно сложно обновить железку, особенно когда это какой то удаленный датацентр, а я на себе прочувствовал, что такое развал сд-ван при обновлении прошивки. (6.2 > 6.4)
 
Последнее редактирование:
  • Нравится
Реакции: Polyglot
ППС: иногда действительно сложно обновить железку, особенно когда это какой то удаленный датацентр, а я на себе прочувствовал, что такое развал сд-ван при обновлении прошивки. (6.2 > 6.4)
Да с этим багом они себя превзошли - отрубить интернет через который админ и подсоединен )). Я с давних пор стараюсь и настаиваю чтоб клиент мне обеспечил ООБ доступ к фаерволу когда апдейтю, ну или согласиться с возможностью многочасового блекаута пока кто-нибудь до фаера доберется. Не всегда получается, приходилось рисковать и потом бухгалтеру/охраннику на месте объяснять сетевой кабель ("ну он как электрический но не черный и плотнее, похож на телефонный") или хуже - как сериальный ("ну голубой кабель такой") к компу аттачить и мне через ВиФи его anydesk/teamviewer давать, брр.
 
  • Нравится
Реакции: Dmitry888
Да с этим багом они себя превзошли - отрубить интернет через который админ и подсоединен )). Я с давних пор стараюсь и настаиваю чтоб клиент мне обеспечил ООБ доступ к фаерволу когда апдейтю, ну или согласиться с возможностью многочасового блекаута пока кто-нибудь до фаера доберется. Не всегда получается, приходилось рисковать и потом бухгалтеру/охраннику на месте объяснять сетевой кабель ("ну он как электрический но не черный и плотнее, похож на телефонный") или хуже - как сериальный ("ну голубой кабель такой") к компу аттачить и мне через ВиФи его anydesk/teamviewer давать, брр.
настраивать удаленно файрволл - к дороге!
(с) древняя админская примета :)
 
  • Нравится
Реакции: Dmitry888
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!