Параметры конфигурации

В этом разделе

Параметры компонента

Секции источников данных

Добавление секций источников данных

Компонент использует параметры конфигурации, заданные в секции [LookupD] объединенного конфигурационного файла Dr.Web для почтовых серверов UNIX.

Параметры компонента

В секции представлены следующие параметры:

Параметр

Описание

LogLevel

{уровень подробности}

Уровень подробности ведения журнала компонента.

Если значение параметра не указано, используется значение параметра DefaultLogLevel из секции [Root].

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

Log

{тип журнала}

Метод ведения журнала компонента.

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

ExePath

{путь к файлу}

Путь к исполняемому файлу компонента.

Значение по умолчанию: <opt_dir>/bin/drweb-lookupd.

Для GNU/Linux: /opt/drweb.com/bin/drweb-lookupd.

Для FreeBSD: /usr/local/libexec/drweb.com/bin/drweb-lookupd

RunAsUser

{UID | имя пользователя}

Параметр указывает компоненту, от имени какого пользователя ему следует запускаться при работе. Можно указать как числовой UID пользователя, так и его имя (логин). Если имя пользователя состоит из цифр (т. е. похоже на числовой UID), то оно указывается с префиксом «name:», например: RunAsUser = name:123456.

Если имя пользователя не указано, то работа компонента завершается ошибкой сразу после попытки запуска.

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

IdleTimeLimit

{интервал времени}

Максимальное время простоя компонента, при превышении которого он завершает свою работу.

Допустимые значения: от 10 секунд (10s) до 30 дней (30d) включительно.
Если установлено значение None, то компонент будет работать постоянно; в случае отсутствия активности ему не будет отправлен сигнал SIGTERM.

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

DebugLibldap

{логический}

Включать или нет в журнал на отладочном уровне (при LogLevel = DEBUG) также и отладочные сообщения библиотеки libldap.

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

LdapCheckCertificate

{No | Allow | Try | Yes}

Режим проверки сертификатов при подключении к LDAP через SSL/TLS.

Допустимые значения:

No — никогда не запрашивать сертификат сервера;

Allow — запрашивать сертификат сервера, и если он не будет предоставлен, сессия будет продолжена нормальным образом; если же серверный сертификат предоставлен, но не может быть проверен (не удалось найти соответствующий корневой сертификат), то сертификат сервера будет проигнорирован и сессия будет продолжена нормальным образом;

Try — запрашивать сертификат сервера, и если он не будет предоставлен, сессия будет продолжена нормальным образом; если же серверный сертификат предоставлен, но не может быть проверен (не удалось найти соответствующий корневой сертификат), то сессия будет прервана;

Yes — запрашивать сертификат сервера, и если он не будет предоставлен, сессия будет прервана; если серверный сертификат не может быть проверен (не удалось найти соответствующий корневой сертификат), то сессия также будет прервана.

Для источников данных типа LDAP влияет на обработку URL по схеме ldaps:// или с использованием расширения StartTLS; для источников данных типа AD влияет на соединение с сервером, если в соответствующей секции установлено UseSSL=Yes (см. ниже).

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

LdapCertificatePath

{путь к файлу}

Путь к файлу сертификата SSL, используемого для подключения к серверам LDAP (Active Directory) через безопасное соединение SSL/TLS.

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

Значение по умолчанию: (не задано)

LdapKeyPath

{путь к файлу}

Путь к файлу закрытого ключа, используемого для подключения к серверам LDAP (Active Directory) через безопасное соединение SSL/TLS.

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

Значение по умолчанию: (не задано)

LdapCaPath

{путь}

Путь к каталогу или файлу, в котором располагается перечень корневых сертификатов, являющихся доверенными при обмене данными по протоколу LDAP через SSL/TLS.

Значение по умолчанию: <путь к системному перечню доверенных сертификатов>. Зависит от дистрибутива GNU/Linux.

Для Astra Linux, Debian, Linux Mint, SUSE Linux и Ubuntu это обычно путь /etc/ssl/certs/.

Для CentOS и Fedora — путь /etc/pki/tls/certs/ca-bundle.crt.

Для других дистрибутивов путь может быть определен через результат вызова команды openssl version -d.

Если команда недоступна или дистрибутив ОС опознать не удалось, используется значение /etc/ssl/certs/.

DbIdleTimeout

{интервал времени}

Период времени ожидания, по окончании которого установленное соединение с базой данных (или хранилищем Redis) будет разорвано в случае простоя.

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

MysqlDefaultConn

