Gestion logs » Historique » Version 11
Daniel Dehennin, 03/04/2012 13:49
règles minimales
1 | 1 | Benjamin Bohard | h1. Gestion des journaux |
---|---|---|---|
2 | 1 | Benjamin Bohard | |
3 | 1 | Benjamin Bohard | Les objectifs fondamentaux de la journalisation sont les suivants : |
4 | 1 | Benjamin Bohard | |
5 | 1 | Benjamin Bohard | * conserver l'information en vue d'établir des diagnostics de panne, |
6 | 1 | Benjamin Bohard | * conserver l'information en vue de statistiques d'utilisation, |
7 | 1 | Benjamin Bohard | * conserver l'information par contrainte légale. |
8 | 1 | Benjamin Bohard | |
9 | 1 | Benjamin Bohard | Les écueils à éviter sont les suivants : |
10 | 1 | Benjamin Bohard | |
11 | 1 | Benjamin Bohard | * saturation de la partition stockant les journaux, |
12 | 1 | Benjamin Bohard | * compromission des informations des journaux par application de droits d'accès inadaptés. |
13 | 1 | Benjamin Bohard | |
14 | 9 | Daniel Dehennin | Ces objectifs et écueils guident la politique de journalisation à mettre en œuvre. Les contraintes les plus fortes sont l'obligation légale de conserver l'information et le risque de saturation du support de stockage. Les journaux, ou partie de journaux, concernés par l'obligation légale doivent être traités prioritairement. Les autres doivent s’accommoder de la contrainte d'espace de stockage. |
15 | 1 | Benjamin Bohard | |
16 | 1 | Benjamin Bohard | h2. Contextes de journalisation |
17 | 1 | Benjamin Bohard | |
18 | 1 | Benjamin Bohard | La gestion des journaux d'une distribution EOLE est guidée par différents contextes d'utilisation. Un contexte d'utilisation est une topologie réseau particulière de machines, virtuelles ou physiques, à laquelle s'applique une politique de journalisation commune. Les rôles possibles dans un réseau sont : |
19 | 1 | Benjamin Bohard | * une machine émettrice : transmission des journaux à une machine réceptrice ; |
20 | 1 | Benjamin Bohard | * une machine réceptrice : conservation des journaux locaux, réception des journaux de machines émettrices. |
21 | 1 | Benjamin Bohard | |
22 | 9 | Daniel Dehennin | Les machines émettrices se déclinent en matériel réseau, machines physiques et conteneurs LXC. Cette distinction introduit une distinction entre les machines réceptrices qui ne gèrent que les conteneurs qu'elles hébergent et celles qui centralisent les journaux de matériels physiques distants. Certains modules de la distribution EOLE se prêtent plus à l'exécution d'un rôle particulier. ZéphirLog, notamment a été créé pour assumer le rôle de machine réceptrice vis-à-vis des autres modules. Cependant, la modularité permet à un autre module de jouer ce rôle. L'utilisation du mode conteneur ou non est plus contraignant sur les rôles par contre. |
23 | 1 | Benjamin Bohard | |
24 | 1 | Benjamin Bohard | h3. Solution EOLE en mode non conteneur |
25 | 1 | Benjamin Bohard | |
26 | 1 | Benjamin Bohard | Une machine en mode non conteneur est le cas le plus simple : |
27 | 1 | Benjamin Bohard | |
28 | 1 | Benjamin Bohard | * un seul environnement d'exécution ; |
29 | 1 | Benjamin Bohard | * la machine peut jouer les rôles de machine émettrice et transmettre ses journaux et de machine réceptrice et recevoir des journaux. |
30 | 1 | Benjamin Bohard | |
31 | 1 | Benjamin Bohard | h3. Solution EOLE en mode conteneur |
32 | 1 | Benjamin Bohard | |
33 | 1 | Benjamin Bohard | Une machine en mode conteneur amène un autre niveau : |
34 | 1 | Benjamin Bohard | |
35 | 1 | Benjamin Bohard | * une hiérarchie d'environnement d'exécution à deux niveaux : |
36 | 1 | Benjamin Bohard | ** un maître ; |
37 | 1 | Benjamin Bohard | ** des conteneurs ; |
38 | 1 | Benjamin Bohard | * les conteneurs jouent le rôle de machines émettrices et transmettent leurs journaux ; |
39 | 1 | Benjamin Bohard | * les maîtres jouent forcément le rôle de machines réceptrices, au moins vis-à-vis des conteneurs, et peuvent jouer le rôle de machines émettrices et transmettre leurs journaux. |
40 | 1 | Benjamin Bohard | |
41 | 1 | Benjamin Bohard | h3. Autre |
42 | 1 | Benjamin Bohard | |
43 | 1 | Benjamin Bohard | Le reste du matériel participant au réseau (équipement réseau, machines clientes hors solutions EOLE, etc.) jouent le rôle de machines émettrices dans la structure envisagée. |
44 | 1 | Benjamin Bohard | |
45 | 1 | Benjamin Bohard | h2. La problématique de la transmission réseau |
46 | 1 | Benjamin Bohard | |
47 | 1 | Benjamin Bohard | Une machine réceptrice peut potentiellement recevoir de plusieurs sources : |
48 | 1 | Benjamin Bohard | * des conteneurs ; |
49 | 1 | Benjamin Bohard | * des machines distantes pouvant utiliser le protocole RELP ; |
50 | 1 | Benjamin Bohard | * des machines distantes pouvant utiliser le protocole TCP ; |
51 | 1 | Benjamin Bohard | * des machines distantes pouvant utiliser le protocole UDP. |
52 | 1 | Benjamin Bohard | |
53 | 2 | Benjamin Bohard | La transmission devant être fiable, le protocole RELP est à privilégier, ainsi que l'usage des queues, essentiellement pour les journaux à valeur légale. Le protocole TCP est encore incontournable pour l'utilisation d'une liaison sécurisée avec GnuTLS. Le protocole UDP est à réserver pour les équipements ne pouvant utiliser le protocole TCP ou RELP. |
54 | 1 | Benjamin Bohard | |
55 | 1 | Benjamin Bohard | Il doit être possible de trier les journaux par zone émettrice. Différentes granularités sont envisageables pour définir les zones émettrices. La granularité la plus grossière distingue la zone interne (les conteneurs) de la zone externe. |
56 | 1 | Benjamin Bohard | |
57 | 1 | Benjamin Bohard | h2. Les services |
58 | 1 | Benjamin Bohard | |
59 | 1 | Benjamin Bohard | Les services prioritaires sont ceux dont les journaux ont une valeur légale et une durée de rétention prévue par la loi. |
60 | 1 | Benjamin Bohard | |
61 | 1 | Benjamin Bohard | h2. La configuration de rsyslog dans EOLE |
62 | 1 | Benjamin Bohard | |
63 | 1 | Benjamin Bohard | Le service rsyslog est démarré par défaut sur tous les modules EOLE, maître et conteneurs. |
64 | 1 | Benjamin Bohard | La configuration minimale est composée d'une partie commune et de fichiers de configuration rattachés aux différents services. |
65 | 1 | Benjamin Bohard | La stratégie d'aggrégation des journaux est décidée à l'instanciation. |
66 | 1 | Benjamin Bohard | |
67 | 1 | Benjamin Bohard | h3. La configuration minimale |
68 | 1 | Benjamin Bohard | |
69 | 11 | Daniel Dehennin | * Sur le maître, sur un module en mode conteneur ou non conteneur : |
70 | 11 | Daniel Dehennin | ** Un dispatcher pour les journaux locaux et conteneurs dans @/var/log/rsyslog/local/<APPLI>/<APPLI>.<SEVERITY>.log@ |
71 | 11 | Daniel Dehennin | ** Un dispatcher pour les journaux des hôtes réseaux dans @/var/log/rsyslog/remote/<HOSTNAME>/<APPLI>/<APPLI>.<SEVERITY>.log@ |
72 | 11 | Daniel Dehennin | * Sur les conteneurs : |
73 | 11 | Daniel Dehennin | ** Des règles avec mise en place de queues pour les journaux sensibles |
74 | 11 | Daniel Dehennin | ** Une règle globale pour le reste |
75 | 1 | Benjamin Bohard | |
76 | 1 | Benjamin Bohard | h3. L'aggrégation |
77 | 1 | Benjamin Bohard | |
78 | 1 | Benjamin Bohard | L'aggrégation des journaux des conteneurs sur le maître est imposée. |
79 | 1 | Benjamin Bohard | |
80 | 1 | Benjamin Bohard | Le choix du mode d'aggrégation porte sur : |
81 | 1 | Benjamin Bohard | * l'activation de l'envoi : spécification de l'adresse de destination, protocole imposé (RELP), port imposé (20515 ?) ; |
82 | 1 | Benjamin Bohard | * l'activation de la réception : |
83 | 1 | Benjamin Bohard | ** réception de clients utilisant RELP : schéma de répartition, liste des adresses des clients, port imposé (20515 ?) ; |
84 | 1 | Benjamin Bohard | ** réception de clients utilisant TCP : schéma de répartition, liste des adresses des clients, port imposé (10514 ?) ; |
85 | 1 | Benjamin Bohard | ** réception de clients utilisant UDP : schéma de répartition, liste des adresses des clients, port imposé (514) ; |
86 | 1 | Benjamin Bohard | * utilisation du chiffrement : emplacement du certificat. |
87 | 1 | Benjamin Bohard | |
88 | 1 | Benjamin Bohard | h3. L'organisation de la configuration |
89 | 1 | Benjamin Bohard | |
90 | 1 | Benjamin Bohard | La lecture séquentielle de la configuration de rsyslog impose une organisation particulière : |
91 | 1 | Benjamin Bohard | * les modules (entrée, sortie) doivent être chargés avant d'être utilisés ; |
92 | 1 | Benjamin Bohard | * les ensembles de règles doivent être spécifiés avant d'être associés aux entrées ; |
93 | 1 | Benjamin Bohard | * les modèles doivent être spécifiés avant d'être utilisés ; |
94 | 1 | Benjamin Bohard | * les messages ne doivent pas être sortis de la chaîne de traitement prématurément. |
95 | 1 | Benjamin Bohard | |
96 | 10 | Benjamin Bohard | Plages de fichiers : |
97 | 10 | Benjamin Bohard | |
98 | 10 | Benjamin Bohard | 00-09 : fichiers EOLE contenant la configuration générique en début de chaîne de traitement |
99 | 10 | Benjamin Bohard | |
100 | 10 | Benjamin Bohard | 00_aggregation.conf |
101 | 10 | Benjamin Bohard | |
102 | 10 | Benjamin Bohard | 01_templates.conf |
103 | 10 | Benjamin Bohard | |
104 | 10 | Benjamin Bohard | 10-19 : fichiers EOLE de règles non-desctructrices |
105 | 10 | Benjamin Bohard | |
106 | 10 | Benjamin Bohard | 10_erreurs.conf |
107 | 10 | Benjamin Bohard | |
108 | 10 | Benjamin Bohard | 20-49 : fichiers de règles personnalisées non-desctructrices |
109 | 10 | Benjamin Bohard | |
110 | 10 | Benjamin Bohard | 50 : seuil d'utilisation de & ~ pour enlever les messages de la file après traitement |
111 | 10 | Benjamin Bohard | |
112 | 10 | Benjamin Bohard | 50-79 : fichiers de règles personnalisées desctructrices |
113 | 10 | Benjamin Bohard | |
114 | 10 | Benjamin Bohard | 80-98 : fichiers EOLE de règles desctructrices |
115 | 10 | Benjamin Bohard | |
116 | 10 | Benjamin Bohard | 99_general_dispatch.conf |
117 | 10 | Benjamin Bohard | |
118 | 1 | Benjamin Bohard | h4. rsyslog.conf |
119 | 1 | Benjamin Bohard | |
120 | 10 | Benjamin Bohard | <pre> |
121 | 1 | Benjamin Bohard | |
122 | 10 | Benjamin Bohard | </pre> |
123 | 1 | Benjamin Bohard | |
124 | 1 | Benjamin Bohard | h4. rsyslog.d/ |
125 | 1 | Benjamin Bohard | |
126 | 1 | Benjamin Bohard | 00-aggregation.conf |
127 | 10 | Benjamin Bohard | <pre> |
128 | 1 | Benjamin Bohard | $ModLoad omrelp |
129 | 1 | Benjamin Bohard | |
130 | 1 | Benjamin Bohard | $WorkDirectory /var/log/rsyslog/ |
131 | 1 | Benjamin Bohard | $ActionQueueType LinkedList |
132 | 1 | Benjamin Bohard | %if %%is_defined('activate_squid_realtime') and %%activate_squid_realtime == "non" |
133 | 1 | Benjamin Bohard | $ActionQueueDequeueTimeBegin %%squid_heure_debut |
134 | 1 | Benjamin Bohard | $ActionQueueDequeueTimeEnd %%squid_heure_fin |
135 | 1 | Benjamin Bohard | %endif |
136 | 1 | Benjamin Bohard | $ActionQueueFileName relpact |
137 | 1 | Benjamin Bohard | $ActionQueueSaveOnShutdown on |
138 | 1 | Benjamin Bohard | |
139 | 1 | Benjamin Bohard | :programname, isequal, 'squid' :omrelp:%%adresse_ip_br0:20514 |
140 | 1 | Benjamin Bohard | & ~ |
141 | 1 | Benjamin Bohard | |
142 | 1 | Benjamin Bohard | *.* :omrelp:%%adresse_ip_serveur_logs:20514 |
143 | 10 | Benjamin Bohard | </pre> |
144 | 1 | Benjamin Bohard | |
145 | 1 | Benjamin Bohard | 00-conteneur.conf |
146 | 1 | Benjamin Bohard | |
147 | 1 | Benjamin Bohard | <pre><code> |
148 | 1 | Benjamin Bohard | $ModLoad omrelp |
149 | 1 | Benjamin Bohard | |
150 | 1 | Benjamin Bohard | $WorkDirectory /var/log/rsyslog/ |
151 | 1 | Benjamin Bohard | $ActionQueueType LinkedList |
152 | 1 | Benjamin Bohard | %if %%is_defined('activate_squid_realtime') and %%activate_squid_realtime == "non" |
153 | 1 | Benjamin Bohard | $ActionQueueDequeueTimeBegin %%squid_heure_debut |
154 | 1 | Benjamin Bohard | $ActionQueueDequeueTimeEnd %%squid_heure_fin |
155 | 1 | Benjamin Bohard | %endif |
156 | 1 | Benjamin Bohard | $ActionQueueFileName relpact |
157 | 1 | Benjamin Bohard | $ActionQueueSaveOnShutdown on |
158 | 1 | Benjamin Bohard | |
159 | 1 | Benjamin Bohard | :programname, isequal, 'squid' :omrelp:%%adresse_ip_br0:20514 |
160 | 1 | Benjamin Bohard | & ~ |
161 | 1 | Benjamin Bohard | |
162 | 1 | Benjamin Bohard | *.* :omrelp:%%adresse_ip_br0:20514 |
163 | 1 | Benjamin Bohard | & ~ |
164 | 1 | Benjamin Bohard | </code></pre> |
165 | 1 | Benjamin Bohard | |
166 | 1 | Benjamin Bohard | 10-erreurs.conf |
167 | 1 | Benjamin Bohard | |
168 | 1 | Benjamin Bohard | <pre><code> |
169 | 1 | Benjamin Bohard | *.err /var/log/syslog |
170 | 1 | Benjamin Bohard | </code></pre> |
171 | 1 | Benjamin Bohard | |
172 | 1 | Benjamin Bohard | 20-80….conf : les règles pour filter les services individuellement sur le modèle |
173 | 1 | Benjamin Bohard | |
174 | 1 | Benjamin Bohard | <pre><code> |
175 | 7 | Benjamin Bohard | $template DynProgramme, "/var/log/rsyslog/%hostname%/%programname%/%programname%.%syslogseverity-text%.log" |
176 | 1 | Benjamin Bohard | :programname, isequal, "Programme" ?DynProgramme |
177 | 5 | Benjamin Bohard | & ~ |
178 | 1 | Benjamin Bohard | </code></pre> |
179 | 1 | Benjamin Bohard | |
180 | 1 | Benjamin Bohard | Actuellement, les services qui disposent de règles spécifiques sont squid, charon, iptables, ufw, smbd, nmbd, named, exim4. Une règle générale peut être ajoutée pour traiter les autres cas. Ces règles personnalisées ne sont pas essentielles sauf dans le cas de fork (exemple de rsyslog qui ajoute le numéro de PID au nom de programme de ses différentes instances). Dans ce cas, il faut une règle avec une expression régulière ou startswith (ou utiliser la facility si elle est univoque). |
181 | 1 | Benjamin Bohard | |
182 | 1 | Benjamin Bohard | <pre><code> |
183 | 7 | Benjamin Bohard | $template DynRsyslog, "/var/log/rsyslog/%hostname%/rsyslog/rsyslog.%syslogseverity-text%.log" |
184 | 1 | Benjamin Bohard | :programname, startswith, "rsyslog" ?DynRsyslog |
185 | 5 | Benjamin Bohard | & ~ |
186 | 1 | Benjamin Bohard | </code></pre> |
187 | 1 | Benjamin Bohard | |
188 | 5 | Benjamin Bohard | 99-general-dispatch.conf |
189 | 1 | Benjamin Bohard | |
190 | 7 | Benjamin Bohard | $template DynProgramme, "/var/log/rsyslog/%hostname%/%programname%/%programname%.%syslogseverity-text%.log" |
191 | 5 | Benjamin Bohard | *.* ?DynProgramme |
192 | 1 | Benjamin Bohard | |
193 | 1 | Benjamin Bohard | h3. Utilisation des ensembles de règles |
194 | 1 | Benjamin Bohard | |
195 | 1 | Benjamin Bohard | Les règles peuvent être regroupées et les groupes exécutées en fonction de la provenance des messages. La dissociation des ports pour les différentes sources permet d'exécuter des jeux de règles différents pour les messages originaires des conteneurs, de machines distantes ou les messages locaux. |
196 | 1 | Benjamin Bohard | |
197 | 3 | Benjamin Bohard | Le protocole RELP ne bénéficie pas de la possibilité d'utiliser les ensembles de règles (la directive pour associer un ensemble donné à une connection RELP n'apparaît que dans la version 6.3.6 : la version prévue pour precise est la 5.8.6). |
198 | 1 | Benjamin Bohard | |
199 | 1 | Benjamin Bohard | h2. L'arborescence typique |
200 | 1 | Benjamin Bohard | |
201 | 8 | Daniel Dehennin | <pre> |
202 | 1 | Benjamin Bohard | /var/log/syslog |
203 | 8 | Daniel Dehennin | ├── local |
204 | 8 | Daniel Dehennin | │ ├── exim |
205 | 8 | Daniel Dehennin | │ │ ├── exim.alert |
206 | 8 | Daniel Dehennin | │ │ ├── exim.info |
207 | 8 | Daniel Dehennin | │ │ └── exim.notice |
208 | 8 | Daniel Dehennin | │ └── smbd |
209 | 8 | Daniel Dehennin | │ ├── smbd.debug |
210 | 8 | Daniel Dehennin | │ └── smbd.info |
211 | 8 | Daniel Dehennin | └── remote |
212 | 8 | Daniel Dehennin | ├── 10.11.12.13 |
213 | 8 | Daniel Dehennin | │ ├── aaa |
214 | 8 | Daniel Dehennin | │ │ └── aaa.info |
215 | 8 | Daniel Dehennin | │ └── ipsec |
216 | 8 | Daniel Dehennin | │ └── ipsec.error |
217 | 8 | Daniel Dehennin | ├── 15.16.17.18 |
218 | 8 | Daniel Dehennin | │ ├── apache2 |
219 | 8 | Daniel Dehennin | │ │ └── apache2.error |
220 | 8 | Daniel Dehennin | │ └── kerberos |
221 | 8 | Daniel Dehennin | │ └── kerberos.info |
222 | 8 | Daniel Dehennin | └── sw12-4 |
223 | 8 | Daniel Dehennin | └── aaa |
224 | 8 | Daniel Dehennin | └── aaa.info |
225 | 8 | Daniel Dehennin | </pre> |
226 | 6 | Benjamin Bohard | |
227 | 6 | Benjamin Bohard | h2. Rotation des journaux |
228 | 6 | Benjamin Bohard | |
229 | 6 | Benjamin Bohard | h3. Principes de logrotate |
230 | 6 | Benjamin Bohard | |
231 | 6 | Benjamin Bohard | * options globales : des options peuvent être définies en début de fichier ; |
232 | 7 | Benjamin Bohard | * -overriding : les fichiers sont lus séquentiellement, celui qui parle en dernier à raison- ; |
233 | 7 | Benjamin Bohard | * gobbling : les règles spécifques peuvent utiliser le wildcard * (problème des redondances de règles cependant. |
234 | 6 | Benjamin Bohard | |
235 | 6 | Benjamin Bohard | h3. Mise en œuvre de logrotate |
236 | 6 | Benjamin Bohard | |
237 | 7 | Benjamin Bohard | Pour composer avec les contraintes de logrotate, on ajoute .log à la fin de chaque fihier. Cela permet d'utiliser le globbing sur un dossier en excluant les journaux archivés. |