Настройка ААА

AAA (Authentication, Authorization, Accounting) – используется для описания процесса предоставления доступа и контроля над ним.

Алгоритм настройки локальной аутентификации

Шаг

Описание

Команда

Ключи

1

Задать список методов аутентификации по умолчанию (default)/с именем <NAME> и указать local.

esr(config)# aaa authentication login { default | <NAME> } <METHOD 1>
[ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:

  • local – аутентификация с помощью локальной базы пользователей;
  • tacacs – аутентификация по списку TACACS-серверов;
  • radius – аутентификация по списку RADIUS-серверов;
  • ldap – аутентификация по списку LDAP-серверов.

2

Задать список методов аутентификации повышения привилегий пользователей по умолчанию (default)/с именем <NAME> и указать enable.

esr(config)# aaa authentication enable <NAME><METHOD 1> [ <METHOD 2> ]
[ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:

  • local – аутентификация с помощью локальной базы пользователей;
  • tacacs – аутентификация по списку TACACS-серверов;
  • radius – аутентификация по списку RADIUS-серверов;
  • ldap – аутентификация по списку LDAP-серверов.

3

Указать способ перебора методов аутентификации в случае отказа (необязательно).

esr(config)# aaa authentication mode <MODE>

<MODE> – способы перебора методов:

  • chain – если сервер вернул FAIL, перейти к следующему в цепочке методу аутентификации;
  • break – если сервер вернул FAIL, прекратить попытки аутентификации. Если сервер недоступен, продолжить попытки аутентификации следующими в цепочке методами.

Значение по умолчанию: chain.

4

Указать количество неудачных попыток аутентификации для блокировки логина пользователя и время блокировки (необязательно).

esr(config)# aaa authentication attempts max-fail <COUNT> <TIME>

<COUNT> – количество неудачных попыток аутентификации, после которых произойдет блокировка пользователя, принимает значения [1..65535];

<TIME> – интервал времени в минутах, на который будет заблокирован пользователь, принимает значения [1..65535].

Значение по умолчанию:
<COUNT> – 5; <TIME> – 300.

5

Включить запрос на смену пароля по умолчанию для пользователя admin (необязательно).

esr(config)# security passwords default-expired


6

Включить режим запрета на использование ранее установленных паролей локальных пользователей (необязательно).

esr(config)# security passwords history <COUNT>

<COUNT> – количество паролей, сохраняемых в памяти маршрутизатора. Принимает значение в диапазоне [1..15].

Значение по умолчанию: 0.

7

Установить время действия пароля локального пользователя (необязательно).

esr(config)# security passwords lifetime <TIME>

<TIME> – интервал времени действия пароля в днях. Принимает значение в диапазоне [1..365].

По умолчанию: время действия пароля локального пользователя не ограничено.

8

Установить ограничение на минимальную длину пароля локального пользователя и ENABLE-пароля (необязательно).

esr(config)# security passwords min-length <NUM>

<NUM> – минимальное количество символов в пароле. Принимает значение в диапазоне [8..128].

Значение по умолчанию: 0.

9

Установить ограничение на максимальную длину пароля локального пользователя и ENABLE-пароля (необязательно).

esr(config)# security passwords max-length <NUM>

<NUM> – максимальное количество символов в пароле. Принимает значение в диапазоне [8..128].

Значение по умолчанию: не ограничено.

10

Установить минимальное количество типов символов, которые должны присутствовать в пароле локального пользователя и ENABLE-пароле (необязательно).

esr(config)# security passwords symbol-types <COUNT>

<COUNT> – минимальное количество типов символов в пароле. Принимает значение в диапазоне [1..4].

Значение по умолчанию: 1.

11

Установить минимальное количество строчных букв в пароле локального пользователя и ENABLE-пароле (необязательно).

esr(config)# security passwords lower-case <COUNT>

<COUNT> – минимальное количество строчных букв в пароле локального пользователя и ENABLE-пароле. Принимает значение в диапазоне [0..128].

Значение по умолчанию: 0.

12

Установить минимальное количество прописных (заглавных) букв в пароле локального пользователя и ENABLE-пароле (необязательно).

esr(config)# security passwords upper-case <COUNT>

<COUNT> – минимальное количество прописных (заглавных) букв в пароле. Принимает значение в диапазоне [0..128].

Значение по умолчанию: 0.

13

Установить минимальное количество цифр в пароле локального пользователя и ENABLE-пароле (необязательно).

esr(config)# security passwords numeric-count <COUNT>

<COUNT> – минимальное количество цифр в пароле. Принимает значение в диапазоне [0..128].

Значение по умолчанию: 0.

14

Установить минимальное количество специальных символов в пароле локального пользователя и ENABLE-пароле (необязательно).

esr(config)# security passwords special-case <COUNT>

<COUNT> – минимальное количество специальных символов в пароле. Принимает значение в диапазоне [0..128].

Значение по умолчанию: 0.

15

Добавить пользователя в локальную базу и перейти в режим настройки параметров пользователя.

esr(config)# username <NAME>

<NAME> – имя пользователя, задаётся строкой до 31 символа.

16

Установить пароль пользователя.

esr(config-user)# password { <CLEAR-TEXT> | encrypted <HASH_SHA512> }

<CLEAR-TEXT> – пароль, задаётся строкой [8 .. 32] символов, принимает значения [0-9a-fA-F];

<HASH_SHA512> – хеш пароля по алгоритму sha512, задаётся строкой из 110 символов.

17

Установить уровень привилегий пользователя.

esr(config-user)# privilege <PRIV>

<PRIV> – необходимый уровень привилегий. Принимает значение [1..15].

18

Установить режим работы учетной записи пользователя (необязательно).

esr(config-user)# mode <MODE>

<MODE> – режим работы учетной записи пользователя. Может принимать значения:

  • cli – режим работы по умолчанию, пользователь получает доступ к интерфейсу командной строки, предназначенному для управления, просмотра состояния и мониторинга устройства;
  • techsupport – пользователь получает доступ к командной оболочке, в которой выполняется процедура отладки устройства совместно с специалистами технической поддержки;
  • sftp – пользователь используется для организации доступа к встроенному SFTP-серверу, возможность работы в какой-либо командой оболочке при этом у пользователя отсутствует.
19

Указать метод аутентификации SSH-сессий для пользователя (необязательно).

esr(config-user)# ssh authentication method <METHOD>

<METHOD> – метод аутентификации SSH-сессий. Может принимать значения:

  • password – аутентификация пользователя при открытии SSH-сессий может быть произведена только по паролю;
  • pubkey – аутентификация пользователя при открытии SSH-сессий может быть произведена только по публичному ключу;
  • both – аутентификация пользователя при открытии SSH-сессий может быть произведена как по паролю, так и по публичному ключу.
20

Указать имя файла публичного ключа, который будет использован при аутентификации SSH-сессии пользователя (необязательно).

esr(config-user)# ssh pubkey <NAME>

<NAME> – имя файла публичного ключа, расположенного в разделе crypto:public-key, задаётся строкой до 31 символа.

21

Отключить авторизацию для предустановленного пользователя admin (необязательно).

esr(config)# no admin login enable


22

Перейти в режим конфигурирования соответствующего терминала.

esr(config)# line <TYPE>

<TYPE> – тип консоли:

  • console – локальная консоль;
  • telnet – удаленная консоль;
  • ssh – защищенная удаленная консоль.
23

Активировать список аутентификации входа пользователей в систему.

esr(config-line-console)# login authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 1.

24

Активировать список аутентификации повышения привилегий пользователей.

esr(config-line-console)# enable authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 2.

25

Задать интервал, по истечении которого будет разрываться бездействующая сессия.

esr(config-line-console)# exec-timeout <SEC>

<SEC> – период времени в минутах, принимает значения [1..65535].

Алгоритм настройки AAA по протоколу RADIUS

Шаг

Описание

Команда

Ключи

1

Задать глобальное значение кода DSCP для использования в IP-заголовках исходящих пакетов RADIUS-сервера (необязательно).

esr(config)# radius-server dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].

Значение по умолчанию: 63.

2

Задать глобальное значение количества перезапросов к последнему активному RADIUS-серверу (необязательно).

esr(config)# radius-server retransmit <COUNT>

<COUNT> – количество перезапросов к RADIUS-серверу, принимает значения [1..10].

Значение по умолчанию: 1.

3

Задать глобальное значение интервала, по истечении которого маршрутизатор считает, что RADIUS-сервер недоступен (необязательно).

esr(config)# radius-server timeout <SEC>

<SEC> – период времени в секундах, принимает значения [1..30].

Значение по умолчанию: 3 секунды.

4

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

esr(config)# radius-server host
{ <IP-ADDR> | <IPV6-ADDR> } [ vrf <VRF> ]

<IP-ADDR> – IP-адрес RADIUS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес RADIUS-сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

5Задать описание конфигурируемого RADIUS-сервера (необязательно).esr(config-radius-server)# description <description><description> – описание RADIUS-сервера, задается строкой до 255 символов.

6

Указать количество неудачных попыток аутентификации для блокировки логина пользователя и времени блокировки (необязательно).

esr(config-radius-server)# aaa authentication attempts max-fail <COUNT> <TIME>

<COUNT> – количество неудачных попыток аутентификации, после которых произойдет блокировка пользователя, принимает значения [1..65535];

<TIME> – интервал времени в секундах, на который будет заблокирован пользователь, принимает значения [1..65535].

Значение по умолчанию:

<COUNT> – 5; <TIME> – 300.

7

Задать пароль для аутентификации на удаленном RADIUS-сервере.

esr(config-radius-server)# key ascii-text
{ <TEXT> | encrypted <ENCRYPTED-TEXT> }

<TEXT> – строка [8..16] ASCII-символов;

<ENCRYPTED-TEXT> – зашифрованный пароль, размером [8..16] байт, задаётся строкой [16..32] символов.

8

Задать приоритет использования удаленного RADIUS-сервера (необязательно).

esr(config-radius-server)# priority <PRIORITY>

<PRIORITY> – приоритет использования удаленного сервера, принимает значения [1..65535].

Чем ниже значение, тем приоритетнее сервер.

Значение по умолчанию: 1.

9

Задать интервал, по истечении которого маршрутизатор считает, что данный RADIUS-сервер недоступен (необязательно).

esr(config-radius-server)# timeout <SEC>

<SEC> – период времени в секундах, принимает значения [1..30].

Значение по умолчанию: используется значение глобального таймера.

10

Задать IPv4/IPv6-адрес, который будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых RADIUS-пакетах.

esr(config-radius-server)# source-address { <ADDR>  | object-group <NETWORK_OBJ_GROUP_NAME> }

<ADDR> – IP-адрес источника, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address.

11Задать интерфейс или туннель маршрутизатора, IPv4/IPv6-адрес которого будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых RADIUS-пакетах.esr(config-radius-server)# source-interface { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; 

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

12

Задать список методов аутентификации по умолчанию (default)/с именем <NAME> и указать radius.

esr(config)# aaa authentication login { default | <NAME> } <METHOD 1>
[ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:

  • local – аутентификация с помощью локальной базы пользователей;
  • tacacs – аутентификация по списку TACACS-серверов;
  • radius – аутентификация по списку RADIUS-серверов;
  • ldap – аутентификация по списку LDAP-серверов.

13

Задать список методов аутентификации повышения привилегий пользователей по умолчанию (default)/с именем <NAME> и указать radius.


esr(config)# aaa authentication enable <NAME><METHOD 1>
[ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка строка до 31 символа;

  • default – имя списка по умолчанию.

<METHOD> – способы аутентификации:

  • enable – аутентификация с помощью enable-паролей;
  • tacacs – аутентификация по протоколу TACACS;
  • radius – аутентификация по протоколу RADIUS;
  • ldap – аутентификация по протоколу LDAP.

14

Указать способ перебора методов аутентификации в случае отказа (необязательно).

esr(config)# aaa authentication mode <MODE>

<MODE> – способы перебора методов:

  • chain – если сервер вернул FAIL, переход к следующему в цепочке методу аутентификации;
  • break – если сервер вернул FAIL, прекратить попытки аутентификации. Если сервер недоступен, продолжить попытки аутентификации следующими в цепочке методами.

Значение по умолчанию: chain.

15

Сконфигурировать RADIUS в списке способов учета сессий пользователей (необязательно).

esr(config)# aaa accounting login start-stop <METHOD 1>
[ <METHOD 2> ]

<METHOD> – способы учета:

  • tacacs – учет сессий по протоколу TACACS;
  • radius – учет сессий по протоколу RADIUS.

16

Перейти в режим конфигурирования соответствующего терминала.

esr(config)# line <TYPE>

<TYPE> – тип консоли:

  • console – локальная консоль;
  • telnet – удаленная консоль;
  • ssh – защищенная удаленная консоль.

17

Активировать список аутентификации входа пользователей в систему.

esr(config-line-console)# login authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 12.

18

Активировать список аутентификации повышения привилегий пользователей.

esr(config-line-console)# enable authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 13.

Алгоритм настройки AAA по протоколу TACACS

ШагОписаниеКомандаКлючи
1Задать глобальное значение кода DSCP для использования в IP-заголовках исходящих пакетов TACACS-сервера (необязательно).

esr(config)# tacacs-server dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].

Значение по умолчанию: 63.

2Задать глобальное значение интервала, по истечении которого маршрутизатор считает, что TACACS-сервер недоступен (необязательно).

esr(config)# tacacs-server timeout <SEC>

<SEC> – период времени в секундах, принимает значения [1..30].

Значение по умолчанию: 3 секунды.

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

esr(config)# tacacs -server host
{ <IP-ADDR> | <IPV6-ADDR> } [ vrf <VRF> ]

 

<IP-ADDR> – IP-адрес TACACS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]

<IPV6-ADDR> – IPv6-адрес TACACS -сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

4Задать описание конфигурируемого TACACS-сервера (необязательно).esr(config-tacacs-server)# description <description><description> – описание TACACS-сервера, задается строкой до 255 символов.
5Указать количество неудачных попыток аутентификации для блокировки логина пользователя и время блокировки (необязательно)

esr(config-tacacs-server)# aaa authentication attempts max-fail <COUNT> <TIME>

<COUNT> – количество неудачных попыток аутентификации, после которых произойдет блокировка пользователя, принимает значения [1..65535];

<TIME> – интервал времени в минутах, на который будет заблокирован пользователь, принимает значения [1..65535].

Значение по умолчанию:

<COUNT> – 5; <TIME> – 300.

6Задать пароль для аутентификации на удаленном TACACS-сервере

esr(config-tacacs-server)# key ascii-text  { <TEXT> | encrypted <ENCRYPTED-TEXT> }

<TEXT> – строка [8..16] ASCII-символов;

<ENCRYPTED-TEXT> – зашифрованный пароль, размером [8..16] байт, задаётся строкой [16..32] символов.

7Задать номер порта для обмена данными c удаленным TACACS-сервером (необязательно).

esr(config-tacacs-server)# port <PORT>

<PORT> – номер TCP-порта для обмена данными c удаленным сервером, принимает значения [1..65535].

Значение по умолчанию: 49 для TACACS-сервера.

8

Задать приоритет использования удаленного TACACS сервера (необязательно).

esr(config-tacacs-server)# priority <PRIORITY>

<PRIORITY> – приоритет использования удаленного сервера, принимает значения [1..65535].

Чем ниже значение, тем приоритетнее сервер.

Значение по умолчанию: 1.

9

Задать IPv4/IPv6-адрес, который будет использоваться в качестве IP/IPv6-адреса источника в отправляемых TACACS-пакетах.

esr(config-tacacs-server)# source-address { <ADDR>  | object-group <NETWORK_OBJ_GROUP_NAME> }

<ADDR> – IP-адрес источника, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address.

10Задать  интерфейс или туннель маршрутизатора, IPv4/IPv6-адрес которого будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых TACACS-пакетах.esr(config-tacacs-server)# source-interface { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; 

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

11Задать список методов аутентификации по умолчанию (default)/с именем <NAME> и указать tacacs.esr(config)# aaa authentication login { default | <NAME> } <METHOD 1>
 [ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:

  • local – аутентификация с помощью локальной базы пользователей;
  • tacacs – аутентификация по списку TACACS-серверов;
  • radius – аутентификация по списку RADIUS-серверов;
  • ldap – аутентификация по списку LDAP-серверов.

12

Задать список методов аутентификации повышения привилегий пользователей по умолчанию (default)/с именем <NAME> и указать tacacs.


esr(config)# aaa authentication enable <NAME><METHOD 1>
[ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка строка до 31 символа;

  • default – имя списка по умолчанию.

<METHOD> – способы аутентификации:

  • enable – аутентификация с помощью enable-паролей;
  • tacacs – аутентификация по протоколу TACACS;
  • radius – аутентификация по протоколу RADIUS;
  • ldap – аутентификация по протоколу LDAP.

13

Задать список методов авторизации команд, вводимых пользователем в систему по умолчанию (default)/с именем <NAME> и указать tacacs.


esr(config)# aaa authorization commands { default | <NAME> } <METHOD 1>[ <METHOD 2> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:
local – авторизация с помощью локальной базы пользователей;
tacacs – авторизация по списку TACACS-серверов;

14

Указать способ перебора методов аутентификации в случае отказа (необязательно).

esr(config)# aaa authentication mode <MODE>

<MODE> – способы перебора методов:

  • chain – если сервер вернул FAIL, переход к следующему в цепочке методу аутентификации;
  • break – если сервер вернул FAIL, прекратить попытки аутентификации. Если сервер недоступен, продолжить попытки аутентификации следующими в цепочке методами.

Значение по умолчанию: chain.

15

Сконфигурировать список способов учета команд, введённых в CLI (необязательно).

esr(config)# aaa accounting commands stop-only <METHOD>

<METHOD> – способы учета:

    tacacs – учет введенных команд по протоколу TACACS.

16

Сконфигурировать tacacs в списке способов учета сессий пользователей (необязательно).

esr(config)# aaa accounting login start-stop <METHOD 1>
[ <METHOD 2> ]

<METHOD> – способы учета:

  • tacacs – учет сессий по протоколу TACACS;
  • radius – учет сессий по протоколу RADIUS.
17

Перейти в режим конфигурирования соответствующего терминала.

esr(config)# line <TYPE>

<TYPE> – тип консоли:

  • console – локальная консоль;
  • telnet – удаленная консоль;
  • ssh – защищенная удаленная консоль.
18

Активировать список аутентификации входа пользователей в систему.

esr(config-line-console)# login authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 11.

19

Активировать список аутентификации повышения привилегий пользователей.

esr(config-line-console)# enable authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 12.

20

Активировать список авторизации команд вводимых пользователем в систему.

esr(config-line-console)# commands authorization <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 13.

Алгоритм настройки AAA по протоколу LDAP

ШагОписаниеКомандаКлючи
1Задать базовый DN (Distinguished name), который будет использоваться при поиске пользователей.

esr(config)# ldap-server base-dn <NAME>

<NAME> – базовый DN, задается строкой до 255 символов.

2

Задать интервал, по истечении которого устройство считает, что LDAP-сервер недоступен (необязательно).

esr(config)# ldap-server bind timeout <SEC>

<SEC> – период времени в секундах, принимает значения [1..30].

Значение по умолчанию: 3 секунды.

3

Задать DN (Distinguished name) пользователя с правами администратора, под которым будет происходить авторизация на LDAP-сервере при поиске пользователей.

esr(config)# ldap-server bind authenticate root-dn <NAME>

<NAME> – DN пользователя с правами администратора, задается строкой до 255 символов.

4

Задать пароль пользователя с правами администратора, под которым будет происходить авторизация на LDAP-сервере при поиске пользователей.

esr(config)# ldap-server bind authenticate root-password ascii-text
{ <TEXT> | encrypted <ENCRYPTED-TEXT> }

<TEXT> – строка [8..16] ASCII-символов;

<ENCRYPTED-TEXT> – зашифрованный пароль, размером [8..16] байт, задаётся строкой [16..32] символов.

5

Задать имя класса объектов, среди которых необходимо выполнять поиск пользователей на LDAP-сервере (необязательно).

esr(config)# ldap-server search filter user-object-class <NAME>

<NAME> – имя класса объектов, задаётся строкой до 127 символов.

Значение по умолчанию: posixAccount.


6

Задать область поиска пользователей в дереве LDAP-сервера (необязательно).

esr(config)# ldap-server search scope <SCOPE>

<SCOPE> – область поиска пользователей на LDAP-сервере, принимает следующие значения:

  • onelevel – выполнять поиск в объектах на следующем уровне после базового DN в дереве LDAP-сервера;
  • subtree – выполнять поиск во всех объектах поддерева базового DN в дереве LDAP-сервера.

Значение по умолчанию: subtree.

7

Задать интервал, по истечении которого устройство считает, что LDAP-сервер не нашел записей пользователей, подходящих под условие поиска (необязательно).

esr(config)# ldap-server search timeout <SEC>

<SEC> – период времени в секундах, принимает значения [0..30]

Значение по умолчанию: 0 – устройство ожидает завершения поиска и получения ответа от LDAP-сервера.

8

Задать имя атрибута объекта, со значением которого идет сравнение имени искомого пользователя на LDAP-сервере (необязательно).

esr(config)# ldap-server naming-attribute <NAME>

<NAME> – имя атрибута объекта, задаётся строкой до 127 символов.

Значение по умолчанию: uid.

9

Задать имя атрибута объекта, значение которого будет определять начальные привилегии пользователя на устройстве (необязательно).

esr(config)# ldap-server privilege-level-attribute <NAME>

<NAME> – имя атрибута объекта, задаётся строкой до 127 символов.

Значение по умолчанию: priv-lvl.

10

Задать глобальное значение кода DSCP для использования в IP-заголовках исходящих пакетов LDAP-сервера (необязательно).

esr(config)# ldap-server dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения в диапазоне [0..63].

Значение по умолчанию: 63.

11

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

esr(config)# ldap-server host { <IP-ADDR> | <IPV6-ADDR> }
[ vrf <VRF> ]

 

<IP-ADDR> – IP-адрес LDAP-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]

<IPV6-ADDR> – IPv6-адрес LDAP-сервера, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]

<VRF> – имя экземпляра VRF, задается строкой до 31 символа.

12Задать описание конфигурируемого LDAP-сервера (необязательно).esr(config-ldap-server)# description <description><description> – описание LDAP-сервера, задается строкой до 255 символов.

13

Указать количество неудачных попыток аутентификации для блокировки логина пользователя и время блокировки (необязательно).

esr(config-ldap-server)# aaa authentication attempts max-fail <COUNT> <TIME>

<COUNT> – количество неудачных попыток аутентификации, после которых произойдет блокировка пользователя, принимает значения [1..65535];

<TIME> – интервал времени в минутах, на который будет заблокирован пользователь, принимает значения [1..65535].

Значение по умолчанию:

<COUNT> – 5; <TIME> – 300.

14

Задать номер порта для обмена данными c удаленным LDAP-сервером (необязательно).

esr(config-ldap-server)# port <PORT>

<PORT> – номер TCP-порта для обмена данными c удаленным сервером, принимает значения [1..65535].

Значение по умолчанию: 389 для LDAP-сервера.

15

Задать приоритет использования удаленного LDAP-сервера (необязательно).

esr(config-ldap-server)# priority <PRIORITY>

<PRIORITY> – приоритет использования удаленного сервера, принимает значения [1..65535].

Чем ниже значение, тем приоритетнее сервер.

Значение по умолчанию: 1.

16

Задать IPv4/IPv6-адрес, который будет использоваться в качестве IP/IPv6-адреса источника в отправляемых LDAP-пакетах.

esr(config-ldap-server)# source-address { <ADDR>  | object-group <NETWORK_OBJ_GROUP_NAME> }

<ADDR> – IP-адрес источника, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address.

17Задать интерфейс или туннель маршрутизатора, IPv4/IPv6-адрес которого будет использоваться в качестве IPv4/IPv6-адреса источника в отправляемых LDAP-пакетах.esr(config-ldap-server)# source-interface { <IF> | <TUN> }

<IF> – имя интерфейса устройства, задаётся в виде, описанном в разделе Типы и порядок именования интерфейсов маршрутизатора; 

<TUN> – имя туннеля устройства, задаётся в виде, описанном в разделе Типы и порядок именования туннелей маршрутизатора.

18

Задать список методов аутентификации по умолчанию (default)/с именем <NAME> и указать ldap.

esr(config)# aaa authentication login { default | <NAME> }
<METHOD 1> [ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка, задаётся строкой до 31 символа.

Способы аутентификации:

  • local – аутентификация с помощью локальной базы пользователей;
  • tacacs – аутентификация по списку TACACS-серверов;
  • radius – аутентификация по списку RADIUS-серверов;
  • ldap – аутентификация по списку LDAP-серверов.
19

Задать список методов аутентификации повышения привилегий пользователей по умолчанию (default)/с именем <NAME> и указать ldap.


esr(config)# aaa authentication enable <NAME>
<METHOD 1> [ <METHOD 2> ] [ <METHOD 3> ] [ <METHOD 4> ]

<NAME> – имя списка строка до 31 символа;

  • default – имя списка по умолчанию.

<METHOD> – способы аутентификации:

  • enable – аутентификация с помощью enable-паролей;
  • tacacs – аутентификация по протоколу TACACS;
  • radius – аутентификация по протоколу RADIUS;
  • ldap – аутентификация по протоколу LDAP.

20

Указать способ перебора методов аутентификации в случае отказа.

esr(config)# aaa authentication mode <MODE>

<MODE> – способы перебора методов:

  • chain – если сервер вернул FAIL, переход к следующему в цепочке методу аутентификации;
  • break – если сервер вернул FAIL, прекратить попытки аутентификации. Если сервер недоступен, продолжить попытки аутентификации следующими в цепочке методами.

Значение по умолчанию: chain.

21

Перейти в режим конфигурирования соответствующего терминала.

esr(config)# line <TYPE>

<TYPE> – тип консоли:

  • console – локальная консоль;
  • telnet – удаленная консоль;
  • ssh – защищенная удаленная консоль.
22

Активировать список аутентификации входа пользователей в систему.

esr(config-line-console)# login authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 17.

23

Активировать список аутентификации повышения привилегий пользователей.

esr(config-line-console)# enable authentication <NAME>

<NAME> – имя списка, задаётся строкой до 31 символа. Создан на шаге 18.

Пример настройки аутентификации по Telnet через RADIUS-сервер

Задача:

Настроить аутентификацию пользователей, подключающихся по Telnet, через RADIUS (192.168.16.1/24).

Решение:

Настроим подключение к RADIUS-серверу и укажем ключ (password):

esr# configure
esr(config)# radius-server host 192.168.16.1
esr(config-radius-server)# key ascii-text encrypted 8CB5107EA7005AFF
esr(config-radius-server)# exit

Создадим профиль аутентификации:

esr(config)# aaa authentication login log radius

Укажем режим аутентификации, используемый при подключении по Telnet-протоколу:

esr(config)# line telnet
esr(config-line-telnet)# login authentication log
esr(config-line-telnet)# exit
esr(config)# exit

Просмотреть информацию по настройкам подключения к RADIUS-серверу можно командой:

esr# show aaa radius-servers

Посмотреть профили аутентификации можно командой:

esr# show aaa authentication

Настройка привилегий команд

Настройка привилегий команд является гибким инструментом, который позволяет назначить набору команд минимально необходимый уровень пользовательских привилегий (1-15). В дальнейшем при создании пользователя можно задать уровень привилегий, определяя ему доступный набор команд.

Алгоритм настройки

Для изменения минимального уровня привилегий необходимого для выполнения команды CLI используется команда:

esr(config)# privilege <COMMAND-MODE> level <PRIV><COMMAND>

<COMMAND-MODE> – командный режим;

<PRIV> – необходимый уровень привилегий поддерева команд, принимает значение [1..15];

<COMMAND> – поддерево команд, задается строкой до 255 символов.

Пример настройки привилегий команд

Задача:

Перевести все команды просмотра информации об интерфейсах на уровень привилегий 10, кроме команды show interfaces bridges. Команду show interfaces bridges перевести на уровень привилегий 3.

Решение:

В режиме конфигурирования определим команды, разрешенные на использование с уровнем привилегий 10 и уровнем привилегий 3:

esr(config)# privilege root level 3 "show interfaces bridge"
esr(config)# privilege root level 10 "show interfaces"

Настройка логирования и защиты от ARP-spoofing атак

Алгоритм настройки

Шаг

Описание

Команда

Ключи

1

Включить защиту от ARP-spoofing атак на сетевом интерфейсе/сетевом мосту.

esr(config-if-gi)# ip arp inspection


2

Включить логирование отброшенных ARP-ответов (необязательно).

esr(config)# logging firewall arp-inspection


Пример настройки защиты от ARP-spoofing атак

Задача:

Необходимо защитить LAN-сеть и маршрутизатор ESR от ARP-spoofing атак  и настроить логирование об атаках на удаленный syslog-сервер.



Решение:

Настраиваем интерфейсы и включем на них защиту от ARP-spoofing атак:

esr(config)# interface gigabitethernet 1/0/2
esr(config-if-gi)# ip address 10.0.0.1/24
esr(config-if-gi)# exit 
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# ip address 192.168.0.1/24
esr(config-if-gi)# ip arp inspection
esr(config-if-gi)# exit

Настраиваем параметры удаленного syslog-сервера:

esr(config)# syslog host SYSLOG_SERVER
esr(config-syslog-host)# remote-address 192.168.0.10
esr(config-syslog-host)# severity info
esr(config-syslog-host)# exit

Включаем логирование об ARP-spoofing атаках:

esr(config)# logging firewall arp-inspection

Просмотреть счетчики заблокированных ARP-ответов:

esr# show ip firewall arp-inspections 
Interface              Count                  
--------------------   --------------------   
gi1/0/1                9

Сбросить счетчики заблокированных ARP-ответов:

esr# clear ip firewall arp-inspections counters

Уведомление об ARP-spoofing атаке на удаленном syslog-сервере:

2025-11-24T12:29:01+07:00 esr firewalld %FIREWALL-W-EVENT_WARN: arp-inspection a8:f9:4b:ac:4d:3e(192.168.0.12) -> 50:75:bd:04:fd:00(192.168.0.1) denied (gi1/0/1 a8:f9:4b:ac:4d:3e)

Настройка логирования и защиты от сетевых атак 

Алгоритм настройки

Шаг

Описание

Команда

Ключи

1

Включить защиту от ICMP flood-атак.

esr(config)# ip firewall screen dos-defense
icmp-threshold { <NUM> }

<NUM> – количество ICMP-пакетов в секунду, задается в диапазоне [1..10000].

2

Включить защиту от land-атак.

esr(config)# firewall screen dos-defense land


3

Включить ограничение числа пакетов, отправляемых за одну секунду на один адрес назначения

esr(config)# ip firewall screen dos-defense
limit-session-destination { <NUM> }

<NUM> – ограничение числа IP-пакетов в секунду, задается в диапазоне [1..10000].

4

Включить ограничение числа пакетов, отправляемых за одну секунду с единого адреса источника

esr(config)# ip firewall screen dos-defense
limit-session-source { <NUM> }

<NUM> – ограничение числа IP-пакетов в секунду, задается в диапазоне [1..10000].

5

Включить защиту от SYN flood-атак.

esr(config)# ip firewall screen dos-defense
syn-flood { <NUM> } [src-dsr]

<NUM> – максимальное количество TCP-пакетов с установленным флагом SYN в секунду, задается в диапазоне [1..10000].

src-dst – ограничение количества TCP-пакетов с установленным флагом SYN на основании адреса источника и адреса назначения.

6

Включить защиту от UDP flood-атак.

esr(config)# ip firewall screen dos-defense
udp-threshold { <NUM> }

<NUM> – максимальное количество UDP-пакетов в секунду, задается в диапазоне [1..10000].

7

Включить защиту от winnuke-атак.

esr(config)# ip firewall screen dos-defense winnuke


8

Включить защиту от zero-port-атак

esr(config)# ip firewall screen dos-defense zero-port


9

Включить блокировку TCP-пакетов с установленным флагом FIN и не установленным флагом ACK.

esr(config)# ip firewall screen spy-blocking fin-no-ack


10

Включить блокировку ICMP-пакетов различных типов.

esr(config)# ip firewall screen spy-blocking icmp-type

<TYPE> – тип ICMP, может принимать значения:

  • destination-unreachable
  • echo-request
  • reserved
  • source-quench
  • time-exceeded

11

Включить защиту от IP sweep-атак.

esr(config)# ip firewall screen spy-blocking ip-sweep { <NUM> }

<NUM> – интервал выявления ip sweep атаки, задается в миллисекундах [1..1000000].

12

Включить защиту от port scan-атак.

esr(config)# ip firewall screen spy-blocking port-scan
{ <threshold> } [ <TIME> ]

<threshold> – интервал в секундах, в течение которого будет фиксироваться port scan-атака [1..10000].

<TIME> – время блокировки в миллисекундах [1..1000000].

13

Включить защиту от IP spoofing-атак.

esr(config)# ip firewall screen spy-blocking spoofing


14Исключить из защиты от IP-spoofing атак указанную Object Group.esr(config)# ip firewall screen spy-blocking spoofing exclude <object-group><object-group> – список разрешённых для spoofing подсетей.

15

Включить блокировку TCP-пакетов, с установленными флагами SYN и FIN.

esr(config)# ip firewall screen spy-blocking syn-fin


16

Включить блокировку TCP-пакетов, со всеми флагами или с набором флагов: FIN, PSH, URG. Данной командой обеспечивается защита от атаки XMAS.

esr(config)# ip firewall screen spy-blocking tcp-all-flag


17

Включить блокировку TCP-пакетов, с нулевым полем flags.

esr(config)# ip firewall screen spy-blocking tcp-no-flag


18

Включить блокировку фрагментированных
ICMP-пакетов.

esr(config)# ip firewall screen suspicious-packets icmp-fragment


19

Включить блокировку фрагментированных IP-пакетов.

esr(config)# ip firewall screen suspicious-packets ip-fragment


20

Включить блокировку ICMP-пакетов длиной более 1024 байт.

esr(config)# ip firewall screen suspicious-packets icmp-fragment


21

Включить блокировку фрагментированных TCP-пакетов, с флагом SYN.

esr(config)# ip firewall screen suspicious-packets syn-fragment


22

Включить блокировку фрагментированных UDP-пакетов.

esr(config)# ip firewall screen suspicious-packets udp-fragment


23

Включить блокировку пакетов, с ID протокола в заголовке IP равном 137 и более.

esr(config)# ip firewall screen suspicious-packets unknown-protocols


24

Установить частоту оповещения (по SNMP, syslog и в CLI) об обнаруженных и отраженных сетевых атаках.

esr(config)# ip firewall logging interval <NUM>


<NUM> – интервал времени в секундах [30 .. 2147483647].

25

Включить механизм обнаружения и логирования DoS-атак через CLI, Syslog и по SNMP.

esr(config)# logging firewall screen dos-defense <ATACK_TYPE>

<ATACK_TYPE> – тип DoS-атаки, принимает значения: icmp-threshold, land, limit-session-destination, limit-session-source, syn-flood, udp-threshold, winnuke.

26

Включить механизм обнаружения и логирования шпионской активности через CLI, Syslog и по SNMP.

esr(config)# logging firewall screen spy-blocking
{ <ATACK_TYPE> | icmp-type <ICMP_TYPE> }

<ATACK_TYPE> – тип шпионской активности, принимает значения: fin-no-ack, ip-sweep, port-scan, spoofing, syn-fin, tcp-all-flag, tcp-no-flag.

<ICMP_TYPE> – тип ICMP, принимает значения: destination-unreachable, echo-request, reserved, source-quench, time-exceeded.

27

Включить механизм обнаружения нестандартных пакетов и логирования через CLI, Syslog и по SNMP.

esr(config)# logging firewall screen suspicious-packets <PACKET_TYPE>

<PACKET_TYPE> – тип нестандартных пакетов, принимает значения: icmp-fragment, ip-fragment, large-icmp, syn-fragment, udp-fragment, unknown-protocols.

Описание механизмов защиты от атак

КомандаОписание
ip firewall screen dos-defense icmp-thresholdДанная команда включает защиту от ICMP flood-атак. При включенной защите ограничивается количество ICMP-пакетов всех типов в секунду для одного source-адреса. Атака приводит к перегрузке хоста и выводу его из строя из-за необходимости обрабатывать каждый запрос и отвечать на него.
firewall screen dos-defense landДанная команда включает защиту от land-атак. При включенной защите блокируются пакеты с одинаковыми source и destination IP-адресами и флагом SYN в заголовке TCP. Атака приводит к перегрузке хоста и выводу его из строя из-за необходимости обрабатывать каждый TCP SYN пакет и попыток хоста установить TCP-сессию с самим собой.
ip firewall screen dos-defense limit-session-destinationКогда таблица IP-сессий хоста переполняется, он больше не в состоянии организовывать новые сессии и отбрасывает запросы (такое может происходить при различных DoS-атаках: SYN flood, UDP flood, ICMP flood, и т.д.). Команда включает ограничение числа пакетов, передаваемых за секунду на один адреса назначения, которое смягчает DoS-атаки.
ip firewall screen dos-defense limit-session-sourceКогда таблица IP-сессий хоста переполняется, он больше не в состоянии организовывать новые сессии и отбрасывает запросы (такое может происходить при различных DoS-атаках: SYN flood, UDP flood, ICMP flood, и т.д.). Команда включает ограничение числа пакетов, передаваемых за секунду с одного адреса источника, которое смягчает DoS-атаки.
ip firewall screen dos-defense syn-floodДанная команда включает защиту от SYN flood-атак. При включенной защите ограничивается количество TCP-пакетов с установленным флагом SYN в секунду для одного адреса назначения. Атака приводит к перегрузке хоста и выводу его из строя из-за необходимости обрабатывать каждый TCP SYN пакет и попыток установить TCP-сессии.
ip firewall screen dos-defense udp-thresholdДанная команда включает защиту от UDP flood-атак. При включенной защите ограничивается количество UDP-пакетов в секунду для одного адреса назначения. Атака приводит к перегрузке хоста и выводу его из строя из-за массивного UDP-трафика.
ip firewall screen dos-defense winnukeДанная команда включает защиту от winnuke-атак. При включенной защите блокируются
TCP-пакеты с установленным флагом URG и 139 портом назначения. Атака приводит к выходу из строя старых версий Windows (до 95 версии).
ip firewall screen dos-defense zero-portДанная команда включает защиту от zero-port-атак. При включенной защите блокируются TCP/UDP-пакеты с установленным портом источника/назначения равным нулю.
ip firewall screen spy-blocking fin-no-ackДанная команда включает блокировку TCP-пакетов с установленным флагом FIN и не установленным флагом ACK. Такие пакеты являются нестандартными, и по ответу можно определить операционную систему жертвы.
ip firewall screen spy-blocking icmp-type destination-unreachableДанная команда включает блокировку всех ICMP-пакетов 3 типа (destination-unreachable), включая пакеты, сгенерированные самим маршрутизатором. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.
ip firewall screen spy-blocking icmp-type echo-requestДанная команда включает блокировку всех ICMP-пакетов 8 типа (echo-request), включая пакеты, сгенерированные самим маршрутизатором. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.
ip firewall screen spy-blocking icmp-type reservedДанная команда включает блокировку всех ICMP-пакетов 2 и 7 типов (reserved), включая пакеты, сгенерированные самим маршрутизатором. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.
ip firewall screen spy-blocking icmp-type source-quenchДанная команда включает блокировку всех ICMP-пакетов 4 типа (source quench), включая пакеты, сгенерированные самим маршрутизатором. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.
ip firewall screen spy-blocking icmp-type time-exceededДанная команда включает блокировку всех ICMP-пакетов 11 типа (time exceeded), включая пакеты, сгенерированные самим маршрутизатором. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.
ip firewall screen spy-blocking ip-sweep

Данная команда включает защиту от IP sweep-атак. При включенной защите, если в течение заданного в параметрах интервала приходит более 10 ICMP-запросов от одного источника, первые 10 запросов пропускаются маршрутизатором, а 11 и последующие отбрасываются на оставшееся время интервала. Защита не дает злоумышленнику узнать о топологии сети и доступности хостов.

ip firewall screen spy-blocking port-scan

Данная команда включает защиту от port scan-атак. Если в течение первого заданного интервала времени (<threshold>) на один источник приходит более 10 TCP-пакетов с флагом SYN на разные TCP-порты или более 10 UDP-пакетов на разные UDP-порты, то такое поведение фиксируется как port scan-атака, и все последующие пакеты такого рода от источника блокируются на второй заданный интервал времени (<TIME>). Злоумышленник не сможет быстро просканировать открытые порты на устройстве.

ip firewall screen spy-blocking spoofing

Данная команда включает защиту от ip spoofing-атак. При включенной защите маршрутизатор проверяет пакеты на соответствие адреса источника и записей в таблице маршрутизации, и в случае несоответствия пакет отбрасывается. Например, если пакет с адресом источника 10.0.0.1/24 приходит на интерфейс Gi1/0/1, а в таблице маршрутизации данная подсеть располагается за интерфейсом Gi1/0/2, то считается, что адрес источника был подменен. Защищает от вторжений в сеть с подмененными source IP-адресами.

ip firewall screen spy-blocking spoofing exclude <object-group>Данная команда исключает из защиты от IP-spoofing атак указанную Object Group. В Object Group помещается список из допустимых адресов, которые будут игнорироваться. Команда используется вместе с основной ip firewall screen spy-blocking spoofing, которая включает защиту, иначе она не будет иметь эффекта. В случае, если на маршрутизатор приходит spoofing от разрешённых подсетей (например, частый опрос устройств в сети), пакеты пропускаются.

ip firewall screen spy-blocking syn-fin

Данная команда включает блокировку TCP-пакетов с установленными флагами SYN и FIN. Такие пакеты являются нестандартными, и по ответу можно определить операционную систему жертвы.

ip firewall screen spy-blocking tcp-all-flag

Данная команда включает блокировку TCP-пакетов со всеми флагами или с набором флагов: FIN, PSH, URG. Обеспечивается защита от атаки XMAS.

ip firewall screen spy-blocking tcp-no-flag

Данная команда включает блокировку TCP-пакетов с нулевым полем flags. Такие пакеты являются нестандартными, и по ответу можно определить операционную систему жертвы.

ip firewall screen suspicious-packets icmp-fragment

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

ip firewall screen suspicious-packets ip-fragment

Данная команда включает блокировку фрагментированных пакетов.

ip firewall screen suspicious-packets large-icmp

Данная команда включает блокировку ICMP-пакетов длиной более 1024 байт.

ip firewall screen suspicious-packets syn-fragment

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

ip firewall screen suspicious-packets udp-fragment

Данная команда включает блокировку фрагментированных UDP-пакетов.

ip firewall screen suspicious-packets unknown-protocols

Данная команда включает блокировку пакетов, с ID протокола в заголовке IP равном 137 и более.

Пример настройки логирования и защиты от сетевых атак

Задача:

Необходимо защитить LAN-сеть и маршрутизатор ESR от сетевых атак land, syn-flood, ICMP flood и настроить оповещение об атаках по SNMP на SNMP-сервер 192.168.0.10.


Решение:

Предварительно необходимо настроить интерфейсы и firewall (настройка firewall или ее отсутствие не повлияют на работу защиты от сетевых атак):

esr(config)# security zone LAN
esr(config-security-zone)# exit 
esr(config)# security zone WAN
esr(config-security-zone)# exit
esr(config)# security zone-pair LAN WAN
esr(config-security-zone-pair)# rule 100
esr(config-security-zone-pair-rule)# action permit 
esr(config-security-zone-pair-rule)# enable 
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit 
esr(config)# security zone-pair WAN LAN
esr(config-security-zone-pair)# rule 100
esr(config-security-zone-pair-rule)# action permit 
esr(config-security-zone-pair-rule)# enable 
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit
esr(config)# exit
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# security-zone LAN
esr(config-if-gi)# ip address 192.168.0.1/24
esr(config-if-gi)# exit 
esr(config)# interface gigabitethernet 1/0/2
esr(config-if-gi)# security-zone WAN
esr(config-if-gi)# ip address 10.0.0.1/24
esr(config-if-gi)# exit

Настроим защиту от land, syn-flood, ICMP flood-атак:

esr(config)# ip firewall screen dos-defense land 
esr(config)# ip firewall screen dos-defense syn-flood 100 src-dst 
esr(config)# ip firewall screen dos-defense icmp-threshold 100 

Настроим логирование обнаруженных атак:

esr(config)# logging firewall screen dos-defense land 
esr(config)# logging firewall screen dos-defense syn-flood 
esr(config)# logging firewall screen dos-defense icmp-threshold 

Настроим SNMP-сервер, на который будут отправляться трапы:

esr(config)# snmp-server
esr(config)# snmp-server host 192.168.0.10 
esr(config)# snmp-server enable traps screen land 
esr(config)# snmp-server enable traps screen syn-flood 
esr(config)# snmp-server enable traps screen icmp-threshold 

Посмотреть статистику по зафиксированным сетевым атакам можно командой:

esr# show ip firewall screen counters

Очистить статистику по зафиксированным сетевым атакам можно командой:

esr# clear ip firewall screen counters

Конфигурирование Firewall

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

Алгоритм настройки

ШагОписаниеКомандаКлючи
1Создать зоны безопасности.

esr(config)# security zone <zone-name1>

esr(config)# security zone <zone-name2>

<zone-name> – до 12 символов.

Имена all, any и self зарезервированы.

2Задать описание зоны безопасности.

esr(config-security-zone)# description <description>

<description> – до 255 символов.
3Указать экземпляр VRF, в котором будет работать данная зона безопасности (необязательно).

esr(config- security-zone)# ip vrf forwarding <VRF>

<VRF> – имя VRF, задается строкой до 31 символа.
4Включить счетчики сессий для NAT и Firewall (необязательно, снижает производительность).

esr(config)# ip firewall sessions counters


5Отключить фильтрацию пакетов, для которых не удалось определить принадлежность к какому-либо известному соединению и которые не являются началом нового соединения (необязательно, снижает производительность).

esr(config)# ip firewall sessions unknown <ACTION>

<ACTION> – правило обработки неизвестных сессий для межсетевого экрана:

permit – разрешить неизвестные сессии;
deny – отбрасывать неизвестные сессии;
reject – отбрасывать неизвестные сессии и отправлять обратно пакет с ошибкой.

6

Выбрать режим работы межсетевого экрана (необязательно).

В режиме stateful проверяется только первый пакет сессии, и если «прямой» трафик разрешён, «ответный» трафик разрешается автоматически.

В режиме stateless происходит проверка каждого пакета. «Прямой» и «ответный» трафики требуется разрешать в соответствующих zone-pair (см. шаг 29).

Работа межсетевого экрана по списку приложений возможна только в режиме stateless.

esr(config)# ip firewall mode <MODE>

<MODE> – режим работы межсетевого экрана, может принимать значения: stateful, stateless.

Значение по умолчанию: stateful.

7

Определить время жизни сессии для неподдерживаемых протоколов (необязательно).

esr(config)# ip firewall sessions generic-timeout <TIME>

<TIME> – время жизни сессии для неподдерживаемых протоколов, принимает значения в секундах [1..8553600].

По умолчанию: 60 секунд.

8

Определить время жизни ICMP-сессии, по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions icmp-timeout <TIME>

<TIME> – время жизни ICMP-сессии, принимает значения в секундах [1..8553600].

По умолчанию: 30 секунд.

9

Определить время жизни ICMPv6-сессии, по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions icmpv6-timeout <TIME>

<TIME> – время жизни ICMP-сессии, принимает значения в секундах [1..8553600].

По умолчанию: 30 секунд.

10

Определить размер таблицы сессий, ожидающих обработки (необязательно).

esr(config)# ip firewall sessions max-expect <COUNT>

<COUNT> – размер таблицы, принимает значения [1..8553600].

По умолчанию: 256.

11

Определить размер таблицы отслеживаемых сессий (необязательно).

esr(config)# ip firewall sessions max-tracking <COUNT>

<COUNT> – размер таблицы, принимает значения [1..8553600].
По умолчанию: 512000.

12

Определить время жизни TCP-сессии в состоянии «соединение устанавливается», по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions tcp-connect-timeout <TIME>

<TIME> – время жизни TCP-сессии в состоянии «соединение устанавливается», принимает значения в секундах [1..8553600].

По умолчанию: 60 секунд.

13

Определить время жизни TCP-сессии в состоянии «соединение закрывается», по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions tcp-disconnect-timeout <TIME>

<TIME> – время жизни TCP-сессии в состоянии «соединение закрывается» принимает значения в секундах [1..8553600].
По умолчанию: 30 секунд.

14

Определить время жизни TCP-сессии в состоянии «соединение установлено», по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions tcp-established-timeout <TIME>

<TIME> – время жизни TCP-сессии в состоянии «соединение установлено», принимает значения в секундах [1..8553600].

По умолчанию: 120 секунд.

15

Определить время ожидания, по истечении которого происходит фактическое удаление закрытой TCP-сессии из таблицы отслеживаемых сессий (необязательно).

esr(config)# ip firewall sessions tcp-latecome-timeout <TIME>

<TIME> – время ожидания, принимает значения в секундах [1..8553600].

По умолчанию: 120 секунд.

16

Включить функцию отслеживания сессий уровня приложений для отдельных протоколов (необязательно).

esr(config)# ip firewall sessions tracking

<PROTOCOL> – протокол уровня приложений [ftp, h323, pptp, netbios-ns, tftp], сессии которого должны отслеживаться.

<OBJECT-GROUP-SERVICE> – имя профиля TCP/UDP-портов sip-сессии, задаётся строкой до 31 символа. Если группа не указана, то отслеживание сессий sip будет осуществляться для порта 5060.

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

По умолчанию – отключено для всех протоколов.

17

Определить время жизни UDP-сессии в состоянии «соединение подтверждено», по истечении которого она считается устаревшей (необязательно).

esr(config)# ip firewall sessions udp-assured-timeout <TIME>

<TIME> – время жизни UDP-сессии в состоянии «соединение подтверждено», принимает значения в секундах [1..8553600].

По умолчанию: 180 секунд.

18

Определить время жизни UDP-сессии в состоянии «соединение не подтверждено», по истечении которого она считается устаревшей.

esr(config)# ip firewall sessions udp-wait-timeout <TIME>

<TIME> – время жизни UDP-сессии в состоянии «соединение не подтверждено», принимает значения в секундах [1..8553600].

По умолчанию: 30 секунд.

19Создать списки MAC-адресов, которые будут использоваться при фильтрации.esr(config)# object-group mac <obj-group-name><obj-group-name> – до 31 символа.
20Задать описание списка MAC-адресов (необязательно).esr(config-object-group-mac)# description <description><description> – описание профиля, задается строкой до 255 символов.
21Внести необходимые MAC-адреса в список.esr(config-object-group-mac)# mac address <ADDR> <WILDCARD>

<ADDR> – МАС-адрес, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF].

<WILDCARD> – маска МАС-адреса, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF]. Биты маски, установленные в 0, задают биты MAC-адреса, исключаемые из сравнения при поиске.

22

Создать списки IP-адресов, которые будут использоваться при фильтрации.

esr(config)# object-group network <obj-group-name>

<obj-group-name> – до 31 символа.

23

Задать описание списка IP-адресов (необязательно).

esr(config-object-group-network)# description <description>

<description> – описание профиля, задается строкой до 255 символов.

24

Внести необходимые IPv4/IPv6-адреса в список.

esr(config-object-group-network)# ip prefix <ADDR/LEN> [ unit <ID> ]

<ADDR/LEN> – подсеть, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32].

<ID> – номер юнита, принимает значения [1..4].

esr(config-object-group-network)# ip address-range
<FROM-ADDR>-<TO-ADDR> [ unit <ID> ]

<FROM-ADDR> – начальный IP-адрес диапазона адресов;

<TO-ADDR> – конечный IP-адрес диапазона адресов, опциональный параметр. Если параметр не указан, то командой задаётся одиночный IP-адрес.

Адреса задаются в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

<ID> – номер юнита, принимает значения [1..4].

esr(config-object-group-network)# ipv6 prefix <IPV6-ADDR/LEN> [ unit <ID> ]

<IPV6-ADDR/LEN> – IP-адрес и маска подсети, задаётся в виде X:X:X:X::X/EE, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и EE принимает значения [1..128].

<ID> – номер юнита, принимает значения [1..4].

esr(config-object-group-network)# ipv6 address-range
<FROM-ADDR>-<TO-ADDR> [ unit <ID> ]

<FROM-ADDR> – начальный IPv6-адрес диапазона адресов;

<TO-ADDR> – конечный IPv6-адрес диапазона адресов, опциональный параметр. Если параметр не указан, то командой задаётся одиночный IPv6-адрес.

Адреса задаются в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF].

