Здраствуйте дорогие коллеги! Сегодня нашей темой будет GlobalProtect на устройстве PaloAlto.

У нас схема вот такая: два фаервола PaloAlto — первый на стороне офиса, второй на стороне удалённого сегмента. Между ними зона провайдера (ISP). Внутри офиса находятся клиенты Win8 (192.168.1.3), Win6 (192.168.1.224) и MailServer (192.168.1.4). Со стороны удалёнки — RemoteUser (10.10.10.3) и сервер (10.10.10.224).
Задача настроить GlobalProtect, чтобы RemoteUser мог подключаться к офисной сети через VPN и работать с ресурсами, как будто он внутри LAN.

На интерфейсах eth1/1 и eth1/2 настроен Layer3, оба с профилем Allow_Ping. На eth1/1 IP 203.0.113.1/24, это зона ISP. На eth1/2 IP 192.168.1.1/24, зона Inside_Zone, шлюз для внутренних пользователей.

Дальше зоны: ISP, Inside_Zone и GP_Tunnel. Tunnel.1 и Tunnel.99 добавлены под зону GP_Tunnel.

В виртуальном роутере настроен дефолтный маршрут 0.0.0.0/0 через 203.0.113.2 по интерфейсу eth1/1, это наш выход наружу.

DHCP включен на интерфейсе eth1/2. Пул адресов 192.168.1.5–192.168.1.254, шлюз 192.168.1.1, DNS 8.8.8.8. Пользователи внутри сети получают IP автоматически. После этого проверяем связность пингуем с клиентов шлюз 192.168.1.1 и внешний адрес 8.8.8.8. Если всё нормально, значит базовая сетка работает и можно переходить к настройке GlobalProtect.

Сначала создаём портал GlobalProtect. В разделе Network Settings выбираем интерфейс ethernet1/1, указываем IP 203.0.113.1/24. Это адрес, по которому клиенты будут подключаться. В Appearance оставляем всё по умолчанию — factory-default. В Log Settings включаем логирование неуспешных SSL-рукопожатий, чтобы видеть ошибки при подключении.

Дальше вкладка Authentication. Для Server Authentication выбираем SSL/TLS Service Profile (в примере SSL_TLS_SP). Для Client Authentication создаём профиль GP_Client_Auth, тип LocalAuthDB, чтобы пользователи могли логиниться по локальной базе. В настройках указываем поля Username и Password, сообщение при входе “Enter login credentials”. Сертификаты пока не трогаем.



Затем в разделе Agent → Configs добавляем External Gateway. Имя External_Gateway, тип IP, адрес 203.0.113.1, приоритет Highest. Это тот же интерфейс, что слушает портал.

После портала создаём шлюз. В Network Settings тоже ethernet1/1, IP 203.0.113.1/24. В логах включаем фиксацию неуспешных SSL-рукопожатий.

После этого портал и шлюз связаны, и клиент сможет подключаться по GlobalProtect с использованием логина и пароля из LocalAuthDB.

В разделе Authentication добавляем профиль LocalUserAuth. Тип OS — Any, Authentication Profile — LocalAuthDB. Это значит, что логин и пароль берутся из локальной базы пользователей на фаерволе.
Поля Username и Password оставляем стандартными, сообщение при входе — “Enter login credentials”. Внизу выбираем вариант “No (User Credentials AND Client Certificate Required)” — потому что клиентские сертификаты сейчас не используем, только логин и пароль.
После этого сохраняем настройки. Шлюз готов принимать подключения через GlobalProtect с локальной авторизацией.

Дальше настраиваем клиентов для подключения. В разделе Agent → Client Settings добавляем группу GP_Clients. Пользователи — any, ОС — any, то есть подключаться сможет любой, кто введёт правильный логин и пароль.
В IP Pool задаём диапазон адресов, которые будут выдаваться подключённым клиентам — 192.168.1.50–192.168.1.100. Эти адреса не должны пересекаться с другими устройствами в локальной сети.
После сохранения этой настройки клиенты GlobalProtect при подключении будут получать IP из этого пула и иметь доступ к внутренней сети через туннель.

Теперь создаём сертификат для GlobalProtect. Заходим в Device → Certificates и добавляем новый. Имя — GlobalProtect_Cert, Subject — CN=203.0.113.1 (это тот IP, по которому будут подключаться клиенты). Галочку Certificate Authority не ставим, так как это не корневой сертификат. Алгоритм RSA, срок действия по умолчанию.
Этот сертификат будет использоваться порталом и шлюзом для шифрования SSL-соединения. Без него клиенты не смогут подключаться к GlobalProtect, так как не будет защищённого канала.
После создания применяем сертификат в SSL/TLS Service Profile и указываем его в настройках портала и шлюза.
После сертификата переходим к NAT и Security Policy.
В NAT создаём правило Public. Source Zone — Inside_Zone, Destination Zone — ISP. Source Translation — Dynamic IP and Port через интерфейс ethernet1/1 с адресом 203.0.113.1/24. Это нужно, чтобы внутренние пользователи могли выходить в интернет и чтобы GlobalProtect тоже имел доступ наружу.
Дальше настраиваем Security Policy.
Первое правило — Allow_Traffic_to_ISP. Source Zone — GP_Tunnel и Inside_Zone, Destination Zone — ISP. Application и Service — any, Action — Allow. Это разрешает трафик от локальных пользователей и подключённых через GP клиентов.
Внизу остаются стандартные intrazone-default и interzone-default — первое разрешает трафик внутри зоны, второе блокирует между разными

Проверим на клиенте


