Расширение возможностей протоколирования и мониторинга шлюза безопасности «С-Терра Шлюз»

Скачать в формате PDF

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО

«С-Терра СиЭсПи» и Продуктов третьих производителей.

ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.

Документ имеет статус вспомогательного материала, который может быть использован технологическими партнерами, компаниями-интеграторами, при разработке собственных решений.

Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах

только после тестовой и/или опытной эксплуатации.

Дополнительные файлы:

mibs.zip

snmp_extend_scripts.zip

zbx_sterra_gates_snmpv2_template.zip

msmtp_32bit.zip

msmtp_64bit.zip

 

Описание стенда

В данном сценарии рассматривается настройка SNMP-агента для сбора статистики на шлюзе безопасности «С-Терра Шлюз 4.2» с примерами пользовательских скриптов, некоторые настройки Syslog, шаблон для сервера Zabbix и прочее.

С устройства Server будет запрашиваться статистика шлюза GW1 по SNMP протоколу. Построение защищенного IPsec туннеля в данном сценарии рассматриваться не будет.

Канал между системой мониторинга Server и шлюзом GW1 должен быть доверенным. В данном документе мониторинг будет осуществляться через подсеть 192.168.1.0/24, которая является доверенной. Если требуется осуществлять мониторинг через Интернет, то трафик нужно защитить при помощи IPsec.

Схема стенда (Рисунок 1):

Рисунок 1

Общая информация

В состав Продукта «С-Терра Шлюз» входит два SNMP агента. Первый (VPNGATE) отвечает за предоставление информации о подсистемах IKE/IPsec, второй (SNMPD) – за выдачу общей информации о системе (счетчики сетевых интерфейсов, загрузка ЦПУ/ОЗУ и так далее).

Два SNMP агента работают следующим образом. Агент SNMPD принимает все SNMP запросы на порту 161 и проксирует определенные объектные идентификаторы (OIDs, список можно посмотреть в /etc/snmp/snmpd.conf) агенту VPNGATE.

SNMP агент VPNGATE не поддерживает SNMPv3, но благодаря проксированию запросов от SNMPD к VPNGATE становится возможным получение статистики об подсистемах IKE/IPsec по SNMPv3.