<ID> – номер юнита, принимает значения [1..4].

25

Создать списки сервисов, которые будут использоваться при фильтрации.

esr(config)# object-group service <obj-group-name>

<obj-group-name> – имя профиля сервисов, задается строкой до 31 символа.

26

Задать описание списка сервисов (необязательно).

esr(config-object-group-service)# description <description>

<description> – описание профиля, задается строкой до 255 символов.

27

Внести необходимые сервисы (tcp/udp-порты) в список.

esr(config-object-group-service)# port-range <port>

<port> – принимает значение [1..65535].

Можно указать несколько портов перечислением через запятую «,» либо указать диапазон портов через «-».

28

Создать списки приложений, которые будут использоваться в механизме DPI.

esr(config)# object-group application <NAME>

<NAME> – имя профиля приложений, задается строкой до 31 символа.

29

Задать описание списка приложений (необязательно).

esr(config-object-group-application)# description <description>

<description> – описание профиля, задается строкой до 255 символов.

30

Внести необходимые приложения в списки.

esr(config-object-group-application)# application < APPLICATION >

<APPLICATION> – указывает приложение, попадающее под действие данного профиля.

31

Создать список доменных имен, которые будут использоваться при фильтрации.

esr(config)# object-group domain-name <NAME>

<NAME> – имя профиля доменных имен, задается строкой до 31 символа.

