]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/fr/install/security.tex
Add new French manual
[bacula/docs] / docs / manuals / fr / install / security.tex
1 %%
2 %%
3
4 \chapter{Consid\'erations sur la s\'ecurit\'e de Bacula}
5 \label{_ChapterStart14}
6 \index[general]{Bacula!Consid\'erations sur la s\'ecurit\'e de}
7 \index[general]{Consid\'erations sur la s\'ecurit\'e de Bacula}
8 \index[general]{S\'ecurit\'e}
9
10 \begin{itemize}
11 \item La s\'ecurit\'e, c'est de pouvoir restaurer vos fichiers, aussi, lisez 
12    attentivement le chapitre \ilink{Critical Items Chapter}{Critical} de 
13    ce manuel.
14 \item Le client ({\bf bacula-fd}) doit \^etre ex\'ecut\'e en tant que root
15    afin d'avoir  l'acc\`es \`a tous les fichiers du syst\`eme. 
16 \item Il n'est pas n\'ecessaire d'ex\'ecuter le Director en tant que root. 
17 \item Il n'est pas n\'ecessaire d'ex\'ecuter le Storage Daemon en tant que
18    root, mais  vous devez vous assurer qu'l peut utiliser le lecteur de bandes,
19    dont l'acc\`es  est presque toujours r\'eserv\'e \`a root par d\'efaut.
20    De plus, si vous n'ex\'ecutez pas le Storage Daemon en tant que root, il sera 
21    dans l'incapacit\'e de r\'egler automatiquement les param\`etres de votre lecteur 
22    de bandes. En effet, ces fonctions requi\`erent les droits root sur la plupart 
23    des syst\`emes d'exploitation.
24 \item Vous devriez restreindre l'acc\`es au fichiers de configuration de
25    Bacula, de  sorte que les mots de passe ne soient pas lisibles par tous.  Les
26    {\it daemons} {\bf Bacula} sont prot\'eg\'es par des mots de passe et CRAM-MD5
27 (i.e. les mots de passe ne sont pas envoy\'es sur le r\'eseau). Ceci assure
28 que tout le  monde ne peut acc\'eder aux {\it daemons}. C'est une protection
29 raisonnablement bonne,  mais qui peut \^etre craqu\'ee par un expert. 
30 \item Si vous utilisez les ports recommand\'es 9101,9102 et 9103, vous voudrez
31    probablement  prot\'eger ces ports des acc\`es externes \`a l'aide d'un
32    firewall et/ou en utilisant  tcp wrappers ({\bf etc/hosts.allow}).  
33 \item Actuellement, toutes les donn\'ees sont envoy\'ees sur le r\'eseau sans
34    chiffrement. Par  cons\'equent, \`a moins que vous n'utilisiez {\bf ssh} ou {\bf
35    stunnel} pour la  transmission de port (NDT: port forwarding), il n'est pas
36 recommand\'e de faire des  sauvegardes \`a travers un r\'eseau non
37 s\'ecuris\'e (par exemple, Internet). Nous  pr\'evoyons d'int\'egrer le
38 chiffrage {\bf ssl} dans une version future.  
39 \item Vous devriez vous assurer que seuls les {\it daemons} de Bacula ont
40    acc\`es  en lecture et \'ecriture aux r\'epertoires de travail de Bacula.  
41 \item Si vous utilisez {\bf MySQL}, il n'est pas n\'ecessaire de l'ex\'ecuter
42    en tant que root  
43 \item Le script par d\'efaut de Bacula {\bf grant-mysql-permissions} accorde
44    toutes les  permissions d'utilisation de la base de donn\'ees MySQL sans mot
45    de passe. Si vous  voulez la s\'ecurit\'e, affinez ceci !  
46 \item N'oubliez pas que Bacula est un programme r\'eseau, ainsi quiconque sur
47    le r\'eseau  dispose du programme console et du mot de passe du Director peut
48    acc\'eder \`a  Bacula et aux donn\'ees sauvegard\'ees.  
49 \item Vous pouvez restreindre les adresses IP avec auxquelles Bacula se
50    connectera en  utilisant les enregistrements appropri\'es {\bf DirAddress},
51    {\bf FDAddress},  ou {\bf SDAddress} dans les fichiers de configurations
52 respectifs des {\it daemons}  
53 \item Soyez conscient que si vous sauvegardez votre catalogue avec le script 
54    par d\'efaut, et si l'acc\`es \`a votre catalogue est prot\'eg\'e par un mot de passe, 
55    ce dernier est transmis en tant qu'option de ligne de commande \`a ce script, 
56    ce qui le rend visible \`a tout utilisateur du syst\`eme. Si vous voulez 
57    s\'ecuriser ce point, vous devez le passer via une variable d'environnement 
58    ou un fichier s\'ecuris\'e.
59 \end{itemize}
60
61 \section{Compatibilit\'e ascendante}
62 \index[general]{Compatibilit\'e ascendante}
63 \addcontentsline{toc}{section}{Compatibilit\'e ascendante}
64 L'un des principaux objectifs de Bacula est de garantir que vous pouvez 
65 restaurer depuis des cartouches (ou depuis des volumes disque) \'ecrites des ann\'ees 
66 auparavant. Ceci implique que chaque nouvelle version de Bacula devrait \^etre 
67 capable de relire les anciens formats de cartouches. Le premier probl\`eme est de 
68 s'assurer que le mat\'eriel fonctionne encore malgr\'e les ann\'ees, et que les supports 
69 sont encore valides. Ensuite, votre syst\`eme d'exploitation doit \^etre capable 
70 de s'interfacer avec le p\'eriph\'erique et finalement, Bacula doit \^etre capable 
71 de reconna\^itre les anciens formats. De tous ces probl\`emes, nous ne pouvons 
72 prendre en charge que le dernier, pour les autres, vous devez vous pr\'eparer 
73 consciencieusement.
74
75 Depuis les tous premiers stades de Bacula (janvier 2000) jusqu'\`a aujourd'hui 
76 (D\'ecembre 2005), Bacula a connu deux formats majeurs d'\'ecriture sur les 
77 cartouches. Le second format a \'et\'e introduit dans la version 1.27 en 
78 novembre 2002, et n'a pas chang\'e depuis. En principe, Bacula devrait encore pouvoir 
79 lire le format d'origine, mais j'avoue ne pas avoir essay\'e depuis longtemps...
80
81 Bien que le format des cartouches soit fix\'e, les types de donn\'ees qui peuvent \^etre 
82 \'ecrites sur les cartouches sont extensibles, ce qui nous a permis d'ajouter de 
83 nouvelles fonctionnalit\'es telles que les ACLs, les donn\'ees Win32, les donn\'ees 
84 chiffr\'ees... Naturellement, une ancienne version de Bacula ne saurait lire des 
85 nouveaux flux de donn\'ees, mais chaque nouvelle version de Bacula est en principe 
86 capable de lire les anciens flux.
87
88 Si vous voulez \^etre absolument certain de pouvoir lire vos vieilles cartouches, 
89 vous devriez :
90
91 1. Essayer de lire les vieilles cartouches de temps en temps, une fois par an 
92 par exemple.
93
94 2. Conserver une copie statiquement li\'ee de chaque version de Bacula que vous 
95 avez utilis\'ee en production. Ainsi, si pour quelque raison nous venions \`a 
96 abandonner la compatibilit\'e avec les anciens formats de cartouches, vous pourriez 
97 toujours remettre en service une vieille copie de Bacula...
98
99 Le second point est probablement excessif, en toute rigueur, il pourrait vous 
100 sauver un jour.
101
102 \label{wrappers}
103
104 \section{Configurer et tester TCP Wrappers}
105 \index[general]{Configurer et tester TCP Wrappers}
106 \index[general]{Bacula!Configurer et tester TCP Wrappers}
107 \index[general]{TCP Wrappers}
108 \index[general]{Wrappers!TCP}
109 \index[general]{libwrappers}
110 \addcontentsline{toc}{section}{Configurer et tester TCP Wrappers}
111
112 Les TCP Wrappers sont impl\'ement\'es si vous les activez lors de la
113 configuration ({\bf ./configure \verb{:--:{with-tcp-wrappers}). Avec ce code activ\'e, vous
114 pourrez contr\^oler qui peut acc\'eder \`a vos {\it daemons}. Ce contr\^ole
115 est obtenu par la modification du fichier {\bf /etc/hosts.allow}. Le nom de
116 programme qu'utilise {\bf Bacula} pour appliquer ces restrictions est celui
117 que vous avez sp\'ecifi\'e dans le fichier de configuration du {\it daemon}.
118 Vous ne devez pas utiliser l'option {\bf twist} dans votre {\bf
119 /etc/hosts.allow} car elle stopperait les {\it daemons} Bacula lorsqu'une
120 connection est refus\'ee. 
121
122 Le nom exact du paquet requis pour compiler avec le support TCP wrappers 
123 d\'epend du syst\`eme. Il s'agit, par exemple, de tcpd-devel sur SuSE, et de 
124 tcp\_wrappers sur RedHat.
125
126 Dan Langille a fourni les informations suivantes concernant la configuration
127 et les tests de TCP Wrappers avec Bacula. 
128
129 Si vous lisez hosts\_options(5), vous verrez une option nomm\'ee twist. Cette
130 option remplace le processus courant par une instance de la commande shell
131 sp\'ecifi\'ee. Voici un exemple typique de son utilisation : 
132
133 \footnotesize
134 \begin{verbatim}
135 ALL : ALL \
136  : severity auth.info \
137  : twist /bin/echo "Vous n'\^etes pas autoris\'e \`a utiliser %d depuis %h."
138 \end{verbatim}
139 \normalsize
140
141 \label{question-1}
142 Le code libwrap tente d'\'eviter {\bf twist} s'il est
143 ex\'ecut\'e dans un processus r\'esident. Il en r\'esulte que le processus (e.g.
144 bacula-fd, bacula-sd, bacula-dir) sera stopp\'e si la premi\`ere connection
145 \`a son port provoque l'invocation de l'option twist. Le risque est qu'une
146 attaque provoque l'arr\^et des {\it daemons}.  Cette situation est \'evit\'ee si votre
147 fichier /etc/hosts.allow contient un jeu de r\`egles appropri\'e. L'exemple
148 suivant est suffisant : 
149
150 \footnotesize
151 \begin{verbatim}
152 undef-fd : localhost : allow
153 undef-sd : localhost : allow
154 undef-dir : localhost : allow
155 undef-fd : ALL : deny
156 undef-sd : ALL : deny
157 undef-dir : ALL : deny
158 \end{verbatim}
159 \normalsize
160
161 Vous devez accorder les noms des {\it daemons} \`a ceux sp\'ecifi\'es dans leurs 
162 fichiers de configuration respectifs. Ce ne sont, en g\'en\'eral, pas les noms 
163 des fichiers binaires des {\it daemons}. Il n'est pas possible d'utiliser 
164 les noms des binaires car plusieurs {\it daemons} peuvent \^etre ex\'ecut\'es 
165 sur une machine avec des fichiers de configuration distincts. 
166
167 Dans ces exemples, le Director est undef-dir, le
168 Storage Daemon est undef-sd, et le File Daemon est undef-fd. Ajustez ces noms pour
169 qu'ils conviennent \`a votre configuration. L'exemple de r\`egles ci-dessus suppose que
170 SD, FD et DIR sont tous sur la m\^eme machine. Si vous avez un client FD
171 distant, il vous suffira de placer le jeu de r\`egles suivant sur ce client : 
172
173 \footnotesize
174 \begin{verbatim}
175 undef-fd : director.example.org : allow
176 undef-fd : ALL : deny
177 \end{verbatim}
178 \normalsize
179
180 O\`u director.example.org est l'h\^ote qui contactera le client (i.e. la
181 machine sur laquelle le Bacula Director tourne). L'usage de "ALL : deny"
182 assure que l'option twist (si pr\'esente) n'est pas invoqu\'ee. Pour tester
183 correctement votre configuration, d\'emarrez le(s) {\it daemon(s)}, puis
184 essayez de vous y connecter depuis une adresse IP qui devrait \^etre capable
185 de le faire. Vous devriez voir quelque chose comme : 
186
187 \footnotesize
188 \begin{verbatim}
189 $ telnet undef 9103
190 Trying 192.168.0.56...
191 Connected to undef.example.org.
192 Escape character is '^]'.
193 Connection closed by foreign host.
194 $
195 \end{verbatim}
196 \normalsize
197
198 C'est la r\'eponse correcte. Si vous voyez ceci : 
199
200 \footnotesize
201 \begin{verbatim}
202 $ telnet undef 9103
203 Trying 192.168.0.56...
204 Connected to undef.example.org.
205 Escape character is '^]'.
206 You are not welcome to use undef-sd from xeon.example.org.
207 Connection closed by foreign host.
208 $
209 \end{verbatim}
210 \normalsize
211
212 Alors, twist a \'et\'e invoqu\'ee, et votre configuration est incorrecte. vous
213 devez ajouter la directive "deny". Il est important de noter que vos tests
214 doivent inclure le red\'emarrage des {\it daemons} apr\`es chaque tentative de
215 connexion. Vous pouvez aussi tcpdchk(8) et tcpdmatch(8) pour valider jeu de
216 r\`egles /etc/hosts.allow. Voici un test simple avec tcpdmatch : 
217
218 \footnotesize
219 \begin{verbatim}
220 $ tcpdmatch undef-dir xeon.example.org
221 warning: undef-dir: no such process name in /etc/inetd.conf
222 client: hostname xeon.example.org
223 client: address 192.168.0.18
224 server: process undef-dir
225 matched: /etc/hosts.allow line 40
226 option: allow
227 access: granted
228 \end{verbatim}
229 \normalsize
230
231 Si vous ex\'ecutez Bacula en tant que {\it standalone daemon}, les
232 avertissements ci-dessus peuvent \^etre ignor\'es sans scrupules. Voici un
233 exemple qui r\'ev\`ele que "deny" fait defaut \`a vos r\`egles, et que
234 l'option twist a \'et\'e invoqu\'ee. 
235
236 \footnotesize
237 \begin{verbatim}
238 $ tcpdmatch undef-dir 10.0.0.1
239 warning: undef-dir: no such process name in /etc/inetd.conf
240 client: address 10.0.0.1
241 server: process undef-dir
242 matched: /etc/hosts.allow line 91
243 option: severity auth.info
244 option: twist /bin/echo "You are not welcome to use
245   undef-dir from 10.0.0.1."
246 access: delegated
247 \end{verbatim}
248 \normalsize
249
250 \section{Ex\'ecuter Bacula sans \^etre root}
251 \index[general]{Root!Ex\'ecuter Bacula sans \^etre }
252 \index[general]{Ex\'ecuter Bacula sans \^etre root }
253 \addcontentsline{toc}{section}{Ex\'ecuter Bacula sans \^etre root}
254
255 Voici quelques recommandations de Dan Languille :  
256
257 C'est une bonne id\'ee d'ex\'ecuter vos {\it daemons} avec des  privil\`eges
258 aussi faibles que possible. En d'autres termes,  si vous pouvez, n'ex\'ecutez
259 pas d'applications en tant que root  si elle n'ont pas besoin d'\^etre
260 ex\'ecut\'ees en tant que root.  Le Storage Daemon et le Director Daemon n'ont
261 pas besoin  d'\^etre ex\'ecut\'es en tant que root. Le File Daemon en a besoin
262 pour acc\'eder  \`a l'ensemble des fichiers du syst\`eme. Pour vous passer des
263 privil\`eges  root, il vous faut cr\'eer un utilisateur et un groupe. Choisir
264 {\tt bacula}  pour l'un et l'autre me semble une bonne id\'ee.  
265
266 Le port FreeBSD cr\'ee cet utilisateur et ce groupe pour vous. (En fait, au
267 moment  ou j'\'ecris ces lignes, ce n'est pas encore le cas, mais \c{c}a le
268 sera bient\^ot).  Voici \`a quoi ressemblent ces entr\'ees sur mon portable
269 FreeBSD : 
270
271 \footnotesize
272 \begin{verbatim}
273 bacula:*:1002:1002::0:0:Bacul Daemon:/var/db/bacula:/sbin/nologin
274 \end{verbatim}
275 \normalsize
276
277 J'ai utilis\'e vipw pour cr\'eer ces entr\'ees. J'ai utilis\'e un User ID et
278 un Group ID  disponibles sur mon syst\`eme : 1002.  
279
280 J'ai aussi cr\'e\'e un groupe dans /etc/group:  
281
282 \footnotesize
283 \begin{verbatim}
284 bacula:*:1002:
285 \end{verbatim}
286 \normalsize
287
288 L'utilisateur bacula, contrairement au {\it daemon} Bacula, aura un 
289 r\'epertoire d\'edi\'e (home directory) : {\tt /var/db/bacula}  qui est le
290 r\'epertoire standard pour le catalogue de Bacula.  
291
292 A pr\'esent, vous avez un utilisateur et un groupe bacula, et vous pouvez 
293 s\'ecuriser le r\'epertoire d\'edi\'e de bacula en utilisant cette commande : 
294
295 \footnotesize
296 \begin{verbatim}
297 chown -R bacula:bacula /var/db/bacula/
298 \end{verbatim}
299 \normalsize
300
301 Celle-ci assure que seul l'utilisateur bacula peut acc\'eder \`a ce
302 r\'epertoire.  Elle signifie aussi que si nous ex\'ecutons le Director et le
303 Storage Daemon  en tant que bacula, ces {\it daemons} auront aussi des acc\`es
304 restreints.  Ce ne serait pas le cas s'ils \'etaient ex\'ecut\'es en tant que
305 root.  
306
307 Il est important de noter que le Storage Daemon a vraiment besoin 
308 d'appartenir au groupe operator pour un acc\`es normal aux lecteurs de bandes.
309 (au moins sur FreeBSD, c'est ainsi que les choses sont configur\'ees par
310 d\'efaut).  De tels p\'eriph\'eriques sont en principe attribu\'es \`a
311 root:operator. Il est plus  facile et moins dangereux de faire de bacula un
312 membre de ce groupe que de jouer  avec les permissions du syst\`eme. 
313
314 D\'emarrer les {\it daemons} bacula 
315
316 Pour d\'emarrer les {\it daemons} bacula sur FreeBSD, utilisez la commande : 
317
318 \footnotesize
319 \begin{verbatim}
320 /usr/local/etc/rc.d/bacula.sh start
321 \end{verbatim}
322 \normalsize
323
324 Pour vous assurer que tous fonctionnent : 
325
326 \footnotesize
327 \begin{verbatim}
328 $ ps auwx | grep bacula
329 root\ 63416\ 0.0\ 0.3\ 2040 1172\ ??\ Ss\ 4:09PM 0:00.01
330     /usr/local/sbin/bacula-sd -v -c /usr/local/etc/bacula-sd.conf
331 root\ 63418\ 0.0\ 0.3\ 1856 1036\ ??\ Ss\ 4:09PM 0:00.00
332     /usr/local/sbin/bacula-fd -v -c /usr/local/etc/bacula-fd.conf
333 root\ 63422\ 0.0\ 0.4\ 2360 1440\ ??\ Ss\ 4:09PM 0:00.00
334     /usr/local/sbin/bacula-dir -v -c /usr/local/etc/bacula-dir.conf
335 \end{verbatim}
336 \normalsize