Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
debian:syslog-ng [2024/07/25 21:03] – [On A10 Thunder] 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:// |
- | echo "deb https://ose-repo.syslog-ng.com/apt/ stable debian-bookworm" | + | cat <<EOF > / |
+ | deb [ signed-by=/ | ||
+ | EOF | ||
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 | ||
</ | </ | ||
Рядок 14: | Рядок 18: | ||
===== A10 Thunder NAT logging ===== | ===== A10 Thunder NAT logging ===== | ||
- | ==== On Syslog-NG server ==== | + | ==== Syslog-NG server |
nano / | nano / | ||
Рядок 32: | Рядок 36: | ||
destination d_a10nat_json_main { | destination d_a10nat_json_main { | ||
file( | file( | ||
- | "/var/log/syslog-ng/ | + | "/nfs/ |
template(" | template(" | ||
create_dirs(yes) | create_dirs(yes) | ||
Рядок 41: | Рядок 45: | ||
destination d_a10nat_json_backup { | destination d_a10nat_json_backup { | ||
file( | file( | ||
- | "/ | + | "/ |
template(" | template(" | ||
create_dirs(yes) | create_dirs(yes) | ||
Рядок 59: | Рядок 63: | ||
filter(f_a10nat_cgnat); | filter(f_a10nat_cgnat); | ||
destination(d_a10nat_json_backup); | destination(d_a10nat_json_backup); | ||
- | when not exists("/ | + | when not exists("/ |
flags(flow-control); | flags(flow-control); | ||
}; | }; | ||
</ | </ | ||
+ | systemctl restart syslog-ng | ||
+ | | ||
test message from remote linux host | test message from remote linux host | ||
# logger --server 172.16.0.37 --port 1515 --tcp --rfc3164 --tag NAT-TCP "This is a test message FROM nat" | # logger --server 172.16.0.37 --port 1515 --tcp --rfc3164 --tag NAT-TCP "This is a test message FROM nat" | ||
Рядок 69: | Рядок 75: | ||
- | systemctl restart syslog-ng | ||
==== A10 Thunder Configuration ==== | ==== A10 Thunder Configuration ==== | ||
Рядок 97: | Рядок 102: | ||
</ | </ | ||
+ | ==== Скрипт міграції логів ==== | ||
+ | |||
+ | nano / | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Перевірка, | ||
+ | if mountpoint -q / | ||
+ | echo " | ||
+ | find / | ||
+ | find / | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | chmod +x / | ||
+ | crontab -e | ||
+ | |||
+ | <code bash> | ||
+ | */5 * * * * / | ||
+ | </ | ||
+ | |||
+ | ===== DNS query logging ===== | ||
+ | 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> | ||
+ | cat <<EOT > / | ||
+ | source source_net_udp_514 { | ||
+ | udp(ip(0.0.0.0) port(514) flags(no-parse)); | ||
+ | }; | ||
+ | EOT | ||
+ | cat <<EOT > / | ||
+ | source source_net_tcp_514 { | ||
+ | tcp(ip(0.0.0.0) port(514) flags(no-parse)); | ||
+ | }; | ||
+ | EOT | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | |||
+ | Налаштування продуктивності syslog-ng | ||
+ | |||
+ | * flush_lines - кількість рядків перед записом | ||
+ | * time_reopen - час перед повторним відкриттям | ||
+ | * log_fifo_size - розмір черги | ||
+ | * threaded - багатопотоковий режим | ||
+ | |||
+ | <code bash> | ||
+ | cat << EOF > / | ||
+ | options { | ||
+ | flush_lines(1000); | ||
+ | time_reopen(10); | ||
+ | log_fifo_size(10000); | ||
+ | stats_freq(0); | ||
+ | threaded(yes); | ||
+ | use_dns(no); | ||
+ | use_fqdn(no); | ||
+ | chain_hostnames(off); | ||
+ | keep_hostname(yes); | ||
+ | }; | ||
+ | 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 -Fev | ||
+ | або | ||
+ | syslog-ng -R / | ||
+ | |||
+ | З іншої консолі посилаємо тестове повідомлення | ||
+ | logger -n 127.0.0.1 -P 514 -d " | ||
+ | |||
+ | Перезапуск служб | ||
+ | |||
+ | 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 | ||