32

Задать описание списка доменных имен (необязательно).

esr(config-object-group-domain-name)# description <description>

<description> – описание профиля, задается строкой до 255 символов.

33

Внести необходимые доменные имена в списки.

esr(config-object-group-domain-name)# domain <DOMAIN>

<DOMAIN> – доменное имя, строка длинной от 1 до 253 символов.

34


Включить интерфейсы (физические, логические, E1/Multilink и подключаемые), сервер удаленного доступа (l2tp, openvpn, pptp) или туннели (gre, ip4ip4, l2tp, lt, pppoe, pptp) в зоны безопасности (если необходимо).

esr(config-if-gi)# security-zone <zone-name>

<zone-name> – до 12 символов.

Отключить функции Firewall на сетевом интерфейсе (физические, логические, E1/Multilink и подключаемые), сервере удаленного доступа (l2tp, openvpn, pptp) или туннели (gre, ip4ip4, l2tp, lt, pppoe, pptp) (если необходимо).

esr(config-if-gi)# ip firewall disable


Отключить функции Firewall глобально на всех сетевых сущностях (если необходимо).

esr(config)# ip firewall disable


35

Создать набор правил межзонового взаимодействия.

На маршрутизаторе всегда существует зона безопасности с именем «self». Если в качестве получателя трафика выступает сам маршрутизатор, то есть трафик не является транзитным, то в качестве параметра указывается зона «self».