Дополнительную информацию о настройке SNMP можно прочитать в документации на «С-Терра Шлюз 4.2» (http://doc.s-terra.com/ -> С-Терра Шлюз -> С-Терра Шлюз 4.2 -> Мониторинг).

В данном документе для настройки SNMP агента VPNGATE будет использоваться cisco-like консоль.


 

Настройка стенда

Пример настройки

Замените содержимое по умолчанию файла /etc/snmp/snmpd.conf на приведенное ниже и отредактируйте настройки, руководствуясь пояснениями:

###############################################################

# Listen for connections from the local system only.

#agentaddress udp:127.0.0.1:161

# Listen for connections on all interfaces.

#agentaddress udp:161

 

####################################################################

# ATTENTION: change community and restrict access to SNMP requests #

#            from the specified sources for security reasons.      #

####################################################################

 

# Read-only access from anywhere with 'public' community string.

rocommunity public default -V customview

# Read-only access from 10.0.0.0/16 with 'public' community string.

#rocommunity public 10.0.0.0/16 -V customview

 

# .iso.org.dod.internet.mgmt.mib-2

view customview included .1.3.6.1.2.1

# .iso.org.dod.internet.private.enterprises.cisco

view customview included .1.3.6.1.4.1.9

# S-TERRA-CSP-MIB.

view customview included .1.3.6.1.4.1.31342

# .iso.org.dod.internet.private.enterprises.Debian.project.keepalived

view customview included .1.3.6.1.4.1.9586.100.5

# .iso.identified-organization.dod.internet.private.enterprise.ucdavis

view customview included .1.3.6.1.4.1.2021

# .iso.identified-organization.dod.internet.private.enterprise.netSnmpObjects.nsExtensions

# For using 'extend' directive (NET-SNMP-EXTEND-MIB).

view customview included 1.3.6.1.4.1.8072.1.3

 

# Configures monitoring of all disks found on the system, using the specified (percentage) threshold.

includeAllDisks 10%

 

# Proxy directive to pass part of the OID tree to S-Terra CSP SNMP agent to retrieve IKE and IPsec stats.

# Example of S-Terra Gate SNMP configuration in Cisco-like console:

#   snmp-server community public RO

#   snmp-server polling address 127.0.0.1

#   snmp-server polling udp-port 1161

proxy -v 2c -c "public" 127.0.0.1:1161 .1.3.6.1.4.1.9       # IKE and IPsec stats

proxy -v 2c -c "public" 127.0.0.1:1161 .1.3.6.1.2.1.1.1.0   # sysDescr

 

###############################################################

Пояснения:

agentaddress <ip-адрес>:<порт> - локальный адрес шлюза, на который будет приходить запрос от системы управления сетевой инфраструктурой; 161 - локальный порт (стандартный).

rocommunity – задает значение community-строки (в данном случае – “public”) с правами только на чтение, а следующее за ним ключевое слово default -V <имя> указывает какие объектные идентификаторы (OID) будут выдаваться. Если нужны права не только на чтение, но и на запись значений OID, замените rocommunity на rwcommunity.

view <имя> included <OID> – задает значения, объектных идентификаторов, доступные для использования. В качестве <OID> в конфигурации указаны поддеревья идентификаторов, т.е. доступными для использования становятся все присутствующие в системе значения, являющиеся дочерними к указанным.

includeAllDisks <число>% – включает мониторинг дискового пространства. Числом указывается процент оставшегося места на диске. В случае, если свободного места на диске оказывается меньше указанного, переменная UCD-SNMP-MIB::dskErrorFlag.<номер> для соответствующего раздела примет значение «1».

proxy -v 2c -c "public" 127.0.0.1:1161 <OID> – указывает, что запросы к <OID> нужно перенаправлять встроенному агенту VPNGATE.

Важно: после внесения изменений в конфигурационный файл /etc/snmp/snmpd.conf необходимо перезапустить демон SNMPD

Чтобы при перезагрузке шлюза демон SNMPD стартовал автоматически, выполните команду:

root@GW1:~# update-rc.d snmpd enable

update-rc.d: using dependency based boot sequencing

Дополнительные настройки SNMP

Также опционально в файл /etc/snmp/snmpd.conf могут быть добавлены следующие настройки:

sysdescr <текстовое описание платформы>

syslocation <описание физического расположения шлюза безопасности>

syscontact <контактная информация администратора шлюза безопасности>

При добавлении параметра sysdescr следует закомментировать строку с проксированием OID .1.3.6.1.2.1.1.1.0 к агенту VPNGATE, в противном случае будет всегда возвращаться значение, полученное от VPNGATE.

Пример настройки:

sysdescr S-Terra Gate 7000 4.2 KC1

syslocation Moscow, Company office A, Room 34, rack 1

syscontact A.A.Ivanov <ivanov@company.ru>

Настройка встроенного агента VPNGATE.

Настройка встроенного SNMP-агента осуществляется посредством конфигурации в cisco-like консоли:

1.    Войдите в режим конфигурирования cs_console:

root@GW1~# cs_console

GW1>en

Password:

2.    Перейдите в режим настройки:

GW1#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

3.    Задайте настройки встроенного SNMP-агента следующими командами:

GW1(config)#snmp-server community public

GW1(config)#snmp-server polling address 127.0.0.1

GW1(config)#snmp-server polling udp-port 1161

4.    Далее следует выйти из cisco-like консоли:

GW1(config)#end

GW1#exit

Community строка в команде snmp-server  community (в данном случае public) и UDP порт в snmp-server  polling  udp-port должны соответствовать строкам из настроек proxy в файле /etc/snmp/snmpd.conf  (строки proxy -v 2c -c "public" …).

Информацию по настройке встроенного SNMP-агента с использованием LSP конфигурации можно посмотреть в документации, http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз 4.2 -> Мониторинг -> Выдача статистики -> Настройка SNMP-агента для выдачи статистики -> LSP (native) конфигурация.

Настройка SNMPv3

Создайте учетную запись пользователя SNMPv3, для этого:

1.    Остановите SNMP-демон:

root@GW1:~# service snmpd stop

2.    Выполните команду:

net-snmp-config --create-snmpv3-user -ro [-A authpass] [-X privpass] [-a MD5|SHA] [-x DES|AES] <username>

где <username> – имя учетной записи.

Например:

root@GW1:~# net-snmp-config --create-snmpv3-user -ro -A "password" -X "secretpass" -a SHA -x AES test_user

adding the following line to /var/lib/snmp/snmpd.conf:

   createUser test_user SHA "password" AES secretpass

adding the following line to /usr/share/snmp/snmpd.conf:

   rouser test_user

3.    Запустите SNMP-демон:

root@GW1:~# service snmpd start


 

Проверка работоспособности

В данном сценарии проверка работоспособности производится с помощью отправки SNMP запросов с использованием утилит snmpwalk и snmpget c устройства Server на шлюз GW1. На устройство Server рекомендуется установить нужный набор MIB файлов для преобразования OID в читаемый вид. Архив с MIB файлами доступен на портале http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2 -> файл mibs.zip.

Проверка работы SNMPD и встроенного агента

Выполните запрос к SNMPD агенту, например, для получения времени работы системы:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 1.3.6.1.2.1.25.1.1.0

HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (408670) 1:08:06.70

Выполните запрос для получения IKE и IPsec статистики (эти запросы проксируются к агенту VPNGATE):

root@Server:~# snmpwalk -v 2c -c public 192.168.1.1:161 1.3.6.1.4.1.9.9.171

CISCO-IPSEC-FLOW-MONITOR-MIB::cipSecMibLevel.0 = INTEGER: 1

CISCO-IPSEC-FLOW-MONITOR-MIB::cikeGlobalActiveTunnels.0 = Gauge32: 0

CISCO-IPSEC-FLOW-MONITOR-MIB::cikeGlobalPreviousTunnels.0 = Counter32: 0 SAs

Выполните запросы для просмотра значений sysDescr, sysLocation, sysContact (если они были заданы):

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 sysDescr.0

SNMPv2-MIB::sysDescr.0 = STRING: S-Terra Gate 7000 4.2 KC1

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 sysLocation.0

SNMPv2-MIB::sysLocation.0 = STRING: Moscow, Company office A, Room 34, rack 1

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 sysContact.0 

SNMPv2-MIB::sysContact.0 = STRING: A.A.Ivanov <ivanov@company.ru>

Если параметр sysDescr не был задан, то по соответствующему запросу будет возвращаться ответ от агента VPNGATE:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 sysDescr.0

SNMPv2-MIB::sysDescr.0 = STRING: S-Terra Gate 4.2.18201, Emulation of: Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(13a), RELEASE SOFTWARE (fc1)

Проверка работы SNMPv3

Для проверки работы SNMPv3 выполните любой из запросов выше, указав третью версию протокола (-v 3) и подставив параметры аутентификации, которые были заданы при создании пользователя SNMPv3:

root@Server:~# snmpget -v 3 -u test_user -l authPriv -A "password" -X "secretpass" -a SHA -x AES 192.168.1.1:161 1.3.6.1.2.1.25.1.1.0

HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (233475) 0:38:54.75


 

Выполнение пользовательских скриптов по SNMP

SNMPD можно настроить так, чтобы по SNMP запросу выполнялся какой либо указанный пользователем скрипт и возвращался результат его работы, что позволяет расширить возможности мониторинга.

Программы и скрипты запускаются демоном SNMPD от пользователя snmp.

Пример настройки

Рассмотрим простой пример пользовательского скрипта. Создайте файл /home/test_script.sh со следующим содержимым:

#!/bin/bash

 

echo Test

echo 1234

 

exit 0

Этот скрипт два раза выводит по одной строке в stdout и завершается с кодом 0. Для того, чтобы иметь возможность вызвать данный скрипт по SNMP запросу и получать результат его выполнения, добавьте в файл /etc/snmp/snmpd.conf  следующую строку:

extend custom_script /bin/bash /home/test_script.sh

            где:

            extend  – директива (ключевое слово),

            custom_script – название директивы,

/bin/bash /home/test_script.sh – команда, выполняющаяся при вызове этой директивы по SNMP. 

После редактирования конфигурационного файла нужно перезапустить демон SNMPD.

Проверка работы

Для проверки работы пользовательских скриптов с устройства Server будут отправляться SNMP запросы на шлюз GW1.

Отправьте следующий SNMP запрос:

root@Server:~# snmpwalk -v 2c -c public 192.168.1.1:161 NET-SNMP-AGENT-MIB::nsExtensions

NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1

NET-SNMP-EXTEND-MIB::nsExtendCommand."custom_script" = STRING: /bin/bash

NET-SNMP-EXTEND-MIB::nsExtendArgs."custom_script" = STRING: /home/test_script.sh

NET-SNMP-EXTEND-MIB::nsExtendInput."custom_script" = STRING:

NET-SNMP-EXTEND-MIB::nsExtendCacheTime."custom_script" = INTEGER: 5

NET-SNMP-EXTEND-MIB::nsExtendExecType."custom_script" = INTEGER: exec(1)

NET-SNMP-EXTEND-MIB::nsExtendRunType."custom_script" = INTEGER: run-on-read(1)

NET-SNMP-EXTEND-MIB::nsExtendStorage."custom_script" = INTEGER: permanent(4)

NET-SNMP-EXTEND-MIB::nsExtendStatus."custom_script" = INTEGER: active(1)

NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."custom_script" = STRING: Test

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."custom_script" = STRING: Test

1234

NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."custom_script" = INTEGER: 2

NET-SNMP-EXTEND-MIB::nsExtendResult."custom_script" = INTEGER: 0

NET-SNMP-EXTEND-MIB::nsExtendOutLine."custom_script".1 = STRING: Test

NET-SNMP-EXTEND-MIB::nsExtendOutLine."custom_script".2 = STRING: 1234

NET-SNMP-EXTEND-MIB::nsExtendOutLine."custom_script".2 = No more variables left in this MIB View (It is past the end of the MIB tree)

Выделены строки, показывающие код возврата и строки, которые вывел скрипт test_script.sh.

Примечание: данный запрос выполняет все директивы extend, прописанные в конфигурационном файле /etc/snmp/snmpd.conf.

Чтобы получить какое-либо конкретное значение от скрипта, например, код возврата, выполните следующий SNMP запрос (обратите внимание на экранирование кавычек в теле запроса):

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendResult.\"custom_script\"

NET-SNMP-EXTEND-MIB::nsExtendResult."custom_script" = INTEGER: 0

Чтобы получить, например, вторую выведенную скриптом строку выполните:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendOutLine.\"custom_script\".2

NET-SNMP-EXTEND-MIB::nsExtendOutLine."custom_script".2 = STRING: 1234

Следующий запрос получает сразу все строки, которые скрипт пишет в stdout:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"custom_script\"

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."custom_script" = STRING: Test

1234

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

Альтернативный вариант настройки

В данном варианте используется создание пользовательского OID, при запросе к которому будет выполняться скрипт.

Для демонстрации будет использоваться скрипт /home/test_script.sh  из примера выше.

В конфигурационный файл /etc/snmp/snmpd.conf  добавьте  следующую строку:

extend .1.3.6.1.4.1.31342.1.1.1000.1 custom_script /bin/bash /home/test_script.sh

            где:

            extend  – директива (ключевое слово),

.1.3.6.1.4.1.31342.1.1.1000.1 – OID из ветви для пользовательских нужд (1.3.6.1.4.1.31342.1.1.1000) S-TERRA-CSP-MIB,

            custom_script – название директивы,

/bin/bash /home/test_script.sh – команда, выполняющаяся при вызове этой директивы по SNMP.

После редактирования конфигурационного файла нужно перезапустить демон SNMPD.

Для проверки работы отправьте SNMP запрос, содержащий указанный OID:

root@Server:~# snmpwalk -v 2c -c public 192.168.1.1:161 .1.3.6.1.4.1.31342.1.1.1000.1

S-TERRA-CSP-MIB::stGateUserDefined.1.1.0 = INTEGER: 1

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.2.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = STRING: "/bin/bash"

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.3.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = STRING: "/home/test_script.sh"

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.4.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = ""

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.5.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 5

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.6.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 1

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.7.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 1

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.20.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 4

S-TERRA-CSP-MIB::stGateUserDefined.1.2.1.21.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 1

S-TERRA-CSP-MIB::stGateUserDefined.1.3.1.1.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = STRING: "Test"

S-TERRA-CSP-MIB::stGateUserDefined.1.3.1.2.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = STRING: "Test

1234"

S-TERRA-CSP-MIB::stGateUserDefined.1.3.1.3.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 2

S-TERRA-CSP-MIB::stGateUserDefined.1.3.1.4.13.99.117.115.116.111.109.95.115.99.114.105.112.116 = INTEGER: 0

S-TERRA-CSP-MIB::stGateUserDefined.1.4.1.2.13.99.117.115.116.111.109.95.115.99.114.105.112.116.1 = STRING: "Test"

S-TERRA-CSP-MIB::stGateUserDefined.1.4.1.2.13.99.117.115.116.111.109.95.115.99.114.105.112.116.2 = STRING: "1234"

S-TERRA-CSP-MIB::stGateUserDefined.1.4.1.2.13.99.117.115.116.111.109.95.115.99.114.105.112.116.2 = No more variables left in this MIB View (It is past the end of the MIB tree)

Данный вариант не рекомендуется к использованию из-за неудобного формата получающихся OID.


 

Дополнительные примеры пользовательских скриптов

В данном разделе приведены примеры пользовательских скриптов, которые можно использовать для получения расширенной информации о состоянии шлюза. Настройка SNMPD конфигурации для выполнения пользовательских скриптов описана в соответствующем разделе.

Некоторые из приведенных ниже примеров используют cron для своей работы. Для того, чтобы сервис cron стартовал автоматически после включения или перезагрузки шлюза, необходимо выполнить следующую команду в linux bash консоли шлюза:

root@GW1:~# update-rc.d cron enable

Мониторинг состояния VRRP

При переходе состояния шлюза в MASTER, BACKUP или FAULT выполняются соответствующие скрипты, которые находятся в директории /etc/keepalived/scripts/

Отредактируйте /etc/keepalived/scripts/notify_master следующим образом:

#!/bin/bash

# Script to run during MASTER transit

echo MASTER > /home/status.txt

exit 0

То же самое сделайте для скриптов notify_backup и notify_fault, заменив значение вывода команды echo на нужное. В конфигурационном файле /etc/snmp/snmpd.conf  создайте директиву extend, по обращению к которой будет прочитан VRRP статус из файла, например:

extend show_vrrp_status /bin/cat /home/status.txt

Мониторинг срока действия локального сертификата

Для удобства мониторинга срока действия локального сертификата были созданы специальные скрипты. Скрипты лежат в директории get_days_until_local_cert_exp в архиве snmp_extend_scripts.zip, который доступен для загрузки на портале документации http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2.

Рядом со скриптами также находится файл README.txt с подробными пояснениями по работе скриптов.

Для начала работы со скриптами выполните следующие действия:

1.     Ознакомьтесь с содержимым файла README.txt.

2.     Создайте на криптошлюзе следующую директорию:

/opt/snmp_monitoring/snmp_extend/get_days_until_local_cert_exp/

и перенесите оба скрипта в нее.

3.     Настройте cron на выполнение скрипта get_days_until_local_cert_exp.cron.bash один раз в сутки. Дополнительно: выполните данный скрипт вручную, не дожидаясь его вызова из cron.

4.     В конфигурационном файле /etc/snmp/snmpd.conf создайте директиву extend для скрипта get_days_until_local_cert_exp.extend.bash:

extend get_days_until_local_cert_exp /bin/bash /opt/snmp_monitoring/snmp_extend/get_days_until_local_cert_exp/get_days_until_local_cert_exp.extend.bash

            После редактирования файла необходимо перезапустить демон SNMPD.

Проверка работы

Отправьте SNMP запрос для получения количества дней до истечения локального сертификата:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendOutLine.\"get_days_until_local_cert_exp\".1

NET-SNMP-EXTEND-MIB::nsExtendOutLine."get_days_until_local_cert_exp".1 = STRING: 338

Отправьте SNMP запрос для получения кода выхода скрипта:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendResult.\"get_days_until_local_cert_exp\"

NET-SNMP-EXTEND-MIB::nsExtendResult."get_days_until_local_cert_exp" = INTEGER: 0

Мониторинг статистики системы шифрования

Для мониторинга статистики системы шифрования (количество входящих, исходящих, потерянных IPsec пакетов, потери низкоприоритетных и высокоприоритетных пакетов, проценты потерь) были созданы специальные скрипты.

Скрипты лежат в директории check_kstat_show в архиве snmp_extend_scripts.zip, который доступен для загрузки на портале документации http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2.

Рядом со скриптами также находится файл README.txt с подробными пояснениями по работе скриптов.

Для начала работы со скриптами выполните следующие действия:

1.     Ознакомьтесь с содержимым файла README.txt.

2.     Создайте на криптошлюзе следующую директорию:

/opt/snmp_monitoring/snmp_extend/check_kstat_show/

и перенесите оба скрипта в нее.

3.     Настройте cron на выполнение скрипта check_kstat_show.cron.py c периодичностью в одну или несколько минут. Дополнительно: выполните данный скрипт вручную, не дожидаясь его вызова из cron.

4.     В конфигурационном файле /etc/snmp/snmpd.conf создайте директивы extend, которые будут отвечать за вызов скрипта check_kstat_show.extend.sh с нужными параметрами, например:

extend ipsec_dropped_percentage /bin/bash /opt/snmp_monitoring/snmp_extend/check_kstat_show/check_kstat_show.extend.sh ipsec_dropped_percentage

extend high_prio_dropped_pkts /bin/bash /opt/snmp_monitoring/snmp_extend/check_kstat_show/check_kstat_show.extend.sh high_prio_dropped_pkts

extend low_prio_dropped_pkts /bin/bash /opt/snmp_monitoring/snmp_extend/check_kstat_show/check_kstat_show.extend.sh low_prio_dropped_pkts

            После редактирования файла необходимо перезапустить демон SNMPD.

Проверка работы

Отправьте SNMP запрос для проверки одной из созданных директив extend, например:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161 NET-SNMP-EXTEND-MIB::nsExtendOutLine.\"ipsec_dropped_percentage\".1

NET-SNMP-EXTEND-MIB::nsExtendOutLine."ipsec_dropped_percentage".1 = STRING: 0.0

Мониторинг состояния канала с помощью ICMP

Для мониторинга состояния сетевого канала с использованием ICMP ping до задаваемого пользователем адреса хоста и вычисления таких параметров как rtt, jitter и loss были созданы специальные скрипты.

Скрипты лежат в директории get_rtt_jitter_loss в архиве snmp_extend_scripts.zip, который доступен для загрузки на портале документации http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2.

Рядом со скриптами также находится файл README.txt с подробными пояснениями по работе скриптов.

Для начала работы со скриптами выполните следующие действия:

1.     Ознакомьтесь с содержимым файла README.txt.

2.     Создайте на криптошлюзе следующую директорию:

/opt/snmp_monitoring/snmp_extend/get_rtt_jitter_loss/

и перенесите оба скрипта в нее.

3.     Отредактируйте скрипт get_rtt_jitter_loss.cron.bash, указав в переменной HOST_TO_MONITORING желаемый адрес хоста.

4.     Настройте cron на выполнение скрипта get_rtt_jitter_loss.cron.bash с желаемой периодичностью. Дополнительно: выполните данный скрипт вручную, не дожидаясь его вызова из cron.

5.     В конфигурационном файле /etc/snmp/snmpd.conf создайте директивы extend, которые будут отвечать за вызов скрипта get_rtt_jitter_loss.extend.bash с нужными параметрами, например:

extend get_rtt /bin/bash /opt/snmp_monitoring/snmp_extend/get_rtt_jitter_loss/get_rtt_jitter_loss.extend.bash rtt

extend get_loss /bin/bash /opt/snmp_monitoring/snmp_extend/get_rtt_jitter_loss/get_rtt_jitter_loss.extend.bash loss

extend get_jitter /bin/bash /opt/snmp_monitoring/snmp_extend/get_rtt_jitter_loss/get_rtt_jitter_loss.extend.bash jitter

            После редактирования файла необходимо перезапустить демон SNMPD.

Проверка работы

Отправьте SNMP запрос для проверки одной из созданных директив extend, например:

root@Server:~# snmpget -v 2c -c public 192.168.1.1:161  NET-SNMP-EXTEND-MIB::nsExtendOutLine.\"get_rtt\".1

NET-SNMP-EXTEND-MIB::nsExtendOutLine."get_rtt".1 = STRING: 0.592


 

Шаблон для Zabbix сервера

Для удобства мониторинга шлюзов С-Терра Шлюз по SNMP был создан шаблон для Zabbix сервера. Архив с шаблоном доступен на портале http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2 -> файл zbx_sterra_gates_snmpv2_template.zip.

В архиве вместе с шаблоном присутствует его описание (README.md). Шаблон протестирован на версиях Zabbix 4.4 и 5.0 LTS.

Для импорта шаблона в веб интерфейсе Zabbix перейдите на вкладку Configuration -> Templates и нажмите на кнопку Import. Выберите файл шаблона и импортируйте его с параметрами по умолчанию.

Для корректной работы шаблона на сервере Zabbix должен присутствовать нужный набор MIB файлов. Архив с MIB файлами доступен на портале http://doc.s-terra.com в разделе Типовые сценарии применения -> Версия 4.2 -> файл mibs.zip.

Примечание по использованию шаблона

При использовании шаблона для мониторинга криптошлюзов С-Терра Шлюз версии 4.2 следует перевести некоторые элементы данных, перечисленные ниже, в состояние Disabled. Эти элементы данных по умолчанию работают для криптошлюзов С-Терра Шлюз версии 4.3.

1.     Из группы IPsec Monitoring:

·         Number of active IPsec tunnels with S-Terra Unit

2.     Из группы Extended:

·         Все элементы данных

3.     Из раздела Triggers:

·         Все триггеры Days until local certificate expires Trigger

4.     Из раздела Discovery rules:

·         VRRP Instance Discovery

В случае, если был настроен мониторинг срока действия локального сертификата в точном соответствии с разделом «Мониторинг срока действия локального сертификата», оставьте соответствующие элементы данных (“Days until local certificate expires” и “Days until local certificate expires (script exit code)”) и относящиеся к ним триггеры включенными.

В случае, если был настроен мониторинг сетевого канала с помощью ICMP в точном соответствии с разделом «Мониторинг состояния канала с помощью ICMP», оставьте соответствующие элементы данных включенными (“SLA Jitter”, “SLA Loss” и “SLA RTT”).

Если вы хотите, чтобы элементы данных, относящиеся к статистике системы шифрования (“IPsec dropped packets percentage”, “High priority packets dropped”, “Low priority packets dropped”), были работоспособными, выполните инструкцию из раздела «Мониторинг статистики системы шифрования» в точном соответствии с приведенным там примером.


 

Расширенные настройки Syslog

В конфигурационном файле /etc/rsyslog.conf можно настроить отправку логов на несколько серверов по заданным IP-адресам и номерам портов. Например, следующие строки:

*.err @192.168.0.10:516

*.err @192.168.0.200:51400

указывают, что все логи уровня важности err и выше нужно отправлять на адреса, заданные после символа ‘@’.

Для нужд резервирования, один и тот же лог можно и отправлять на сервер и сохранять локально, например, следующие строки:

local7.* /var/log/example.log

local7.* @192.168.0.10:1024

указывают, что лог категории (канала) local7 всех уровней важности следует записывать в файл /var/log/example.log, а также отправлять на сервер по заданному IP-адресу и порту.

Для того, чтобы добавить имя хоста в syslog-сообщения, задайте соответствующее имя в файле /etc/hosts в следующей строке:

127.0.0.1 <имя хоста> localhost

Так же обратите внимание, что некоторые syslog-сообщения берут имя хоста из файла /etc/hostname.

Параметры, задаваемые командой logging в cisco-like консоли, позволяют настраивать адрес хоста, на который будут отправляться syslog-сообщения, относящиеся к vpn агенту. По умолчанию, vpn агент отправляет сообщения на адрес 127.0.0.1, где они обрабатываются rsyslog и записываются в файл /var/log/cspvpngate.log. Если в cisco-like консоли задать другой адрес хоста для отправки сообщений, то в таком случае они будут сразу отсылаться на указанный адрес, и не попадут в локальный файл /var/log/cspvpngate.log.


 

Отправка SNMP-трапов

Утилиты snmptrap и snmpinform на шлюзе отвечают за отправку SNMP-трапов. Шаблон команды для отправки трап сообщения из linux консоли может быть следующим:

snmptrap -v <версия SNMP> -c <community-строка> <IP-адрес сервера>:<порт> <uptime> <OID> <object/OID> <тип переменной> <значение>

Значение параметра uptime задавать необязательно и можно заменить пустыми кавычками – “” или ‘’. Примеры отправки тестового SNMPv2-трапа с использованием кастомного OID:

root@GW1:~# snmptrap -v 2c -c public 10.0.0.1:1162 '' .1.3.6.1.4.1.31342.1.2 .1.3.6.1.4.1.31342.1.2 s "Test message"

root@GW1:~# snmpinform -v 2c -c public 10.0.101.148:162 '' .1.3.6.1.4.1.31342.1.2 .1.3.6.1.4.1.31342.1.2 i 1234

Отправка SNMPv3 трапов требует указания дополнительных параметров аутентификации. Пример отправки SNMPv3 трапа:

root@GW1:~# snmpinform -v 3 -l authpriv -u User -a MD5 -x DES -A "UserPassword" -X "UserSecret" 10.0.0.1:162 '' .1.3.6.1.4.1.31342.1.2 .1.3.6.1.4.1.31342.1.2 s "Test message v3"

Настройка конфигурационных файлов в данном сценарии не рассматривается.


 

Отправка почтовых уведомлений

Если у Вас устройство «С-Терра Шлюз» без SPDS, то до полного выполнения всех шагов инструкции не перезагружайте устройство. Будьте внимательны, инструкция ниже актуальна только для шлюзов класса КС1 и КС2 (см. значение параметров PLATFORM и CLASS в файле /etc/image_version).

Для отправки электронной почты можно воспользоваться утилитой msmtp. По умолчанию она в системе не установлена. Скачать архив со всеми требуемыми к установке пакетами можно в личном кабинете партнера https://www.s-terra.ru/auth/.

1.      Установить пакеты можно следующим образом (вместо ‘x’ должны быть указаны версии пакетов из архива):

root@GW1:~# dpkg -i libntlm0_x.x-x_amd64.deb

root@GW1:~# dpkg -i libgsasl7_x.x.x-x_amd64.deb

root@GW1:~# dpkg -i msmtp_x.x.x-x_amd64.deb

2.      Если у Вас «С-Терра Шлюз» без SPDS, то перед перезагрузкой устройства необходимо осуществить пересчёт хэш-сумм:

root@GW1:~# /opt/VPNagent/bin/links_verify.sh update

Для того чтобы использовать msmtp для отправки сообщений следует указать SMTP сервер, который их будет перенаправлять. Настройки для подключения к такому серверу следует указать в файле конфигураций $HOME/.msmtprc (где $HOME – домашняя директория пользователя которым будет отправляться почта). Если такой файл отсутствует, создайте его и введите требуемые настройки. Подробнее о настройках msmtp можно узнать здесь: https://marlam.de/msmtp/documentation/

Пример отправки почтового уведомления

Создадим файл /root/.msmtprc и добавим в него нужные настройки.

Ниже указаны настройки для SMTP сервера yandex.ru:

Оптимальная работа при данных настройках не гарантируется. Отсылаемые письма могут быть заблокированы yandex.ru как спам. Для отправления писем рекомендуется использовать собственный SMTP сервер.

# Default values

defaults

auth on

port 587

tls on

tls_certcheck off

 

# Yandex account

account yandex

host smtp.yandex.ru

from <имя пользователя>@yandex.ru

user <имя_пользователя>@yandex.ru

password <пароль_пользователя>

 

# What account will be used if 'msmtp' is used without '-a' option

account default : yandex

где

defaults – указывает на то, что дальше будут писаться значения по умолчанию;

·         auth on – указывает на то, что метод аутентификации будет выбран автоматически;

·         port 587 – говорит о том, что для соединения с SMTP сервером будет использован указанный порт (587);

·         tls on – соединения будут защищаться при помощи TLS;

·         tls_certcheck off – отключает проверку сертификата сервера;

account yandex – указывает на то, что дальше будут писаться значения для аккаунта с названием ‘yandex’ (можно указать любое название);

·         host smtp.yandex.ru – указывает на то, что письма связанные с аккаунтом будут отсылаться на SMTP сервер с указанным названием (smtp.yandex.ru);

·         from <имя_пользователя>@yandex.ru – устанавливает обратный адрес (на этот адрес будут отправляться уведомления в случае если письмо не удалось доставить);

·         user <имя_пользователя>@yandex.ru – задает имя аутентифицируемого пользователя;

·         password <пароль_пользователя> – здесь требуется указать пароль пользователя;

account default : yandex – указывает на то, что по умолчанию утилитой будут использоваться настройки, указанные в account Yandex.

После указания настроек можно отправлять письма. Для этого можно использовать файлы следующего содержания:

To: <адрес_получателя>

From: <имя пользователя>@yandex.ru

Subject: <тема_письма>

 

[текст_письма]

Обратите внимание, что обязательно должна присутствовать пустая строка между ‘Subject’ и текстом письма, в противном случае текст письма будет утерян.

Отправить письмо можно следующей командой:

root@GW1:~# cat <имя_файла> | msmtp <адрес_получателя>