Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
debian:syslog-ng [2025/04/25 23:15] – Method | debian:syslog-ng [2025/05/01 19:52] (поточний) – [DNS query logging] Method | ||
---|---|---|---|
Рядок 3: | Рядок 3: | ||
<code bash> | <code bash> | ||
- | wget -qO - https:// | + | wget -qO - https:// |
cat <<EOF > / | cat <<EOF > / | ||
deb [ signed-by=/ | deb [ signed-by=/ | ||
Рядок 10: | Рядок 10: | ||
apt update | apt update | ||
apt-get install syslog-ng-core syslog-ng-scl | apt-get install syslog-ng-core syslog-ng-scl | ||
+ | syslog-ng -V | ||
</ | </ | ||
Рядок 127: | Рядок 128: | ||
===== DNS query logging ===== | ===== DNS query logging ===== | ||
apt-get install syslog-ng-mod-python | apt-get install syslog-ng-mod-python | ||
+ | |||
+ | Підготуємо каталоги | ||
+ | |||
+ | Створюємо tmpfs директорію та монтуємо | ||
+ | |||
+ | mkdir -p / | ||
+ | echo "tmpfs / | ||
+ | mount -a | ||
+ | mkdir -p / | ||
+ | |||
+ | Створюємо директорію для архівів | ||
+ | mkdir -p / | ||
+ | |||
+ | Створимо скрипт для переміщення логів | ||
+ | <code bash> | ||
+ | cat <<EOT > / | ||
+ | #!/bin/bash | ||
+ | |||
+ | SRC_DIR="/ | ||
+ | DST_DIR="/ | ||
+ | |||
+ | # Знайти файли старші за 15 хвилин | ||
+ | find " | ||
+ | # Визначити відносний шлях | ||
+ | rel_path=" | ||
+ | target_dir=" | ||
+ | |||
+ | # Створити директорію в цільовому місці | ||
+ | mkdir -p " | ||
+ | |||
+ | # Перемістити файл | ||
+ | mkdir -p " | ||
+ | mv " | ||
+ | done | ||
+ | |||
+ | # Видалити всі порожні каталоги у вихідному каталозі | ||
+ | find " | ||
+ | EOT | ||
+ | </ | ||
+ | |||
+ | chmod +x / | ||
+ | bash / | ||
+ | |||
+ | crontab -e | ||
+ | |||
+ | Вписуємо | ||
+ | * * * * * / | ||
+ | |||
+ | Додатково логи можна переміщати на віддаленний сервер по NFS | ||
+ | |||
+ | apt install nfs-common | ||
+ | mkdir -p / | ||
+ | showmount --exports 172.16.0.14 | ||
+ | echo " | ||
+ | mount -a | ||
+ | mkdir -p / | ||
+ | |||
+ | Створимо скрипт для переміщення логів | ||
+ | <code bash> | ||
+ | cat <<EOT > / | ||
+ | #!/bin/bash | ||
+ | |||
+ | SRC_DIR="/ | ||
+ | NFS_DIR="/ | ||
+ | NFS_MOUNT="/ | ||
+ | RETENTION_DAYS=100 | ||
+ | |||
+ | # Перевірити, | ||
+ | if ! mountpoint -q " | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | # Знайти файли старші за 15 хвилин | ||
+ | find " | ||
+ | # Визначити відносний шлях | ||
+ | rel_path=" | ||
+ | target_dir=" | ||
+ | |||
+ | # Створити директорію на NFS | ||
+ | mkdir -p " | ||
+ | |||
+ | # Перемістити файл | ||
+ | mkdir -p " | ||
+ | mv " | ||
+ | done | ||
+ | |||
+ | # Видалити всі порожні каталоги у вихідному каталозі | ||
+ | find " | ||
+ | |||
+ | # Видалити файли на NFS, які старші за вказану кількість днів | ||
+ | find " | ||
+ | |||
+ | # Також видалити порожні каталоги на NFS після видалення файлів | ||
+ | find " | ||
+ | EOT | ||
+ | </ | ||
+ | |||
+ | chmod +x / | ||
+ | ln -s / | ||
+ | bash / | ||
<code bash> | <code bash> | ||
cat <<EOT > / | cat <<EOT > / | ||
source source_net_udp_514 { | source source_net_udp_514 { | ||
- | | + | |
}; | }; | ||
EOT | EOT | ||
cat <<EOT > / | cat <<EOT > / | ||
source source_net_tcp_514 { | source source_net_tcp_514 { | ||
- | tcp(ip(0.0.0.0) port(514)); | + | tcp(ip(0.0.0.0) port(514) flags(no-parse)); |
}; | }; | ||
EOT | EOT | ||
Рядок 142: | Рядок 244: | ||
<code bash> | <code bash> | ||
- | cat <<EOT > / | + | cat <<EOT > / |
+ | #rewrite r_round_min_10 { | ||
+ | # set(" | ||
+ | #}; | ||
+ | #rewrite r_round_min_10 { | ||
+ | # subst(" | ||
+ | # set(" | ||
+ | #}; | ||
+ | |||
+ | # Округлення хвилин до 10 | ||
+ | rewrite r_round_min_10 { | ||
+ | # Використовуємо pcre для заміни останньої цифри на 0 | ||
+ | set(" | ||
+ | subst(" | ||
+ | }; | ||
+ | |||
+ | parser p_json { | ||
+ | json-parser(prefix(" | ||
+ | }; | ||
+ | |||
+ | template t_full_dnsdist { | ||
+ | template(" | ||
+ | }; | ||
+ | |||
+ | template t_custom_dnsdist { | ||
+ | template(" | ||
+ | }; | ||
+ | |||
+ | destination d_dns_csv { | ||
+ | file("/ | ||
+ | # | ||
+ | template(t_custom_dnsdist) | ||
+ | template-escape(yes) | ||
+ | create-dirs(yes) | ||
+ | flush-lines(100) | ||
+ | # | ||
+ | log-fifo-size(2048) | ||
+ | disk-buffer( | ||
+ | mem-buf-size(10000) | ||
+ | disk-buf-size(1073741824) | ||
+ | reliable(yes) | ||
+ | dir("/ | ||
+ | ) | ||
+ | # | ||
+ | flags(no-multi-line) | ||
+ | ); | ||
+ | }; | ||
+ | |||
+ | destination d_debug_all { | ||
+ | file("/ | ||
+ | template(" | ||
+ | template-escape(no) | ||
+ | create-dirs(yes) | ||
+ | flush-lines(1) | ||
+ | ); | ||
+ | }; | ||
+ | |||
+ | #log { | ||
+ | # source(source_net_udp_514); | ||
+ | # destination(d_debug_all); | ||
+ | #}; | ||
+ | |||
+ | # Фільтр для ігнорування доменів | ||
+ | filter f_ignore_domains { | ||
+ | not match(" | ||
+ | }; | ||
+ | |||
+ | log { | ||
+ | source(source_net_udp_514); | ||
+ | rewrite(r_round_min_10); | ||
+ | parser(p_json); | ||
+ | destination(d_dns_csv); | ||
+ | }; | ||
EOT | EOT | ||
</ | </ | ||
- | # ============================================= | + | |
- | # Налаштування продуктивності syslog-ng | + | Налаштування продуктивності syslog-ng |
- | # ============================================= | + | |
- | # flush_lines - кількість рядків перед записом | + | |
- | # time_reopen - час перед повторним відкриттям | + | |
- | # log_fifo_size - розмір черги | + | |
- | # threaded - багатопотоковий режим | + | |
- | cat > / | + | |
+ | <code bash> | ||
+ | cat << EOF > / | ||
options { | options { | ||
flush_lines(1000); | flush_lines(1000); | ||
Рядок 167: | Рядок 343: | ||
}; | }; | ||
EOF | EOF | ||
+ | </ | ||
+ | |||
+ | Домени, | ||
+ | |||
+ | Формат: | ||
+ | <code bash> | ||
+ | cat << EOF > / | ||
+ | google.com | ||
+ | youtube.com | ||
+ | facebook.com | ||
+ | instagram.com | ||
+ | twitter.com | ||
+ | netflix.com | ||
+ | amazon.com | ||
+ | microsoft.com | ||
+ | apple.com | ||
+ | EOF | ||
+ | </ | ||
+ | Перевіримо правильність конфігурацій | ||
syslog-ng -s -f / | syslog-ng -s -f / | ||
- | # Перезапуск служб | + | Тестовий запуск |
+ | syslog-ng -Fev | ||
+ | або | ||
+ | syslog-ng -R / | ||
+ | |||
+ | З іншої консолі посилаємо тестове повідомлення | ||
+ | logger -n 127.0.0.1 -P 514 -d " | ||
+ | |||
+ | Перезапуск служб | ||
systemctl restart syslog-ng | systemctl restart syslog-ng | ||
+ | FIXME | ||
+ | 361 nano / | ||
+ | 362 nano / | ||
+ | 382 nano /etc/fstab | ||
+ | 393 nano / | ||
+ | 394 systemd-tmpfiles --create / | ||
+ | 396 systemctl restart syslog-ng | ||
+ | FIXME | ||
+ | <code bash> | ||
+ | cat <<EOT > / | ||
+ | D / | ||
+ | D / | ||
+ | D / | ||
+ | EOT | ||
+ | </ | ||
+ | FIXME | ||