Очерёдность обработки трафика для разных zone-pair описана в примечании.

esr(config)# security zone-pair <src-zone-name1> <dst-zone-name2>

<src-zone-name> – до 12 символов.

<dst-zone-name> – до 12 символов.

36

Создать правило межзонового взаимодействия.

esr(config-security-zone-pair)# rule <rule-number>

<rule-number> – 1..10000.

37

Задать описание правила (необязательно).

esr(config-security-zone-pair)# description <description>

<description> – до 255 символов.

38

Указать действие данного правила.

esr(config-security-zone-pair-rule)# action <action> [ log ]

<action> – permit/deny/reject/netflow-sample/sflow-sample/rate-limit/session-limit

Ключ session-limit применим только на моделях
ESR-30/ESR-31/ESR-3100/ESR-3150/ESR-3200/ESR-3200L/ESR-3250/ ESR-3300/ ESR-3350.

log – ключ для активации логирования сессий, устанавливающимися согласно данному правилу.

39

Установить имя или номер IP-протокола, для которого должно срабатывать правило (необязательно).

esr(config-security-zone-pair-rule)# match [not] protocol <protocol-type>

<protocol-type> – тип протокола, принимает значения: esp, icmp, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rdp, l2tp, gre.

При указании значения «any» правило будет срабатывать для любых протоколов.

esr(config-security-zone-pair-rule)# match [not] protocol-id <protocol-id>

<protocol-id> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF].

40

Установить IP-адрес отправителя, для которых должно срабатывать правило (необязательно).

esr(config-security-zone-pair-rule)# match [not] source-address { address-range { <ADDR>[-<ADDR>] | <IPV6-ADDR>[-<IPV6-ADDR>] } | prefix { <ADDR/LEN> | <IPv6-ADDR/LEN> } |
object-group { network <OBJ-GROUP-NETWORK-NAME> | domain-name <OBJ-GROUP-DOMAIN-NAME> } | any }

 



address-range <ADDR>[-<ADDR>] – диапазон IP-адресов для правил firewall. Если не указывать IP-адрес конца диапазона, то в качестве IP-адреса для срабатывания правила используется только IP-адрес начала диапазона.
Параметр задаётся в виде A.B.C.D, где каждая часть принимает значения [0..255]; <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF];

prefix <ADDR/LEN> – IP-подсеть, используемая для срабатывания правила фильтрации firewall. Параметр задаётся в виде A.B.C.D/E, где каждая часть A – D принимает значения [0..255] и E принимает значения [1..32]; <IPv6-ADDR/LEN> – IPv6-адрес, задаётся в виде X:X:X:X::X/E, где каждая часть X принимает значения в шестнадцатеричном формате [0..FFFF] и E принимает значения [1..128];

object-group network <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа;

object-group domain-name <OBJ-GROUP-DOMAIN-NAME> – имя профиля доменных имен, задаётся строкой до 31 символа.

При указании значения any правило будет срабатывать для любого IP-адреса получателя.

41

Установить IP-адрес получателя, для которых должно срабатывать правило (необязательно).

esr(config-security-zone-pair-rule)# match [not] destination-address { address-range { <ADDR>[-<ADDR>] | <IPV6-ADDR>[-<IPV6-ADDR>] } | prefix { <ADDR/LEN> | <IPv6-ADDR/LEN> } |
object-group { network <OBJ-GROUP-NETWORK-NAME> | domain-name <OBJ-GROUP-DOMAIN-NAME> } | any }

42

Установить MAC-адрес отправителя, для которого должно срабатывать правило (необязательно).

esr(config-security-zone-pair-rule)# match [not] source-mac {<mac-addr> | <OBJ-GROUP-NAME>}

<mac-addr> – задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF].

<OBJ-GROUP-NAME> – имя профиля MAC-адресов, задаётся строкой до 31 символа.

43

Установить MAC-адрес получателя, для которого должно срабатывать правило (необязательно).

esr(config-security-zone-pair-rule)# match [not] destination-mac {<mac-addr> | <OBJ-GROUP-NAME>}

44

Установить TCP/UDP-порт отправителя, для которого должно срабатывать правило (если указан протокол).

esr(config-security-zone-pair-rule)# match [not] source-port <TYPE> {<PORT-SET-NAME> | <FROM-PORT> - <TO-PORT>}

<TYPE> – тип аргумента, устанавливаемый в качестве порта:

  • object-group – указать имя профиля;
  • port-range – указать диапазон портов;
  • any – установить в качестве порта любой порт.

<PORT-SET-NAME> – задаётся строкой до 31 символа;

<FROM-PORT> – начальный порт диапазона;

<TO-PORT> – конечный порт диапазона.

45

Установить TCP/UDP-порт получателя, для которого должно срабатывать правило (если указан протокол).

esr(config-security-zone-pair-rule)# match [not] destination-port <TYPE> {<PORT-SET-NAME> | <FROM-PORT> - <TO-PORT>}

46Установить профиль приложений, который будет использоваться в механизме DPI.esr(config-security-zone-pair-rule)# match [not] application <OBJ-GROUP-NAME><OBJ-GROUP-NAME> – имя профиля приложений, задаётся строкой до 31 символа.

47

Установить тип и код сообщений протокола ICMP, для которых должно срабатывать правило (если в качестве протокола выбран ICMP) (необязательно).

esr(config-security-zone-pair-rule)# match [not] icmp <ICMP_TYPE> <ICMP_CODE>

<ICMP_TYPE> – тип сообщения протокола ICMP, принимает значения [0..255];

<ICMP_CODE> – код сообщения протокола ICMP, принимает значения [0..255]. При указании значения «any» правило будет срабатывать для любого кода сообщения протокола ICMP.

48

Установить тип и код сообщений протокола ICMPv6, для которых должно срабатывать правило (если в качестве протокола выбран ICMP) (необязательно).

esr(config-security-zone-pair-rule)# match [not] icmpv6 <ICMP_TYPE> <ICMP_CODE>

<ICMP_TYPE> – тип сообщения протокола ICMPv6, принимает значения [0..255];

<ICMP_CODE> – код сообщения протокола ICMPv6, принимает значения [0..255]. При указании значения «any» правило будет срабатывать для любого кода сообщения протокола ICMP.

49

Установить ограничение, при котором правило будет срабатывать только для трафика, измененного сервисом трансляции IP-адресов и портов получателя.

esr(config-security-zone-pair-rule)# match [not] destination-nat


50

Установить фильтрацию только для фрагментированных IP-пакетов (необязательно, доступно только для zone-pair any self и zone-pair <zone-name> any).

esr(config-security-zone-pair-rule)# match [not] fragment


51

Установить фильтрацию для IP-пакетов, содержащих ip-option (необязательно, доступно только для zone-pair any self и zone-pair <zone-name> any).

esr(config-security-zone-pair-rule)# match [not] ip-option


52

Включить правило межзонового взаимодействия.

esr(config-security-zone-pair-rule)# enable


53

Активировать фильтрацию и режим отслеживания сессий при прохождении пакетов между участниками одной Bridge-группы (необязательно).

esr(config-bridge)# ports firewall enable


54

Добавить работу правила безопасности по расписанию.

esr(config-security-zone-pair-rule)# scheduler <SCHEDULER>

<SCHEDULER> – название существующего в конфигурации расписания.


Порядок обработки транзитного трафика правилами firewall

  1. Трафик проверяется правилами zone-pair user-zone any.
    Если трафик не попал ни под одно из правил текущей zone-pair, переходим к следующему шагу.
    Разрешение трафика правилом в этой zone-pair не пропускает проверки следующих zone-pair.
  2. Если трафик передаётся с одного интерфейса на другой в пределах одной зоны (user-zone), то он проверяется правилами zone-pair user-zone user-zone.
    Если трафик не попал ни под одно из правил текущей zone-pair, переходим к следующему шагу.
  3. Если трафик передаётся с одного интерфейса на другой в разных зонах, то он проверяется правилами zone-pair user-zone1 user-zone2.
    Если трафик не попал ни под одно из правил текущей zone-pair, переходим к следующему шагу.
  4. Трафик проверяется правилами zone-pair any any.
    Если трафик не попал ни под одно из правил текущей zone-pair, он отбрасывается.

Порядок обработки трафика, терминируемого на маршрутизаторе

  1. Трафик проверяется правилами zone-pair any self.
    Если трафик не попал ни под одно из правил текущей zone-pair, переходим к следующему шагу.
    Разрешение трафика правилом в этой zone-pair не пропускает проверки следующих zone-pair.
  2. Трафик проверяется правилами zone-pair user-zone self.
    Если трафик не попал ни под одно из правил текущей zone-pair, переходим к следующему шагу.
  3. Трафик проверяется правилами zone-pair any any.
    Если трафик не попал ни под одно из правил текущей zone-pair, он отбрасывается.

Каждая команда «match» может содержать ключ «not». При использовании данного ключа под правило будут подпадать пакеты, не удовлетворяющие заданному критерию.

Более подробная информация о командах для настройки межсетевого экрана содержится в справочнике команд CLI.

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

Задача:

Разрешить обмен сообщениями по протоколу ICMP между устройствами R1, R2 и маршрутизатором ESR.

Решение:

Для каждой сети ESR создадим свою зону безопасности:

esr# configure
esr(config)# security zone LAN
esr(config-security-zone)# exit
esr(config)# security zone WAN
esr(config-security-zone)# exit

Настроим сетевые интерфейсы и определим их принадлежность к зонам безопасности:

esr(config)# interface gi1/0/2
esr(config-if-gi)# ip address 192.168.12.2/24
esr(config-if-gi)# security-zone LAN
esr(config-if-gi)# exit
esr(config)# interface gi1/0/3
esr(config-if-gi)# ip address 192.168.23.2/24
esr(config-if-gi)# security-zone WAN 
esr(config-if-gi)# exit 

Для настройки правил зон безопасности потребуется создать профиль адресов сети «LAN», включающий адреса, которым разрешен выход в сеть «WAN», и профиль адресов сети «WAN».

esr(config)# object-group network WAN
esr(config-object-group-network)# ip address-range 192.168.23.2
esr(config-object-group-network)# exit
esr(config)# object-group network LAN
esr(config-object-group-network)# ip address-range 192.168.12.2
esr(config-object-group-network)# exit
esr(config)# object-group network LAN_GATEWAY
esr(config-object-group-network)# ip address-range 192.168.12.1
esr(config-object-group-network)# exit
esr(config)# object-group network WAN_GATEWAY
esr(config-object-group-network)# ip address-range 192.168.23.3
esr(config-object-group-network)# exit