{URL}

URI, задающий параметры подключения к базе данных СУБД MySQL по умолчанию.

Возможные значения:

tcp://[<пользователь>[:<пароль>]@][<узел>][:<порт>][/<имя базы данных>][?<параметр>=<значение>[&…]];

unix://[<пользователь>[:<пароль>]@]<путь к сокету>[:<имя базы данных>][?<параметр>=<значение>[&…]].

Обратите внимание на требования к URI.

Значение по умолчанию: (не задано)

PqDefaultConn

{URL}

URI, задающий параметры подключения к базе данных СУБД PostgreSQL по умолчанию.

Возможные значения:

tcp://[<пользователь>[:<пароль>]@][<узел>][:<порт>][/<имя базы данных>][?<параметр>=<значение>[&…]];

unix://[<пользователь>[:<пароль>]@]<путь к сокету>[:<имя базы данных>][?<параметр>=<значение>[&…]].

Обратите внимание на требования к URI.

Значение по умолчанию: (не задано)

SqliteDefaultConn

{путь к файлу}

Путь к файлу базы данных СУБД SQLite по умолчанию (указывается с префиксом схемы file://).

Значение по умолчанию: (не задано)

RedisDefaultConn

{URL}

URL, задающий параметры подключения к хранилищу данных Redis по умолчанию.

Возможные значения:

tcp://[<пароль>@][<узел>][:<порт>][/<индекс базы данных>];

unix://[<пароль>@]<путь к сокету>[:<индекс базы данных>].

Обратите внимание на требования к URI.

Значение по умолчанию: (не задано)

Требования к URI подключения к базам данных

1.Используются только префиксы схем tcp:// и unix:// (для локальных UNIX-сокетов). СУБД-специфичные префиксы схемы (такие как postgresql://, mysql://) не поддерживаются. Путь к файлу СУБД SQLite указывается с префиксом file://.

2.Если поле <узел> не указано в URI, или указан узел localhost, подставляется адрес узла 127.0.0.1. В этом случае для СУБД MySQL и PostgreSQL по умолчанию подключение будет производиться через локальный UNIX-сокет, несмотря на то, что указано сетевое соединение.

3.При наличии в полях URI (таких, как <пользователь>, <пароль>, <имя базы данных> и т. д.) либо в строке параметров подключения специальных символов (пробел, двоеточие и т. п.) необходимо использовать hex-кодирование, например:

пробел — "%20";

':' — "%3A";

'/' — "%2F";

'@' — "%40";

'%' — "%25".

4.Для СУБД MySQL строка параметров подключения может включать в себя только следующие параметры:

Имя параметра

Обозначение в документации СУБД

Тип

Описание

init

MYSQL_INIT_COMMAND

Строка

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

compression

MYSQL_OPT_COMPRESS

Логический

Использовать сжатие передаваемых данных

connect-timeout

MYSQL_OPT_CONNECT_TIMEOUT

Целое число

Тайм-аут разрыва неиспользуемого соединения в секундах

reconnect

MYSQL_OPT_RECONNECT

Логический

Разрешить или запретить автоматическое переподключение

read-timeout

MYSQL_OPT_READ_TIMEOUT

Целое число

Тайм-аут на получение пакетов от сервера в секундах

write-timeout

MYSQL_OPT_WRITE_TIMEOUT

Целое число

Тайм-аут на отправку пакетов серверу в секундах

charset

MYSQL_SET_CHARSET_NAME

Строка

Имя кодировки символов, используемой для соединения по умолчанию

plugin-dir

MYSQL_PLUGIN_DIR

Строка

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

nonblock

MYSQL_OPT_NONBLOCK

Целое число

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

ssl-key

MYSQL_OPT_SSL_KEY

Строка

Путь к закрытому ключу (в формате PEM), использующемуся для организации защищенного соединения

ssl-cert

MYSQL_OPT_SSL_CERT

Строка

Путь к сертификату открытого ключа (в формате PEM), использующемуся для организации защищенного соединения

ssl-ca

MYSQL_OPT_SSL_CA

Строка

Путь к файлу (в формате PEM), содержащему доверенные сертификаты CA

ssl-capath

MYSQL_OPT_SSL_CAPATH

Строка

Путь к каталогу, содержащему доверенные сертификаты CA (в формате PEM)

ssl-cipher

MYSQL_OPT_SSL_CIPHER

Строка

Список поддерживаемых алгоритмов шифрования для защищенного соединения

ssl-crl

MYSQL_OPT_SSL_CRL

Строка

Путь к файлу (в формате PEM), содержащему отозванные сертификаты

ssl-crlpath

MYSQL_OPT_SSL_CRLPATH

Строка

Путь к каталогу, содержащему отозванные сертификаты (в формате PEM)

ssl-fp

MARIADB_OPT_SSL_FP

Строка

хеш SHA1 разрешенного серверного сертификата

ssl-fp-list

MARIADB_OPT_SSL_FP_LIST

Строка

Путь к файлу, содержащему хеши SHA1 разрешенных серверных сертификатов

tls-passphrase

MARIADB_OPT_TLS_PASSPHRASE

Строка

Пароль для закрытого ключа клиента, защищенного паролем

tls-version

MARIADB_OPT_TLS_VERSION

Строка

Список поддерживаемых версий TLS

server-verify-cert

MYSQL_OPT_SSL_VERIFY_SERVER_CERT

Логический

Разрешить или запретить верификацию серверных сертификатов

server-public-key-path

MYSQL_SERVER_PUBLIC_KEY

Строка

Путь к файлу (в формате PEM), содержащему открытый ключ RSA сервера

C описанием приведенных параметров вы можете ознакомиться в документации СУБД: https://mariadb.com/kb/en/mysql_optionsv/.

5.Для СУБД PostgreSQL см. дополнительно https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS.

Секции источников данных

Кроме основной секции [LookupD], в файле конфигурации также задаются секции, описывающие подключения к источникам данных (по одной на каждое подключение). Эти секции именуются по схеме [LookupD.<тип>.<имя>], где:

<тип> — тип подключения:

LDAP — для службы каталогов, использующей LDAP;

AD — для службы каталогов Active Directory;

AllMatch — для текстового файла в режиме AllMatch (полное совпадение);

Mask — для текстового файла в режиме Mask (соответствие по маске);

Regex — для текстового файла в режиме Regex (соответствие регулярному выражению, записанному в стандарте PCRE);

Cidr — для текстового файла в режиме Cidr (совпадение IP-адресов и/или диапазонов);

Pq — для базы данных PostgreSQL;

Mysql — для базы данных MySQL;

Sqlite — для базы данных SQLite;

Redis — для базы данных Redis.

<имя> — уникальный идентификатор (тег) подключения для ссылки на него из правил.

Например, [LookupD.LDAP.auth1]. Секции, описывающие подключение, содержат набор параметров, зависящих от типа источника. Количество секций не ограничено.

1.Параметры секций типа LDAP

Параметр

Описание

Url

{строка}

URL, определяющий используемый сервер LDAP и извлекаемые данные. Согласно RFC 4516, URL строится по схеме:

<scheme>://<host>[:<port>]/<dn>[?<attrs>[?<scope>[?<filter>[?<extensions>]]]]

Здесь:

<scheme> — способ подключения к серверу (допускаются схемы ldap, ldaps и ldapi);

<host>[:<port>] — адрес сервера LDAP, к которому направляется запрос;

<dn> — уникальное имя (distinguished name) объекта, информация о котором получается;

<attrs> — имена атрибутов записей, значения которых должны быть получены в запросе;

<scope> — область поиска (base, one, sub);

<filter> — фильтрующее условие на значения извлекаемых атрибутов;

<extensions> — перечень используемых в запросе расширений LDAP.

Особенности

В списке атрибутов <attrs> можно использовать спецсимволы выбора '*', '+' и '1.1'.

В частях URL <dn> и <filter> могут быть использованы следующие автоматически разрешаемые маркеры:

$u — заменяется на user — имя пользователя, переданное клиентским компонентом;

$d — заменяется на domain — имя домена, переданное клиентским компонентом;

$D — цепочка <subdomain>.<domain>, преобразованная в dc=<subdomain>,dc=<domain>;

$$ — символ '$'.

Если в условии <filter> требуется использовать специальные символы (например: '*', '(', ')', '\', символ с кодом 0) как обычные, то их следует записывать в виде \XX. Кроме того, специальные символы в URL LDAP кодируются с помощью последовательностей %XX. Например, при использовании символа '/' в URL по схеме ldapi в качестве части пути к локальному сокету сервера LDAP, этот символ кодируется как %2f.

В качестве допустимых расширений в <extensions> поддерживаются только StartTLS и 1.3.6.1.4.1.1466.20037, которые включают использование механизма TLS (т. е. организация защищенного соединения с сервером LDAP, даже если явно не указано использование защищенной схемы ldaps) Если перед именем используемого расширения указан символ '!', то использование TLS обязательно, т. е. в случае невозможности установки безопасного соединения запрос не будет исполнен. В противном случае запрос будет исполнен, даже если безопасное соединение не будет установлено.

Указанные расширения не могут применяться в случае использования защищенной схемы ldaps. Для получения более подробной информации воспользуйтесь RFC 4516 или man ldap_search_ext_s.

Примеры:

"ldaps://ds.example.com:990/$D?givenName,sn,cn?sub?(uid=$u)"
"ldap://ldap.local/o=org,dc=nodomain?ipNetworkNumber?sub?(objectClass=ipNetwork)?!StartTLS"

Значение по умолчанию: (не задано)

BindDn

{строка}

Объект в каталоге LDAP, связываемый с пользователем для авторизации.

Пример: "cn=admin,dc=nodomain".

Значение по умолчанию: (не задано)

BindPassword

{строка}

Пароль для аутентификации доступа к серверу LDAP.

Значение по умолчанию: (не задано)

ChaseReferrals

{логический}

Следовать ли по отсылкам на другие LDAP-серверы, если текущий сервер LDAP присылает их в ответ на запросы.

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

2.Параметры секции типа AD

Параметр

Описание

Host

{строка}

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

Пример: "win2012.win.local".

Значение по умолчанию: (не задано)

Port

{целое число}

Порт на узле, прослушиваемый сервером службы Active Directory.

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

Dn

{строка}

DN объекта в каталоге Active Directory (аналог части dn в URL LDAP).

Пример: "dc=win,dc=local".

Значение по умолчанию: (не задано)

User

{строка}

Полный идентификатор пользователя на сервере для идентификации.

Пример: "Administrator@WIN.LOCAL".

Значение по умолчанию: (не задано)

Password

{строка}

Пароль для аутентификации доступа к серверу Active Directory.

Значение по умолчанию: (не задано)

ChaseReferrals

{логический}

Следовать ли по отсылкам на другие LDAP-серверы, если текущий сервер Active Directory присылает их в ответ на запросы.

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

UseSSL

{логический}

Использовать SSL/TLS при обращении к серверу Active Directory.

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

3.Параметры секций типа AllMatch, Mask, Regex, Cidr

Параметр

Описание

File

{путь}

Путь к текстовому файлу, содержащему строки для поиска.

Пример: "/etc/file1".

Значение по умолчанию: (не задано)

 

Особенности

Строки из файла, указанного в секции типа AllMatch, используются для поиска полного совпадения строк без учета регистра символов.

Строки файла, указанного в секции типа Mask, трактуются как маски (wildcards). Маски можно рассматривать как упрощенный вариант регулярных выражений, содержащих, помимо стандартных символов, служебные символы. Сравнение строк с масками идет без учета регистра символов. Маски могут содержать следующие служебные символы и выражения:

* — любая последовательность символов;

? — любой один символ;

[<набор символов>] — один любой символ из указанного набора (например: [bac]);

[!<набор символов>] — один любой символ, не соответствующий ни одному символу из набора (например: [!cab]);

[[:<класс>:]] — один любой символ из указанного POSIX-класса символов (alnum, alpha, ascii, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit).

Маска, соответствующая некоторой подстроке, должна содержать искомую подстроку, обрамленную символами '*' (например, *host*). При необходимости задать в маске один из служебных символов, его необходимо экранировать косой чертой: \[, \], \*, \?. Косая черта, при необходимости, также экранируется: \\. Экранирование любых других символов смысла не имеет, то есть строка \a\b\c\*\d\?\\ будет преобразована в строку abc*d?\. Примеры масок:

#Соответствует в точности строке name
name

#Соответствует трехсимвольным строкам, у которых
#первый символ — c, второй символ — любой, а третий — t
#Например: cat, cut, cct
c?t

#Соответствует строкам: user, users, us3rr, ussr1 и так далее
#(символьному классу [:alpha:] соответствует любой алфавитный
#символ, а спецсимволу ? — любой символ)
us[[:alpha:]34]r?

#Соответствует строкам: .con, file.col, 3...co! и так далее
#(перед .co - любая последовательность символов, после —
#один любой символ кроме m и ?)
*.co[!m\?]

#Соответствует любой строке, содержащей в себе часть host,
#например: host, localhost, hostel, ghosts
*host*

Строки из файла, указанного в секции типа Regex, трактуются как регулярные выражения PCRE (Perl Compatible Regular Expressions). Сопоставление строк с регулярными выражениями производится без учета регистра символов. Примеры регулярных выражений:

#IPv4
(\d{1,3}.){3}\d{1,3}

#Адрес e-mail в домене .com
\w+@\w+\.com

Строки из файла, указанного в секции типа Cidr, трактуются как IP-адреса или диапазоны IP-адресов. Допускаются варианты указания как IP-адресов (и диапазонов) IPv4, так и IPv6. Маска подсети может быть указана как в битовом (октетном) формате, так и в нотации CIDR (Classless Inter-Domain Routing), например:

#IPv4
192.168.0.1
192.168.0.0/12
192.168.0.0/255.255.255.224

#IPv6
fe80::c7e8/32
fe80::c7e8/255.255.255.224

4.Параметры секций типа Pq, Mysql, Sqlite

Параметр

Описание

Conn

{строка}

Строка соединения с базой данных.

Возможные значения:

для секции Mysql (MySQL), Pq (PostgreSQL):

tcp://[<пользователь>[:<пароль>]@]<узел>[:<порт>][/<имя базы данных>][?<параметр>=<значение>[&…]];

unix://[<пользователь>[:<пароль>]@]<путь к сокету>[:<имя базы данных>][?<параметр>=<значение>[&…]];

Пример: "tcp://user:pwd@localhost:1234/userdb", "unix://user:pwd@/tmp/pgsql.sock:userdb".

Обратите внимание на требования к URI;

для секции Sqlite (SQLite):

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

Пример: "file:///home/user/users.db".

Значение по умолчанию: определяется значением соответствующего параметра *DefaultConn

Request

{строка}

Строка SQL-запроса (SELECT) к базе данных. Как и для источников типа AD и LDAP, в запросе могут быть использованы следующие автоматически разрешаемые маркеры:

$u, $U — заменяется на user — имя пользователя, переданное клиентским компонентом;

$d, $D — заменяется на domain — имя домена, переданное клиентским компонентом;

$$ — заменяется на символ '$'.

Пример: "SELECT username FROM users INNER JOIN domains ON users.domain = domains.id WHERE domains.name = $d AND users.name = $u".

Значение по умолчанию: (не задано)

В качестве SQL-запроса может быть указан только запрос типа SELECT. После выполнения подстановок запрос передается в БД «как есть». Если результат запроса будет содержать больше одного столбца, то все столбцы, кроме первого, будут проигнорированы.

5.Параметры секций типа Redis

Параметр

Описание

Conn

{строка}

Строка соединения с хранилищем данных Redis.

Возможные значения:

tcp://[<пароль>@]<узел>[:<порт>][/<индекс базы данных>];

unix://[<пароль>@]<путь к сокету>[:<индекс базы данных>];

Обратите внимание на требования к URI.

Пример: "tcp://localhost:6379".

Значение по умолчанию: определяется значением параметра RedisDefaultConn

Request

{строка}

Строка запроса данных из хранилища Redis. В запросе могут быть использованы следующие автоматически разрешаемые маркеры:

$u, $U — заменяется на user — имя пользователя, переданное клиентским компонентом;

$d, $D — заменяется на domain — имя домена, переданное клиентским компонентом;

$$ — заменяется на символ '$'.

Пример: "HVALS bad_users".

Значение по умолчанию: (не задано)

Если результат запроса будет содержать больше одного столбца, то все столбцы кроме первого будут проигнорированы.

Добавление секций источников данных

Чтобы добавить новую секцию параметров для источника данных некоторого типа с тегом <имя> при помощи утилиты Dr.Web Ctl, предназначенной для управления Dr.Web для почтовых серверов UNIX из командной строки (запускается командой drweb-ctl), достаточно использовать команду:

# drweb-ctl cfset LookupD.<тип> -a <имя>

Пример:

# drweb-ctl cfset LookupD.AD -a WinAD1
# drweb-ctl cfset LookupD.AD.WinAD1.Host 192.168.0.20

Первая команда добавит в файл конфигурации секцию [LookupD.AD.WinAD1], а вторая изменит в ней значение параметра Host.

Кроме того, вы можете записать новую секцию непосредственно в файл конфигурации (например, добавив ее в конец файла):

[LookupD.AD.WinAD1]
Host = 192.168.0.20

Оба способа задания настроек приведут к одинаковому результату. Но в случае непосредственной правки файла конфигурации необходимо применить измененные настройки, отправив сигнал SIGHUP модулю drweb-configd. Для этого вы можете выполнить команду:

# drweb-ctl reload