This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Adaptations
Configuration rsyslog
La configuration rsyslog n’est pas templatisée et composée des fichiers standards de la distribution : /etc/rsyslog.conf est /etc/rsyslog.d/50-default.conf
Ajouter un fichier dans /etc/rsyslog.d : 01-forward_samba.conf (addc-samba_logs_forward.conf renommé par les mécanismes creole)
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/certs/ca_rsyslog.crt
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/ssl/certs/rsyslog_addc.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/ssl/private/rsyslog_addc.key
$WorkDirectory /var/log/rsyslog/queues
$ActionQueueType LinkedList
$ActionQueueFileName samba
$ActionQueueSaveOnShutdown on
%if %%samba_log_connexion_authentification_proxy == 'oui'
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer %%samba_log_connexion_proxy_name
%else
$ActionSendStreamDriverAuthMode anon
%end if
$ActionSendStreamDriverMode 1
:programname, isequal, "samba" @@%%samba_log_connexion_proxy_ip:%%samba_log_connexion_proxy_port
Ce fichier peut-être distribué sous la forme d’un template pour pouvoir utiliser la variable d’un dictionnaire pour l’adresse de destination. Les variables utilisées pour l’agrégation de log ne sont pas utilisables : accessibles que si on active globalement l’envoi (par exemple) ce qu’on ne veut pas (Palo Alto n’est pas prévu pour gérer l’afflux de logs).
Le mode d’authentification repose sur la mise à disposition d’un certificat : il faut des machines avec des noms de domaine et la CA. La difficulté est l’utilisation de plusieurs CA (celle de l’émetteur et celle du receveur). L’exemple simple de la documentation prévoit une seule CA centrale pour les deux. Quoi qu’il en soit, la configuration de l’authentification est comme suit :
$ActionSendStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer machine.example.net
Dictionnaire de déclaration
On peut donc installer un nouveau dictionnaire avec activation de l’envoi (débrayable au cas où) et les variables nécessaires pour identifier le serveur recevant les logs : 60_forward_samba_logs.xml
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<file filelist='forward_samba_logs' name='/var/lib/lxc/addc/rootfs/etc/rsyslog.d/01-forward_samba.conf' source='addc-samba_logs_forward.conf' mkdir='True' rm='True'/>
</files>
<variables>
<family name='Samba'>
<variable name='activer_envoi_log_connexion' type='oui/non' description='Activer l’envoi des logs de connexion au proxy'>
<value>oui</value>
</variable>
<variable name="samba_log_connexion_proxy_ip" type='ip' description='Adresse IP du proxy traitant les logs' mandatory="True"/>
<variable name="samba_log_connexion_proxy_port" type='number' description='Port du proxy traitant les logs'>
<value>10514</value>
</variable>
<variable name="samba_log_connexion_authentification_proxy" type="oui/non" description="Authentifier le récepteur des logs">
<value>non</value>
</variable>
<variable name="samba_log_connexion_ca_chemin" type="filename" description="Chemin du certificat racine du proxy" mandatory="True"/>
<variable name="samba_log_connexion_proxy_nom" type="domain" description="Nom de domaine du proxy" mandatory="True"/>
</family>
</variables>
<constraints>
<condition name='disabled_if_in' source='activer_envoi_log_connexion'>
<param>non</param>
<target type='filelist'>forward_samba_logs</target>
<target type='variable'>samba_log_connexion_proxy_ip</target>
<target type='variable'>samba_log_connexion_proxy_port</target>
<target type='variable'>samba_log_connexion_authentification_proxy</target>
</condition>
<condition name='disabled_if_in' source='samba_log_connexion_authentification_proxy'>
<param>non</param>
<target type='variable'>samba_log_connexion_ca_chemin</target>
<target type='variable'>samba_log_connexion_proxy_nom</target>
</condition>
</constraints>
<help>
<variable name='activer_envoi_log_connexion'>Les logs de connexions sont utiles au proxy type Palo Alto pour en dériver les autorisations de flux réseau (relation IP/utilisateur pour déterminer les permissions).</variable>
<variable name="samba_log_connexion_authentification_proxy">L’authentification du récepeteur des logs nécessite la récupération du certificat racine de celui-ci pour pouvoir valider son certificat x509</variable>
<variable name="samba_log_connexion_ca_chemin">Le certificat racine ayant servi à signer le certificat présenté par le proxy.</variable>
<variable name="samba_log_connexion_proxy_nom">Nom FQDN apparaissant dans le certificat x509 présenté par le proxy.</variable>
</help>
</creole>
Script de mise en place dans le conteneur
Le fonctionnement nécessite la copie du certificat racine, le certificat et la clé du serveur et la création du répertoire /var/log/rsyslog/queues avec les bons droits. Il est également nécessaire d’installer le module gnutls pour rsyslog dans le conteneur : rsyslog-gnutls. Le certificat est copié avec la fonction InstallSSLFiles depuis l’hôte dans un script posttemplate ajouté pour l’occasion : 00-addc-forward_samba_logs
#!/bin/bash
ADDC_PATH="/var/lib/lxc/addc/rootfs"
. /usr/lib/eole/utils.sh
InstallSSLFiles rsyslog_addc syslog syslog "$ADDC_PATH/etc/rsyslog.d/ssl/"
if [ $(CreoleGet samba_log_connexion_authentification_proxy non) == 'oui' ]
then
ca_path=$(CreoleGet samba_log_connexion_ca_chemin)
if [ -f $ca_path ]
then
cat /etc/ssl/certs/ca_local.crt $ca_path > "$ADDC_PATH/etc/ssl/certs/ca_rsyslog.crt"
else
EchoRouge "Le certificat racine pour le pair rsyslog n’a pas été trouvé"
EchoRouge "Utilisation du mode anonyme"
cp /etc/ssl/certs/ca_local.crt "$ADDC_PATH/etc/ssl/certs/ca_rsyslog.crt"
fi
else
cp /etc/ssl/certs/ca_local.crt "ADDC_PATH/etc/ssl/certs/ca_rsyslog.crt"
fi
if [ ! -e "$ADDC_PATH/var/log/rsyslog/queues" ]
then
mkdir -p "$ADDC_PATH/var/log/rsyslog/queues"
lxc-attach -n addc chown syslog:adm /var/log/rsyslog/queues
fi
lxc-attach -n addc apt install rsyslog-gnutls
lxc-attach -n addc systemctl restart rsyslog
exit 0
Configuration samba
La configuration samba du conteneur addc est déjà un template creole. Il est donc possible de distribuer la modification sous forme de patch : smb-addc.conf.patch
--- distrib/smb-addc.conf 2025-02-18 09:29:25.000000000 +0100
+++ modif/smb-addc.conf 2025-06-16 10:31:57.625340810 +0200
@@ -21,6 +21,8 @@
usershare max shares = 0
restrict anonymous = 2
interfaces = %%ad_public_address
+ syslog = 4
+ log level = 0 auth_audit:4
[netlogon]
comment = Network Logon Service