Для пропуска трафика из зоны «LAN» в зону «WAN» создадим пару зон и добавим правило, разрешающее проходить ICMP-трафику от R1 к R2. Действие правил разрешается командой enable:

esr(config)# security zone-pair LAN WAN
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# match protocol icmp
esr(config-security-zone-pair-rule)# match destination-address object-group network WAN_GATEWAY
esr(config-security-zone-pair-rule)# match source-address object-group network LAN_GATEWAY
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Для пропуска трафика из зоны «WAN» в зону «LAN» создадим пару зон и добавим правило, разрешающее проходить ICMP-трафику от R2 к R1. Действие правил разрешается командой enable:

esr(config)# security zone-pair WAN LAN
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# match protocol icmp
esr(config-security-zone-pair-rule)# match destination-address object-group network LAN_GATEWAY
esr(config-security-zone-pair-rule)# match source-address object-group network WAN_GATEWAY
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

На маршрутизаторе всегда существует зона безопасности с именем «self». Если в качестве получателя трафика выступает сам маршрутизатор, то есть трафик не является транзитным, то в качестве параметра указывается зона «self». Создадим пару зон для трафика, идущего из зоны «WAN» в зону «self». Добавим правило, разрешающее проходить ICMP-трафику между R2 и маршрутизатором ESR, для того чтобы маршрутизатор начал отвечать на ICMP-запросы из зоны «WAN»:

esr(config)# security zone-pair WAN self
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# match protocol icmp
esr(config-security-zone-pair-rule)# match destination-address object-group network WAN
esr(config-security-zone-pair-rule)# match source-address object-group network WAN_GATEWAY
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Создадим пару зон для трафика, идущего из зоны «LAN» в зону «self». Добавим правило, разрешающее проходить ICMP-трафику между R1 и ESR, для того чтобы маршрутизатор начал отвечать на ICMP-запросы из зоны «LAN»:

esr(config)# security zone-pair LAN self
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# match protocol icmp
esr(config-security-zone-pair-rule)# match destination-address network object-group LAN
esr(config-security-zone-pair-rule)# match source-address object-group network LAN_GATEWAY
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit
esr(config)# exit

Посмотреть членство портов в зонах можно с помощью команды:

esr# show security zone

Посмотреть пары зон и их конфигурацию можно с помощью команд:

esr# show security zone-pair
esr# show security zone-pair configuration

Посмотреть активные сессии можно с помощью команд:

esr# show ip firewall sessions

Пример настройки Firewall по доменным именам

Задача:

Фиксировать обращения на ресурсы компании Yandex из локальной сети в Syslog:

Решение:

Создадим зоны безопасности для локальной сети и uplink-интерфейса в сторону интернет-провайдера:

esr# configure
esr(config)# security zone LAN
esr(config-security-zone)# exit
esr(config)# security zone WAN
esr(config-security-zone)# exit

Настроим сетевые интерфейсы и определим их принадлежность к зонам безопасности:

esr(config)# interface gi1/0/1
esr(config-if-gi)# ip address 10.0.0.1/24
esr(config-if-gi)# security-zone WAN
esr(config-if-gi)# exit
esr(config)# interface gi1/0/2
esr(config-if-te)# ip address 192.168.0.1/24
esr(config-if-te)# security-zone LAN 
esr(config-if-te)# exit

Настроим маршрут по умолчанию в сторону интернет-провайдера:

esr(config)# ip route 0.0.0.0/0 10.0.0.254

Настроим систему разрешения доменных имен, её настройка необходима для работы Firewall по доменным именам:

esr(config)# domain lookup enable
esr(config)# domain nameserver 10.0.0.254

Настроим простую конфигурацию Source-NAT для любого транзитного через ESR трафика:

esr(config)# nat source
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to zone WAN 
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# action source-nat interface
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
esr(config-snat)# exit

Создадим профиль доменных имен, включающий в себя популярные домены компании "Яндекс":

ESR также позволяет работать с интернационализованными доменными именами (домены, использующие символы национальных алфавитов). Для использования интернационализованного доменного имени в конфигурации ESR его нужно преобразовать к виду ASCII-compatible encoding при помощи любого Punycode-преобразователя. Т. е. получим:
яндекс.рф → xn--d1acpjx3f.xn–p1ai

президент.рф → xn--d1abbgf6aiiy.xn–p1ai

И уже ASCII-compatible encoding вариант доменного имени можно указывать в конфигурации ESR.


esr(config)# object-group domain-name YANDEX
esr(config-object-group-domain-name)# domain ya.ru
esr(config-object-group-domain-name)# domain yandex.ru
esr(config-object-group-domain-name)# domain dzen.ru
esr(config-object-group-domain-name)# domain xn--d1acpjx3f.xn--p1ai
esr(config-object-group-domain-name)# exit

Разрешим прохождение трафика из зоны «LAN» в зону «WAN» и отдельно создадим правило, которое будет фиксировать в Syslog обращения на домены компании "Яндекс":

esr(config)# security zone-pair LAN WAN 
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action permit log
esr(config-security-zone-pair-rule)# match destination-address object-group domain-name YANDEX
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# rule 2
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Посмотреть членство портов в зонах можно с помощью команды:

esr# show security zone

Посмотреть пары зон и их конфигурацию можно с помощью команд:

esr# show security zone-pair
esr# show security zone-pair configuration

Посмотреть активные сессии можно с помощью команд:

esr# show ip firewall sessions

Посмотреть кэш DNS можно с помощью команд:

esr# show dns records
esr# show dns records negative

Пример сообщения Syslog при срабатывании правила:

<190>1 2025-07-07T17:40:10+07:00 esr firewalld - - - %FIREWALL-I-LOG: zone-pair 'LAN WAN' rule 1 permitted tcp 192.168.0.21:45574 (gi1/0/2) -> 77.88.44.55:443 dscp 48

Пример настройки фильтрации приложений (DPI)

Использование механизма фильтрации приложений многократно снижает производительность маршрутизатора из-за необходимости проверки определенного объема пакетов в каждой сессии. Производительность снижается с ростом количества выбранных приложений для фильтрации. Механизм фильтрации приложений работает только для транзитных пакетов и только в режиме черного списка (запрет прохождения трафика для указанных приложений).

Задача:

Блокировать доступ пользователей в локальной сети к Telegram, Facebook Messenger и Skype.

Решение:

Для каждой сети ESR создадим свою зону безопасности:

esr# configure
esr(config)# security zone LAN
esr(config-security-zone)# exit
esr(config)# security zone WAN
esr(config-security-zone)# exit

Настроим сетевые интерфейсы и определим их принадлежность к зонам безопасности:

esr(config)# interface gi1/0/1
esr(config-if-gi)# ip address 10.0.0.1/24
esr(config-if-gi)# security-zone WAN
esr(config-if-gi)# exit
esr(config)# interface gi1/0/2
esr(config-if-te)# ip address 192.168.0.1/24
esr(config-if-te)# security-zone LAN 
esr(config-if-te)# exit 

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

esr(config)# object-group application BLACKLIST
esr(config-object-group-application)# application telegram 
esr(config-object-group-application)# application facebook-messenger 
esr(config-object-group-application)# application skype-teams
esr(config-object-group-application)# exit 

Для установки правил прохождения трафика из зоны «WAN» в зону «LAN» создадим пару зон и добавим правило, запрещающее проходить трафику приложений, и правило, разрешающее проходить остальному трафику. Действие правил разрешается командой enable:

esr(config)# security zone-pair WAN LAN 
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action deny
esr(config-security-zone-pair-rule)# match application BLACKLIST
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# rule 2
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Для установки правил прохождения трафика из зоны «LAN» в зону «WAN» создадим пару зон и добавим правило, запрещающее прохождение трафика приложений, и правило, разрешающее прохождение всего остального трафика. Действие правил разрешается командой enable:

esr(config)# security zone-pair LAN WAN
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action deny
esr(config-security-zone-pair-rule)# match application BLACKLIST
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# rule 2
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Посмотреть членство портов в зонах можно с помощью команды:

esr# show security zone

Посмотреть пары зон и их конфигурацию можно с помощью команд:

esr# show security zone-pair
esr# show security zone-pair configuration

Посмотреть активные сессии можно с помощью команд:

esr# show ip firewall sessions

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

Использование механизма фильтрации приложений многократно снижает производительность маршрутизатора из-за необходимости проверки определенного объема пакетов в каждой сессии. Производительность снижается с ростом количества выбранных приложений для фильтрации. Механизм фильтрации приложений работает только для транзитных пакетов и только в режиме черного списка (запрет прохождения трафика для указанных приложений).

Задача:

Блокировать доступ пользователей из локальной сети к YouTube в рабочее время, начиная с 1 января 2026 года.

Решение:

Создадим зоны безопасности для локальной сети и uplink-интерфейса в сторону интернет-провайдера:

esr# configure
esr(config)# security zone LAN
esr(config-security-zone)# exit
esr(config)# security zone WAN
esr(config-security-zone)# exit

Настроим сетевые интерфейсы и определим их принадлежность к зонам безопасности:

esr(config)# interface gi1/0/1
esr(config-if-gi)# ip address 10.0.0.1/24
esr(config-if-gi)# security-zone WAN
esr(config-if-gi)# exit
esr(config)# interface gi1/0/2
esr(config-if-te)# ip address 192.168.0.1/24
esr(config-if-te)# security-zone LAN 
esr(config-if-te)# exit

Настроим маршрут по умолчанию в сторону интернет-провайдера:

esr(config)# ip route 0.0.0.0/0 10.0.0.254

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

esr(config)# scheduler WORK_HOURS
esr(config-scheduler)# periodic weekdays 
esr(config-scheduler-weekdays)# start-time 08:00:00 stop-time 12:00:00
esr(config-scheduler-weekdays)# start-time 13:00:00 stop-time 17:00:00
esr(config-scheduler-weekdays)# exit
esr(config-scheduler)# start-date 00:00:00 01 January 2026
esr(config-scheduler)# exit

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

esr(config)# object-group application BLACKLIST
esr(config-object-group-application)# application youtube 
esr(config-object-group-application)# exit 

Для установки правил прохождения трафика из зоны «WAN» в зону «LAN» создадим пару зон и добавим правило, запрещающее проходить трафику приложений, и правило, разрешающее проходить остальному трафику. Действие правил разрешается командой enable:

esr(config)# security zone-pair WAN LAN 
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action deny
esr(config-security-zone-pair-rule)# match application BLACKLIST
esr(config-security-zone-pair-rule)# scheduler WORK_HOURS
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# rule 2
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Для установки правил прохождения трафика из зоны «LAN» в зону «WAN» создадим пару зон и добавим правило, запрещающее прохождение трафика приложений, и правило, разрешающее прохождение всего остального трафика. Действие правил разрешается командой enable:

esr(config)# security zone-pair LAN WAN
esr(config-security-zone-pair)# rule 1
esr(config-security-zone-pair-rule)# action deny
esr(config-security-zone-pair-rule)# match application BLACKLIST
esr(config-security-zone-pair-rule)# scheduler WORK_HOURS
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# rule 2
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# enable
esr(config-security-zone-pair-rule)# exit
esr(config-security-zone-pair)# exit

Посмотреть членство портов в зонах можно с помощью команды:

esr# show security zone

Посмотреть пары зон и их конфигурацию можно с помощью команд:

esr# show security zone-pair
esr# show security zone-pair configuration

Настройка списков доступа (IP ACL)

IP Access Control List или IP ACL — список контроля доступа, содержит правила, определяющие прохождение трафика через интерфейс.

Алгоритм настройки

ШагОписаниеКомандаКлючи
1Создать список контроля доступа и перейти в режим его конфигурирования.

esr(config)# ip access-list extended <NAME>

<NAME> – имя создаваемого списка контроля доступа, задаётся строкой до 31 символа.
2Указать описание конфигурируемого списка контроля доступа (необязательно).

esr(config-acl-ip)# description <DESCRIPTION>

<DESCRIPTION> – описание списка контроля доступа, задаётся строкой до 255 символов.
3

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

Правила обрабатываются маршрутизатором в порядке возрастания их номеров.

esr(config-acl-ip)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1...4094].
4Указать действие, которое должно быть применено для трафика, удовлетворяющего заданным критериям.

esr(config-acl-ip-rule)# action <ACT>

<ACT> – назначаемое действие:

  • permit – прохождение трафика разрешается;
  • deny – прохождение трафика запрещается.
5Установить имя/номер протокола, для которого должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match protocol <TYPE>

<TYPE> – тип протокола, принимает значения: esp, icmp, icmp6, ah, eigrp, ospf, igmp, ipip, tcp, pim, udp, vrrp, rsvp, l2tp, gre. При указании значения «any» правило будет срабатывать для любых протоколов.

esr(config-acl-ip-rule)# match protocol-id <ID>

<ID> – идентификационный номер IP-протокола, принимает значения [0x00-0xFF].

6

Установить IP-адреса отправителя, для которых должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match source-address { <ADDR> <MASK> | any }

<ADDR> – IP-адрес отправителя, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<MASK> – маска IP-адреса, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Биты маски, установленные в 0, задают биты IP-адреса, исключаемые из сравнения при поиске.

При указании значения «any» правило будет срабатывать для любого IP-адреса отправителя/получателя.

7

Установить IP-адреса получателя, для которых должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match destination-address { <ADDR> <MASK> | any }

8

Установить MAC-адреса отправителя, для которых должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match source-mac <ADDR><WILDCARD>

<ADDR> – МАС-адрес отправителя, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF];

<WILDCARD> – маска МАС-адреса, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF]. Биты маски, установленные в 0, задают биты MAC-адреса, исключаемые из сравнения при поиске.

9

Установить MAC-адреса получателя, для которых должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match destination-mac <ADDR><WILDCARD>

10

Установить номер TCP/UDP-порта отправителя, для которого должно срабатывать правило (если указан протокол).

esr(config-acl-ip-rule)# match source-port <TYPE> {<FROM-PORT> - <TO-PORT> | <PORT>}

<TYPE> – тип аргумента, устанавливаемый в качестве порта:

  • port-range – указать диапазон портов;
  • any – установить в качестве порта любой порт.

<FROM-PORT> – начальный порт диапазона;

<TO-PORT> – конечный порт диапазона;

<PORT> – указание единичного порта.

11

Установить номер TCP/UDP-порта получателя, для которого должно срабатывать правило (если указан протокол).

esr(config-acl-ip-rule)# match destination-port <TYPE> {<FROM-PORT> - <TO-PORT> | <PORT>}

12

Установить значение 802.1p приоритета, для которого должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match сos <COS>

<COS> – значение 802.1p приоритета, принимает значения [0..7].

13

Установить значение кода DSCP, для которого должно срабатывать правило (необязательно). Невозможно использовать совместно с IP Precedence.

esr(config-acl-ip-rule)# match dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения [0..63].

14

Установить значение кода IP Precedence, для которого должно срабатывать правило (необязательно). Невозможно использовать совместно с DSCP.

esr(config-acl-ip-rule)# match ip-precedence <IPP>

<IPP> – значение кода IP Precedence, принимает значения [0..7].

15

Установить значение идентификационного номера VLAN, для которого должно срабатывать правило (необязательно).

esr(config-acl-ip-rule)# match vlan <VID>

<VID> – идентификационный номер VLAN, принимает значения [1..4094].

16

Активировать правило.

esr(config-acl-ip-rule)# enable


17

Указать список контроля доступа к конфигурируемому интерфейсу для фильтрации входящего трафика.

esr(config-if-gi)# service-acl ip input <NAME>

<NAME> – имя списка контроля доступа, задаётся строкой до 31 символа.

18Указать список контроля доступа к конфигурируемому интерфейсу для фильтрации исходящего трафика.esr(config-if-gi)# service-acl ip output <NAME><NAME> – имя списка контроля доступа, задаётся строкой до 31 символа.

Также списки доступа могут использоваться для организации политик QoS.

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

Задача:

Разрешить прохождения трафика только из подсети 192.168.20.0/24.

Решение:

Настроим список доступа для фильтрации по подсетям:

esr# configure
esr(config)# ip access-list extended white
esr(config-acl-ip)# rule 1
esr(config-acl-ip-rule)# action permit 
esr(config-acl-ip-rule)# match source-address 192.168.20.0 255.255.255.0
esr(config-acl-ip-rule)# enable 
esr(config-acl-ip-rule)# exit
esr(config-acl-ip)# exit

Применим список доступа на интерфейс Gi1/0/19 для входящего трафика:

esr(config)# interface gigabitethernet 1/0/19
esr(config-if-gi)# service-acl ip input white

Просмотреть детальную информацию о списке доступа возможно через команду:

esr# show ip access-list white

Настройка списков доступа (MAC ACL)

