Автоматизация конфигурации межсетевого экрана Palo Alto Networks
Существуют одинаковые вопросы, которые периодически возникают у заказчиков. Сегодня коснусь частого вопроса как быстро создать много одинаковых правил или как быстро добавить много одинаковых объектов в одно правило.
Часто во время тестирования производительности заказчики ставят задачу: добавьте 500 правил NGFW или допустим 300 правил NAT. Естественно я не создаю это вручную из web интерфейса. Как это можете автоматизировать вы?
Есть два способа
<uid-message>
<version>2.0</version>
<type>update</type>
<payload>
<login>
<entry name="BestGirls\Mona" ip="10.0.0.20" />
</login>
<groups>
<entry name="BestGirls">
<members>
<entry name="BestGirls\Mona" />
</members>
</entry>
</groups>
</payload>
</uid-message>
>set cli config-output-format set
>configure
#show | match rule1
ПЕРВЫЙ СПОСОБ: REST API
Через REST API скриптами. И здесь Palo Alto Networks чаще всего настраивают используя библиотеки для Ansible, вот тут они лежат (https://github.com/PaloAltoNetworks/ansible-pan). DevOps используют Ansible для разных целей и настройка NGFW одна из задач. Ansible используется для автоматической конфигурации динамически создаваемых виртуальных межсетевых экранов. Сегодня это актуально при использовании их для защиты сервисов компании, реализованных внутри публичных облачных сервисов, таких как Microsoft Azure или Amazon AWS или же встроенной системы защиты виртуализации на VM серии NGFW.
Вот в этом блоге замечательная статья как использовать REST API на Python http://securitynik.blogspot.ru/2016/07/writing-palo-alto-firewall-rest-api.html
В этом блоге рассказывается как использовать REST API из Powershell https://lockstepgroup.com/blog/scripting-with-palo-alto-networks/
Вы можете REST API использовать и для считывания и исправления различных параметров NGFW в реальном времени. Например, рассмотрим как управлять таблицей USER-ID и соответствием имени пользователя и группы в которой он работает.
У NGFW есть доступ к REST API и через web интерфейс. Для этого в адресной строке браузера нужно добавить к IP адресу NGFW строку /api (после авторизации). Вот например, что нужно ввести в окошко REST API NGFW, чтобы добавить новую группу BestGirls и добавить в группу аккаунт и указать, что он работает с IP адреса 10.0.0.20.
<version>2.0</version>
<type>update</type>
<payload>
<login>
<entry name="BestGirls\Mona" ip="10.0.0.20" />
</login>
<groups>
<entry name="BestGirls">
<members>
<entry name="BestGirls\Mona" />
</members>
</entry>
</groups>
</payload>
</uid-message>
После отправки вышеприведенной XML команды, межсетевой экран возвращает статус Success.
И сразу вы можете уже в web интерфейсе увидеть, что в списке пользователей есть группа и пользователь в группе.
ВТОРОЙ СПОСОБ: КОМАНДЫ SET
Используя комады SET из командной строки. Описание на английском есть здесь (https://live.paloaltonetworks.com/t5/Configuration-Articles/Viewing-the-configuration-in-set-and-XML-format/ta-p/65757)
Как известно, если вы работаете из командной строки, то вы всегда можете посмотреть конфигурацию. Обычно конфигурация показывается в формате XML. Если вы хотите увидеть как она выглядит в виде команд SET, то нужно поменять формат вывода команд с формата XML на формат SET. И это как раз тот самый вид конфигурации, который легко использовать для понимания как исправить нужные правила или получить пример команд для добавления новых правил или объектов.
Начните с того, что посмотрите вывод конфигурации в формате set в своем NGFW. Например, для просмотра правила с именем rule1 вы можете ввести такие команды.
>set cli config-output-format set
>configure
#show | match rule1
Вот, например, такой вывод будет на NGFW для правила rule1. Здесь видно, что оно разрешает все соединения в любых направлениях.
set rulebase security rules rule1 from any
set rulebase security rules rule1 to any
set rulebase security rules rule1 source any
set rulebase security rules rule1 destination any
set rulebase security rules rule1 service any
set rulebase security rules rule1 application any
set rulebase security rules rule1 action allow
Соответственно, если вы хотите что-то исправить в правиле, то затем вы эту команду set вводите там же в командной строке и получаете новое правило или исправляете его.
На Panorama вывод команд set для правила безопасности будет выглядеть немного по-другому, потому что там есть такое понятие как Device Group и правила группируются внутри Device Group
Для примера вот так выглядит вывод и соответственно команда для Panorama, чтобы добавить трех пользователей в правило rule1 для Device Group с именем PA-5220 в раздел Pre Rules:
#set device-group PA-5220 pre-rulebase security rules rule1 source-user [ domain\ivanov domain\petrov domain\sidorov ]