Скачиваем агент для удаленного подключения!

Устанавливаем сертификат, чтобы при подключении не выдавало ошибку





Как видем все успешно подключилось)


Проверяем все работает!
Чутка теории
GlobalProtect это решение Palo Alto Networks для безопасного удаленного доступа. Оно делает VPN через межсетевой экран Palo Alto или Prisma Access и защищает пользователей вне офиса. Есть портал для подключения, шлюз для применения политик и агент на устройстве клиента. Всё вместе шифрует трафик, проверяет устройства и применяет корпоративные правила безопасности. Главная цель дать сотрудникам безопасный доступ к внутренним ресурсам из любой точки мира с тем же уровнем защиты что и в офисе.
Архитектура GlobalProtect простая. Есть три части — портал, шлюз и приложение. Портал это место, куда подключается клиент. Он проверяет логин, отдаёт настройки, список шлюзов и нужные сертификаты. Через него можно скачать или обновить агент GlobalProtect для Windows и macOS. На телефонах и планшетах агент ставится через App Store или Play Market, а настройки берутся с портала. Обычно портал ставят на фаерволе Palo Alto и открывают по HTTPS.
Шлюз отвечает за само соединение и безопасность. Он даёт VPN доступ к внутренней сети и применяет политики безопасности. Шлюз может быть внешний для удалённых пользователей или внутренний для контроля внутри сети. Внешние шлюзы дают доступ через интернет, внутренние нужны для проверки устройств и усиления безопасности.
Агент GlobalProtect ставится на устройство пользователя. Он подключается к порталу, проходит авторизацию, получает настройки и строит VPN туннель к шлюзу. Агент определяет где находится устройство, проверяет систему и шифрует весь трафик. Работает на Windows, macOS, Linux, iOS, Android и других платформах. Главное следить чтобы версия агента подходила к версии PAN OS
Развертывание GlobalProtect делается просто. Сначала настраиваем портал. Это место куда будут подключаться пользователи. В вебе заходим в Network потом GlobalProtect потом Portals. Создаем новый портал, указываем имя, интерфейс который смотрит в интернет и айпи адрес. Добавляем SSL профиль с сертификатом чтобы соединение было защищено. Потом идем в вкладку аутентификация и выбираем как люди будут входить. Можно сделать локальных юзеров или через LDAP или RADIUS. Если хочешь можно добавить проверку по сертификату. Дальше в разделе агент прописываются настройки для клиента куда подключаться, какие шлюзы и какой режим подключения. Обычно ставим on demand то есть подключение вручную. Всё сохраняем и коммитим.
Теперь шлюз. Он отвечает за сам VPN туннель. Идем в Network потом GlobalProtect потом Gateways. Создаем шлюз, пишем имя, выбираем интерфейс и айпи. Указываем тот же SSL профиль если надо. Потом в настройках клиента задаем пул адресов которые будут выдаваться пользователям, например от 192.168.1.50 до 192.168.1.100. Эти адреса пойдут тем кто подключился через GP. Тут же указываем маршруты какие сети должны идти через VPN например 192.168.0.0/16. Если хочешь чтобы весь трафик шел через VPN ставишь 0.0.0.0/0. Можно задать DNS и домен если нужно чтобы резолвились внутренние имена. Сохраняем и коммитим.
Дальше делаем политики. Создаем зону для туннеля типа GP_VPN и разрешаем из неё доступ во внутреннюю сеть. Если хочешь чтобы интернет шел через фаервол тоже добавь правило из GP_VPN в Untrust. Если у тебя портал за NAT то пробрасываешь порт 443 и проверяешь чтобы DNS имя портала указывало на внешний айпи.
После этого ставишь клиент GlobalProtect на комп. Открываешь https адрес портала, скачиваешь агент, ставишь, вводишь адрес портала и логин. Если всё правильно подключение проходит, клиент получает айпи из пула и видит внутреннюю сеть. Всё работает.
Когда юзер подключается к GlobalProtect, он сначала лезет на портал, вводит логин и пароль. Портал смотрит правильно ли всё и если да, то даёт ему настройки и адрес шлюза. Потом когда он лезет уже на сам шлюз, там его могут снова спросить пароль или просто пустить, зависит как настроено.
Есть разные способы как проверять. Самый тупо-простой это локальные юзеры. То есть всё хранится прямо на фаерволе, логины и пароли тоже там. Удобно для теста, но в реальной конторе никто так не делает.
Вариант получше подключить внешний сервер, типа Active Directory через LDAP или RADIUS. Тогда фаервол шлёт запрос туда и проверяет пароль через домен. Можно даже сделать двухфакторку, типа чтобы после пароля ещё код с телефона приходил. Для этого просто настраиваешь профили в Device Server Profiles и всё работает.
Ещё можно заходить по сертификату. Это когда у каждого компа свой файл-сертификат и по нему система понимает что это свой чувак, не левые. Обычно это ставят на корпоративные ноуты. Тогда при коннекте фаервол смотрит сертификат и если он валидный, то пускает.
А если хочешь совсем по-умному, можно юзать SAML, когда вход идёт через что-то вроде Azure AD или Okta. Там тебя перебрасывает на их сайт, ты логинишься, проходишь двойную проверку и возвращаешься уже авторизованный.
По сути вариантов дохрена. Всё зависит от того насколько сложную безопасность хочешь. Для теста можно просто логин пароль, а для продакшена уже AD плюс сертификат или двухфакторку. Главное правильно прописать профили и подключить их к порталу и шлюзу. Тогда юзеры будут логиниться.
Спасибо за внимание!)