MAC Access Control List или MAC ACL — список контроля доступа, содержит правила на основе L2 заголовка, определяющие прохождение трафика через интерфейс.

Алгоритм настройки

ШагОписаниеКомандаКлючи
1Создать список контроля доступа и перейти в режим его конфигурирования.

esr(config)# mac access-list extended <NAME>

<NAME> – имя создаваемого списка контроля доступа, задаётся строкой до 31 символа.
2Указать описание конфигурируемого списка контроля доступа (необязательно).

esr(config-acl-mac)# description <DESCRIPTION>

<DESCRIPTION> – описание списка контроля доступа, задаётся строкой до 255 символов.
3

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

Правила обрабатываются маршрутизатором в порядке возрастания их номеров.

esr(config-acl-mac)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1...4094].
4Указать действие, которое должно быть применено для трафика, удовлетворяющего заданным критериям.

esr(config-acl-mac-rule)# action <ACT>

<ACT> – назначаемое действие:

  • permit – прохождение трафика разрешается;
  • deny – прохождение трафика запрещается.
5Установить имя/номер протокола, для которого должно срабатывать правило (необязательно).

esr(config-acl-mac-rule)# match protocol <TYPE>

<TYPE> – тип протокола, принимает значения: arp, ip, ipv6, lacp, lldp, cdp, stp, vtp. При указании значения «any» правило будет срабатывать для любых протоколов.

esr(config-acl-mac-rule)# match ethertype <ID>

<ID> – идентификационный номер инкапсулированного протокола, принимает значения [0x0600-0xFFFF].

8

Установить MAC-адреса отправителя, для которых должно срабатывать правило (необязательно).

esr(config-acl-mac-rule)# match source-mac <ADDR><WILDCARD>

<ADDR> – МАС-адрес отправителя, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF];

<WILDCARD> – маска МАС-адреса, задаётся в виде XX:XX:XX:XX:XX:XX, где каждая часть принимает значения [00..FF]. Биты маски, установленные в 0, задают биты MAC-адреса, исключаемые из сравнения при поиске.

9

Установить MAC-адреса получателя, для которых должно срабатывать правило (необязательно).

esr(config-acl-mac-rule)# match destination-mac <ADDR><WILDCARD>

12

Установить значение 802.1p приоритета, для которого должно срабатывать правило (необязательно).

esr(config-acl-mac-rule)# match сos <COS>

<COS> – значение 802.1p приоритета, принимает значения [0..7].

15

Установить значение идентификационного номера VLAN, для которого должно срабатывать правило (необязательно).

esr(config-acl-mac-rule)# match vlan <VID>

<VID> – идентификационный номер VLAN, принимает значения [1..4094].

16

Активировать правило.

esr(config-acl-mac-rule)# enable


17

Указать список контроля доступа к конфигурируемому интерфейсу для фильтрации входящего трафика.

esr(config-if-gi)# service-acl mac input <NAME>

<NAME> – имя списка контроля доступа, задаётся строкой до 31 символа.

18Указать список контроля доступа к конфигурируемому интерфейсу для фильтрации исходящего трафика.esr(config-if-gi)# service-acl mac output <NAME><NAME> – имя списка контроля доступа, задаётся строкой до 31 символа.

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

Задача:

Разрешить прохождение ARP запросов  только c VLAN 343.

Решение:

Настроим список доступа для фильтрации по протоколу и vlan:

esr# configure
esr(config)# mac access-list extended white
esr(config-acl-mac)# rule 1
esr(config-acl-mac-rule)# action permit 
esr(config-acl-mac-rule)# match protocol arp
esr(config-acl-mac-rule)# match vlan 343
esr(config-acl-mac-rule)# enable  
esr(config-acl-mac-rule)# exit
esr(config-acl)# exit

Применим список доступа на интерфейс Gi1/0/19 для входящего трафика:

esr(config)# interface gigabitethernet 1/0/19
esr(config-if-gi)# service-acl mac input white

Просмотреть детальную информацию о списке доступа возможно через команду:

esr# show mac access-list white

Проксирование HTTP/HTTPS-трафика

HTTP/HTTPS прокси-сервер ESBC выступает в роли промежуточного звена (посредника) между пользовательскими устройствами (клиентами) и целевыми веб-сервером. Прокси-сервер позволяет проксировать HTTP/HTTPS запросы на веб-сервер (группу веб-серверов), с возможностью балансировки трафика, изменения и фильтрации URL, модификации ответов, проверки SSL-сертификатов сервера и клиента. 

Минимальная конфигурация для обеспечения проксирования трафика HTTP/HTTPS должна состоять из одного  HTTP/HTTPS прокси-сервера (ip http proxy) и одной группы вышестоящих серверов (ip http upstream-group).

Для модификации тела (body) http-ответов требуется дополнительно настроить таблицу модификации.

Перед конфигурацией HTTP/HTTPS прокси-сервера (ip http proxy) рекомендуется предварительно настроить группу вышестоящих серверов (ip http upstream-group) и в случае необходимости таблицу модификации (ip http mod-table).

При использовании протокола https, требуется выбрать сертификаты и приватный ключ для установки TLS-соединения. Также при использовании https предоставлена возможность управления версией TLS и возможность проверки сертификатов клиента и сервера. Описание работы с сертификатами представлено в разделе Настройка криптопрофилей документации. 

Алгоритм настройки группы вышестоящих серверов

В конфигурации ESBC поддерживается до 10 upstream-group. В каждой группе возможно использовать до 50 хостов (hosts).

Шаг

Действие

Команда

Ключи

Описание команды

1

Создать группу вышестоящих серверов.vesbc(config)# ip http upstream-group <NAME><NAME> – название upstream-groupПереход в раздел настройки группы вышестоящих серверов.

2

Выбрать режим балансировки трафика (не обязательно).vesbc(config-http-upstream)# balancing {carp | round-robin | sourcehash| weighted-round-robin}{carp | round-robin | sourcehash| weighted-round-robin} – выбор режима балансировки между хостами данной группы

Описание режимов балансировки исходящих http/https запросов до вышестоящих серверов:

  • carp – балансировка на основе хэширования URL;
  • round-robin (используется по умолчанию) – алгоритм циклического распределения нагрузки, при котором каждый новый запрос передается следующему хосту в списке по очереди. После достижения конца списка процесс возобновляется с первого хоста;
  • sourcehash – алгоритм балансировки нагрузки, при котором выбор целевого хоста осуществляется на основе хэширования IP-адреса источника (клиента) запроса. Это гарантирует, что все запросы от одного и того же пользователя будут направляться на один и тот же хост в течение всей сессии;
  • weighted-round-robin – алгоритм циклического распределения нагрузки с учетом весовых коэффициентов. Каждому хосту назначается вес (командой weight в настройках хоста), пропорционально которому он получает долю запросов. Чем выше вес хоста, тем больше запросов на него направляется в рамках одного цикла.

3

Создать вышестоящий сервер.vesbc(config-http-upstream)# host <INDEX><INDEX> – номер хоста от 0 до 49Создание вышестоящего сервера или выбор созданного сервера для редактирования.

4

Указать IP-адрес или доменное имя вышестоящего сервера.vesbc(config-http-upstream-host)# address {IPv4 | IPv6 | DNS}{IPv4 | IPv6 | DNS} – IP-адрес или доменное имя вышестоящего сервераIPv6-адрес или доменное имя сервера, на который будут направляться исходящие http/https запросы через данную upstream-group.

5

Указать http-порт вышестоящего сервера (необязательно для работы по https).vesbc(config-http-upstream-host)# http port <1-65535><1-65535> – номер tcp-порта для httpПорт для обработки входящих HTTP-соединений вышестоящего сервера.

6

Указать https-порт вышестоящего сервера (необязательно для работы по http).vesbc(config-http-upstream-host)# https port <1-65535><1-65535> – номер tcp-порта для httpsПорт для обработки входящих HTTPS-соединений вышестоящего сервера.
7Указать количество возможных одновременных tcp-соединений до вышестоящего сервера (необязательно).vesbc(config-http-upstream-host)# max-connections <0-65535><0-65535> – количество возможных одновременных tcp-соединений до вышестоящего сервераКоличество возможных одновременных tcp-соединений до вышестоящего сервера. По умолчанию без ограничений. 
8Указать вес вышестоящего сервера (необязательно).vesbc(config-http-upstream-host)# weight <0-65535><0-65535> – вес вышестоящего сервераИспользуется при режиме балансировки weighted-round-robin в группе вышестоящих серверов. По умолчанию 100. 

Алгоритм настройки таблицы модификации

В конфигурации ESBC поддерживается до 30 таблиц модификации ответов htpp/https. В каждой таблице поддерживается до 64 модификаций.

Модификаторы применяются только к телу (body) http/https ответов.

Модификации применяются к телу сообщения последовательно, сначала применяется таблица модификации, указанная в настройке прокси-сервера (ip http proxy), а затем из настройки локации этого сервера (location).

Шаг

Действие

Команда

Ключи

Описание команды

1

Создать таблицу модификации.vesbc(config)# ip http mod-table <NAME><NAME> – название таблицы модификацииПереход в раздел настройки таблицы модификации.

2

Создать правило модификации.vesbc(config-http-mod-table)# modification <INDEX><INDEX> – номер модификации от 0 до 63Создание модификации или выбор созданной модификации для редактирования.

3

Указать PCRE-паттерн для отбора содержимого тела http/https ответа.vesbc(config-http-mod-table-modification)# value-pattern <WORD><WORD> – PCRE-паттерн от 1 до 127 символовОтбор содержимого тела http/https ответа для выполнения замены по PCRE-паттерну.

4

Указать текст для замены (необязательно).vesbc(config-http-mod-table-modification)# replacement  <WORD><WORD> – от 1 до 127 символовТекст, на который будет заменено содержимое, выбранное параметром "value-pattern". Если не указывать параметр "replacement", то содержимое, отобранное параметром "value-pattern", будет удалено из тела ответа.

Алгоритм настройки HTTP/HTTPS-прокси сервера

В конфигурации ESBC поддерживается до 10 HTTP/HTTPS-прокси серверов. В каждом сервере возможно использовать до 40 локаций (location).

Шаг

Действие

Команда

Ключи

Описание команды

1

Создать HTTP/HTTPS прокси-сервер.vesbc(config)# ip http proxy <NAME><NAME> – название HTTP/HTTPS-сервераПереход в раздел настройки HTTP/HTTPS-прокси.

2

Привязать криптопрофиль (необязательно для работы по http, обязательно для работы по https).vesbc(config-http-proxy)# crypto profile <NAME><NAME> – название криптопрофиляВыбор криптопрофиля. Используется для работы в режиме HTTPS-прокси. Выбранный профиль будет использоваться для установления защищенного соединения для входящих HTTPS-запросов (ESBC выступает в роли сервера).

3

Указать http-порт (необязательно для работы по https).vesbc(config-http-proxy)# http port <1-65535><1-65535> – номер tcp-порта для httpПорт для обработки входящих HTTP-соединений.

4

Указать https-порт (необязательно для работы по http).vesbc(config-http-proxy)# https port <1-65535><1-65535> – номер tcp-порта для httpsПорт для обработки входящих HTTPS-соединений.

5

Указать IP-адрес или интерфейс.vesbc(config-http-proxy)# ip address { <IP-address> | <interface> }IPv4-адрес или interface <TYPE> <INDEX>, где TYPE – тип интерфейса, INDEX – номер интерфейсаIPv4-адрес или интерфейс с IPv4-адресом для обработки входящих HTTP/HTTPS-соединений.

6

Указать IPv6-адрес или интерфейс (необязательно).vesbc(config-http-proxy)# ipv6 address { <IPv6-address> | <interface> }IPv6-адрес или interface <TYPE> <INDEX>, где TYPE – тип интерфейса, INDEX – номер интерфейсаIPv6-адрес или интерфейс с IPv6-адресом для обработки входящих HTTP/HTTPS-соединений.
7Указать таблицу модификации (необязательно).vesbc(config-http-proxy)# mod-table <NAME><NAME> – название таблицы модификацииТаблица модификации тела сообщения в HTTP/HTTPS-ответах, отправляемых через данный прокси-сервер.
8Создать локацию и перейти в ее настройки.vesbc(config-http-proxy)# location <INDEX><INDEX> – номер локации от 0 до 39Локация определяет точку выхода запроса (проксирования) на вышестоящий сервер (upstream-group) по совпадению url-pattern из входящего HTTP/HTTPS-запроса.
9Привязать криптопрофиль (необязательно для работы по http, обязательно для работы по https).vesbc(config-http-proxy-location)# crypto profile <NAME><NAME> – название криптопрофиляВыбор криптопрофиля. Используется для работы в режиме HTTPS-прокси. Выбранный профиль будет использоваться для установления защищенного соединения с вышестоящим сервером (ESBC выступает в роли клиента).
10Указать IP-адрес или интерфейс.vesbc(config-http-proxy-location)# ip address { <IP-address> | <interface> }IPv4-адрес или interface <TYPE> <INDEX>, где TYPE – тип интерфейса, INDEX – номер интерфейсаIPv4-адрес или интерфейс с IPv4-адресом для передачи HTTP/HTTPS-запросов (проксирования) на вышестоящий сервер (upstream-group).
11Указать IPv6-адрес или интерфейс (необязательно).vesbc(config-http-proxy-location)# ipv6 address { <IPv6-address> | <interface> }IPv6-адрес или interface <TYPE> <INDEX>, где TYPE – тип интерфейса, INDEX – номер интерфейсаIPv6-адрес или интерфейс с IPv6-адресом для передачи HTTP/HTTPS-запросов (проксирования) на вышестоящий сервер (upstream-group).
12Указать таблицу модификации (необязательно).vesbc(config-http-proxy-location)# mod-table <NAME><NAME> – название таблицы модификацииТаблица модификации тела сообщения в HTTP/HTTPS-ответах, обрабатываемых данной локацией.
13Указать группу вышестоящих серверов.vesbc(config-http-proxy-location)# upstream group <NAME><NAME> – название upstream groupГруппа вышестоящих серверов, на которую будет перенаправлен входящий HTTP/HTTPS запрос, обработанный данной локацией.
14Указать upstream path для замены URL оригинального запроса (необязательно).vesbc(config-http-proxy-location)# upstream path <PATH><PATH> – путь URL от 1 до 127 символов, начинающийся с "/"Путь URL, на который будет заменяться путь из входящих HTTP/HTTPS-запросов, обрабатываемых данной локацией при проксировании их через upstream group.
15Выбрать режим работы с вышестоящим сервером (необязательно для работы по http).vesbc(config-http-proxy-location)# upstream scheme { http | https}{http | https} – выбор режима работы с вышестоящим серверомИспользование протокола  HTTP или HTTPS для исходящих запросов, обрабатываемых данной локацией для передачи их на вышестоящий сервер. По умолчанию используется http.
16Указать URL-pattern для отбора URL входящего сообщения.vesbc(config-http-proxy-location)# url-pattern <WORD><WORD> – PCRE-паттерн от 1 до 127 символов для отбора URL входящего сообщенияОтбор URL входящего сообщения для обработки этого сообщения данной локацией.


При настройке http-https прокси-сервера на ESBC не требуется дополнительной конфигурации Firewall на сетевых интерфейсах, необходимые правила для пропуска входящего http/https-трафика будут созданы автоматически в соответствии с конфигурацией ip http proxy.

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

Задача:

Настроить на ESBC HTTP прокси-сервер для передачи всех входящих https-запросов (по любым URL) на два вышестоящих http-сервера с приоритетной балансировкой weighted-round-robin на HTTP-сервер1.

Дополнительные условия:

