Доброго всем времени суток. Сегодня я хочу начать цикл о настройке и принципах работы межсетевых экранов Checkpoint.
Chekpoint — компания, занимающаяся разработкой решений по сетевой безопасности начиная с 1993 года. Компания позиционирует себя как разработчик собственной архитектуры управления\взаимодействия — SMART (SecurityManagment Architecture). На основании этой концепции в конечном итоге была создана операционная система Gaia, путём объединения ОС IPSO (Nokia) и ОС SPLAT (ранняя разработка СР на базе Unix-ориентированных систем). В данном программном обеспечении реализован ряд технологий, связанных с безопасностью обмена данными (например пакетная фильтрация, IPS), а так же проприетарная Stateful Inspection основной задачей которой является контроль конкретных соединений в реальном времени.Wikipedia.
Увы, на Хабре не так много статей, посвященных этому вендору. Хотя, на мой взгляд, он заслуживает большего внимания.
Опытные инженеры систем безопасности, скорее всего, не найдут никакой новой информации в этой и последующих статьях. Но для новичков, я надеюсь, они будут полезными. Мы попробуем разобрать принципы работы основных модулей и системы в целом, а так же рассмотрим примеры настройки из “best practice".
Сегодня на повестке дня установка и начальная конфигурация устройства. Добро пожаловать под кат.
На Хабре уже была статья о том, как установить две фаервольных ноды и сделать из них кластер. Попытаюсь уделить внимание вопросам, которые в той статье рассмотрены не были.
Этап 0. Подготовка
Итак, начнем.
В первую очередь нам необходимо подобрать оборудование. Есть, по сути, только два варианта: либо покупать устройство, с любовью оклеенное этикетками Checkpoint и помещенное в специально подготовленный для него корпус, или же собирать платформу самостоятельно. В любом случае выбор устройства будет зависеть от очень большого количества параметров. Мы можем опираться лишь на свой опыт и на ту документацию, которую нам предоставляет сам вендор. Список поддерживаемых серверов можно посмотреть по ссылке. Так же можно примерно посчитать на какую нагрузку будет рассчитан конкретный девайс от компании Checkpoint (осторожно PDF). К сожалению, Checkpoint не предоставляет информацию об установленном в устройства оборудовании, лишь объем оперативной памяти и количество интерфейсов, но в Интернете можно найти кое-какую информацию о CPU.
Этап 1. Установка операционной системы Gaia
После того, как мы выбрали платформу, перейдем к установке операционной системы. Кстати, об операционной системе: Gaia (последняя из операционных систем Checkpoint'а) базируется на дистрибутиве RedHat 5.2. А значит, если Вы до этого работали с linux-based операционными системами, то Вам будет приятно увидеть многие знакомые утилиты и команды.
Здесь будет рассматриваться Gaia R77.10 в виртуальном окружении. Установка предыдущих, так и последующих версий этой операционной системы, ничем не отличается. На сегодняшний день последней является Gaia R77.30.
Компания Checkpoint не предоставляет дистрибутивы своих операционных систем без регистрации
Теперь мы вооружены всем необходимым и можем перейти непосредственно к установке.
Большинство следующих скриншотов не требуют пояснения: далее, далее, готово. Никто не предлагает установить Mail.Агент или какое-либо другое приложение, не имеющее отношение к теме.
Единственное, на что хочу обратить Ваше внимание – разметка диска. Система выдаст ошибку и прекратит установку, если объем жесткого диска менее 8Гб. В случае наличия от 8 до 15 Гб система самостоятельно разбивает диск на необходимые ей разделы. Если же объем больше 15Гб, то нам разрешат немного повлиять на этот процесс, а именно: изменить размер разделов под system-root (/) и логи (/var/logs/). Эта информация может пригодиться тем, кто собирается ставить Checkpoint на виртуальную машину. Остальным же требуется знать лишь, основное правило, которое заключается в том, что размер раздела “Backup and upgrade" должен быть не менее, чем сумма system-root и logs, так как снэпшоты операционной системы помещаются именно туда.
Теперь несколько рекомендаций по разметке дисков для менеджмент сервера и для фаервольных нод.
Менеджмент сервер:
- Рут должен быть не менее 6Гб, а если планируется использование дополнительных компонентов (блейдов), таких как: IPS, Application Control, URL Filtering, стоит увеличить размер, хотя бы до 10Гб.
- Логи – наше все. По крайней мере на менеджент сервере. Все доступное пространство выделяем им, ведь основная функция менеджмент сервера, помимо настройки правил – это хранение всевозможных логов и обновлений.
Фаервол:
- Рут – единственный раздел который фаерволу действительно нужен, и 10Гб, при включенных дополнительных блейдах, будет тоже вполне достаточно.
- Размер раздела для логов не так критичен, ведь логи пишутся на менеджмент сервер, а на фаерволе эта директория используется, в основном, для обновлений, поэтому хватит даже 5Гб.
Много картинок
Рис 1.1
Выбираем пункт “Install Gaia on this system":
Рис 1.2
Тут мы можем посмотреть информацию об установленном оборудовании:
Рис 1.3
Выбираем язык:
Рис 1.4
Размечаем диск:
Рис 1.5
Придумываем пароль:
Рис 1.6
Тут мы можем выбрать и настроить интерфейс, который в дальнейшем будем использовать для подключения к устройству через https и ssh.
Рис 1.7
Непосредственно, настройка.
После этого придется немного подождать, пока система установится на выбранный сервер.
Выбираем пункт “Install Gaia on this system":
Рис 1.2
Тут мы можем посмотреть информацию об установленном оборудовании:
Рис 1.3
Выбираем язык:
Рис 1.4
Размечаем диск:
Рис 1.5
Придумываем пароль:
Рис 1.6
Тут мы можем выбрать и настроить интерфейс, который в дальнейшем будем использовать для подключения к устройству через https и ssh.
Рис 1.7
Непосредственно, настройка.
После этого придется немного подождать, пока система установится на выбранный сервер.
Этап 2.1 Подготовка к настройке
После того, как мы установили операционную систему, логично было бы сразу перейти к настройке политик и другим фаервольным прелестям. Но тут оказывается, что нам необходимо предварительно выбрать, какую функцию будет наш сервер выполнять: будет это фаервол или менеджмент сервер. Таким образом первоначальная конфигурация включает в себя следующие пункты:
- Выбор роли сервера
- Параметры менеджмент интерфейса
- Правила доступа
- Параметры DNS, NTP, Proxy серверов (proxy только через WebUI)
Первичная настройка Checkpoint для последующей работы с ним доступна в упомянутой выше статье. Мы же сейчас попробуем сделать то же самое, но при помощи командной строки, для этого нам не понадобится отдельный компьютер, сетевое подключение к фаерволу и даже монитор, если Вы
Для того что бы произвести конфигурацию фаервола через CLI у нас есть специальная утилита config_system, точнее, это обычный bash-скрипт, содержимое которого Вы можете посмотреть и отредактировать. Лежит он в /bin/config_system.
Этот скрипт редактирует файл базы данных Gaia OS /config/db/initial.
Давайте разберем принцип его работы на примере функции по изменению ip-адреса:
DBSET=/bin/dbset
DBGET=/bin/dbget
...........
# configure new ip for interface
# $1 - interface name
# $2 - ip
# $3 - mask
set_ip() {
local cip
# get current ip
cip=$(dbget -c interface:$1:ipaddr)
# if interface configured, delete old ip first
if [[ ! -z $cip ]]; then
log "Configure IPv4 - remove old ip:$cip from $1"
$DBSET interface:$1:ipaddr:$cip
$DBSET interface:$1:ipaddr:$cip:mask
fi
# now configure new ip/mask
log "Configure IPv4 - interface:$1, new ip:$2, mask:$3"
$DBSET interface:$1:state on
$DBSET interface:$1:ipaddr:$2 t
$DBSET interface:$1:ipaddr:$2:mask $3
}
........
$DBSET :save
Получение текущих настроек из базы происходит при помощи утилиты /bin/dbget, а изменяет конфигурацию команда /bin/dbset. Вот так выглядит кусок файла, описывающий настройки интерфейса eth0:
[Expert@Gaia_R77.10_test:0]# cat /config/db/initial | grep eth0
management:interface eth0
interface:eth0 t
interface:eth0:link_speed 1000M/full
interface:eth0:state on
interface:eth0:ipaddr:192.168.1.2 t
interface:eth0:ipaddr:192.168.1.2:mask 24
interface:eth0:duplicity full
interface:eth0:speed 1000M
interface:eth0:auto_negotiation on
Параметр отделяется от значения пробелом. Теперь мы можем попробовать получить какие-нибудь значения при помощи DBGET.
[Expert@Gaia_R77.10_test:0]# dbget -c interface:eth0:ipaddr
192.168.1.2
Ключ -c необходим для вывода имени дочернего параметра с не нулевым значением. Что бы дополнительно показать значение этого параметра существует ключ -v.
[Expert@Gaia_R77.10_test:0]# dbget -cv interface:eth0:ipaddr
192.168.1.2 t
Мы получили значение равное t, то есть true. По сути это означает лишь то, что на интерфейсе задан ip-адрес, равный 192.168.1.2.
А теперь изменим ip-адрес на интерфейсе. Для этого нам надо:
- Удалить текущие значения ip-адреса и маски
- Установить новое значение ip-адреса
- Установить новое значение маски
- Сохранить конфигурацию
[Expert@Gaia_R77.10_test:0]# dbset interface:eth0:ipaddr:192.168.1.2
[Expert@Gaia_R77.10_test:0]# dbset interface:eth0:ipaddr:192.168.1.2:mask
[Expert@Gaia_R77.10_test:0]# dbset interface:eth0:ipaddr:192.168.1.1 t
[Expert@Gaia_R77.10_test:0]# dbset interface:eth0:ipaddr:192.168.1.1:mask 24
[Expert@Gaia_R77.10_test:0]# dbset :save
Этап 2.2 Первоначальная конфигурация
Config_system принимает либо файл, либо строку из необходимых параметров, разделенных амперсандом (&). Синтаксис команды со строкой в качестве параметра будет выглядеть следующим образом:
Gaia_R77.10_test> config_system "hostname=myhost&domainname=somedomain.com&timezone='UTC-3'&ftw_sic_key=aaaa&install_security_gw=true&gateway_daip=false&install_ppak=true&gateway_cluster_member=true&install_security_managment=false"
Значение каждого из этих параметров мы разберем далее. А сейчас разберемся с конфигурационным файлом.
Конфигурационный файл содержит в себе все те же самые значения, каждое на отдельной строке.
Первым делом мы создадим шаблон конфигурационного файла, который потом будем редактировать.
[Expert@Gaia_R77.10_test:0]# config_system -t /home/admin/initial.conf
initial.conf
#########################################################################
# #
# Products configuration #
# #
# For keys below set "true"/"false" after '=' within the quotes #
#########################################################################
# Install Security Gateway.
install_security_gw=
# Install Acceleration Blade (aka Performance Pack).
install_ppak=
# Enable DAIP (dynamic ip) gateway.
# Should be "false" if CXL or Security Management enabled
gateway_daip="false"
# Enable/Disable CXL.
gateway_cluster_member=
# Install Security Management.
install_security_managment=
# Optional parameters, only one of the parameters below can be "true".
# If no primary of secondary specified, log server will be installed.
# Requires Security Management to be installed.
install_mgmt_primary=
install_mgmt_secondary=
# Provider-1 paramters
# e.g: install_mds_primary=true
# install_mds_secondary=false
# install_mlm=false
# install_mds_interface=eth0
install_mds_primary=
install_mds_secondary=
install_mlm=
install_mds_interface=
# Automatically download Blade Contracts and other important data (highly recommended)
# It is highly recommended to keep this setting enabled, to ensure smooth operation of Check Point products.
# for more info see sk94508
#
# possible values: "true" / "false"
download_info="true"
# Improve product experience by sending data to Check Point
# If you enable this setting, the Security Management Server and Security Gateways may upload data that will
# help Check Point provide you with optimal services.
# for more info see sk94509
#
# possible values: "true" / "false"
upload_info="false"
# In case of Smart1 SmartEvent appliance, choose
# Security Management only, log server will be installed automatically
#########################################################################
# #
# Products Parameters #
# #
# For keys below set value after '=' #
#########################################################################
# Management administrator name
# Must be provided, if Security Management installed
mgmt_admin_name=
# Management administrator password
# Must be provided, if Security Management installed
mgmt_admin_passwd=
# Management GUI client allowed e.g. any, 1.2.3.4, 192.168.0.0/24
# Set to "any" if any host allowed to connect to managment
# Set to "range" if range of IPs allowed to connect to management
# Set to "network" if IPs from specific network allowed to connect
# to management
# Set to "this" if it' a single IP
# Must be provided if Security Management installed
mgmt_gui_clients_radio=
#
# In case of "range", provide the first and last IPs in dotted format
mgmt_gui_clients_first_ip_field=
mgmt_gui_clients_last_ip_field=
#
# In case of "network", provide IP in dotted format and netmask length
# in range 0-32
mgmt_gui_clients_ip_field=
mgmt_gui_clients_subnet_field=
#
# In case of a single IP
mgmt_gui_clients_hostname=
# Secure Internal Communication key, e.g. "aaaa"
# Must be provided, if primary Security Management not installed
ftw_sic_key=
#########################################################################
# #
# Operating System configuration - optional section #
# #
# For keys below set value after '=' #
#########################################################################
# Password (hash) of user admin.
# To get hash of admin password from configured system:
# dbget passwd:admin:passwd
# OR
# grep admin /etc/shadow | cut -d: -f2
#
# IMPORTANT! In order to preserve the literal value of each character
# in hash, inclose hash string within the quotes.
# e.g admin_hash='put_here_your_hash_string'
#
# Optional parameter
admin_hash=''
# Interface name, optional parameter
iface=
# Management interface IP in dotted format (e.g. 1.2.3.4),
# management interface mask length (in range 0-32, e,g 24 ) and
# default gateway.
# Pay attention, that if you run first time configuration remotely
# and you change IP, in order to maintain the connection,
# an old IP address will be retained as a secondary IP address.
# This secondary IP address can be delete later.
# Your session will be disconnected after first time condiguration
# process.
# Optional prameter, requires "iface" to be specified
# IPv6 address format: 0000:1111:2222:3333:4444:5555:6666:7777
# ipstat_v4 manually/off
ipstat_v4=
ipaddr_v4=
masklen_v4=
default_gw_v4=
ipstat_v6=
ipaddr_v6=
masklen_v6=
default_gw_v6=
# Host Name e.g host123, optional parameter
hostname=
# Domain Name e.g. checkpoint.com, optional parameter
domainname=
# Time Zone in format Area/Region (e.g America/New_York or Etc/GMT-5)
# Pay attention that GMT offset should be in classic UTC notation:
# GMT-5 is 5 hours behind UTC (i.e. west to Greenwich)
# Inclose time zone string within the quotes.
# Optional parameter
timezone=''
# NTP servers
# NTP parameters are optional
ntp_primary=
ntp_primary_version=
ntp_secondary=
ntp_secondary_version=
# DNS - IP address of primary, secondary, tertiary DNS servers
# DNS parameters are optional.
primary=
secondary=
tertiary=
В самом шаблоне довольно подробно описан каждый параметр. Поэтому я просто приведу пример конфигурации для менеджмент сервера:
install_security_managment="true"
mgmt_admin_name=admin
mgmt_admin_passwd=password
mgmt_gui_clients_radio="network"
mgmt_gui_clients_ip_field=192.168.1.0
mgmt_gui_clients_subnet_field=24
admin_hash='HASH_OF_ADMIN_PASSWORD'
install_mgmt_primary="true"
iface=eth0
ipstat_v4=manual
ipaddr_v4=192.168.1.1
masklen_v4=24
default_gw_v4=192.168.1.254
ipstat_v6=off
hostname=Gaia_R77.10_MGMT
timezone='Etc/GMT+3'
primary=8.8.8.8
И одного фаервола:
install_security_gw="true"
admin_hash='HASH_OF_ADMIN_PASSWORD'
iface=eth0
ipstat_v4=manual
ipaddr_v4=192.168.1.2
masklen_v4=24
default_gw_v4=192.168.1.254
ipstat_v6=off
hostname=Gaia_R77.10_FW1
timezone='Etc/GMT+3'
ftw_sic_key='onetimepassword'
primary=8.8.8.8
Единственное, на чем хочется остановиться отдельно — параметр ftw_sic_key="". SIC, или Secure Internal Communication key — это одноразовый пароль, который нужен, что бы фаерволом можно было управлять с менеджмент сервера (поэтому мы задали его только на фаерволе). Он нам будет нужен один раз при добавлении фаервола в панель управления менеджмент сервера.
Последний шаг — это отдать полученный файл скрипту и подождать пока завершится конфигурация:
[Expert@Gaia_R77.10_test:0]# config_system -f /home/admin/initial.conf
Теперь перезагружаем сервер и все готово.
Этап 3. Подведение итогов
Теперь у нас есть один менеджмент сервер и один фаервол. Они готовы к дальнейшей настройке.
В следующей статье мы научимся добавлять фаерволы для управления с одного менеджмент сервера. Узнаем как из них организовать кластер, если изначально мы к этому готовы не были. Рассмотрим варианты кластеров и их принцип работы. А так же пробежимся по способам настройки NATа и простейшим фаервольным политикам.
Спасибо за внимание. Буду рад ответить на ваши вопросы.