Détail de la mise en place

2025-06-17 09:40:35 +02:00
parent 5992096272
commit 5a3218c75b
3 changed files with 166 additions and 0 deletions

143
adaptations.md Normal file

@ -0,0 +1,143 @@
# Adaptations
## Configuration rsyslog
La configuration rsyslog nest 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)
```text-plain
$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 dun template pour pouvoir utiliser la variable dun dictionnaire pour ladresse de destination. Les variables utilisées pour lagrégation de log ne sont pas utilisables : accessibles que si on active globalement lenvoi (par exemple) ce quon ne veut pas (Palo Alto nest pas prévu pour gérer lafflux de logs).
Le mode dauthentification repose sur la mise à disposition dun certificat : il faut des machines avec des noms de domaine et la CA. La difficulté est lutilisation de plusieurs CA (celle de lémetteur et celle du receveur). Lexemple simple de la documentation prévoit une seule CA centrale pour les deux. Quoi quil en soit, la configuration de lauthentification est comme suit :
```text-plain
$ActionSendStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer machine.example.net
```
## Dictionnaire de déclaration
On peut donc installer un nouveau dictionnaire avec activation de lenvoi (débrayable au cas où) et les variables nécessaires pour identifier le serveur recevant les logs : 60\_forward\_samba\_logs.xml
```text-plain
<?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 lenvoi 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">Lauthentification 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 dinstaller le module gnutls pour rsyslog dans le conteneur : rsyslog-gnutls. Le certificat est copié avec la fonction InstallSSLFiles depuis lhôte dans un script posttemplate ajouté pour loccasion : 00-addc-forward\_samba\_logs
```text-plain
#!/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 na 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
```text-plain
 --- 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
```

16
approche_manuelle.md Normal file

@ -0,0 +1,16 @@
# Mise en place manuellement
À défaut dutiliser Zéphir pour mettre en œuvre les adaptations, celles-ci ont été construites de manière à simplifier le déploiement, même manuel :
- limitation de lintervention directe en conteneur
- utilisation au maximum des mécanismes creole (patch, dictionnaire, templates).
Quatre fichiers composent ces adaptations. Le tableau suivant indique où placer ces fichiers sur le serveur.
| nom du fichier | emplacement | rôle |
|- |- |- |
|smb-addc.conf.patch |/usr/share/eole/creole/patch/ | modification du template smb-addc.conf appliquée à chaque reconfigure |
|00-addc-forward_samba_logs |/usr/share/eole/posttemplate/ | actions durant le reconfigure pour configurer rsyslog dans le conteneur addc |
|addc-samba_logs_forward.conf|/usr/share/eole/creole/distrib/ | template de configuration de lexport des logs pour rsyslog |
|60_forward_samba_logs.xml |/usr/share/eole/creole/dicos/local/|dictionnaire déclarant le template précédent et prenant en charge les variables associées|
La plupart des ces fichiers sont liés les uns aux autres et doivent être mis en place en même temps (plus spécifiquement, leur mise en place ne doit pas être séparée par des reconfigures).

7
approche_variante.md Normal file

@ -0,0 +1,7 @@
# Mise en place via les variantes Zéphir
Pour la mise en œuvre, on ne doit pas compter sur lempaquetage (difficile à installer dans le conteneur).
Il vaut mieux privilégier les fichiers gérés par Zéphir. Ces fichiers peuvent être associés à une variante pour ensuite affecter tous les serveurs associés à cette variante.
La configuration de la variante passe par la page des modules.