Решение:
  1. Настроить IP-адреса на сетевых интерфейсах:
    vesbc(config)# 
    vesbc(config)# interface gigabitethernet 1/0/1
    vesbc(config-if-gi)# ip address 10.0.0.1/24
    vesbc(config-if-gi)# exit
    vesbc(config)#  
    vesbc(config)# interface gigabitethernet 1/0/2
    vesbc(config-if-gi)# ip address 192.168.0.1/24
    vesbc(config-if-gi)# exit
    vesbc(config)#
  2. Настроить криптопрофиль (предполагается, что файлы сертификатов уже загружены на ESBC):
    vesbc(config)#
    vesbc(config)# crypto profile WAN
    #Указать сертификат CA HTTP-клиента
    vesbc(config-crypto-profile)# ca RootCA.pem  
    vesbc(config-crypto-profile)# cert client.crt 
    vesbc(config-crypto-profile)# private-key client.key 
    #Включить проверку сертификата клиента
    vesbc(config-crypto-profile)# verify client-cert
    vesbc(config-crypto-profile)# exit
    vesbc(config)#
  3. Настроить группу вышестоящих серверов с хостами HTTP-сервер1 и HTTP-сервер2:
    vesbc(config)# ip http upstream-group LAN
    vesbc(config-http-upstream)# balancing weighted-round-robin 
    vesbc(config-http-upstream)# host 0
    vesbc(config-http-upstream-host)# address 192.168.0.2
    
    #Указать вес больше, чем у хоста 1:
    vesbc(config-http-upstream-host)# weight 2       
    vesbc(config-http-upstream-host)# http port 80
    vesbc(config-http-upstream-host)# exit
    vesbc(config-http-upstream)# host 1
    vesbc(config-http-upstream-host)# address 192.168.0.3
    vesbc(config-http-upstream-host)# weight 1
    vesbc(config-http-upstream-host)# http port 80
    vesbc(config-http-upstream-host)# exit
    vesbc(config-http-upstream)# exit
  4. Настроить таблицу модификации для изменения тела ответов:
    vesbc(config)# ip http mod-table MOD_TABLE
    vesbc(config-http-mod-table)# modification 0
    
    #Поиск в теле ответа "test_inside":
    vesbc(config-http-mod-table-modification)# value-pattern test_inside 
    
    #Замена на "test_outside":
    vesbc(config-http-mod-table-modification)# replacement test_outside  
    vesbc(config-http-mod-table-modification)# exit
    vesbc(config-http-mod-table)# exit
  5. Настроить http прокси-сервер:
    vesbc(config)# ip http proxy TEST_PROXY
    #Указать IP-адрес WAN-интерфейса или сам интерфейс для получения входящих https-соединений:
    vesbc(config-http-proxy)# ip address 10.0.0.1    
    
    #Указать порт для обработки входящих https-соединений:
    vesbc(config-http-proxy)# https port 443  
    
    #Указать криптопрофиль, настроенный в п.2:
    vesbc(config-http-proxy)# crypto profile WAN  
    
    #Указать таблицу модификации, настроенную в п.4:
    vesbc(config-http-proxy)# mod-table MOD_TABLE 
    vesbc(config-http-proxy)# location 0   
    
    #Указать IP-адрес LAN-интерфейса или сам интерфейс, с которого будут передаваться http-сообщения на вышестоящие серверы:
    vesbc(config-http-proxy-location)# ip address 192.168.0.1
    
    #Указать паттерн PCRE, например ".*", под который попадают все URL:
    vesbc(config-http-proxy-location)# url-pattern .* 
             
    #Указать группу вышестоящих серверов, настроенную в п.3:
    vesbc(config-http-proxy-location)# upstream group LAN        
    vesbc(config-http-proxy-location)# exit
    vesbc(config-http-proxy)# exit
    vesbc(config)#
  6.  Применить и сохранить конфигурацию:
    vesbc(config)# do commit
    vesbc(config)# do confirm

Настройка IPS/IDS


Данная функция активируется только при наличии лицензии.

IPS/IDS (Intrusion Prevention System/Intrusion Detection System) – система предотвращения вторжений – программная система сетевой и компьютерной безопасности, обнаруживающая вторжения или нарушения безопасности и автоматически защищающая от них.

Работа системы основана на сигнатурном анализе трафика. Сигнатуры для систем IPS/IDS принято называть правилами. Устройства ESR позволяют скачивать актуальные правила с открытых источников в сети Интернет или с корпоративного сервера. Также с помощью CLI можно создавать свои специфические правила.

Алгоритм базовой настройки

Шаг

Описание

Команда

Ключи

1

Создать политику безопасности IPS/IDS.

esr(config)# security ips policy <NAME>

<NAME> – имя политики безопасности, задаётся строкой до 32 символов.

2

Задать описание политики (необязательно).

esr(config-ips-policy)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

3

Задать профиль IP-адресов, которые будет защищать IPS/IDS.

esr(config-ips-policy)# protect network-group <OBJ-GROUP-NETWORK_NAME>

<OBJ-GROUP-NETWORK-NAME> – имя профиля защищаемых IP-адресов, задается строкой до 32 символов.

4

Задать профиль IP-адресов, внешних для IPS/IDS (необязательно).

esr(config-ips-policy)# external network-group <OBJ-GROUP-NETWORK_NAME>

<OBJ-GROUP-NETWORK-NAME> – имя профиля внешних IP-адресов, задается строкой до 32 символов.

5

Перейти в режим конфигурирования IPS/IDS.

esr(config)# security ips


6

Назначить политику безопасности IPS/IDS.

esr(config-ips)# policy <NAME>

<NAME> – имя политики безопасности, задаётся строкой до 32 символов.

7

Использовать все ресурсы ESR для IPS/IDS (необязательно).

esr(config-ips)# perfomance max

По умолчанию для IPS/IDS отдается половина доступных ядер процессора.

8

Задать параметры удаленного сервера для отправки статистики работы сервиса IPS/IDS в формате EVE (elasticsearch) (необязательно).

esr(config-ips)# logging remote-server { <ADDR> | <IPV6-ADDR> } [ <TRANSPORT> ] [ <PORT> ] [ source-address { <SRC-ADDR> | <IPV6-SRC-ADDR> | object-group <NETWORK_OBJ_GROUP_NAME> } ]

<ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF];

<TRANSPORT> – протокол передачи данных, по умолчанию – UDP, принимает значения:

  • TCP – передача данных осуществляется по протоколу TCP;
  • UDP – передача данных осуществляется по протоколу UDP.

<PORT> – номер TCP/UDP-порта, опциональный параметр, принимает значения [1..65535], по умолчанию 514;

<SRC-ADDR> – IPv4-адрес маршрутизатора, который будет использоваться в качестве IP-адреса источника в отправляемых syslog-пакетах, по умолчанию – IPv4-адрес интерфейса, с которого отправляются пакеты;

<IPV6-SRC-ADDR> – IPv6-адрес маршрутизатора, который будет использоваться в качестве IPv6-адреса источника в отправляемых syslog-пакетах, по умолчанию – IPv6-адрес интерфейса, с которого отправляются пакеты;

<NETWORK_OBJ_GROUP_NAME> – список адресов, которые будут использоваться в качестве source address.

9Установить интервал отправки статистики работы сервиса IPS/IDS в формате EVE (elasticsearch) (необязательно).esr(config-ips)# logging update-interval  <INTERVAL><INTERVAL> – интервал отправки статистики работы сервиса IPS/IDS, задаётся в минутах.
10Заблокировать передачу трафика при начальной загрузке до запуска сервиса IPS/IDS и загрузки хотя бы одного настроенного или существующего правила (необязательно).esr(config-ips)# fail-close enable

11Установить размер виртуальных очередей (необязательно).esr(config-ips)# queue-limit <QUEUE-LIMIT>

<QUEUE-LIMIT> – предельное количество пакетов в виртуальной очереди, принимает значения в диапазоне [32..4096]

Размер очереди по умолчанию 1024

12Активировать сервис IPS.esr(config-ips)# enable

13

Активировать IPS/IDS на интерфейсе.

esr(config-if-gi)# service-ips { inline | monitor }

inline – этот режим устанавливается, когда ESR с сервисом IPS/IDS ставится в разрыв сети.

monitor – этот режим устанавливается, когда ESR с сервисом IPS/IDS мониторит зеркалируемый трафик.

Алгоритм настройки автообновления правил IPS/IDS из внешних источников

Шаг

Описание

Команда

Ключи

1Задать имя внешнего хранилища скачиваемых правил (необязательно).

esr(config-ips)# storage-path { usb://<USB-NAME>:/ | mmc://<MMC-NAME>:/ }

<USB-NAME> – имя подключенного USB-носителя. Имя можно узнать в выводе команды show storage-devices usb;

<MMC-NAME> – имя подключенного MMC-носителя. Имя можно узнать в выводе команды show storage-devices mmc.

Для использования с системой IPS/IDS на внешнем носителе должен быть создан раздел файловой системы в формате exFAT.

2

Перейти в режим конфигурирования автообновлений.

esr(config-ips)# auto-upgrade


3

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

esr(config-ips-auto-upgrade)# user-server <WORD>

<WORD> – имя сервера, задаётся строкой до 32 символов.

4

Задать описание пользовательского сервера обновлений (необязательно).

esr(config-ips-upgrade-user-server)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

5

Задать URL.

esr(config-ips-upgrade-user-server)# url <URL>

<URL> – текстовое поле, содержащее URL-ссылку длиной от 8 до 255 символов.

В качестве URL-ссылки может быть указан:

  • файл правил с расширение .rule;
  • файл классификатора правил с именем classification.config;
  • каталог на сервере содержащий файлы правил и/или файл классификатора правил.

6

Задать частоту проверки обновлений (необязательно).

esr(config-ips-upgrade-user-server)# upgrade interval <HOURS>

<HOURS> – интервал обновлений в часах, от 1 до 240.

Значение по умолчанию: 24 часа.

7Активизировать пользовательский сервер обновлений.esr(config-ips-upgrade-user-server)# enable


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

Размер этой области зависит от модели ESR:

  • ESR-1X – 25 МБ;
  • ESR-2X – 50 МБ;

Для всех остальных моделей – 100 МБ.

Если настроить слишком много источников правил или загружать правила, превышающие указанные лимиты, то маршрутизатор будет выдавать сообщения об ошибке %STORAGE_IPS_MGR-I-ERR: There no free space in rules directory.
В этом случае стоит уменьшить объем запрашиваемых правил или использовать внешнее хранилище.

Рекомендуемые открытые источники обновления правил

SSL Blacklist

Чёрный список SSL (SSLBL) – это проект abuse.ch, целью которого является обнаружение вредоносных SSL-соединений путём идентификации и внесения в чёрный список SSL-сертификатов, используемых серверами управления ботнетами.

https://sslbl.abuse.ch/blacklist/sslblacklist_tls_cert.rules – набор правил SSL-сертификатов от SSLBL используется для обнаружения и/или блокировки вредоносных SSL-соединений в вашей сети на основе отпечатка SSL-сертификата. Набор правил SSL-сертификатов генерируется каждые 5 минут. Рекомендуется запрашивать его не чаще, чем раз в 5 минут.

https://sslbl.abuse.ch/blacklist/ja3_fingerprints.rules – набор правил JA3 FingerprintRuleset от SSLBL используется для обнаружения и/или блокировки вредоносных SSL-соединений в вашей сети на основе отпечатка JA3. Набор правил для отпечатков пальцев Suricata JA3 генерируется каждые 5 минут. Рекомендуется запрашивать его не чаще, чем раз в 5 минут.

Отпечатки JA3, внесённые в чёрный список SSLBL, были собраны путём анализа более 25 000 000 PCAP-файлов с образцами вредоносного ПО. Эти отпечатки ещё не были протестированы на известном безопасном трафике и могут привести к значительному количеству ложных срабатываний.

Feodo Tracker

Feodo Tracker – это проект abuse.ch, целью которого является обмен информацией о серверах управления ботнетами, связанными с Dridex, Emotet (также известным как Heodo), TrickBot, QakBot (также известным как QuakBot/Qbot) и BazarLoader (также известным как BazarBackdoor).

https://feodotracker.abuse.ch/downloads/feodotracker.rules – набор правил используется для обнаружения и/или блокировки сетевых подключений к хост-серверам (комбинация IP-адреса и порта). Набор правил генерируется каждые 5 минут. Рекомендуется обновлять набор правил IDS каждые 5–15 минут, чтобы обеспечить лучшую защиту от Dridex, Emotet, TrickBot, QakBot и BazarLoader.

Поскольку IP-адреса перерабатываются и используются повторно, в этот список блокировки входят только C2-серверы ботнетов, которые либо активны, либо в последний раз использовались в течение последних 30 дней. Таким образом, процент ложных срабатываний в этом списке блокировки должен быть низким.

https://feodotracker.abuse.ch/downloads/feodotracker_aggressive.rules – набор правил IDS с полным списком всех C2-серверов ботнетов. Однако, поскольку IP-адреса используются повторно, количество ложных срабатываний в этом наборе правил намного выше.

Не рекомендуется использовать агрессивную версию индикаторов компрометации ботнета C2 (IOC), так как она определённо вызовет ложные срабатывания.

Travis Green

Travis Green – набор правил для поиска угроз от специалиста по кибербезопасности Тревиса Грина.

https://raw.githubusercontent.com/travisbgreen/hunting-rules/master/hunting.rules

Etnetera Core

Набор правил с «агрессивными» IP-адресами от центра кибербезопасности компании Etnetera Core.

https://security.etnetera.cz/feeds/etn_aggressive.rules

Пример настройки IPS/IDS с автообновлением правил

Задача:

Организовать защиту локальной сети с автообновлением правил из открытых источников.

192.168.1.0/24 – локальная сеть.

Решение:

Создадим профиль адресов защищаемой локальной сети:

esr(config)# object-group network LAN
esr(config-object-group-network)# ip prefix 192.168.1.0/24
esr(config-object-group-network)# exit

Настроим на ESR DNS-клиента для разрешения имен источников обновления правил IPS/IDS:

esr(config)# domain lookup enable
esr(config)# domain nameserver 8.8.8.8

Создадим политику безопасности IPS/IDS:

esr(config)# security ips policy OFFICE
esr(config-ips-policy)# description "My Policy"
esr(config-ips-policy)# protect network-group LAN

Разрешим работу IPS/IDS на интерфейсе локальной сети bridge 1:

esr(config)# bridge 1
esr(config-bridge)# service-ips inline

Настроим параметры IPS/IDS:

esr(config)# security ips
esr(config-ips)# logging remote-server 192.168.10.1
esr(config-ips)# logging update-interval 15
esr(config-ips)# policy OFFICE
esr(config-ips)# enable

Устройство будет использоваться только как шлюз безопасности, поэтому отдадим сервису IPS/IDS все доступные ресурсы:

esr(config-ips)# perfomance max

Настроим автообновление правил с сайтов etnetera.cz и Abuse.ch:

esr(config-ips)# auto-upgrade
esr(config-auto-upgrade)# user-server Aggressive
esr(config-ips-upgrade-user-server)# description "Etnetera aggressive IP blacklist"
esr(config-ips-upgrade-user-server)# url https://security.etnetera.cz/feeds/etn_aggressive.rules
esr(config-ips-upgrade-user-server)# upgrade interval 4
esr(config-ips-upgrade-user-server)# enable
esr(config-ips-upgrade-user-server)# exit
esr(config-auto-upgrade)# user-server SSL-BlackList
esr(config-ips-upgrade-user-server)# description "Abuse.ch SSL Blacklist"
esr(config-ips-upgrade-user-server)# url https://sslbl.abuse.ch/blacklist/sslblacklist_tls_cert.rules
esr(config-ips-upgrade-user-server)# upgrade interval 4
esr(config-ips-upgrade-user-server)# enable
esr(config-ips-upgrade-user-server)# exit

Алгоритм настройки базовых пользовательских правил

Шаг

Описание

Команда

Ключи

1

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

esr(config)# security ips-category user-defined <WORD>

<WORD> – имя набора пользовательских правил, задаётся строкой до 32 символов.

2

Задать описание набора пользовательских правил (не обязательно).

esr(config-ips-category)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

3

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

esr(config-ips-category)# rule <ORDER>

<ORDER> – номер правила, принимает значения [1..512].

4

Задать описание правила (необязательно).

esr(config-ips-category-rule)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

5

Указать действие данного правила.

esr(config-ips-category-rule)# action { alert | reject | pass | drop }

  • alert – прохождение трафика разрешается, и сервис IPS/IDS генерирует сообщение;
  • reject – прохождение трафика запрещается. Если это TCP-трафик, отправителю и получателю посылается пакет TCP-RESET, для остального типа трафика посылается пакет ICMP-ERROR. Сервис IPS/IDS генерирует сообщение;
  • pass – прохождение трафика разрешается;
  • drop – прохождение трафика запрещается, и сервис IPS/IDS генерирует сообщение.

6

Установить имя IP-протокола, для которого должно срабатывать правило.

esr(config-ips-category-rule)# protocol <PROTOCOL>

<PROTOCOL> – принимает значения any/ip/icmp/http/tcp/udp.

При указании значения «any» правило будет срабатывать для любых протоколов.

7

Установить IP-адреса отправителя, для которых должно срабатывать правило.

esr(config-ips-category-rule)# source-address
{ip <ADDR> | ip-prefix <ADDR/LEN> |
object-group <OBJ_GR_NAME> | policy-object-group
{ protect | external } | any }

<ADDR> – IP-адрес отправителя, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<ADDR/LEN> – IP-подсеть отправителя, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и LEN принимает значения [1..32].

