/ 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.