Lisez ce qui suit pour découvrir comment configurer l'interconnexion Syslog sur l'application LockSelf.
Cette option ne concerne que les configurations en Cloud Privé et On Premises.
Seul le compte Administrateur peut effectuer cette action.
_______________________________________________________________________________________
Pré-requis pour l'interconnexion Syslog
Afin de pouvoir réaliser l'interconnexion Syslog, vous devrez préparer les prérequis suivants :
- L'IP du serveur RSyslog
- Le port du serveur RSyslog
- Les certificats afin d'activer la TLS entre LockSelf et votre serveur RSyslog
- Le certificat au format CRT
- La clé privée relative au certificat
- La chaine de certification ( certificats intermédiaire + CA Root )
Le mode d'authentification se fera via certificat et fingerprint. Il faudra également nous communiquer le fingerprint du serveur.
Configurer le serveur RSyslog
Package relp pour Rsyslog
L'installation du package se fait comme suit en fonction de votre distribution et de votre gestionnaire de package:
# CentOS & RockyLinux : https://centos.pkgs.org/7/centos-x86_64/rsyslog-relp-8.24.0-55.el7.x86_64.rpm.html
c[_] > sudo yum install rsyslog-relp
# Ubuntu : https://packages.ubuntu.com/bionic/admin/rsyslog-relp
c[_] > sudo apt-get install rsyslog-relp
# Debian : https://packages.debian.org/stretch/rsyslog-relp
c[_] > sudo apt install rsyslog-relp
# Alpine : https://pkgs.alpinelinux.org/package/edge/main/x86/rsyslog-relp
c[_] > sudo apk add rsyslog-relp
Fichier de configuration du serveur:
La configuration qui suit est à adapter en fonction de l'organisation de votre configuration du serveur RSyslog. Nous conseillons toutefois d'ajouter cette configuration dans un nouveau fichier du dossier:
/etc/rsyslog.d/
en le nommant par exemple 1-lockself.conf
.
# Load the RELP input module
module(load="imrelp" ruleset="<RULESET_NAME>")
# RELP input module configuration
input(type="imrelp" port="<PORT>"
tls="on"
tls.caCert="<INTERMEDIATE_AND_CA_CHAIN_PATH>"
tls.myCert="<CERTIFICATE_PATH>"
tls.myPrivKey="<PRIVATE_KEY_PATH>"
tls.authMode="<AUTH_MODE>"
tls.permittedpeer=["<PEER_IDENTIFICATOR_1>", "<PEER_IDENTIFICATOR_2>", ...]
)
# Ruleset exemple (output logs get from the RELP input module to '/var/log/relp_log' file)
ruleset (name="<RULESET_NAME>") { action(type="omfile" file="/var/log/relp_log") }
- <RULESET_NAME> : Le nom de la 'ruleset' qui interprétera ce qui est reçu du module d'input RELP. Vous avez la possibilité d'exploiter autrement ce retour.
- <PORT> : Le port sur lequel écoutera le module d'input RELP.
- <INTERMEDIATE_AND_CA_CHAIN_PATH> : Le chemin vers le fichier contenant les certificats intermédiaires et le CA root.
- <CERTIFICATE_PATH> : Le chemin vers le fichier contenant le certificat.
- <PRIVATE_KEY_PATH> : Le chemin vers le fichier contenant la clé privée.
- <AUTH_MODE> : Le mode d'authentification, peut être
fingerprint
ouname
(documentation RSyslog) - <PEER_IDENTIFICATOR> : La valeur du champs du certificat qui sera utilisé pour autorisé les connexions si elle est valide, en fonction de votre
<AUTH_MODE>
:tls.authMode="fingerprint"
: Le fingerprint SHA1 du certificat, sous la forme:"SHA1:<FINGERPRINT>"
.
Vous pouvez l'obtenir de la manière suivante avec Openssl:
c[_] >
openssl x509 -noout -fingerprint -sha1 -inform pem -in <certificate-file.crt>
tls.authMode="name"
: Le DNS du serveur RSyslog, sous la forme:"mon.dns.com"
ou"*.dns.com"
. Le DNS doit faire parti de DNS sécurisé par le certificats en tant que DNS principal ou dans les AltNames.
Vérifier que la syntaxe de la configuration est bonne
Pour vous assurer que la configuration RSyslog est bonne vous pouvez utiliser la commande suivante:
c[_] > rsyslogd -N1
# OR
c[_] > rsyslogd -c <path/to/configuration/file>
Appliquer la nouvelle configuration
Pour appliquer la nouvelle configuration vous pouvez soit relancer le service:
# CentOS & RockyLinux :
c[_] > sudo systemctl restart rsyslog.service
# Ubuntu : https://packages.ubuntu.com/bionic/admin/rsyslog-relp
c[_] > sudo systemctl restart rsyslog.service
# Debian : https://packages.debian.org/stretch/rsyslog-relp
c[_] > sudo systemctl restart rsyslog.service
# Alpine : https://pkgs.alpinelinux.org/package/edge/main/x86/rsyslog-relp
c[_] > sudo rc-service rsyslog restart
# OR
c[_] > sudo /etc/init.d/rsyslog restart
Troubleshooting
Dans le cas où la configuration ne semble pas être active, nous vous invitons à regarder les logs du service RSylog:
c[_] > journalctl -u rsyslog.service
Ou de lancer manuellement le serveur avec du debug pour avoir l'ensemble des logs:
c[_] > export RSYSLOG_DEBUG=debug; rsyslogd -d
# OR
c[_] export RSYSLOG_DEBUG=debug; rsyslogd -d | grep <PORT>
Vérifier également les ports utiliser avec nstat
et les règles de votre firewall avec ufw
par exemple.
Organisation des logs
Par date, jour, heure ou autre
À la réception des logs sur le serveur RSyslog, vous voudrez peut-être organiser les logs par mois, jours, heures ou autres. Avec RSyslog vous avez la possibilité de rendre le nom du fichier de log dynamique grâce à des templates.
# Templatestemplate (name="<TEMPLATE_NAME>" type="string" string="<TEMPLATED_DESTINATION_FILE_NAME>")
# Load the RELP input module
module(load="imrelp" ruleset="<RULESET_NAME>")
# RELP input module configuration
input(type="imrelp" port="<PORT>"
tls="on"
tls.caCert="<INTERMEDIATE_AND_CA_CHAIN_PATH>"
tls.myCert="<CERTIFICATE_PATH>"
tls.myPrivKey="<PRIVATE_KEY_PATH>"
tls.authMode="<AUTH_MODE>"
tls.permittedpeer=["<PEER_IDENTIFICATOR_1>", "<PEER_IDENTIFICATOR_2>", ...]
)
# Ruleset exemple (output logs get from the RELP input module to '<TEMPLATED_DESTINATION_FILE_NAME>
' file)
ruleset (name="<RULESET_NAME>") { action(type="omfile" dynaFile="<TEMPLATE_NAME>
") }
- <TEMPLATE_NAME> : nom de la template, il sera appelé par la suite par notre module d'output.
- <TEMPLATED_DESTINATION_FILE_NAME> : une string construit à partir de caractères et de timereported. Vous pouvez retrouver l'ensemble des variables extractable de timereported ici (de
date-unixtimestamp
àdate-tzoffsdirection
, ici timestamp est un alias de timereported). Par exemple <TEMPLATED_DESTINATION_FILE_NAME> peut être :/var/log/lockself/%timereported:::date-year%-
%timereported:::date-month%-%timereported:::date-day%.log
qui génèrera par exemple:
/var/log/lockself/2023-04-06.log
Configurer le client RSyslog (On-Premises seulement)
Fichier de log LockSelf
Rajouter un point de montage dans le conteneur lockself-api-3
Peu importe la méthode de lancement choisie (docker run, docker compose, docker swarm), vous devrez rajouter le point de montage suivant :
- <LOG_PATH_ON_HOST>:/usr/local/var/log/lockself/application.log
Le fichier "<LOG_PATH_ON_HOST>" peut être placé à n'importe quel endroit sur le host. Vous devrez donc modifier "<LOG_PATH_ON_HOST>" par le chemin d'accès choisit sur le host.
Activer l'interconnexion
Dans le fichier "env", vous devrez rajouter le paramètre :
logInFile=1
Une fois ces deux étapes faites, relancer le conteneur lockself-api-3
Installer le package RELP pour Rsyslog
L'installation du package se fait comme suit en fonction de votre distribution et de votre gestionnaire de package:
# CentOS & RockyLinux : https://centos.pkgs.org/7/centos-x86_64/rsyslog-relp-8.24.0-55.el7.x86_64.rpm.html
c[_] > sudo yum install rsyslog-relp
# Ubuntu : https://packages.ubuntu.com/bionic/admin/rsyslog-relp
c[_] > sudo apt-get install rsyslog-relp
# Debian : https://packages.debian.org/stretch/rsyslog-relp
c[_] > sudo apt install rsyslog-relp
# Alpine : https://pkgs.alpinelinux.org/package/edge/main/x86/rsyslog-relp
c[_] > sudo apk add rsyslog-relp
Fichier de configuration du client RSyslog
La configuration qui suit est à adapter en fonction de l'organisation de votre configuration du client RSyslog. Nous conseillons toutefois d'ajouter cette configuration dans un nouveau fichier du dossier:
/etc/rsyslog.d/
en le nommant par exemple 1-lockself.conf
.
# Load the file input module
module(load="imfile")
# Load the RELP output module
module(load="omrelp")
# Ruleset to output logs to RSyslog server
ruleset(name="lockselfSendLogsToServer") {
action(type="omrelp" target="<TARGET_IP>" port="<TARGET_PORT>"
tls="on"
tls.caCert="<INTERMEDIATE_AND_CA_CHAIN_PATH>"
tls.myCert="<CERTIFICATE_PATH>"
tls.myPrivKey="<PRIVATE_KEY_PATH>"
tls.authMode="<AUTH_MODE>"
tls.permittedpeer=["<PEER_IDENTIFICATOR_1>", "<PEER_IDENTIFICATOR_2>", ...] )
}
input(type="imfile"
File="<LOG_PATH_ON_HOST>"
Tag="lockself/application.log"
Ruleset="lockselfSendLogsToServer")
- <TARGET_IP> : l'IP du serveur RSyslog.
- <TARGET_PORT> : le port du serveur RSyslog
- <INTERMEDIATE_AND_CA_CHAIN_PATH> : le chemin vers le fichier contenant les certificats intermédiaire et le CA root.
- <CERTIFICATE_PATH> : le chemin vers le fichier contenant le certificat.
- <PRIVATE_KEY_PATH> : le chemin vers le fichier contenant la clé privée.
- <AUTH_MODE> : Le mode d'authentification, peut être
fingerprint
ouname
(documentation rsyslog) - <PEER_IDENTIFICATOR> : La valeur du champs du certificat qui sera utilisé pour autorisé les connexions si elle est valide, en fonction de votre
<AUTH_MODE>
:tls.authMode="fingerprint"
: Le fingerprint SHA1 du certificat, sous la forme:"SHA1:<FINGERPRINT>"
.
Vous pouvez l'obtenir de la manière suivante avec Openssl:
c[_] >
openssl x509 -noout -fingerprint -sha1 -inform pem -in <certificate-file.crt>
tls.authMode="name"
: Le DNS du serveur rsyslog, sous la forme:"mon.dns.com"
ou"*.dns.com"
. Le DNS doit faire parti de DNS sécurisé par le certificats en tant que DNS principal ou dans les AltNames.
Vérifier que la syntaxe de la configuration est bonne
Pour vous assurer que la configuration RSyslog est bonne, vous pouvez utiliser la commande suivante:
c[_] > rsyslogd -N1
# OR
c[_] > rsyslogd -c <path/to/configuration/file>
Appliquer la nouvelle configuration
Pour appliquer la nouvelle configuration vous pouvez soit relancer le service:
# CentOS & RockyLinux :
c[_] > sudo systemctl restart rsyslog.service
# Ubuntu : https://packages.ubuntu.com/bionic/admin/rsyslog-relp
c[_] > sudo systemctl restart rsyslog.service
# Debian : https://packages.debian.org/stretch/rsyslog-relp
c[_] > sudo systemctl restart rsyslog.service
# Alpine : https://pkgs.alpinelinux.org/package/edge/main/x86/rsyslog-relp
c[_] > sudo rc-service rsyslog restart
# OR
c[_] > sudo /etc/init.d/rsyslog restart
Troubleshooting
Dans le cas où la configuration ne semble pas être active, nous vous invitons à regarder les logs du service RSylog:
c[_] > journalctl -u rsyslog.service
Ou de lancer manuellement le serveur avec du debug pour avoir l'ensemble des logs:
c[_] > export RSYSLOG_DEBUG=debug; rsyslogd -d
Mise à jour