Настройка журналирования на КД, сервере общего доступа к файлам и сервере аудита (только команды)#
После настройки, описанной в данном разделе:
Будет осуществляться полное журналирование всех событий безопасности и перенаправление ряда журналов с КД и сервера общего доступа к файлам на сервер аудита из состава изделия.
Не будет настроена ротация журналов служб на КД, на сервере общего доступа к файлам и на сервере аудита.
Не будет осуществлено перенаправление информации с сервера аудита в стороннюю SIEM.
Для настройки необходимо пройти следующие шаги:
Настройка всех КД в домене (изменение конфигурации 389 DS, настройка
syslog-ng
, перезапуск служб).
Предупреждение
Дальнейшие действия нужно выполнить на каждом контроллере в домене.
Настройка 389 DS, службы Kerberos и auditd
# настройка 389 DS
# ldap://alddc1.ald.lan - необходимо по очереди заменить на адрес каждого конкретного КД в домене, "ПАРОЛЬ_АДМИНИСТРАТОРА" - необходимо вписать реальный пароль администратора
dsconf -D "cn=Directory Manager" -w "ПАРОЛЬ_АДМИНИСТРАТОРА" ldap://alddc1.ald.lan config replace nsslapd-auditlog-logging-enabled=on
dsconf -D "cn=Directory Manager" -w "ПАРОЛЬ_АДМИНИСТРАТОРА" ldap://alddc1.ald.lan config replace nsslapd-auditfaillog-logging-enabled=on
dsconf -D "cn=Directory Manager" -w "ПАРОЛЬ_АДМИНИСТРАТОРА" ldap://alddc1.ald.lan config replace nsslapd-securitylog-logging-enabled=on
# следующая команда в одну строку
dsconf -D "cn=Directory Manager" -w "ПАРОЛЬ_АДМИНИСТРАТОРА" ldap://alddc1.ald.lan config replace nsslapd-auditlog-display-attrs=loginShell, krbExtraData,krbLastPwdChange,krbPasswordExpiration,x-ald-user-mac,uid,displayName,initials,gecos,sn,homeDirectory,mail,krbPrincipalName,krbCanonicalName,givenName,rbtamiddlename,street,l,st,postalCode,c,employeeNumber,telephoneNumber,title,rbtadp,rbtaou,entyusn,modifiersName,objectClass,ipaNTSecutityIdentifier,cn,creatorsName,createTimestamp,modifyTimestamp,nsUniqueId,ipaUniqueId,parentid,entryid,uidNumber,gidNumber,entryUUID,dsEntryDN,entrydn
# настройка службы Kerberos
# в файле /lib/systemd/system/krb5-kdc.service в параметр ReadWriteDirectories добавить /var/log и прочитать новую конфигурацию службы
systemctl daemon-reload
# настройка службы auditd
# создаем файл /etc/audit/rules.d/siem.rules touch /etc/audit/rules.d/siem.rules
# вставить в файл /etc/audit/rules.d/siem.rules следующее содержимое
-a always,exit -F arch=b32 -S execve -F auid>=1000
-a always,exit -F arch=b64 -S execve -F auid>=1000
-a always,exit -S accept -S accept4 -F exe=/usr/sbin/ns-slapd -k ldapconnect
-a exit,always -F exit=-EACCES -F exe=/usr/sbin/ns-slapd -k ldapconnect
# перезапустить службы
systemctl restart krb5-kdc.service auditd
Настройка syslog-ng на КД
# создать каталог /etc/syslog-ng/siem для дальнейшего включения его в конфигурацию службы syslog-ng и записи в него необходимых файлов конфигурации этой службы
mkdir /etc/syslog-ng/siem
# вставить в файл /etc/syslog-ng/syslog-ng.conf следующую строку
@include "/etc/syslog-ng/siem/*.conf"
# создать набор файлов конфигурации syslog-ng и задать им права
touch /etc/syslog-ng/siem/destination.conf
touch /etc/syslog-ng/siem/output-dirsrv-access.conf
touch /etc/syslog-ng/siem/output-dirsrv-audit.conf
touch /etc/syslog-ng/siem/output-dirsrv-error.conf
touch /etc/syslog-ng/siem/output-dirsrv-security.conf
touch /etc/syslog-ng/siem/output-dns-zone.conf
touch /etc/syslog-ng/siem/output-krb-audit.conf
touch /etc/syslog-ng/siem/output-user-proc.conf
touch /etc/syslog-ng/siem/output-ldapconnect.conf
chmod 744 /etc/syslog-ng/siem/*
# вставить в файл /etc/syslog-ng/siem/destination.conf следующее содержимое (IP-адрес заменить на реальный адрес сервера аудита из состава домена)
destination d_audit {network("100.100.100.100" transport("tcp") port(514)flags(syslog-protocol) template("${ISODATE} ${HOST} ${MESSAGE} ${TAGS} \n"));};
# вставить в файл /etc/syslog-ng/siem/output-dirsrv-access.conf следующее содержимое
source s_access_dirsrv {file("/var/log/dirsrv/slapd-ALDPRO-LAN/access" follow-freq(1) flags(no-parse));};
filter f_access_dirsrv {match("MOD" value("MESSAGE")) or match("DEL" value("MESSAGE")) or match("ADD" value("MESSAGE")) or match("SRCH" value("MESSAGE")) or match("connection from" value("MESSAGE")) or match("RESULT" value("MESSAGE"));};
log {
source(s_access_dirsrv);
filter(f_access_dirsrv);
rewrite {set-tag("tag-dirsrv-access");};
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-dirsrv-audit.conf следующее содержимое (если НЕТ необходимости в передаче данных о событии в одну строку)
source s_audit_dirsrv {file("/var/log/dirsrv/slapd-ALDPRO-LAN/audit" follow-freq(1) flags(no-parse) );};
log {
source(s_audit_dirsrv);
rewrite { set-tag("tag-dirsrv-audit");};
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-dirsrv-audit.conf следующее содержимое (если ЕСТЬ необходимость в передаче данных о событии в одну строку)
source s_audit_dirsrv {file("/var/log/dirsrv/slapd-ALDPRO-LAN/audit" multi-line-mode(prefix-suffix) multi-line-prefix("time: [0-9]+") multi-line-suffix("\n$") flags(no-multi-line) follow-freq(1));};
log {
source(s_audit_dirsrv);
rewrite { subst("^", "time: ", value("MESSAGE"));
set-tag("tag-dirsrv-audit"); };
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-dirsrv-error.conf следующее содержимое
source s_errors_dirsrv {file("/var/log/dirsrv/slapd-ALDPRO-LAN/errors" follow-freq(1) flags(no-parse));};
log {
source(s_errors_dirsrv);
rewrite {set-tag("tag-dirsrv-error");};
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-dirsrv-error.conf следующее содержимое
source s_security_dirsrv {file("/var/log/dirsrv/slapd-ALDPRO-LAN/security"follow-freq(1) flags(no-parse));};
log {
source(s_security_dirsrv);
rewrite {set-tag("tag-dirsrv-security");};
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-dns-zone.conf следующее содержимое
filter f_dnszone{message('AXFR') or message('IXFR');};
log {
source(s_src);
filter(f_dnszone);
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-krb-audit.conf следующее содержимое
source s_krb_audit {file("/var/log/krb5kdc.log" follow-freq(1) flags(no-parse) );};
filter f_krb_audit {match("AS_REQ" value("MESSAGE")) or match("TGS_REQ"value("MESSAGE"));};
log {
source(s_krb_audit);
filter(f_krb_audit);
rewrite {set-tag("tag-krb-audit");};
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-user-proc.conf следующее содержимое
source s_user_proc {file("/var/log/audit/audit.log" flags(no-parse) persist-name("user_proc") follow-freq(1));};
filter f_user_proc {match("syscall=59" value("MESSAGE"));};
log {
source(s_user_proc);
filter(f_user_proc);
destination(d_audit);
};
# вставить в файл /etc/syslog-ng/siem/output-ldapconnect.conf следующее содержимое
source s_ldap {file("/var/log/audit/audit.log" flags(no-parse) persist-name("ldap_conn") follow-freq(1));};
filter f_ldapconnect {message('ldapconnect');};
log {
source(s_ldap);
filter(f_ldapconnect);
destination(d_audit);
# перезапустить сервис syslog-ng
systemctl restart syslog-ng
Настройка сервера общего доступа к файлам для журналирования операций с общими файловыми ресурсами с помощью пакета программ Samba.
# в файле конфигурации /etc/samba/smb.conf в секцию "global" добавить следующие строки
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:success = connect, create_file, linkat, mkdirat, open, read, renameat, unlinkat, write
full_audit:failure = connect, create_file, linkat, mkdirat, open, read, renameat, unlinkat, write
full_audit:facility = local5 full_audit:priority = notice
# Если в файле конфигурации /etc/samba/smb.conf в секции "global" присутствует следующая строка "log level = N" где N - это уровень журналирования событий в службе, то к данной строке дописываем через пробел строку " vfs:1". Если такой строки нет, то записываем
log level = 1 vfs:1
# создать каталог /etc/syslog-ng/siem для дальнейшего включения его в конфигурацию службы syslog-ng и записи в него необходимых файлов конфигурации этой службы
mkdir /etc/syslog-ng/siem
# вставить в файл /etc/syslog-ng/syslog-ng.conf следующую строку
@include "/etc/syslog-ng/siem/*.conf"
# создать набор файлов конфигурации syslog-ng и задать им права
touch /etc/syslog-ng/siem/destination.conf
touch /etc/syslog-ng/siem/output-samba.conf
chmod 744 /etc/syslog-ng/siem/*
# вставить в файл /etc/syslog-ng/siem/destination.conf следующее содержимое (IP-адрес заменить на реальный адрес сервера аудита из состава домена)
destination d_audit {network("100.100.100.100" transport("tcp") port(514)flags(syslog-protocol) template("${ISODATE} ${HOST} ${PROGRAM} ${MESSAGE} ${TAGS} \n"));};
# вставить в файл /etc/syslog-ng/siem/output-samba.conf следующее содержимое
filter f_samba{program('smbd_audit');};
log {
source(s_src);
filter(f_samba);
destination(d_audit);
};
# перезапустить службы
systemctl restart smbd winbind syslog-ng
Настройка сервера аудита из состава домена для журналирования событий с КД и c сервера общего доступа к файлам.
# создать каталог /etc/syslog-ng/siem для дальнейшего включения его в конфигурацию службы syslog-ng и записи в него необходимых файлов конфигурации этой службы
mkdir /etc/syslog-ng/siem
# вставить в файл /etc/syslog-ng/syslog-ng.conf следующую строку
@include "/etc/syslog-ng/siem/*.conf"
# создать набор файлов конфигурации syslog-ng и задать им права
touch /etc/syslog-ng/siem/destination.conf
touch /etc/syslog-ng/siem/input-dirsrv-access.conf
touch /etc/syslog-ng/siem/input-dirsrv-audit.conf
touch /etc/syslog-ng/siem/input-dirsrv-error.conf
touch /etc/syslog-ng/siem/input-dirsrv-security.conf
touch /etc/syslog-ng/siem/input-samba.conf
touch /etc/syslog-ng/siem/input-dns-zone.conf
touch /etc/syslog-ng/siem/input-krb-audit.conf
touch /etc/syslog-ng/siem/input-user-proc.conf
touch /etc/syslog-ng/siem/input-ldapconnect.conf
chmod 744 /etc/syslog-ng/siem/*
# если такого источника на сервере аудита нет (осуществить поиск подстроки "s_net" во всех файлах конфигурации syslog-ng), то создать файл /etc/syslog-ng/siem/source.conf и вставить в него следующее содержимое
source s_net {
network(
transport("tcp")
port(514)
flags(syslog-protocol)
log_iw_size(65536)
max_connections(1000)
);
};
# все файлы журналов сохраняются в каталог /var/log/aldpro
# вставить в файл /etc/syslog-ng/siem/input-dirsrv-access.conf следующее содержимое
destination d_access_dirsrv_file {file("/var/log/aldpro/access_dirsrv.log"template("${MESSAGE}\n"));};
filter f_dirsrv_access {message("tag-dirsrv-access");};
log {
source(s_net);
filter(f_dirsrv_access);
rewrite { subst(" tag-dirsrv-access,.source.s_access_dirsrv", "", value("MESSAGE")); };
destination(d_access_dirsrv_file);
};
# вставить в файл /etc/syslog-ng/siem/input-dirsrv-audit.conf следующее содержимое
destination d_audit_dirsrv_file {file("/var/log/aldpro/audit_dirsrv.log"template("${MESSAGE}\n"));};
filter f_dirsrv_audit { message("tag-dirsrv-audit");};
log {
source(s_net);
filter(f_dirsrv_audit);
rewrite { subst(" tag-dirsrv-audit,.source.s_audit_dirsrv", "", value("MESSAGE")); };
destination(d_audit_dirsrv_file);
};
# вставить в файл /etc/syslog-ng/siem/input-dirsrv-error.conf следующее содержимое
destination d_error_dirsrv_file {file("/var/log/aldpro/error_dirsrv.log"template("${MESSAGE}\n"));};
filter f_dirsrv_error {message("tag-dirsrv-error");};
log {
source(s_net);
filter(f_dirsrv_error);
rewrite { subst(" tag-dirsrv-error,.source.s_errors_dirsrv", "", value("MESSAGE")); };
destination(d_error_dirsrv_file);
};
# вставить в файл /etc/syslog-ng/siem/input-dirsrv-security.conf следующее содержимое
destination d_security_dirsrv_file {file("/var/log/aldpro/security_dirsrv.log" template("${MESSAGE}\n"));};
filter f_dirsrv_security {message("tag-dirsrv-security");};
log {
source(s_net);
filter(f_dirsrv_security);
rewrite { subst(" tag-dirsrv-security,.source.s_security_dirsrv", "",value("MESSAGE")); };
destination(d_security_dirsrv_file);
};
destination d_samba { file("/var/log/aldpro/samba.log" template("${MESSAGE}\n")); };
# вставить в файл /etc/syslog-ng/siem/input-samba.conf следующее содержимое
destination d_samba {file("/var/log/aldpro/samba.log" template("${MESSAGE}\n"));};
filter f_samba {message("smbd_audit");};
log {
source(s_net);
filter(f_samba);
rewrite { subst(" .source.s_src", "", value("MESSAGE")); };
destination(d_samba);
};
# вставить в файл /etc/syslog-ng/siem/input-dns-zone.conf следующее содержимое
destination d_dnszone {file("/var/log/aldpro/dnszone.log" template("${MESSAGE}\n"));};
filter f_dnszone {message('AXFR') or message('IXFR');};
log {
source(s_net);
filter(f_dnszone);
rewrite {subst(" .source.s_src", "", value("MESSAGE"));};
destination(d_dnszone);
};
# вставить в файл /etc/syslog-ng/siem/input-krb-audit.conf следующее содержимое
destination d_krb_audit_file {file("/var/log/aldpro/krb_audit.log" template("${MESSAGE}\n"));};
filter f_krb_audit {message("tag-krb-audit");};
log {
source(s_net);
filter(f_krb_audit);
rewrite { subst(" tag-krb-audit,.source.s_krb_audit", "", value("MESSAGE")); };
destination(d_krb_audit_file);
};
# вставить в файл /etc/syslog-ng/siem/input-user-proc.conf следующее содержимое
destination d_user_proc {file("/var/log/aldpro/userproc.log" template("${MESSAGE}\n"));};
filter f_user_proc {match("syscall=59" value("MESSAGE"));};
log {
source(s_net);
filter(f_user_proc);
rewrite { subst(" .source.s_user_proc", "", value("MESSAGE")); };
destination(d_user_proc);
};
# вставить в файл /etc/syslog-ng/siem/input-ldapconnect.conf следующее содержимое
destination d_ldapconnect {file("/var/log/aldpro/ldapconnect.log" template("${MESSAGE}\n"));};
filter f_ldapconnect {message("ldapconnect");};
log {
source(s_net);
filter(f_ldapconnect);
rewrite {
subst(" .source.s_ldap", "", value("MESSAGE"));
subst(' key="ldapconnect"', "", value("MESSAGE"));
};
destination(d_ldapconnect);
};
# перезапустить сервис syslog-ng
systemctl restart syslog-ng