From 2095ae8f1921aae26ed8558299e6bb04c939b7a3 Mon Sep 17 00:00:00 2001 From: shirenn <shirenn@crans.org> Date: Mon, 24 May 2021 17:02:34 +0200 Subject: [PATCH] [rsyslog_server] pep-cransified + gulp --- host_vars/gulp.cachan-adm.crans.org.yml | 22 ++++++++ host_vars/tealc.adm.crans.org.yml | 22 ++++++++ hosts | 4 ++ plays/logs.yml | 15 ------ plays/rsyslog-server.yml | 10 ++++ roles/rsyslog-server/handlers/main.yml | 5 ++ roles/rsyslog-server/tasks/main.yml | 29 +++++----- .../templates/logrotate.d/crans.j2 | 53 ------------------- .../templates/logrotate.d/logrotate.j2 | 16 ++++++ .../templates/rsyslog.d/30-cablage.conf.j2 | 24 --------- .../templates/rsyslog.d/30-rules.conf.j2 | 12 +++++ .../templates/rsyslog.d/50-module.conf.j2 | 8 +++ .../rsyslog.d/52-listen_relp.conf.j2 | 4 -- .../rsyslog.d/53-listen_switches.conf.j2 | 8 --- 14 files changed, 111 insertions(+), 121 deletions(-) delete mode 100755 plays/logs.yml create mode 100755 plays/rsyslog-server.yml create mode 100644 roles/rsyslog-server/handlers/main.yml delete mode 100644 roles/rsyslog-server/templates/logrotate.d/crans.j2 create mode 100644 roles/rsyslog-server/templates/logrotate.d/logrotate.j2 delete mode 100644 roles/rsyslog-server/templates/rsyslog.d/30-cablage.conf.j2 create mode 100644 roles/rsyslog-server/templates/rsyslog.d/30-rules.conf.j2 create mode 100644 roles/rsyslog-server/templates/rsyslog.d/50-module.conf.j2 delete mode 100644 roles/rsyslog-server/templates/rsyslog.d/52-listen_relp.conf.j2 delete mode 100644 roles/rsyslog-server/templates/rsyslog.d/53-listen_switches.conf.j2 diff --git a/host_vars/gulp.cachan-adm.crans.org.yml b/host_vars/gulp.cachan-adm.crans.org.yml index a3b8517c..7b436efd 100644 --- a/host_vars/gulp.cachan-adm.crans.org.yml +++ b/host_vars/gulp.cachan-adm.crans.org.yml @@ -28,3 +28,25 @@ loc_borg: glob_prometheus_node_exporter: listen_addr: "{{ query('ldap', 'ip', ansible_hostname, 'cachan-adm') | ipv4 | first }}" + +loc_rsyslog_server: + name: gulp + root: /var/log + rules: + - name: cablage + rotate: 365 + ips: + - 172.16.33 + - 172.16.34 + programs: + - firewall + - radiusd + - dhcpd + modules: + - name: imudp + index: 53 + - name: imrelp + index: 52 + vars: + - name: InputRELPServerRun + value: 20514 diff --git a/host_vars/tealc.adm.crans.org.yml b/host_vars/tealc.adm.crans.org.yml index aa6545f9..5a0fdfad 100644 --- a/host_vars/tealc.adm.crans.org.yml +++ b/host_vars/tealc.adm.crans.org.yml @@ -34,3 +34,25 @@ loc_borg: - /etc - /var - /pool/home + +loc_rsyslog_server: + name: tealc + root: /pool/logs + rules: + - name: cablage + rotate: 365 + ips: + - 172.16.33 + - 172.16.34 + programs: + - firewall + - radiusd + - dhcpd + modules: + - name: imudp + index: 53 + - name: imrelp + index: 52 + vars: + - name: InputRELPServerRun + value: 20514 diff --git a/hosts b/hosts index f0d4d472..08780870 100644 --- a/hosts +++ b/hosts @@ -175,6 +175,10 @@ roundcube.adm.crans.org routeur-sam.adm.crans.org routeur-gulp.cachan-adm.crans.org +[rsyslog_server] +gulp.cachan-adm.crans.org +tealc.adm.crans.org + [slapd] tealc.adm.crans.org sam.adm.crans.org diff --git a/plays/logs.yml b/plays/logs.yml deleted file mode 100755 index 8891c32b..00000000 --- a/plays/logs.yml +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env ansible-playbook ---- -# tealc is the log server. -# Servers need to send their logs to tealc. - -# Send logs to tealc -- hosts: server,!tealc.adm.crans.org - vars: - rsyslog: - server: 172.16.10.1 - roles: ["rsyslog-client"] - -- hosts: tealc.adm.crans.org - roles: - - rsyslog-server diff --git a/plays/rsyslog-server.yml b/plays/rsyslog-server.yml new file mode 100755 index 00000000..f692b9ee --- /dev/null +++ b/plays/rsyslog-server.yml @@ -0,0 +1,10 @@ +#!/usr/bin/env ansible-playbook +--- +# tealc is the log server. +# Servers need to send their logs to tealc. + +- hosts: rsyslog_server + vars: + rsyslog_server: "{{ glob_rsyslog_server | default({}) | combine(loc_rsyslog_server | default({})) }}" + roles: + - rsyslog-server diff --git a/roles/rsyslog-server/handlers/main.yml b/roles/rsyslog-server/handlers/main.yml new file mode 100644 index 00000000..3251903d --- /dev/null +++ b/roles/rsyslog-server/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart rsyslog + service: + name: rsyslog + state: restarted diff --git a/roles/rsyslog-server/tasks/main.yml b/roles/rsyslog-server/tasks/main.yml index 8ea84a19..5717dfb6 100644 --- a/roles/rsyslog-server/tasks/main.yml +++ b/roles/rsyslog-server/tasks/main.yml @@ -9,34 +9,29 @@ retries: 3 until: apt_result is succeeded -- name: Deploy logrotate cablage config +- name: Deploy logrotate config template: - src: logrotate.d/crans.j2 - dest: /etc/logrotate.d/crans + src: logrotate.d/logrotate.j2 + dest: "/etc/logrotate.d/{{ rsyslog_server.name }}" mode: 0644 owner: root group: root -- name: Deploy rsyslog cablage config +- name: Deploy rsyslog config template: - src: rsyslog.d/30-cablage.conf.j2 - dest: /etc/rsyslog.d/30-cablage.conf + src: rsyslog.d/30-rules.conf.j2 + dest: /etc/rsyslog.d/30-rules.conf mode: 0640 owner: root group: root + notify: restart rsyslog -- name: Deploy rsyslog listen relp config +- name: Deploy rsyslog modules config template: - src: rsyslog.d/52-listen_relp.conf.j2 - dest: /etc/rsyslog.d/52-listen_relp.conf - mode: 0640 - owner: root - group: root - -- name: Deploy rsyslog listen switches config - template: - src: rsyslog.d/53-listen_switches.conf.j2 - dest: /etc/rsyslog.d/53-listen_switches.conf + src: rsyslog.d/50-module.conf.j2 + dest: /etc/rsyslog.d/{{ item.index }}-module_{{ item.name }}.conf mode: 0640 owner: root group: root + loop: "{{ rsyslog_server.modules }}" + notify: restart rsyslog diff --git a/roles/rsyslog-server/templates/logrotate.d/crans.j2 b/roles/rsyslog-server/templates/logrotate.d/crans.j2 deleted file mode 100644 index b0b5bd75..00000000 --- a/roles/rsyslog-server/templates/logrotate.d/crans.j2 +++ /dev/null @@ -1,53 +0,0 @@ -{{ ansible_header | comment }} - -# Logs Crans - -# Logs pour le cablage -/pool/logs/tealc/cablage/global.log { - daily - rotate 365 - compress - notifempty - missingok - create 640 root adm - postrotate - invoke-rc.d rsyslog rotate > /dev/null - endscript -} - - -# Logs centralisés - -# FreeRADIUS -/pool/logs/tealc/freeradius/*.log { - weekly - rotate 365 - compress - delaycompress - notifempty - missingok - postrotate - invoke-rc.d rsyslog rotate > /dev/null - endscript -} - -# Logs des bornes et des switches -/pool/logs/tealc/wifi/global.log { - daily - rotate 365 - compress - notifempty - postrotate - invoke-rc.d rsyslog rotate > /dev/null - endscript -} - -/pool/logs/tealc/filaire/global.log { - daily - rotate 365 - compress - notifempty - postrotate - invoke-rc.d rsyslog rotate > /dev/null - endscript -} diff --git a/roles/rsyslog-server/templates/logrotate.d/logrotate.j2 b/roles/rsyslog-server/templates/logrotate.d/logrotate.j2 new file mode 100644 index 00000000..c4b7fc9a --- /dev/null +++ b/roles/rsyslog-server/templates/logrotate.d/logrotate.j2 @@ -0,0 +1,16 @@ +{{ ansible_header | comment }} + +# Logs pour le cablage +{% for rule in rsyslog_server.rules %} +{{ rsyslog_server.root }}/{{ rsyslog_server.name }}/{{ rule.name }}/global.log { + daily + rotate {{ rule.rotate }} + compress + notifempty + missingok + create 640 root adm + postrotate + invoke-rc.d rsyslog rotate > /dev/null + endscript +} +{% endfor %} diff --git a/roles/rsyslog-server/templates/rsyslog.d/30-cablage.conf.j2 b/roles/rsyslog-server/templates/rsyslog.d/30-cablage.conf.j2 deleted file mode 100644 index 0a87c1d4..00000000 --- a/roles/rsyslog-server/templates/rsyslog.d/30-cablage.conf.j2 +++ /dev/null @@ -1,24 +0,0 @@ -{{ ansible_header | comment }} - -$template CablageFileFormat,"%TIMESTAMP:::date-rfc3339% %fromhost% %syslogtag%%msg%\n" - -# Logs des switches - -if $fromhost-ip startswith '172.16.33.' then /pool/logs/tealc/cablage/global.log; CablageFileFormat - -# Logs des bornes - -## Dropbear est atteint de logorhée, une partie de ses logs ne sont pas vitaux -if $programname contains "dropbear" and $msg contains "Exit before auth: Exited normally" then ~ -if $programname contains "dropbear" and re_match($msg, "Child connection from (127.0.0.1|::1|10.231.148.102)") then ~ -if $programname contains "dropbear" and re_match($msg, "Pubkey auth succeeded .* from 10.231.148.102") then ~ -if $programname contains "dropbear" and re_match($msg, "Exit \\(.*\\): Disconnect received") then ~ - -if $fromhost-ip startswith '172.16.34.' then /pool/logs/tealc/cablage/global.log; CablageFileFormat - -# Logs RADIUS -if $programname contains 'freeradius' then /pool/logs/tealc/cablage/global.log -if $programname contains 'radiusd' then /pool/logs/tealc/cablage/global.log - -# Logs DHCP -if $programname contains 'dhcpd' then /pool/logs/tealc/cablage/global.log diff --git a/roles/rsyslog-server/templates/rsyslog.d/30-rules.conf.j2 b/roles/rsyslog-server/templates/rsyslog.d/30-rules.conf.j2 new file mode 100644 index 00000000..241c3bd1 --- /dev/null +++ b/roles/rsyslog-server/templates/rsyslog.d/30-rules.conf.j2 @@ -0,0 +1,12 @@ +{{ ansible_header | comment }} +$template CablageFileFormat,"%TIMESTAMP:::date-rfc3339% %fromhost% %syslogtag%%msg%\n" + +{% for rule in rsyslog_server.rules %} +{% set dest = rsyslog_server.root+'/'+rsyslog_server.name+'/'+rule.name+'/global.log' %} +{% for ip in rule.ips %} +if $fromhost-ip startswith '{{ ip }}' then {{ dest }}; CablageFileFormat +{% endfor %} +{% for program in rule.programs %} +if $programname contains '{{ program }}' then {{ dest }} +{% endfor %} +{% endfor %} diff --git a/roles/rsyslog-server/templates/rsyslog.d/50-module.conf.j2 b/roles/rsyslog-server/templates/rsyslog.d/50-module.conf.j2 new file mode 100644 index 00000000..fe40e6ed --- /dev/null +++ b/roles/rsyslog-server/templates/rsyslog.d/50-module.conf.j2 @@ -0,0 +1,8 @@ +{{ ansible_header | comment }} + +$ModLoad {{ item.name }} +{% if item.vars is defined %} +{% for var in item.vars %} +${{ var.name }} {{ var.value }} +{% endfor %} +{% endif %} diff --git a/roles/rsyslog-server/templates/rsyslog.d/52-listen_relp.conf.j2 b/roles/rsyslog-server/templates/rsyslog.d/52-listen_relp.conf.j2 deleted file mode 100644 index 589ae3b9..00000000 --- a/roles/rsyslog-server/templates/rsyslog.d/52-listen_relp.conf.j2 +++ /dev/null @@ -1,4 +0,0 @@ -{{ ansible_header | comment }} - -$ModLoad imrelp -$InputRELPServerRun 20514 diff --git a/roles/rsyslog-server/templates/rsyslog.d/53-listen_switches.conf.j2 b/roles/rsyslog-server/templates/rsyslog.d/53-listen_switches.conf.j2 deleted file mode 100644 index 26bb5344..00000000 --- a/roles/rsyslog-server/templates/rsyslog.d/53-listen_switches.conf.j2 +++ /dev/null @@ -1,8 +0,0 @@ -{{ ansible_header | comment }} - -# Réception en udp: pour les switchs seulement -# et les bornes wifi -$ModLoad imudp -$UDPServerRun 514 - -$AllowedSender UDP, 127.0.0.1, *.adm.crans.org, 172.16.10.0/24, *.infra.crans.org, 172.16.33.0/24, 172.16.34.0/24 -- GitLab