/ 0]-secadm-(Français).md
0]-secadm-(Français).md
  1  # secadm
  2  
  3  * Auteurs: Shawn Webb <shawn.webb@hardenedbsd.org>, Brian Salcedo <brian.salcedo@hardenedbsd.org>, Loic <loic.f@hardenedbsd.org>
  4  * Copyright (c) 2014, 2015 Shawn webb <shawn.webb@hardenedbsd.org>
  5  * Licence: 2-Clause BSD License
  6  
  7  https://git.hardenedbsd.org/hardenedbsd/secadm
  8  
  9  ## Introduction
 10  
 11  secadm est un projet visant à remplacer l'intégration
 12  mac_bsdextended(4)/ugidfw(8) que le projet HardenedBSD a fait pour
 13  le durcissement ASLR, SEGVGUARD, et PTrace. Le projet secadm sera
 14  implémenté comme une entrée de ports personnalisés dans le repo
 15  HardenedBSD/freebsd-ports. Le portage sera composé de trois parties
 16  : un module noyau qui intègre le framework MAC, une bibliothèque
 17  partagée qui communique entre le noyau et l'espace utilisateur, et
 18  une application qui consomme la bibliothèque partagée.
 19  
 20  Le module MAC fonctionnera sur la base d'une prison. Il
 21  communiquera avec l'espace utilisateur via un noeud sysctl. Le
 22  module MAC devrait s'accrocher à l'appel execve() pour définir des
 23  drapeaux de sécurité/de durcissement par processus, tels que
 24  l'activation de ASLR ou SEGVGUARD. Chaque jail gère ses propres
 25  règles. Les règles appliquées dans une prison n'ont pas
 26  d'interaction ou d'impact sur les autres prisons.
 27  La bibliothèque partagée sera nommée libsecadm et agira simplement
 28  comme une couche de communication entre les applications de
 29  l'utilisateur et le sysctl.
 30  
 31  La bibliothèque partagée effectue la même vérification de l'intégrité
 32  et de la conformité pour toutes les modifications de règles, y compris la suppression de règles, que le module MAC.
 33  
 34  L'application userland sera nommée secadm. Elle utilisera libsecadm et libucl. Les règles seront écrites en json afin de permettre une
 35  format de fichier de configuration qui est lisible et analysable à
 36  la fois par les humains et les machines. L'utilisation du format
 37  json permettra également une plus grande flexibilité et un contenu
 38  dynamique. On peut imaginer secadm déployé dans une appliance de
 39  sécurité où les jeux de règles sont créés et mis à jour via une
 40  API de service Web.
 41  
 42  secadm prend en charge le basculement des restrictions ASLR, mmap(MAP_32BIT), SEGVGUARD, SHLIBRANDOM, PAGEEXEC et MPROTECT. À partir de la version 0.2, secadm introduit également une nouvelle
 43  fonctionnalité Integriforce. Integriforce garantit l'intégrité des
 44  fichiers exécutables avant leur exécution.
 45  
 46  ## A propos de la version 0.3.0
 47  
 48  La version 0.3.0 est une réécriture complète de secadm. Vous
 49  remarquerez que des commandes comme `secadm set` et `secadm list` ne
 50  fonctionnent plus. Elles ont été remplacées par `secadm load
 51  /path/to/file` et `secadm show` respectivement. De plus, des règles
 52  individuelles peuvent être ajoutées et supprimées avec les commandes
 53  `secadm add` et `secadm del`. Les règles peuvent être activées et
 54  désactivées avec les commandes `secadm Activer` et `secadm désactiver`.
 55  
 56  Les drapeaux qui peuvent être passés à `secadm add pax` sont :
 57  
 58  * A, a: Activer, désactiver ASLR
 59  * B, b: Activer, désactiver la protection de mmap(MAP_32BIT)
 60  * L, l: Activer, désactiver SHLIBRANDOM
 61  * M, m: Activer, désactiver MPROTECT
 62  * P, p: Activer, désactiver PAGEEXEC
 63  * S, s: Activer, désactiver SEGVGUARD
 64  * O, o: Activer, désactiver le dépassement des règles FS-EA basé sur hbsdcontrol
 65  
 66  Par défaut, `secadm show` affichera le jeu de règles actif dans un
 67  format abrégé. secadm s'intègre maintenant avec libxo pour fournir
 68  une sortie du jeu de règles dans les formats JSON, UCL, ou XML.
 69  Spécifiez un format différent en utilisant l'option -f de `secadm
 70  show`. Par exemple, `secadm show -f ucl`.
 71  
 72  ## Ordre d'évaluation des règles
 73  
 74  Lorsque le noyau est compilé avec l'option noyau PAX_CONTROL_EXTATTR, l'ordre d'évaluation est secadm puis hbsdcontrol. Cela garantit que
 75  les paramètres de hbsdcontrol sont toujours prioritaires. Pour que les règles de secadm soient prioritaires, utilisez l'indicateur O pour cette règle (prefer_acl est l'option longue).
 76  
 77  ## Exigences
 78  
 79  * Version HardenedBSD 1200055 ou supérieure :
 80    - `sysctl hardening.version` devrait montrer 1200055 minimum
 81  * Noyau HardenedBSD compilé avec les options PAX_CONTROL_ACL
 82  * textproc/libucl
 83  * textproc/libxo
 84  
 85  ## Installation et utilisation
 86  
 87  ```
 88  # make
 89  # make depend all install
 90  ```
 91  
 92  Pour lister les fonctionnalités par application que votre version de secadm supporte :
 93  
 94  ```
 95  # secadm list features
 96  ```
 97  
 98  Pour charger le module noyau secadm :
 99  
100  ```
101  # kldload secadm
102  ```
103  
104  Copiez l'exemple de jeu de règles au bon endroit :
105  
106  ```
107  # cp etc/secadm-desktop.rules.example /usr/local/etc/secadm.rules
108  ```
109  
110  Modifiez vos règles :
111  
112  ```
113  # vi /usr/local/etc/secadm.rules
114  ```
115  
116  Activez-les. Veuillez noter que la définition d'un nouveau jeu de
117  règles entraînera la suppression des règles précédemment chargées.
118  
119  ```
120  # secadm load /usr/local/etc/secadm.rules
121  ```
122  
123  Pour vérifier que votre jeu de règles a été chargé avec succès :
124  
125  ```
126  # secadm list
127  ```
128  
129  Pour purger les règles :
130  
131  ```
132  # secadm flush
133  ```
134  
135  Installation dans une prison
136  ------------------------
137  La bibliothèque partagée libsecadm et l'application secadm userland doivent toutes deux être installées ou accessibles dans chaque jail individuellement afin d'appliquer les politiques de sécurité à l'intérieur du jail.
138  
139  Remarque : si les prisons sont configurées pour utiliser une basejail en lecture seule, l'installation manuelle de libsecadm.0.so dans le répertoire /usr/lib de la basejail est nécessaire.
140  
141  Rédaction des règles d'application
142  =========================
143  
144  secadm supporte actuellement l'activation de ASLR, SEGVGUARD, le
145  durcissement de mprotect(exec), et sur certains builds HardenedBSD,
146  le durcissement de PAGEEXEC. Dans le répertoire etc, vous trouverezsecadm.rules.sample, qui montre comment écrire des règles.
147  
148  Vous pouvez utiliser le mot-clé prefer_acl pour que la règle de
149  secadm prenne le pas sur les paramètres basés sur les attributs
150  étendus du système de fichiers.
151  secadm utilise libucl pour analyser son fichier de configuration. En l'état actuel des choses.
152  
153  Pour l'instant, l'ordre des règles n'a pas d'importance, mais cela pourrait changer avec le temps, à mesure que nous ajoutons de nouvelles fonctionnalités. L'exemple de fichier de configuration est dans un format JSON détendu, bien que libucl supporte différentes syntaxes. Veuillez vous référer à la documentation de libucl pour vous aider à apprendre les différentes syntaxes possibles.
154  
155  ```
156  secadm {
157  	pax {
158  		path: "/bin/ls",
159  		aslr: false,
160  		segvguard: false
161  	},
162  	pax {
163  		path: "/bin/pwd",
164  		mprotect: true,
165  		pageexec: true,
166  		prefer_acl: true
167  	}
168  }
169  ```
170  
171  ## Integriforce
172  
173  secadm version 0.2 prend en charge une nouvelle fonctionnalité,
174  appelée Integriforce. Cette fonctionnalité permet de contrôler
175  l'intégrité des fichiers exécutables. Si une règle existe pour un
176  fichier donné, le hachage de ce fichier tel que défini dans la
177  règle est comparé au hachage du fichier. Si les hachages ne
178  correspondent pas, l'exécution peut être interdite, selon les
179  paramètres de configuration. Integriforce est une fonction
180  optionnelle, mais puissante. Integriforce ne supporte actuellement
181  que SHA1 ou SHA256.
182  
183  OTE : Les fichiers qui sont sous la gestion d'Integriforce ne
184  peuvent pas être modifiés ou supprimés. L'ensemble de règles devra
185  être nettoyé avant d'être mis à jour.
186  modifier ou supprimer le fichier.
187  
188  ### Configurer Integriforce
189  
190  Dans l'objet racine du fichier de configuration, secadm recherche unobjet integriforce. Dans l'objet integriforce, ajoutez un tableau de fichiers. Dans le tableau de fichiers, placez un tableau d'objets, où chaque objet contient les options suivantes :
191  
192  1. mode (chaîne de caractères, par défaut "hard") : S'il est défini,
193  il doit être égal à "soft" ou "hard". Le mode doux signifie que
194  l'exécution est autorisée si les hachages ne correspondent pas, mais
195  un message d'avertissement est imprimé. Le mode dur affiche un
196  message d'erreur et interdit l'exécution.
197  1. fichiers (tableau d'objets) : Chaque objet doit contenir les
198  champs suivants :
199     1. path (chaîne) : Le chemin vers l'exécutable.
200     1. hash (chaîne) : Le hachage (sha1 ou sha256) de l'exécutable.
201     1. type (chaîne) : Soit "sha1", soit "sha256".
202     1. mode (facultatif, chaîne de caractères, hériter par défaut)
203        : Le mode d'application pour ce fichier.
204  
205  Exemple de configuration :
206  
207  ```
208  secadm {
209  	integriforce {
210  		path: "/bin/ls",
211  		hash: "873e49767e36f80a8814f41c90c98d888c83eeb4fe2fcab155b5ecb6cc6b67f6",
212  		type: "sha256",
213  		mode: "hard"
214  	}
215  }
216  ```
217  
218  ### Application stricte Autoriser l'inscription
219  
220  Lorsque des règles Integriforce ont été ajoutées, `secadm` peut
221  être placé en mode d'autorisation stricte des applications
222  (whitelist). `secadm` interdira l'exécution d'applications et le
223  chargement de bibliothèques partagées n'ayant pas d'entrée
224  correspondante dans la configuration d'Integriforce.
225  
226  Pour activer le mode liste d'autorisation stricte des applications :
227  
228  ```
229  # secadm set -W
230  ```
231  
232  Pour désactiver le mode liste d'autorisation stricte des applications :
233  
234  ```
235  # secadm set -w
236  ```
237  
238  Pour activer le mode strict de liste d'autorisation des applications
239  dans le fichier de configuration `secadm` :
240  
241  ```
242  secadm {
243  	whitelist_mode: true
244  }
245  ```
246  
247  L'ajout de secadm lui-même et des bibliothèques partagées dont ildépend à la configuration d'Integriforce est fortement recommandé.
248  Sinon, la configuration de secadm ne peut pas être modifiée sans
249  redémarrer le système au préalable.
250  
251  ## Exécution du chemin de confiance (TPE)
252  
253  Trusted Path Execution empêche les utilisateurs d'exécuter directement
254  des binaires dans des répertoires non fiables. Un répertoire de
255  confiance est défini comme un répertoire accessible en écriture
256  uniquement par root et appartenant à root. L'implémentation actuelle
257  de TPE ne gère pas l'exécution indirecte de scripts.
258  
259  Les options TPE qui peuvent être définies :
260  
261  1. `enable`:
262     * Requis. Type : Booléen
263     * Description : Active les protections TPE.
264  1. `all`:
265     * Facultatif. Type : Booléen
266     * Description : Activer le TPE pour tous les utilisateurs.
267  1. `invert`:
268     * Facultatif. Type : Booléen
269     * Description : Inverse la logique de l'ID de groupe (GID).
270  1. `gid`:
271     * Facultatif. Type : Nombre entier
272     * Description : ID du groupe pour lequel le TPE est appliqué.
273  
274  L'activation de TPE via la ligne de commande :
275  
276  ```
277  # secadm tpe -TA
278  ```
279  
280  Configurer TPE dans le fichier de configuration `secadm` :
281  
282  ```
283  secadm {
284  	tpe {
285  		Activer: true,
286  		all: true,
287  		invert: false,
288  		gid: 1000
289  	}
290  }
291  ```
292  
293  ## Note sur la stabilité de l'ABI et de l'API
294  
295  L'ABI et l'API de l'userland et du kernel sont en plein
296  développement. Bien que nous ayons pris soin de garder à l'esprit
297  les changements et fonctionnalités futurs, l'API et l'ABI ne sont
298  pas stables et peuvent changer de version en version. Si vous prévoyez de développer des applications tierces qui utilisent
299  libsecadm, vous le faites à vos risques et périls. Si vous pensez
300  avoir besoin de fonctionnalités supplémentaires ou d'une
301  modification d'une fonctionnalité existante, veuillez déposer un
302  rapport de bogue dans le traqueur de problèmes de secadm sur
303  l'instance GitLab auto-hébergée de HardenedBSD.