< OBJ_GR_NAME> – имя профиля IP-адресов, который содержит IP-адреса отправителя, задаётся строкой до 31 символа.

  • protect – устанавливает в качестве адресов отправителя и protect-адреса определенные адреса в политике IPS/IDS;
  • external – устанавливает в качестве адресов отправителя и external- адреса определенные адреса в политике IPS/IDS.

При указании значения «any» правило будет срабатывать для любого IP-адреса отправителя.

8

Установить номера TCP/UDP-портов отправителя, для которых должно срабатывать правило.

Для значения protocol icmp, значение source-port может быть только any.

esr(config-ips-category-rule)# source-port {any | <PORT> | object-group <OBJ-GR-NAME> }

<PORT> – номер TCP/UDP-порта отправителя, принимает значения [1..65535].

<OBJ_GR_NAME> – имя профиля TCP/UDP-портов отправителя, задаётся строкой до 31 символа.

При указании значения «any» правило будет срабатывать для любого TCP/UDP-порта отправителя.

9

Установить IP-адреса получателя, для которых должно срабатывать правило.

esr(config-ips-category-rule)# destination-address
{ip <ADDR> | ip-prefix <ADDR/LEN> | object-group <OBJ_GR_NAME> |
policy-object-group { protect | external } | any }

<ADDR> – IP-адрес получателя, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255];

<ADDR/LEN> – IP-подсеть получателя, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и LEN принимает значения [1..32];

<OBJ_GR_NAME> – имя профиля IP-адресов, который содержит IP-адреса получателя, задаётся строкой до 31 символа.

  • protect – устанавливает в качестве адресов получателя protect-адреса, определенные в политике IPS/IDS;
  • external – устанавливает в качестве адресов получателя external-адреса, определенные в политике IPS/IDS.

При указании значения «any» правило будет срабатывать для любого IP-адреса получателя.

10

Установить номера TCP/UDP-портов получателя, для которых должно срабатывать правило.

Для значения protocol icmp, значение destination-port может быть только any.

esr(config-ips-category-rule)# destination-port
{any | <PORT> | object-group <OBJ-GR-NAME> }

<PORT> – номер TCP/UDP-порта получателя, принимает значения [1..65535];

<OBJ_GR_NAME> – имя профиля TCP/UDP-портов получателя, задаётся строкой до 31 символа.

При указании значения «any» правило будет срабатывать для любого TCP/UDP-порта получателя.

11

Установить направление потока трафика, для которого должно срабатывать правило.

esr(config-ips-category-rule)# direction { one-way | round-trip }

  • one-way – трафик передаётся в одну сторону.
  • round-trip – трафик передаётся в обе стороны.

12

Определить сообщение, которое IPS/IDS будет записывать в лог при срабатывании этого правила.

esr(config-ips-category-rule)# meta log-message <MESSAGE>

<MESSAGE> – текстовое сообщение, задаётся строкой до 129 символов.

13

Определить классификацию трафика, которая будет записывать в лог при срабатывании этого правила (необязательно).

esr(config-ips-category-rule)# meta classification-type
{ not-suspicious | unknown | bad-unknown | attempted-recon |
successful-recon-limited | successful-recon-largescale |
attempted-dos | successful-dos | attempted-user |
unsuccessful-user | successful-user | attempted-admin |
successful-admin | rpc-portmap-decode | shellcode-detect |
string-detect | suspicious-filename-detect | suspicious-login |  system-call-detect | tcp-connection | trojan-activity |
unusual-client-port-connection | network-scan |
denial-of-service | non-standard-protocol |
protocol-command-decode | web-application-activity |
web-application-attack | misc-activity | misc-attack |
icmp-event | inappropriate-content | policy-violation |
default-login-attempt }

  • not-suspicious – неподозрительный трафик.
  • unknown – неизвестный трафик.
  • bad-unknown – потенциально плохой трафик.
  • attempted-recon – попытка утечки информации.
  • successful-recon-limited – утечка информации.
  • successful-recon-largescale – масштабная утечка информации.
  • attempted-dos – попытка отказа в обслуживании.
  • successful-dos – отказ в обслуживании.
  • attempted-user – попытка получения привилегий пользователя.
  • unsuccessful-user – безуспешная попытка получения привилегий пользователя.
  • successful-user – успешная попытка получения привилегий пользователя.
  • attempted-admin – попытка получения привилегий администратора.
  • successful-admin – успешная попытка получения привилегий администратора.
  • rpc-portmap-decode – декодирование запроса RPC.
  • shellcode-detect – обнаружен исполняемый код.
  • string-detect – обнаружена подозрительная строка.
  • suspicious-filename-detect – было обнаружено подозрительное имя-файла.
  • suspicious-login – была обнаружена попытка входа с использованием подозрительного имени пользователя.
  • system-call-detect – обнаружен системный вызов.
  • tcp-connection – обнаружено TCP-соединение.
  • trojan-activity – был обнаружен сетевой троян.
  • unusual-client-port-connection – клиент использовал необычный порт.
  • network-scan – обнаружение сетевого сканирования.
  • denial-of-service – обнаружение атаки отказа в обслуживании.
  • non-standard-protocol – обнаружение нестандартного протокола или события.
  • protocol-command-decode – обнаружена попытка шифрования.
  • web-application-activity – доступ к потенциально уязвимому веб-приложению.
  • web-application-attack – атака на веб-приложение.
  • misc-activity – прочая активность.
  • misc-attack – прочие атаки.
  • icmp-event – общее событие ICMP.
  • inappropriate-content – обнаружено неприемлемое содержание.
  • policy-violation – потенциальное нарушение корпоративной конфиденциальности.
  • default-login-attempt – попытка входа с помощью стандартного логина/пароля.

14

Установить значение кода DSCP, для которого должно срабатывать правило (необязательно).

esr(config-ips-category-rule)# ip dscp <DSCP>

<DSCP> – значение кода DSCP, принимает значения [0..63].

15

Установить значение времени жизни пакета (TTL), для которого должно срабатывать правило (необязательно).

esr(config-ips-category-rule)# ip ttl <TTL>

<TTL> – значение TTL, принимает значения в диапазоне [1..255].


16

Установить номер IP-протокола, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol any.

esr(config-ips-category-rule)# ip protocol-id <ID>

<ID> – идентификационный номер IP-протокола, принимает значения [1..255].

17

Установить значения ICMP CODE, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol icmp.

esr(config-ips-category-rule)# ip icmp code <CODE>

<CODE> – значение CODE протокола ICMP, принимает значение в диапазоне [0..255].

esr(config-ips-category-rule)# ip icmp code comparison-operator
{ greater-than | less-than }

Оператор сравнения для значения ip icmp code:

  • greater-than – больше чем..
  • less-than – меньше чем..

18

Установить значения ICMP ID, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol icmp.

esr(config-ips-category-rule)# ip icmp id <ID>

<ID> – значение ID протокола ICMP, принимает значение в диапазоне [0.. 65535].

19

Установить значения ICMP Sequence-ID, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol icmp.

esr(config-ips-category-rule)# ip icmp sequence-id <SEQ-ID>

<SEQ-ID> – значение Sequence-ID протокола ICMP, принимает значение в диапазоне [0.. 4294967295].

20

Установить значения ICMP TYPE, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol icmp.

esr(config-ips-category-rule)# ip icmp type <TYPE>

<TYPE> – значение TYPE протокола ICMP, принимает значение в диапазоне [0..255].

esr(config-ips-category-rule)# ip icmp type comparison-operator
{ greater-than | less-than }

Оператор сравнения для значения ip icmp type:

  • greater-than – больше чем..
  • less-than – меньше чем..

21

Установить значения TCP Acknowledgment-Number, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol tcp.

esr(config-ips-category-rule)# ip tcp acknowledgment-number <ACK-NUM>

<ACK-NUM> – значение Acknowledgment-Number протокола TCP, принимает значение в диапазоне [0.. 4294967295].

22

Установить значения TCP Sequence-ID, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol tcp.

esr(config-ips-category-rule)# ip tcp sequence-id <SEQ-ID>

<SEQ-ID> – значение Sequence-ID протокола TCP, принимает значение в диапазоне [0.. 4294967295].

23

Установить значения TCP Window-Size, для которого должно срабатывать правило (необязательно).

Применимо только для значения protocol tcp.

esr(config-ips-category-rule)# ip tcp window-size <SIZE>

<SIZE> – значение Window-Size протокола TCP, принимает значение в диапазоне [0.. 65535].

24

Установить ключевые слова протокола HTTP, для которых должно срабатывать правило (необязательно).

Применимо только для значения protocol http.

esr(config-ips-category-rule)# ip http { accept | accept-enc |
accept-lang | client-body | connection | content-type | cookie |  file-data | header | header-names | host | method | protocol |
referer | request-line | response-line | server-body | start |
start-code | start-msg | uri | user-agent }

Значение ключевых слов см. в документации Suricata 4.X.

https://suricata.readthedocs.io/en/suricata-4.1.4/rules/http-keywords.html


25

Установить значение ключевого слова URI LEN протокола HTTP, для которых должно срабатывать правило (необязательно).

Применимо только для значения protocol http.

esr(config-ips-category-rule)# ip http urilen <LEN>

<LEN> – принимает значение в диапазоне [0.. 65535].

esr(config-ips-category-rule)# ip http urilen comparison-operator
{ greater-than | less-than }

Оператор сравнения для значения ip http urilen:

  • greater-than – больше чем..
  • less-than – меньше чем..

26

Установить значение содержимого пакетов (Payload content), для которых должно срабатывать правило (необязательно).

esr(config-ips-category-rule)# payload content <CONTENT>

<CONTENT> – текстовое сообщение, задаётся строкой до 1024 символов.

27

Не различать прописные и заглавные буквы в описании содержимого пакетов (необязательно).

Применимо только совместно с командой payload content.


esr(config-ips-category-rule)# payload no-case


28

Установить, сколько байтов с начала содержимого пакета будет проверено (необязательно).

Применимо только совместно с командой payload content.

esr(config-ips-category-rule)# payload depth <DEPTH>

<DEPTH> – число байт с начала содержимого пакета, принимает значение в диапазоне [1.. 65535].

По умолчанию проверяется все содержимое пакета.

29

Установить число байт смещения от начала содержимого пакета для проверки (необязательно).

Применимо только совместно с командой payload content.

esr(config-ips-category-rule)# payload offset <OFFSET>

<OFFSET> – число байт смещения от начала содержимого пакета, принимает значение в диапазоне [1.. 65535].

По умолчанию проверяется с начала содержимого.

30

Установить размер содержимого пакетов, для которых должно срабатывать правило (необязательно).

esr(config-ips-category-rule)# payload data-size <SIZE>

<SIZE> – размер содержимого пакетов, принимает значение в диапазоне [0.. 65535].

esr(config-ips-category-rule)# payload data-size
comparison-operator { greater-than | less-than }

Оператор сравнения для значения payload data-size:

  • greater-than – больше чем..
  • less-than – меньше чем.

31

Указать пороговое значение количества пакетов, при котором сработает правило (необязательно).

esr(config-ips-category-rule)# threshold count <COUNT>

<COUNT> – число пакетов, принимает значение в диапазоне [1.. 65535].

32

Указать интервал времени, для которого считается пороговое количество пакетов.

(Обязательно, если включен threshold count).

esr(config-ips-category-rule)# threshold second <SECOND>

<SECOND> – интервал времени в секундах, принимает значение в диапазоне [1.. 65535].

33

Указать по адресу отправителя или получателя будут считаться пороги.

(Обязательно, если включен threshold count).

esr(config-ips-category-rule)# threshold track
{ by-src | by-dst }

  • by-src – считать пороговое значение для пакетов с одинаковым IP-отправителя.
  • by-dst – считать пороговое значение для пакетов с одинаковым IP-получателя.

34

Указать метод обработки пороговых значений.

esr(config-ips-category-rule)# threshold type
{threshold | limit | both }

  • threshold – выдавать сообщение каждый раз по достижении порога.
  • limit – выдавать сообщение не чаще <COUNT> раз за интервал времени <SECOND>.
  • both – комбинация threshold и limit.

Сообщение будет генерироваться, если в течении интервала времени <SECOND> было <COUNT> или более пакетов подходящих под условия правила, и сообщение будет отправлено только один раз в течении интервала времени <SECOND>.

35Активировать правило.

esr(config-ips-category-rule)# enable


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

Задача:

Написать правило для защиты сервера с IP 192.168.1.10 от DOS-атаки ICMP-пакетами большого размера.

Решение:

Создадим набор пользовательских правил:

esr(config)# security ips-category user-defined USER

Создадим правило для защиты от атаки:

esr(config-ips-category)# rule 10
esr(config-ips-category-rule)# description "Big ICMP DoS"

Будем отбрасывать пакеты:

esr(config-ips-category-rule)# action drop

Настроим сообщение об атаке:

esr(config-ips-category-rule)# meta log-message "Big ICMP DoS"
esr(config-ips-category-rule)# meta classification-type successful-dos

Укажем тип протокола для правила:

esr(config-ips-category-rule)# protocol icmp

Так как был указан протокол icmp, то в качестве порта отправителя и получателя требуется указать any:

esr(config-ips-category-rule)# source-port any
esr(config-ips-category-rule)# destination-port any

В качестве адреса получателя укажем используемый сервер:

esr(config-ips-category-rule)# destination-address ip 192.168.1.10

Атакующий может отправлять пакеты с любого адреса:

esr(config-ips-category-rule)# source-address any

Зададим направление трафика:

esr(config-ips-category-rule)# direction one-way

Правило будет срабатывать на пакеты размером больше 1024 байт:

esr(config-ips-category-rule)# payload data-size 1024
esr(config-ips-category-rule)# payload data-size comparison-operator greate r-than

Правило будет срабатывать, если нагрузка на сервер будет превышать 3 Мбит/с, при этом сообщение об атаке будет генерироваться не чаще одного раза в минуту:

3 Мб/с = 3145728 бит в сек
Пакет размером 1Кбайт = 8192 бита
3145728 / 8192 = 384 пакета в сек
384 * 60 = 23040 пакетов в минуту


esr(config-ips-category-rule)# threshold count 23040
esr(config-ips-category-rule)# threshold second 60
esr(config-ips-category-rule)# threshold track by-dst
esr(config-ips-category-rule)# threshold type both

Активизируем правило:

esr(config-ips-category-rule)# enable

Алгоритм настройки расширенных пользовательских правил

Шаг

Описание

Команда

Ключи

1

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

esr(config)# security ips-category user-defined <WORD>

<WORD> – имя набора пользовательских правил, задаётся строкой до 32 символов.

2

Задать описание набора пользовательских правил (необязательно).

esr(config-ips-category)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

3

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

esr(config-ips-category)# rule-advanced <SID>

<SID> – номер правила, принимает значения [1.. 4294967295].

4

Задать описание правила (необязательно).

esr(config-ips-category-rule-advanced)# description <DESCRIPTION>

<DESCRIPTION> – описание задаётся строкой до 255 символов.

5

Указать действие данного правила.

esr(config-ips-category-rule-advanced)# rule-text <LINE>

<CONTENT> – текстовое сообщение в формате SNORT 2.X / Suricata 4.X, задаётся строкой до 1024 символов.

При написании правил в тексте правила необходимо использовать только двойные кавычки (символ "), а само правило необходимо заключать в одинарные кавычки (символ ').


6Активировать правило.

esr(config-ips-category-rule-advanced)# enable


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

Задача:

Написать правило, детектирующее атаку типа Slowloris.

Решение:

Создадим набор пользовательских правил:

esr(config)# security ips-category user-defined ADV

Создадим расширенное правило:

esr(config-ips-category)# rule-advanced 1
esr(config-ips-category-rule-advanced)# description "Slow Loris rule 1"
esr(config-ips-category-rule-advanced)# rule-text 'alert tcp any any -> any 80 (msg:"Possible Slowloris Attack Detected"; flow:to_server,established; content:"X-a|3a|"; distance:0; pcre:"/\d\d\d\d/"; distance:0; content:"|0d 0a|"; sid:10000001;)'
esr(config-ips-category-rule-advanced)# enable
esr(config-ips-category-rule-advanced)# exit

Создадим ещё одно расширенное правило, работающее по схожему алгоритму, чтобы определить, какое из правил будет эффективнее:

esr(config-ips-category)# rule-advanced 2
esr(config-ips-category-rule-advanced)# description "Slow Loris rule 2"
esr(config-ips-category-rule-advanced)# rule-text 'alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"SlowLoris.py DoS attempt"; flow:established,to_server,no_stream; content:"X-a:"; dsize:<15; detection_filter:track by_dst, count 3, seconds 30; classtype:denial-of-service; sid: 10000002; rev:1; )'
esr(config-ips-category-rule-advanced)#