Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:centos:8:avance:l115 [2024/10/01 07:53] adminelearning:workbooks:centos:8:avance:l115 [2024/11/08 12:39] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2021.01**+Version : **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
  
-======LRF607 - Gestion du Durcissement du système======+======LCF607 - Gestion du Noyau et des Quotas======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LRF607 - Gestion du Durcissement du système**+  * **LCF607 - Gestion du Noyau et des Quotas**
     * Contenu du Module     * Contenu du Module
-    * System Hardening Manuel +    * Rôle du noyau 
-      Les compilateurs +    LAB #1 - Modules 
-      Les paquets +    LAB #2 - Compilation et installation du noyau et des modules 
-      * Les démons et services +      * 2.1 - Déplacer /home 
-      * Les fichiers .rhosts +      * 2.2 - Préparer l'Environnement 
-      * Les fichiers et les repertoires sans proprietaire +      * 2.3 - Préparer l'Arborescence Source du Noyau 
-      * Interdire les connexions de root via le réseau +        * Le Fichier .config 
-      * Limiter le delai d'inactivite d'une session shell +        * Le Fichier Makefile 
-      * Renforcer la securite d'init +      * 2.4 - Paramétrage du noyau 
-        * Les Distributions SysVInit +      * 2.5 Compiler le Noyau 
-        * Les Distributions Upstart +      * 2.6 Installer le Nouveau Noyau 
-      * Renforcer la sécurité du Noyau +    * LAB #3 - Gestion des Quotas 
-      * La commande sysctl +      * 3.1 - La Commande quotacheck 
-    * LAB #1 System Hardening à l'aide de l'outil Bastille +      * 3.2 - La Commande edquota 
-      * Présentation +      * 3.3 - La Commande quotaon 
-      * Installation +      * 3.4 - La Commande repquota 
-      * Utilisation +      * 3.5 - La Commande quota 
-    * LAB #2 - Mise en place de SELinux pour sécuriser le serveur +      * 3.6 - La Commande warnquota
-      * Introducton +
-      * Définitions +
-        * Security Context +
-        * Domains et Types +
-        * Roles +
-        * Politiques de Sécurité +
-        * Langage de Politiques +
-          * allow +
-          * type +
-        * type_transition +
-        * Décisions de SELinux +
-          * Décisions d'Accès +
-          * Décisions de Transition +
-        * Commandes SELinux +
-        * Les Etats de SELinux +
-        * Booléens +
-    * LAB #3 - Travailler avec SELinux +
-      * Copier et Déplacer des Fichiers +
-      * Vérifier les SC des Processus +
-      * Visualiser la SC d'un Utilisateur +
-      * Vérifier la SC d'un fichier +
-      * Troubleshooting SELinux +
-        * La commande chcon +
-      * La commande restorecon +
-      * Le fichier /.autorelabel +
-      * La commande semanage +
-      * La commande audit2allow+
  
-=====System Hardening Manuel=====+=====Rôle du noyau=====
  
-====Les compilateurs====+Le noyau ou //kernel// est la partie du système d'exploitation qui gère les entrées/sorties avec des périphériques. Dans certains cas il est préférable de recompiler le noyau de Linux. La motivation de cette recompilation peut être :
  
-Afin d'empêcher un pirate de créer des exécutables sur le serveur vous devez modifier les permissions sur les compilateurs éventuellement présents afin que seulement root puisse les exécuter.+  * la diminution de la taille du noyau, 
 +  * la prise en charge de nouveau matériel, 
 +  * l'ajout de fonctionnalités, 
 +  * l'optimisation du code, 
 +  * la correction de bogues, 
 +  * le besoin d'une fonctionnalité expérimentale. 
 +   
 +Commencez par mettre à jour CentOS 8 :
  
-====Les paquets====+<code> 
 +[root@centos8 ~]# dnf update 
 +... 
 +[root@centos8 ~]# reboot 
 +</code>
  
-Il convient dans ce cas de passer en revue la liste des paquets installes puis de supprimer ceux qui sont juges être inutiles :+Identifiez ensuite le noyau utilisé par votre machine virtuelle :
  
 <code> <code>
-[root@centos7 ~]# rpm -qa | more +[root@centos8 ~]# uname -r 
-libtalloc-2.1.9-1.el7.x86_64 +4.18.0-305.7.1.el8_4.x86_64
-gnome-contacts-3.22.1-1.el7.x86_64 +
-lrzsz-0.12.20-36.el7.x86_64 +
-NetworkManager-team-1.8.0-11.el7_4.x86_64 +
-opus-1.0.2-6.el7.x86_64 +
-libsss_certmap-1.15.2-50.el7_4.11.x86_64 +
-m17n-db-1.6.4-3.el7.noarch +
-expat-2.1.0-10.el7_3.x86_64 +
-gvfs-mtp-1.30.4-3.el7.x86_64 +
-hypervfcopyd-0-0.30.20161211git.el7.x86_64 +
-perl-parent-0.225-244.el7.noarch +
-libreport-centos-2.1.11-38.el7.centos.x86_64 +
-pixman-0.34.0-1.el7.x86_64 +
-alsa-plugins-pulseaudio-1.1.1-1.el7.x86_64 +
-libreoffice-graphicfilter-5.0.6.2-15.el7_4.x86_64 +
-libreport-rhel-anaconda-bugzilla-2.1.11-38.el7.centos.x86_64 +
-libXext-1.3.3-3.el7.x86_64 +
-libtool-ltdl-2.4.2-22.el7_3.x86_64 +
-NetworkManager-ppp-1.8.0-11.el7_4.x86_64 +
-osinfo-db-20170423-2.el7.noarch +
-fftw-libs-double-3.3.3-8.el7.x86_64 +
-kernel-tools-libs-3.10.0-693.21.1.el7.x86_64 +
-e2fsprogs-libs-1.42.9-10.el7.x86_64 +
---More--+
 </code> </code>
  
-====Les démons et services====+=====LAB #1 - Modules=====
  
-Il convient dans ce cas de passer en revue la liste des démons et services actives puis de supprimer ceux qui sont juges être inutiles; +Dans le cas d'une utilisation courante de Linux, il est cependant préférable de faire appel aux **modules**. Les modules se trouvent dans le répertoire **/lib/modules/<version-du-noyau>** :
- +
-  * ps aux +
-  chkconfig --list +
-  systemctl list-unit-files+
  
 <code> <code>
-[root@centos7 ~]# ps aux | more +[root@centos8 ~]# ls /lib/modules/`uname -r`
-USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +bls.conf           modules.builtin      modules.networking   System.map 
-root          0.0  0.9 128172  4768 ?        Ss   14:58   0:11 /usr/lib/systemd/systemd --swit +build              modules.builtin.bin  modules.order        updates 
-ched-root --system --deserialize 21 +config             modules.dep          modules.softdep      vdso 
-root          0.0  0.0      0     0 ?        S    14:58   0:00 [kthreadd] +kernel             modules.dep.bin      modules.symbols      vmlinuz 
-root          0.0  0.0      0     0 ?        S    14:58   0:13 [ksoftirqd/0] +modules.alias      modules.devname      modules.symbols.bin  weak-updates 
-root          0.0  0.     0     0 ?        S<   14:58   0:00 [kworker/0:0H] +modules.alias.bin  modules.drm          source 
-root          0.0  0.0      0     0 ?        S    14:58   0:00 [kworker/u2:0] +modules.block      modules.modesetting  symvers.gz
-root          0.0  0.0      0     0 ?        S    14:58   0:00 [migration/0] +
-root          0.0  0.0      0     0 ?        S    14:58   0:00 [rcu_bh] +
-root          0.0  0.0      0     0 ?        S    14:58   0:09 [rcu_sched] +
-root        10  0.0  0.     0     0 ?        S    14:58   0:00 [watchdog/0] +
-root        12  0.0  0.     0     0 ?        S    14:58   0:00 [kdevtmpfs] +
-root        13  0.0  0.0      0     0 ?        S<   14:58   0:00 [netns] +
-root        14  0.0  0.0      0     0 ?        S    14:58   0:00 [khungtaskd] +
-root        15  0.0  0.0      0     0 ?        S<   14:58   0:00 [writeback] +
-root        16  0.0  0.0      0     0 ?        S<   14:58   0:00 [kintegrityd] +
-root        17  0.0  0.0      0     0 ?        S<   14:58   0:00 [bioset] +
-root        18  0.0  0.0      0     0 ?        S<   14:58   0:00 [kblockd] +
-root        19  0.0  0.0      0     0 ?        S<   14:58   0:00 [md] +
-root        25  0.0  0.0      0     0 ?        S    14:58   0:03 [kswapd0] +
-root        26  0. 0.0      0     0 ?        SN   14:58   0:00 [ksmd] +
-root        27  0.0  0.0      0     0 ?        S<   14:58   0:00 [crypto] +
-root        35  0.0  0.0      0     0 ?        S<   14:58   0:00 [kthrotld] +
---More--+
 </code> </code>
  
-<code> +Les commandes pour manipuler les modules sont :
-[root@centos7 ~]# chkconfig --list+
  
-Note: This output shows SysV services only and does not include native +  * insmod 
-      systemd services. SysV configuration data might be overridden by native +  * rmmod 
-      systemd configuration.+  * lsmod 
 +  * modprobe
  
-      If you want to list systemd services use 'systemctl list-unit-files'+Par exemple :
-      To see services enabled on particular target use +
-      'systemctl list-dependencies [target]'.+
  
-livesys        0:off 1:off 2:off 3:on 4:on 5:on 6:off +<code> 
-livesys-late    0:off 1:off 2:off 3:on 4:on 5:on 6:off +[root@centos8 ~]# lsmod 
-netconsole      0:off 1:off 2:off 3:off 4:off 5:off 6:off +Module                  Size  Used by 
-network        0:off 1:off 2:off 3:off 4:off 5:off 6:off +xt_CHECKSUM            16384  1 
-snortd          0:off 1:off 2:on 3:on 4:on 5:on 6:off+ipt_MASQUERADE         16384 
 +xt_conntrack           16384 
 +ipt_REJECT             16384  2 
 +nft_compat             20480  16 
 +nf_nat_tftp            16384  0 
 +nft_objref             16384 
 +nf_conntrack_tftp      16384  nf_nat_tftp 
 +nft_counter            16384  33 
 +tun                    53248  1 
 +bridge                192512  0 
 +stp                    16384  bridge 
 +llc                    16384  bridge,stp 
 +nft_fib_inet           16384 
 +nft_fib_ipv4           16384  1 nft_fib_inet 
 +nft_fib_ipv6           16384  1 nft_fib_inet 
 +nft_fib                16384  nft_fib_ipv6,nft_fib_ipv4,nft_fib_inet 
 +nft_reject_inet        16384  5 
 +nf_reject_ipv4         16384  2 nft_reject_inet,ipt_REJECT 
 +nf_reject_ipv6         16384  1 nft_reject_inet 
 +nft_reject             16384  1 nft_reject_inet 
 +nft_ct                 20480  19 
 +nf_tables_set          49152  21 
 +nft_chain_nat          16384  12 
 +nf_nat                 45056  3 ipt_MASQUERADE,nf_nat_tftp,nft_chain_nat 
 +nf_conntrack          172032  xt_conntrack,nf_nat,nf_conntrack_tftp,nft_ct,ipt_MASQUERADE,nf_nat_tftp 
 +nf_defrag_ipv6         20480  1 nf_conntrack 
 +nf_defrag_ipv4         16384  1 nf_conntrack 
 +ip_set                 49152  0 
 +nf_tables             172032  414 nft_ct,nft_compat,nft_reject_inet,nft_fib_ipv6,nft_objref,nft_fib_ipv4,nft_counter,nft_chain_nat,nf_tables_set,nft_reject,nft_fib,nft_fib_inet 
 +nfnetlink              16384  4 nft_compat,nf_tables,ip_set 
 +sunrpc                540672  1 
 +ext4                  761856 
 +mbcache                16384  1 ext4 
 +jbd2                  131072  1 ext4 
 +virtio_balloon         20480 
 +pcspkr                 16384 
 +i2c_piix4              24576  0 
 +joydev                 24576 
 +ip_tables              28672  0 
 +xfs                  1515520 
 +libcrc32c              16384  nf_conntrack,nf_nat,nf_tables,xfs 
 +sr_mod                 28672  0 
 +sd_mod                 53248 
 +cdrom                  65536  sr_mod 
 +t10_pi                 16384  1 sd_mod 
 +sg                     40960 
 +ata_generic            16384  0 
 +bochs_drm              16384  1 
 +drm_vram_helper        28672  1 bochs_drm 
 +drm_kms_helper        233472  4 drm_vram_helper,bochs_drm 
 +syscopyarea            16384  1 drm_kms_helper 
 +sysfillrect            16384  1 drm_kms_helper 
 +sysimgblt              16384  1 drm_kms_helper 
 +fb_sys_fops            16384  1 drm_kms_helper 
 +drm_ttm_helper         16384  1 drm_vram_helper 
 +ttm                   114688  drm_vram_helper,drm_ttm_helper 
 +drm                   569344  7 drm_kms_helper,drm_vram_helper,bochs_drm,drm_ttm_helper,ttm 
 +ahci                   40960 
 +libahci                40960  1 ahci 
 +virtio_net             53248 
 +net_failover           24576  1 virtio_net 
 +ata_piix               36864 
 +serio_raw              16384  0 
 +failover               16384  1 net_failover 
 +libata                270336  ata_piix,libahci,ahci,ata_generic 
 +dm_mirror              28672  0 
 +dm_region_hash         20480  dm_mirror 
 +dm_log                 20480  dm_region_hash,dm_mirror 
 +dm_mod                151552  8 dm_log,dm_mirror 
 +fuse                  151552  3
 </code> </code>
 +
 +Pour ajouter un module, on peut utiliser la commande **insmod** ou **modprobe**. Cette dernière ajoute non seulement le module passé en argument mais également ses dépendances :
  
 <code> <code>
-[root@centos7 ~]# systemctl list-unit-files +[root@centos8 ~]# modprobe bonding 
-UNIT FILE                                     STATE    +[root@centos8 ~]# lsmod | more 
-proc-sys-fs-binfmt_misc.automount             static   +Module                  Size  Used by 
-dev-hugepages.mount                           static   +bonding               196608  0 
-dev-mqueue.mount                              static   +xt_CHECKSUM            16384  1 
-proc-fs-nfsd.mount                            static   +ipt_MASQUERADE         16384  3 
-proc-sys-fs-binfmt_misc.mount                 static   +xt_conntrack           16384  1 
-sys-fs-fuse-connections.mount                 static   +ipt_REJECT             16384  2 
-sys-kernel-config.mount                       static   +nft_compat             20480  16 
-sys-kernel-debug.mount                        static   +nf_nat_tftp            16384  0 
-tmp.mount                                     enabled  +nft_objref             16384  1 
-var-lib-nfs-rpc_pipefs.mount                  static   +nf_conntrack_tftp      16384  3 nf_nat_tftp 
-brandbot.path                                 disabled +nft_counter            16384  33 
-cups.path                                     enabled  +tun                    53248  1 
-systemd-ask-password-console.path             static   +bridge                192512  0 
-systemd-ask-password-plymouth.path            static   +stp                    16384  1 bridge 
-systemd-ask-password-wall.path                static   +llc                    16384  2 bridge,stp 
-session-33.scope                              static   +nft_fib_inet           16384 
-abrt-ccpp.service                             enabled  +nft_fib_ipv4           16384  1 nft_fib_inet 
-abrt-oops.service                             enabled  +nft_fib_ipv6           16384  1 nft_fib_inet 
-abrt-pstoreoops.service                       disabled +nft_fib                16384  3 nft_fib_ipv6,nft_fib_ipv4,nft_fib_inet 
-abrt-vmcore.service                           enabled  +nft_reject_inet        16384  5 
-abrt-xorg.service                             enabled  +nf_reject_ipv4         16384  2 nft_reject_inet,ipt_REJECT 
-abrtd.service                                 enabled  +nf_reject_ipv6         16384  1 nft_reject_inet 
-lines 1-23+--More--
 </code> </code>
  
-====Les fichiers .rhosts====+Pour supprimer un module, on peut utiliser la commande **rmmod** ou **modprobe -r**Cette dernière essaie de supprimer les dépendances non-utilisées :
  
-Le systeme rhosts presente une faille de securite importante pour un serveur Linux. Pour cette raisonil convient de supprimer les fichiers **.rhosts** des utilisateurs. Utilisez la commande suivante:+<code> 
 +[root@centos8 ~]# modprobe -r bonding 
 +[root@centos8 ~]# lsmod | more 
 +Module                  Size  Used by 
 +xt_CHECKSUM            16384  1 
 +ipt_MASQUERADE         16384 
 +xt_conntrack           16384 
 +ipt_REJECT             16384 
 +nft_compat             20480  16 
 +nf_nat_tftp            16384  0 
 +nft_objref             16384 
 +nf_conntrack_tftp      16384  3 nf_nat_tftp 
 +nft_counter            16384  33 
 +tun                    53248  1 
 +bridge                192512 
 +stp                    16384  1 bridge 
 +llc                    16384  2 bridge,stp 
 +nft_fib_inet           16384 
 +nft_fib_ipv4           16384  1 nft_fib_inet 
 +nft_fib_ipv6           16384  1 nft_fib_inet 
 +nft_fib                16384  3 nft_fib_ipv6,nft_fib_ipv4,nft_fib_inet 
 +nft_reject_inet        16384  5 
 +nf_reject_ipv4         16384  2 nft_reject_inet,ipt_REJECT 
 +nf_reject_ipv6         16384  1 nft_reject_inet 
 +nft_reject             16384  1 nft_reject_inet 
 +--More-- 
 +</code>
  
-  # find / -name "\.rhosts" -exec rm -f \{\} \; [Entree]+Les dépendances des modules sont résolues par la commande **modprobe** grâce aux fichier **/lib/modules/<version-du-noyau>/modules.dep**. Ce dernier peut être créé manuellement grâce à la commande **depmod** :
  
-====Les fichiers et les repertoires sans proprietaire====+<code> 
 +[root@centos8 ~]# more /lib/modules/`uname -r`/modules.dep 
 +kernel/arch/x86/events/amd/power.ko.xz: 
 +kernel/arch/x86/events/intel/intel-uncore.ko.xz: 
 +kernel/arch/x86/events/intel/intel-cstate.ko.xz: 
 +kernel/arch/x86/events/rapl.ko.xz: 
 +kernel/arch/x86/kernel/cpu/mce/mce-inject.ko.xz: 
 +kernel/arch/x86/crypto/des3_ede-x86_64.ko.xz: kernel/crypto/des_generic.ko.xz 
 +kernel/arch/x86/crypto/camellia-x86_64.ko.xz: 
 +kernel/arch/x86/crypto/blowfish-x86_64.ko.xz: kernel/crypto/blowfish_common.ko.xz 
 +kernel/arch/x86/crypto/twofish-x86_64.ko.xz: kernel/crypto/twofish_common.ko.xz 
 +kernel/arch/x86/crypto/twofish-x86_64-3way.ko.xz: kernel/arch/x86/crypto/twofish-x86_64.ko. 
 +xz kernel/crypto/twofish_common.ko.xz 
 +kernel/arch/x86/crypto/chacha20-x86_64.ko.xz: kernel/crypto/chacha20_generic.ko.xz 
 +kernel/arch/x86/crypto/serpent-sse2-x86_64.ko.xz: kernel/crypto/serpent_generic.ko.xz 
 +kernel/arch/x86/crypto/ghash-clmulni-intel.ko.xz: 
 +kernel/arch/x86/crypto/crc32c-intel.ko.xz: 
 +kernel/arch/x86/crypto/crc32-pclmul.ko.xz: 
 +kernel/arch/x86/crypto/sha512-ssse3.ko.xz: kernel/crypto/sha512_generic.ko.xz 
 +kernel/arch/x86/crypto/crct10dif-pclmul.ko.xz: 
 +kernel/arch/x86/crypto/poly1305-x86_64.ko.xz: kernel/crypto/poly1305_generic.ko.xz 
 +kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko.xz: kernel/arch/x86/crypto/camellia-x86 
 +_64.ko.xz 
 +kernel/arch/x86/crypto/cast5-avx-x86_64.ko.xz: kernel/crypto/cast5_generic.ko.xz kernel/cry 
 +--More--(0%) 
 +</code>
  
-Afin de dresser la liste des fichiers et des groupes sans proprietaires sur le serveur, il convient d'utiliser les deux commandes suivantes: +Il est possible d'obtenir des informations sur un module grâce à la commande **modinfo** :
- +
-  # find / -nouser -exec ls -l \{\} \; 2> sans_pro.txt [Entree] +
- +
-  # find / -nogroup -exec ls -l \{\} \; 2>> sans_pro.txt[Entree] +
- +
-Ces commandes produiront une liste éventuelle dans le fichier **sans_pro.txt**. +
- +
-L'examen de cette liste pourrait dévoiler des anomalies au quel cas il conviendrait de: +
- +
-  * modifier le propriétaire a root +
-  * modifier le groupe a root +
-  * modifier les permissions a 700 +
- +
-====Interdire les connexions de root via le reseau==== +
- +
-Le fichier de configuration des connexions de root est **/etc/securetty** :+
  
 <code> <code>
-[root@centos7 ~]# cat /etc/securetty +[root@centos8 ~]# modinfo bonding 
-console +filename:       /lib/modules/4.18.0-305.7.1.el8_4.x86_64/kernel/drivers/net/bonding/bonding.ko.xz 
-vc/1 +author:         Thomas Davis, tadavis@lbl.gov and many others 
-vc/+description:    Ethernet Channel Bonding Driver 
-vc/+license:        GPL 
-vc/4 +alias:          rtnl-link-bond 
-vc/5 +rhelversion:    8.
-vc/6 +srcversion:     445F4CC9A2F7E64E3A87FD0 
-vc/+depends:         
-vc/8 +intree:         Y 
-vc/9 +name:           bonding 
-vc/10 +vermagic:       4.18.0-305.7.1.el8_4.x86_64 SMP mod_unload modversions  
-vc/11 +sig_id:         PKCS#7 
-tty1 +signer:         CentOS kernel signing key 
-tty2 +sig_key:        3B:5A:0A:B8:8E:4A:51:C0:AA:FF:97:FD:CB:94:D6:B6:D2:46:B8:17 
-tty3 +sig_hashalgo:   sha256 
-tty4 +signature:      B2:3A:20:BE:2B:F3:E0:5A:1A:74:0E:69:76:40:2A:D4:80:10:2C:5A: 
-tty5 +                B7:F1:1E:7A:71:13:29:F0:0A:4A:28:EE:81:33:C8:C2:5C:BD:FF:E4: 
-tty6 +                3F:A9:15:A3:9A:0E:A7:98:9E:99:06:23:10:47:D3:B2:48:B3:F1:61: 
-tty7 +                BE:4B:B0:FC:62:B9:3B:D6:64:CC:E3:29:01:4D:91:92:32:FD:EB:54: 
-tty8 +                44:F1:2C:1B:23:30:F1:3E:EE:69:EA:94:54:D9:A0:8D:16:53:F5:20: 
-tty9 +                DE:38:A0:13:E8:2F:89:66:CB:11:D7:AA:30:37:7B:EC:DF:A1:69:29: 
-tty10 +                7F:4E:80:4D:34:6E:F2:07:01:FA:18:23:94:58:10:C6:97:27:68:B9: 
-tty11 +                D8:08:5E:9D:00:17:F4:1B:48:BE:CA:BF:5C:5A:A8:6D:36:EE:3F:95: 
-ttyS0 +                BA:BE:59:82:EE:7B:CA:BB:32:1E:E3:05:ED:C9:C2:C8:10:64:B9:29: 
-ttysclp0 +                B8:09:4B:79:42:65:1A:FA:99:96:BA:7E:2D:6E:75:F1:91:0E:F4:9A: 
-sclp_line0 +                8F:11:10:9F:70:BD:35:06:BE:F0:4C:D8:AB:D5:C4:E1:B3:A2:2A:CA: 
-3270/tty1 +                58:CA:9E:16:1D:0C:BE:9C:37:A1:82:20:6F:24:CD:23:63:F7:F5:BC: 
-hvc0 +                6E:81:14:F0:52:DA:04:0E:9D:CC:17:60:2D:B0:D8:BD:6E:2C:AD:E7: 
-hvc1 +                50:48:49:B6:57:96:AC:FD:A4:29:33:01:43:92:32:88:A2:AC:CB:93: 
-hvc2 +                2F:C3:29:F3:01:77:84:00:AB:AA:C8:59:43:F1:DA:90:7B:5F:9A:A9: 
-hvc3 +                CA:60:97:34:85:5E:98:56:73:03:0D:D7:8D:A6:AB:51:D4:8C:92:91: 
-hvc4 +                0C:0A:BA:6B:92:01:16:FE:8B:86:80:11:5F:8E:21:BD:C2:2F:02:58: 
-hvc5 +                A6:CF:6C:E3:87:28:8B:4D:CE:54:8C:00:B3:F7:AE:9E:01:81:1E:83: 
-hvc6 +                AE:6D:58:B0:10:98:36:D9:69:76:E2:C0:E2:15:94:3B:D4:14:19:D9: 
-hvc7 +                59:86:75:31 
-hvsi0 +parm:           max_bonds:Max number of bonded devices (int) 
-hvsi1 +parm:           tx_queues:Max number of transmit queues (default = 16) (int) 
-hvsi2 +parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int) 
-xvc0+parm:           num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int) 
 +parm:           miimon:Link check interval in milliseconds (int) 
 +parm:           updelay:Delay before considering link up, in milliseconds (int) 
 +parm:           downdelay:Delay before considering link down, in milliseconds (int) 
 +parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int) 
 +parm:           mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp) 
 +parm:           primary:Primary network device to use (charp) 
 +parm:           primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp) 
 +parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp) 
 +parm:           ad_select:802.3ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp) 
 +parm:           min_links:Minimum number of available links before turning on carrier (int) 
 +parm:           xmit_hash_policy:balance-alb, balance-tlb, balance-xor, 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4, 5 for vlan+srcmac (charp) 
 +parm:           arp_interval:arp interval in milliseconds (int) 
 +parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp) 
 +parm:           arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp) 
 +parm:           arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp) 
 +parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp) 
 +parm:           all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int) 
 +parm:           resend_igmp:Number of IGMP membership reports to send on link failure (int) 
 +parm:           packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int) 
 +parm:           lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
 </code> </code>
  
-Afin d'empêcher une connexion de root //directement// via le réseau et donc d'obliger une connexion en utilisant un compte d'utilisateur normal avant de passer en root grâce à la commande **su**ce fichier ne doit **pas** contenir des entrees du type **ttysX** ou X = 0,1,2 etc. +Dernièrementles fichiers dans le repertoire **/etc/modprobe.d** sont utilisés pour spécifier les options éventuelles à passer aux modules lors de leur chargement ainsi que les alias utilisés pour leur faire référence :
- +
-====Limiter le delai d'inactivite d'une session shell==== +
- +
-Une session de shell laissee ouverte inutilement et d'une maniere sans surveillance est un risque de securite. Verifiez donc le contenu du fichier **/etc/profile** :+
  
 <code> <code>
-[root@centos7 ~]# cat /etc/profile +[root@centos8 ~]# ls /etc/modprobe.d 
-# /etc/profile+firewalld-sysctls.conf  lockd.conf  nvdimm-security.conf  tuned.conf 
 +kvm.conf                mlx4.conf   truescale.conf        vhost.conf
  
-System wide environment and startup programs, for login setup +[root@centos8 ~]cat /etc/modprobe.d/kvm.conf  
-# Functions and aliases go in /etc/bashrc +# Setting modprobe kvm_intel/kvm_amd nested = 1 
- +only enables Nested Virtualization until the next reboot or 
-It's NOT a good idea to change this file unless you know what you +module reloadUncomment the option applicable 
-are doingIt's much better to create a custom.sh shell script in +# to your system below to enable the feature permanently
-/etc/profile.d/ to make custom changes to your environment, as this +
-# will prevent the need for merging in future updates+User changes in this file are preserved across upgrades
- +
-pathmunge () { +For Intel 
-    case ":${PATH}:" in +#options kvm_intel nested=1 
-        *:"$1":*) +# 
-            ;; +# For AMD 
-        *) +#options kvm_amd nested=1
-            if [ "$2" = "after" ] ; then +
-                PATH=$PATH:$1 +
-            else +
-                PATH=$1:$PATH +
-            fi +
-    esac +
-+
- +
- +
-if [ -x /usr/bin/id ]; then +
-    if [ -z "$EUID" ]; then +
-        ksh workaround +
-        EUID=`/usr/bin/id -u` +
-        UID=`/usr/bin/id -ru` +
-    fi +
-    USER="`/usr/bin/id -un`" +
-    LOGNAME=$USER +
-    MAIL="/var/spool/mail/$USER" +
-fi +
- +
-Path manipulation +
-if [ "$EUID" = "0" ]; then +
-    pathmunge /usr/sbin +
-    pathmunge /usr/local/sbin +
-else +
-    pathmunge /usr/local/sbin after +
-    pathmunge /usr/sbin after +
-fi +
- +
-HOSTNAME=`/usr/bin/hostname 2>/dev/null` +
-HISTSIZE=1000 +
-if [ "$HISTCONTROL" = "ignorespace" ] ; then +
-    export HISTCONTROL=ignoreboth +
-else +
-    export HISTCONTROL=ignoredups +
-fi +
- +
-export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL +
- +
-# By default, we want umask to get setThis sets it for login shell +
-Current threshold for system reserved uid/gids is 200 +
-You could check uidgid reservation validity in +
-/usr/share/doc/setup-*/uidgid file +
-if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" "`/usr/bin/id -un`" ]; then +
-    umask 002 +
-else +
-    umask 022 +
-fi +
- +
-for i in /etc/profile.d/*.sh ; do +
-    if [ -r "$i" ]; then +
-        if [ "${-#*i}" !"$-" ]; then  +
-            . "$i" +
-        else +
-            . "$i" >/dev/null +
-        fi +
-    fi +
-done +
- +
-unset i +
-unset -f pathmunge+
 </code> </code>
  
-A ce fichier doivent etre ajoutées les deux lignes suivantes:+=====LAB #2 - Compilation et installation du noyau et des modules=====
  
-<file> +Activez le dépôt **CentOS-Stream-PowerTools** en passant la directive **enabled** à **1** :
-Readonly TMOUT=300 +
-Export TMOUT +
-</file> +
- +
-Par cette action, vous définissez le délai d’inactivité d'une session shell a une durée de 5 minutes. +
- +
-Dernièrement, afin de se protéger contre des permissions trop permissives lors de la création de fichiers et de répertoires, il convient de passer la valeur d'**umask** à **077** dans le fichier **/etc/profile**. +
- +
-====Renforcer la securite d'init==== +
- +
-===Les Distributions SysVInit=== +
- +
-Le fichier **/etc/inittab** est utilise pour configurer le démarrage de votre serveur.  +
- +
-La première modification à effectuer est de spécifier le niveau d’exécution par défaut a 3 au lieu de 5. Ceci permet de ne pas lancer les sessions graphiques sur une serveur de production. Cherchez donc la ligne suivante: +
- +
-<file> +
-id:5:initdefault: +
-</file> +
- +
-Modifiez-la en: +
- +
-<file> +
-id:3:initdefault: +
-</file> +
- +
-Le mode **single user** de démarrage de Linux n'est pas habituellement protégé par un mot de passe. Afin de remédier a cela, ajoutez les lignes suivantes: +
- +
-<file> +
-# Single user mode +
-~~:S:wait:/sbin/sulogin +
-</file> +
- +
-Dernièrement, afin d'empêcher une personne a redémarrer le serveur à l'aide des touches **ctrl+alt+supp**, il convient de mettre en commentaire la ligne correspondante: +
- +
-<file> +
-# ca::ctrlaltdel:/sbin/shutdown -t3 -r now +
-</file> +
- +
-===Les Distributions Upstart=== +
- +
-Afin d'empêcher une personne à redémarrer le serveur à l'aide des touches **ctrl+alt+supp**, éditez le fichier **/etc/init/control-alt-delete.conf** en modifiant la ligne suivante : +
- +
-<file> +
-exec /sbin/shutdown -r now "Control-Alt-Delete pressed" +
-</file> +
- +
-en  +
- +
-<file> +
-#exec /sbin/shutdown -k now "Control-Alt-Delete pressed" +
-</file> +
- +
-====Renforcer la sécurité du Noyau==== +
- +
-===La commande sysctl=== +
- +
-Les fichiers dans le répertoire **/proc/sys** peuvent être administrés par la commande **sysctl** en temps réel.  +
- +
-La commande **sysctl** applique les règles consignés dans le fichier **/etc/sysctl.conf** au démarrage de la machine. +
- +
-Saisissez la commande :+
  
 <code> <code>
-[root@centos7 ~]# cat /etc/sysctl.conf +[root@centos8 ~]# vi /etc/yum.repos.d/CentOS-Stream-PowerTools.repo  
-System default settings live in /usr/lib/sysctl.d/00-system.conf+[root@centos8 ~]cat /etc/yum.repos.d/CentOS-Stream-PowerTools.repo  
-To override those settings, enter new settings hereor in an /etc/sysctl.d/<name>.conf file+# CentOS-PowerTools.repo 
 +
 +# The mirror system uses the connecting IP address of the client and the 
 +# update status of each mirror to pick mirrors that are updated to and 
 +# geographically close to the client You should use this for CentOS updates 
 +# unless you are manually picking other mirrors
 +# 
 +# If the ###mirrorlist= does not work for youas a fall back you can try the 
 +# remarked out baseurl= line instead.
 # #
-# For more information, see sysctl.conf(5) and sysctl.d(5). 
- 
-[root@centos7 ~]# cat /usr/lib/sysctl.d/00-system.conf 
-# Kernel sysctl configuration file 
 # #
-# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and 
-# sysctl.conf(5) for more details. 
  
-# Disable netfilter on bridges. +[Stream-PowerTools] 
-net.bridge.bridge-nf-call-ip6tables = 0 +name=CentOS-Stream PowerTools 
-net.bridge.bridge-nf-call-iptables +###mirrorlist=http://###mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=PowerTools&infra=$infra 
-net.bridge.bridge-nf-call-arptables = 0 +baseurl=http://vault.centos.org/$contentdir/$stream/PowerTools/$basearch/os/ 
- +gpgcheck=1 
-Controls the maximum shared segment size, in bytes +enabled=1 
-kernel.shmmax = 4294967295 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
- +
-Controls the maximum number of shared memory segments, in pages +
- +
-[root@centos7 ~]ls -l /etc/sysctl.d+
-total 0 +
-lrwxrwxrwx. 1 root root 14 Jun  4 09:54 99-sysctl.conf -> ../sysctl.conf +
- +
-[root@centos7 ~]# cat /etc/sysctl.d/99-sysctl.conf  +
-# System default settings live in /usr/lib/sysctl.d/00-system.conf. +
-# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file +
-+
-# For more information, see sysctl.conf(5) and sysctl.d(5).+
 </code> </code>
  
-==Options de la commande== +Installez maintenant les paquets necéssaires :
- +
-Les options de la commande **sysctl** sont :+
  
 <code> <code>
-[root@centos7 ~]# sysctl --help+[root@centos8 ~]# dnf groupinstall "Development Tools" 
 +... 
 +[root@centos8 ~]# dnf install asciidoc audit-libs-devel bash bc binutils binutils-devel bison diffutils elfutils elfutils-devel elfutils-libelf-devel findutils flex gawk gcc gettext gzip hmaccalc hostname make module-init-tools ncurses-devel net-tools newt-devel numactl-devel openssl patch pciutils-devel perl perl-ExtUtils-Embed pesign redhat-rpm-config rpm-build rpmdevtools sh-utils tar xmlto xz zlib-devel rpmdevtools clang dwarves java-devel kabi-dw libbabeltrace-devel libbpf-devel libcap-devel libmnl-devel libnl3-devel libtraceevent-devel llvm python3-devel python3-docutils 
 +... 
 +</code>
  
-Usage: +====2.1 - Déplacer /home====
- sysctl [options] [variable[=value] ...]+
  
-Options: +<WRAP center round alert 60%> 
-  -a, --all            display all variables +**Important** Il n'est pas conseillé de compiler en tant que root pour des raisons de sécurité. Pour pouvoir utiliser le compte d'un utilisateur pour créer un nouveau noyaucelui-ci doit disposer de plus de 10 Go d'espace libre. 
-  -A                   alias of -a +</WRAP>
-  -X                   alias of -a +
-      --deprecated     include deprecated parameters to listing +
-  -b, --binary         print value without new line +
-  -e, --ignore         ignore unknown variables errors +
-  -N, --names          print variable names without values +
-  -n, --values         print only values of a variables +
-  -p, --load[=<file>]  read values from file +
-  -f                   alias of -p +
-      --system         read values from all system directories +
-  -r, --pattern <expression> +
-                       select setting that match expression +
-  -q, --quiet          do not echo variable set +
-  -w, --write          enable writing a value to variable +
-  -o                   does nothing +
-  -x                   does nothing +
-  -d                   alias of -h+
  
- -h, --help     display this help and exit +<WRAP center round todo 60%> 
- -V, --version  output version information and exit+**A faire** **Déconnectez-vous** de votre session **CentOS8_SSH_10.0.2.45** et re-connectez-vous à la VM en tant que root en utilisant la connexion **CentOS8_ROOT_10.0.2.45**. 
 +</WRAP>
  
-For more details see sysctl(8). +Créez ensuite une seule partition sur **/dev/sdc** :
-</code>+
  
-<WRAP center round important 50%+<code
-**Important** : Consultez la page de la traduction du manuel de **sysctl** **[[http://www.delafond.org/traducmanfr/man/man8/sysctl.8.html|ici]]** pour comprendre la commande. +[root@centos8 ~]# fdisk /dev/sdc
-</WRAP>+
  
-=====LAB #1 System Hardening à l'aide de l'outil Bastille=====+Welcome to fdisk (util-linux 2.32.1). 
 +Changes will remain in memory only, until you decide to write them. 
 +Be careful before using the write command.
  
-====Présentation====+Device does not contain a recognized partition table. 
 +Created a new DOS disklabel with disk identifier 0xc321702b.
  
-Bastille Linux est un script interactif de renforcement de la sécurité pour certaines distributions de Linux dont %%RHEL%%%%CentOS%% et Debian.+Command (m for help): n 
 +Partition type 
 +     primary (0 primary0 extended, 4 free) 
 +     extended (container for logical partitions) 
 +Select (default p): 
  
-====Installation====+Using default response p. 
 +Partition number (1-4, default 1):  
 +First sector (2048-41943039, default 2048):  
 +Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): 
  
-Installez le dépôt EPEL :+Created a new partition 1 of type 'Linux' and of size 20 GiB.
  
-<code> +Command (m for help): w 
-[root@centos7 ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm +The partition table has been altered. 
-[root@centos7 ~]# rpm -ivh epel-release-latest-7.noarch.rpm+Calling ioctl() to re-read partition table
 +Syncing disks.
 </code> </code>
  
-Commencez par installer la dépendance de Bastille :+Créez maintenant un système de fichiers ext4 sur **/dev/sdc1** :
  
 <code> <code>
-[root@centos7 ~]# yum install perl-Curses+[root@centos8 ~]# mkfs.ext4 /dev/sdc1 
 +mke2fs 1.45.6 (20-Mar-2020) 
 +Discarding device blocks: done                             
 +Creating filesystem with 16776960 4k blocks and 4194304 inodes 
 +Filesystem UUID: dc92c0d7-919b-4fff-8719-53e9e7e628dd 
 +Superblock backups stored on blocks:  
 +        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,  
 +        4096000, 7962624, 11239424 
 + 
 +Allocating group tables: done                             
 +Writing inode tables: done                             
 +Creating journal (65536 blocks): done 
 +Writing superblocks and filesystem accounting information: done 
 </code> </code>
  
-Téléchargez et installez Bastille :+Montez **/dev/sdc1** sur /mnt :
  
 <code> <code>
-[root@centos7 ~]# wget https://www.dropbox.com/s/sz0ggexdkkduumb/Bastille-3.0.9-1.0.noarch.rpm+[root@centos8 ~]# mount /dev/sdc1 /mnt
 </code> </code>
 +
 +Copiez le contenu de /home vers /mnt :
  
 <code> <code>
-[root@centos7 ~]# yum localinstall Bastille-3.0.9-1.0.noarch.rpm --nogpgcheck+[root@centos8 ~]# cp -a /home/* /mnt
 </code> </code>
  
-Dernièrement créez un lien symbolique :+Démontez /dev/sdc1 et déplacez /home vers /root :
  
 <code> <code>
-[root@centos7 /]# ln -s /usr/lib/Bastille /usr/lib64/+[root@centos8 ~]# umount /mnt 
 +[root@centos8 ~]# mv /home /root
 </code> </code>
  
-===Utilisation=== +Identifiez l'UUID de /dev/sdc1 :
- +
-Pour démarrez bastille en mode texte, saisissez la commande suivante : +
- +
-  # /usr/sbin/bastille -c [Entrée] +
- +
-Pour démarrez bastille en mode graphique, saisissez la commande suivante : +
- +
-  # /usr/sbin/bastille -x [Entrée] +
- +
-<WRAP center round todo 50%> +
-**A Faire** - Lancez Bastille et répondez aux questions posées. Ré-amorcez votre machine virtuelle et testez le résultat. +
-</WRAP> +
- +
-=====LAB #2 - Mise en place de SELinux pour sécuriser le serveur===== +
- +
-====Introducton==== +
- +
-L'approche %%SELinux%% (//Security Enhanced Linux//) à la sécurité est une approche de type **TE**. Elle essaie aussi d'intégrer les notions des approches de type **RBAC**, **MAC** et **MLS** sous la forme de **MCS** : +
-ur +
-^ Type de Sécurité ^ Nom ^ Description ^ +
-| TE |  //Type enforcement//  | Chaque objet a une étiquette appelé //type// pour un fichier et //domaine// pour un processus. La politique de sécurité définit l'interaction entre les types et les domaines. | +
-| RBAC |  //Role Based Access Control//  | Un utilisateur a un ou plusieurs rôles. Les droits sont attribués aux rôles. | +
-| MAC |  //Mandatory Access Control//  | L'accès aux objets est en fonction de la classification de l'objet (Très secret, Secret, Confidentiel, Public). L'administrateur définit la politique de sécurité et les utilisateurs s'y conforment. | +
-| MLS |  //Multi-Level Security//  | Les politiques de sécurité imposent que qu'un sujet doit dominer un objet pour pouvoir le lire tandis que l'objet doit dominer le sujet pour que ce dernier puisse y écrire. | +
- +
-Même quand le modèle %%SELinux%% de sécurité est actif, la sécurité type DAC est toujours active. Cependant dans le cas où la sécurité du type DAC autorise une action, %%SELinux%% va évaluer cette action par rapport à ses propres règles avant de l'autoriser. +
- +
-%%SELinux%% évalue toujours des **//actions//** tentées par des **//sujets//** sur des **//objets//**.  +
- +
-Dans le contexte de %%SELinux%% : +
- +
-  * un **//sujet//** est toujours un **processus**, +
-  * un **//objet//** peut être un fichier, un répertoire, un autre processus ou une ressource système, +
-  * une **//action//** est une **permission**. +
- +
-Chaque **//classe d'objet//** possède un jeu de permissions possibles ou **//actions//** qui peuvent être uniques à la classe ou bien **héritées** d'autres classes. +
- +
-====Définitions==== +
- +
-===Security Context=== +
- +
-%%SELinux%% associe un //Security Context// (SC) à chaque **//objet//** et **//sujet//** du système.  +
- +
-Un SC prend la forme **identité:rôle:type:niveau** : +
- +
-^ Nom ^ Descriptions ^ +
-| Identité | Le nom du propriétaire de l'objet. Une identité est associée à des rôles. Par défaut l'utilisateur à une identité de **user_u**. | +
-| Rôle | Essentiellement appliqué aux processus, le rôle est appelé une domaine. Dans le cas d'un rôle de fichier, celui-ci est toujours **object_r**. Un rôle se termine généralement par **_r**. | +
-| Type | Définit la classification de sécurité de l'objet. Un type se termine généralement par **_t**.| +
-| Niveau | Un niveau est un attribut de MLS et MCS. Une plage MLS est une paire de niveaux exprimée en utilisant la syntaxe //niveaubas-niveauhaut//. Chaque niveau est une paire exprimée en tant que sensibilitéhaut-sensibilitébas:catégoriehaut:catégoriebas par exemple s0-s0:c0.c1023. Il est important de noter que s0-s0 s'exprime aussi s0 et c0, c1, c2, c3 est exprimé c0.c3. | +
- +
-Sous RHEL/CentOS 7, le fichier **/etc/selinux/targeted/setrans.conf** contient la correspondance entre les niveaux et leurs valeurs compréhensibles par l'utilisateur :+
  
 <code> <code>
-[root@centos7 /]# cat /etc/selinux/targeted/setrans.conf +[root@centos8 ~]# ls -l /dev/disk/by-uuid| grep sdc1 
-+lrwxrwxrwx. 1 root root 10 Jul 19 12:02 f76d6b66-985b-4a91-af9c-4987e8c1443c -> ../../sdc 
-# Multi-Category Security translation table for SELinux +[root@centos8 ~]
-#  +
-# Uncomment the following to disable translation libary +
-# disable=1 +
-+
-# Objects can be categorized with 0-1023 categories defined by the admin. +
-# Objects can be in more than one category at a time. +
-# Categories are stored in the system as c0-c1023 Users can use this +
-# table to translate the categories into a more meaningful output+
-Examples: +
-# s0:c0=CompanyConfidential +
-# s0:c1=PatientRecord +
-# s0:c2=Unclassified +
-# s0:c3=TopSecret +
-# s0:c1,c3=CompanyConfidentialRedHat +
-s0=SystemLow +
-s0-s0:c0.c1023=SystemLow-SystemHigh +
-s0:c0.c1023=SystemHigh+
 </code> </code>
  
-Dans le contexte d'un SC pour un **//sujet//**, le champ **identité** indique les privilèges de l'utilisateur %%SELinux%% utilisés par le **//sujet//**. +Editez le fichier **/etc/fstab** et ajoutez une ligne pour /dev/sdc1 :
- +
-Dans le contexte d'un SC pour un **//objet//**, le champ **identité** indique à quel utilisateur %%SELinux%% appartient l'**//objet//**. +
- +
-%%SELinux%% maintient sa propre liste d'utilisateurs, différente de la liste DAC de Linux. Il existe cependant une correspondance entre les deux listes de façon à ce que les utilisateurs MAC puissent être soumissent aux restrictions de %%SELinux%% :+
  
 <code> <code>
-[root@centos7 /]# /usr/sbin/semanage login -l+[root@centos8 ~]# vi /etc/fstab 
 +[root@centos8 ~]# cat /etc/fstab
  
-Login Name           SELinux User         MLS/MCS Range        Service +
- +/etc/fstab 
-__default__          unconfined_u         s0-s0:c0.c1023       * +# Created by anaconda on Wed Jun 16 06:21:32 2021 
-root                 unconfined_u         s0-s0:c0.c1023       * +
-system_u             system_u             s0-s0:c0.c1023       *  +# Accessible filesystems, by reference, are maintained under '/dev/disk/'
 +# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. 
 +
 +# After editing this file, run 'systemctl daemon-reload' to update systemd 
 +# units generated from this file
 +
 +/dev/mapper/cl_centos8-root /                       xfs     defaults        0 0 
 +UUID=1c04981e-5317-4b73-9695-3ce25246835d /boot                   ext4    defaults        1 2 
 +/dev/mapper/cl_centos8-swap swap                    swap    defaults        0 0 
 +UUID=f76d6b66-985b-4a91-af9c-4987e8c1443c /home     ext4          defaults            1 2
 </code> </code>
  
-===Domains et Types=== +Créez le point de montage /home :
- +
-Le **Domain** est l'endroit d'exécution d'un processus. Chaque processus a un **Domain**. Le **Domain** détermine les accès du processus. +
- +
-Le **Domain** contient des **//objets//** et des **//sujets//** qui interagissent ensemble. Ce modèle, où chaque **//sujet//** se voit attribué à un **Domain** et où uniquement certaines opérations sont permises, est appelé **//Type Enforcement//**. +
- +
-Dans %%SELinux%% on utilise le mot : +
- +
-  * **Domain** pour un processus, +
-  * **Type** pour un fichier. +
- +
-===Roles=== +
- +
-Un **Rôle** est comme un utilisateur dans le système de sécurité DAC de Linux. Chaque utilisateur autorisé peut assumer l'identité du **Rôle** afin d'exécuter les commandes liées au **Rôle**. +
- +
-===Politiques de Sécurité=== +
- +
-Une politique de sécurité définit les SC de chaque application. Elle définit des droits d'accès des domaines aux types. Il y a deux types de politique possible : +
- +
-^ Politique ^ Description ^ +
-| targeted | Les politiques de sécurité ne s'appliquent qu'à certaines applications | +
-| mls | Multi Level Security protection | +
- +
-Les politiques de sécurité se trouvent dans le répertoire **/etc/selinux** :+
  
 <code> <code>
-[root@centos7 /]# ls -lR /etc/selinux/ | more +[root@centos8 ~]# mkdir /home
-/etc/selinux/: +
-total 12 +
--rw-r--r--. 1 root root  547 Dec 10  2015 config +
-drwx------. 2 root root    6 Apr 23 16:24 final +
--rw-r--r--. 1 root root 2321 Aug  4  2017 semanage.conf +
-drwxr-xr-x. 7 root root 4096 Apr 23 16:24 targeted +
-drwxr-xr-x. 2 root root    6 Aug  4  2017 tmp +
- +
-/etc/selinux/final: +
-total 0 +
- +
-/etc/selinux/targeted: +
-total 24 +
-drwx------. 3 root root 4096 Apr 23 16:24 active +
--rw-r--r--. 1 root root 2623 Mar  7 15:19 booleans.subs_dist +
-drwxr-xr-x. 4 root root 4096 Apr 23 16:20 contexts +
-drwxr-xr-x. 2 root root    6 Mar  7 15:19 logins +
-drwxr-xr-x. 3 root root   19 Apr 23 16:41 modules +
-drwxr-xr-x. 2 root root   22 Apr 23 16:41 policy +
--rw-------. 1 root root    0 Mar  7 14:52 semanage.read.LOCK +
--rw-------. 1 root root    0 Mar  7 14:52 semanage.trans.LOCK +
--rw-r--r--. 1 root root  607 Mar  7 15:19 setrans.conf +
--rw-r--r--. 1 root root  176 Apr 23 16:24 seusers +
---More--+
 </code> </code>
  
-Afin d'utiliser SELinux en ligne de commande sous RHEL/CentOS 7, il est nécessaire d'installer le paquet **setools-console** :+Montez /dev/sdc1 :
  
 <code> <code>
-[root@centos7 ~]# yum install setools-console+[root@centos8 ~]# mount -
 +[root@centos8 ~]# mount 
 +sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) 
 +proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) 
 +devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=1882880k,nr_inodes=470720,mode=755) 
 +securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) 
 +tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel) 
 +devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000) 
 +tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755) 
 +tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755) 
 +cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) 
 +pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel) 
 +bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700) 
 +cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb) 
 +cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory) 
 +cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct) 
 +cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,rdma) 
 +cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids) 
 +cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset) 
 +cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event) 
 +cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer) 
 +cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio) 
 +cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio) 
 +cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices) 
 +none on /sys/kernel/tracing type tracefs (rw,relatime,seclabel) 
 +configfs on /sys/kernel/config type configfs (rw,relatime) 
 +/dev/mapper/cl_centos8-root on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) 
 +selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) 
 +mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel) 
 +hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=2M) 
 +debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel) 
 +systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=40,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=6022) 
 +fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) 
 +/dev/sda1 on /boot type ext4 (rw,relatime,seclabel) 
 +sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) 
 +tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=382500k,mode=700,uid=1000,gid=1000) 
 +tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=382500k,mode=700,uid=42,gid=42) 
 +gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) 
 +tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=382500k,mode=700) 
 +gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0) 
 +/dev/sdc1 on /home type ext4 (rw,relatime,seclabel)
 </code> </code>
  
-Pour consulter les statistiques de la politique, il convient d'utiliser la commande **seinfo** :+Notez la taille de /home :
  
 <code> <code>
-[root@centos7 ~]# seinfo +[root@centos8 ~]# df -h 
- +Filesystem                   Size  Used Avail Use% Mounted on 
-Statistics for policy file: /sys/fs/selinux/policy +devtmpfs                     1.8G      1.8G   0% /dev 
-Policy Version & Type: v.28 (binary, mls) +tmpfs                        1.9G      1.9G   0% /dev/shm 
- +tmpfs                        1.9G  9.4M  1.9G   1% /run 
-   Classes:            94    Permissions:       262 +tmpfs                        1.9G      1.9G   0% /sys/fs/cgroup 
-   Sensitivities:          Categories:       1024 +/dev/mapper/cl_centos8-root   28G  5.2G   23G  19% / 
-   Types:            4747    Attributes:        251 +/dev/sda1                    976M  289M  620M  32% /boot 
-   Users:                  Roles:              14 +tmpfs                        374M   16K  374M   1% /run/user/1000 
-   Booleans:          307    CondExpr.:       356 +tmpfs                        374M  1.2M  373M   1% /run/user/42 
-   Allow:          101746    Neverallow:          +/dev/sdc1                     63G   67M   60G   1% /home
-   Auditallow:        155    Dontaudit:        8846 +
-   Type_trans:      17759    Type_change:        74 +
-   Type_member:        35    Role allow:         39 +
-   Role_trans:        416    Range_trans:      5697 +
-   Constraints:       109    Validatetrans:       0 +
-   Initial SIDs:       27    Fs_use:             29 +
-   Genfscon:          105    Portcon:           602 +
-   Netifcon:            0    Nodecon:             0 +
-   Permissives:            Polcap:              2+
 </code> </code>
  
-<WRAP center round important 50%> +<WRAP center round todo 60%> 
-**Important** : Notez ici le grand nombre de la catégorie **Dontaudit**.+**A faire** - **Déconnectez-vous** de votre session **CentOS8_ROOT_10.0.2.45** et re-connectez-vous à la VM en tant que trainee en utilisant la connexion **CentOS8_SSH_10.0.2.45**.
 </WRAP> </WRAP>
  
-===Langage de Politiques===+====2.2 - Préparer l'Environnement====
  
-Un politique est composé de centaines de directives. Les principales directives sont :+Pour créer l'arborescence de l'environnement de création de paquets dans /home/trainee, utilisez la commande **rpmdev-setuptree** :
  
-==allow==+<code> 
 +[trainee@centos8 ~]$ rpmdev-setuptree 
 +...> 
 +[trainee@centos8 ~]$ ls -laR rpmbuild/ 
 +rpmbuild/: 
 +total 28 
 +drwxrwxr-x.  7 trainee trainee 4096 Jul 19 12:10 . 
 +drwxr-xr-x. 17 trainee trainee 4096 Jul 19 12:10 .. 
 +drwxrwxr-x.  2 trainee trainee 4096 Jul 19 12:10 BUILD 
 +drwxrwxr-x.  2 trainee trainee 4096 Jul 19 12:10 RPMS 
 +drwxrwxr-x.  2 trainee trainee 4096 Jul 19 12:10 SOURCES 
 +drwxrwxr-x.  2 trainee trainee 4096 Jul 19 12:10 SPECS 
 +drwxrwxr-x.  2 trainee trainee 4096 Jul 19 12:10 SRPMS
  
-**allow** autorise l'accès d'un processus d'un domaine à des fichiers appartenant à un type donnéLe format de la directive est :+rpmbuild/BUILD: 
 +total 8 
 +drwxrwxr-x2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 ..
  
-  allow user_t domaine_t file (read execute getattr) ;+rpmbuild/RPMS: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 ..
  
-Dans cette directive :+rpmbuild/SOURCES: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 ..
  
-  * user_t est le type de fichier, +rpmbuild/SPECS: 
-  * domaine_t est le domaine des processus qui sont autorisés par allow, +total 8 
-  * file (droit1 droit2 etc) est la liste des permissions accordées.+drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 ..
  
-Les permissions possibles sont :+rpmbuild/SRPMS: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 .. 
 +</code>
  
-  * read +Téléchargez le rpm source du noyau :
-  * write +
-  * append +
-  * execute +
-  * getattr +
-  * setattr +
-  * lock +
-  * link +
-  * unlink +
-  * rename +
-  * ioctl+
  
-==type==+<code> 
 +[root@centos8 ~]# uname -a 
 +Linux centos8.ittraining.loc 4.18.0-553.6.1.el8.x86_64 #1 SMP Thu May 30 04:13:58 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  
-La directive **type** définit un type %%SELinux%%. Le type se termine généralement par **_t**.+[root@centos8 ~]# cat /etc/centos-release 
 +CentOS Stream release 8
  
-**auditallow, dontaudit**+[trainee@centos8 ~]$ wget https://mirror.stream.centos.org/SIGs/8/kmods/source/kernels/kernel-4.18.0-553.16.1.el8_10.src.rpm 
 +</code>
  
-La directive **auditallow** demande l'écriture d'un message de type **avc** dans les journaux. Elle n'est associée à aucune restriction.+Installez maintenant les dépendances pour le rpm source en tant que root :
  
-L'inverse peut être obtenue avec **dontaudit**, à savoir, cette directive demande à ce qu'il n'y ait pas de journalisation après une interdiction.+<code> 
 +[trainee@centos8 ~]$ su - 
 +Mot de passe : fenestros
  
-===type_transition===+[root@centos8 ~]# dnf install yum-utils 
 +...
  
-Normalement quand un fichier est créé, il hérite du SC du répertoire parentDe même quand un processus %%SELinux%% active un nouveau processus, ce dernier s'exécute dans le même domaine que son parentLa directive type_transition permet de modifier ce comportement.+[root@centos8 ~]# yum-builddep /home/trainee/kernel-4.18.0-553.16.1.el8_10.src.rpm 
 +... 
 +</code>
  
-===Décisions de SELinux===+Installez maintenant le paquet **kernel-4.18.0-553.16.1.el8_10.src.rpm** :
  
-Il existe deux types de décisions auxquelles %%SELinux%% doit faire face :+<code> 
 +[root@centos8 ~]# exit 
 +logout 
 +[trainee@centos8 ~]$ rpm -Uvh kernel-4.18.0-553.16.1.el8_10.src.rpm 
 +Updating / installing... 
 +   1:kernel-4.18.0-553.16.1.el8_10      warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +################################# [100%
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warning: group mockbuild does not exist - using root 
 +warning: user mockbuild does not exist - using root 
 +warninggroup mockbuild does not exist - using root 
 +</code>
  
-  * **Décisions d'Accès** +<WRAP center round important 60%> 
-  * **Décisions de Transition**+**Important** - Les erreurs sont sans importance. 
 +</WRAP>
  
-==Décisions d'Accès==+====2.3 - Préparer l'Arborescence Source du Noyau====
  
-Dans ce type de décision %%SELinux%% doit décider d'accorder ou non la permission à : +Naviguez vers le repertoire **~/rpmbuild/SPECS** et utilisez la commande **rpmbuild** pour préparer l'arborescence source du noyau :
- +
-  * un **//sujet//** de faire quelque chose à un **//objet//** existant, +
-  * un **//sujet//** de créer de nouvelles choses dans le **Domain**.  +
- +
-==Décisions de Transition== +
- +
-Dans ce type de décision %%SELinux%% doit décider d'accorder ou non la permission : +
- +
-  d'invoquer un processus dans un **Domain** différent du **Domain** courant du **//sujet//**, +
-  * de créer des **//objets//** dans différents **Types** que le répertoire parent de l'**//objet//**. +
- +
-====Commandes SELinux==== +
- +
-^ Commande ^ Description ^ +
-| chcon | Changer le SC d'un fichier | +
-| audit2allow | Générer la source de la règle de sécurité à l'origine d'une erreur | +
-| restorecon | Restaurer le SC par défaut à un ou plusieurs fichiers | +
-| setfiles -n | Vérifier si les SC sont corrects +
-| semodule | Gèrer les modules de politiques | +
-| semodule -i | Installer un module de politiques | +
-| checkmodule | Compiler un module | +
-| semodule_package | Créer un module installable par semodule | +
-| semanage | Administrer une politique | +
-| audit2allow -M | Créer un module à partir d'un message d'audit | +
-| sesearch | Recherche des règles %%SELinux%% | +
-| seinfo | Effectuer des recherches dans la politique | +
-| getsebool | Affiche l'état d'un booléen | +
-| getsebool -a | Affiche l'état de l'ensemble des booléens | +
-| sestatus -b | Affiche l'état de l'ensemble des booléens | +
-| setsebool | Modifie l'état d'un booléen | +
-| togglesebool | Bascule la valeur d'un booléen | +
- +
-====Les Etats de SELinux==== +
- +
-%%SELinux%% connait trois états : +
- +
-^ Etat ^ Description ^ +
-| disabled | %%SELinux%% est inactif. | +
-| permissive | %%SELinux%% est actif mais tout est permis. Des interdictions ne font que de générer des messages d'erreurs dans les logs. | +
-| enforcing | %%SELinux%% est actif. | +
- +
-L'examen du contenu du fichier **/selinux/enforce** révèle une de deux valeurs qui correspondent à l'**état** de %%SELinux%% : +
- +
-^ Valeur ^ Description ^ +
-| 0 | %%SELinux%% est en mode //permissive//+
-| 1 | %%SELinux%% est en mode //enforcing//+
- +
-La configuration de l'activation de %%SELinux%% ainsi que son état est effectuée grâce au fichier **/etc/selinux/config** :+
  
 <code> <code>
-[root@centos7 /]# cat /etc/selinux/config +[trainee@centos7 ~]$ cd ~/rpmbuild/SPECS 
- +[trainee@centos7 SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec 
-# This file controls the state of SELinux on the system. +...
-# SELINUX= can take one of these three values: +
-#     enforcing SELinux security policy is enforced. +
-#     permissive SELinux prints warnings instead of enforcing. +
-#     disabled No SELinux policy is loaded. +
-SELINUX=enforcing +
-# SELINUXTYPE= can take one of three two values: +
-#     targeted Targeted processes are protected, +
-#     minimum - Modification of targeted policyOnly selected processes are protected +
-#     mls - Multi Level Security protection. +
-SELINUXTYPE=targeted +
 </code> </code>
  
-Afin de connaître l'état de %%SELinux%%il convient d'utiliser la commande **getenforce** :+l'issu du processusexaminez l'arborescence :
  
 <code> <code>
-[root@centos7 /]# getenforce +[trainee@centos8 SPECS]$ ls -la ~/rpmbuild/BUILD/kernel-4.18.0-305.7.1.el8_4/linux-4.18.0-305.7.1.el8.x86_64/ 
-Enforcing+total 812 
 +drwxr-xr-x.  26 trainee trainee   4096 Jul 14 03:13 . 
 +drwxr-xr-x.   3 trainee trainee   4096 Jul 14 03:12 .. 
 +drwxr-xr-x.  27 trainee trainee   4096 Jul 14 03:13 arch 
 +drwxr-xr-x.   3 trainee trainee   4096 Jun 14 10:33 block 
 +drwxr-xr-x.   2 trainee trainee   4096 Jul 14 03:13 certs 
 +-rw-r--r--.   1 trainee trainee  13079 Jun 14 10:33 .clang-format 
 +-rw-r--r--.   1 trainee trainee     59 Jun 14 10:33 .cocciconfig 
 +drwxr-xr-x.   2 trainee trainee   4096 Jul 14 03:13 configs 
 +-rw-r--r--.   1 trainee trainee    423 Jun 14 10:33 COPYING-4.18.0 
 +-rw-r--r--.   1 trainee trainee  98651 Jun 14 10:33 CREDITS 
 +drwxr-xr-x.   4 trainee trainee   4096 Jun 14 10:33 crypto 
 +drwxr-xr-x. 119 trainee trainee   4096 Jul 14 03:13 Documentation 
 +drwxr-xr-x. 137 trainee trainee   4096 Jun 14 10:33 drivers 
 +drwxr-xr-x.   2 trainee trainee   4096 Jul 14 03:13 firmware 
 +drwxr-xr-x.  73 trainee trainee   4096 Jun 14 10:33 fs 
 +-rw-r--r--.   1 trainee trainee     68 Jun 14 10:33 .get_maintainer.conf 
 +-rw-r--r--.   1 trainee trainee     31 Jun 14 10:33 .get_maintainer.ignore 
 +-rw-r--r--.   1 trainee trainee     76 Jun 14 10:33 .gitattributes 
 +-rw-r--r--.   1 trainee trainee   1639 Jun 14 10:33 .gitlab-ci-private.yml 
 +-rw-r--r--.   1 trainee trainee   1668 Jun 14 10:33 .gitlab-ci.yml 
 +drwxr-xr-x.  30 trainee trainee   4096 Jun 14 10:33 include 
 +drwxr-xr-x.   2 trainee trainee   4096 Jun 14 10:33 init 
 +drwxr-xr-x.   2 trainee trainee   4096 Jun 14 10:33 ipc 
 +-rw-r--r--.   1 trainee trainee   2245 Jun 14 10:33 Kbuild 
 +-rw-r--r--.   1 trainee trainee    575 Jun 14 10:33 Kconfig 
 +drwxr-xr-x.  19 trainee trainee   4096 Jul 14 03:13 kernel 
 +drwxr-xr-x.  20 trainee trainee  12288 Jul 14 03:13 lib 
 +drwxr-xr-x.   5 trainee trainee   4096 Jun 14 10:33 LICENSES 
 +-rw-r--r--.   1 trainee trainee   9559 Jun 14 10:33 .mailmap 
 +-rw-r--r--.   1 trainee trainee 471696 Jun 14 10:33 MAINTAINERS 
 +-rw-r--r--.   1 trainee trainee  61558 Jun 14 10:33 Makefile 
 +-rw-r--r--.   1 trainee trainee   1324 Jun 14 10:33 Makefile.rhelver 
 +-rw-r--r--.   1 trainee trainee      0 Jul 14 03:13 .mismatches 
 +drwxr-xr-x.   3 trainee trainee   4096 Jun 14 10:33 mm 
 +drwxr-xr-x.  72 trainee trainee   4096 Jun 14 10:33 net 
 +-rw-r--r--.   1 trainee trainee    800 Jun 14 10:33 README 
 +drwxr-xr-x.  28 trainee trainee   4096 Jun 14 10:33 samples 
 +-rw-r--r--.   1 trainee trainee      0 Jul 14 03:12 .scmversion 
 +drwxr-xr-x.  14 trainee trainee   4096 Jul 14 03:13 scripts 
 +drwxr-xr-x.  10 trainee trainee   4096 Jun 14 10:33 security 
 +drwxr-xr-x.  26 trainee trainee   4096 Jun 14 10:33 sound 
 +drwxr-xr-x.  33 trainee trainee   4096 Jun 14 10:33 tools 
 +drwxr-xr-x.   2 trainee trainee   4096 Jul 14 03:13 usr 
 +drwxr-xr-x.   4 trainee trainee   4096 Jun 14 10:33 virt
 </code> </code>
  
-Pour modifier l'état de %%SELinux%%, il convient d'utiliser la commande **setenforce** :+===Le Fichier .config=== 
 + 
 +Changez de répertoire de travail :
  
 <code> <code>
-[root@centos7 /]# setenforce permissive +[trainee@centos8 SPECS]$ cd ~/rpmbuild/BUILD/kernel-*/linux-*/
-[root@centos7 /]# getenforce +
-Permissive+
 </code> </code>
  
-La commande **sestatus** vous informe sur la configuration de %%SELinux%% et notamment sur la version de la politique utilisée :+Copiez le fichier **configs/kernel-4.18.0-`uname -m`.config** vers **.config** dans le répertoire courant :
  
 <code> <code>
-[root@centos7 /]# sestatus +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp configs/kernel-4.18.0-`uname -m`.config .config
-SELinux status:                 enabled +
-SELinuxfs mount:                /sys/fs/selinux +
-SELinux root directory:         /etc/selinux +
-Loaded policy name:             targeted +
-Current mode:                   permissive +
-Mode from config file:          enforcing +
-Policy MLS status:              enabled +
-Policy deny_unknown status:     allowed +
-Max kernel policy version:      28+
 </code> </code>
  
-Les différentes versions de politiques évolue en même temps que le noyau Linux +Mettez à jour le fichier .config par rapport à la configuration actuelle du noyau :
- +
-La commande sestatus peut aussi prendre l'option -v :+
  
 <code> <code>
-[root@centos7 /]# sestatus -v +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ make oldconfig 
-SELinux status:                 enabled +scripts/kconfig/conf  --oldconfig Kconfig 
-SELinuxfs mount:                /sys/fs/selinux +# 
-SELinux root directory:         /etc/selinux +# configuration written to .config 
-Loaded policy name:             targeted +#
-Current mode:                   permissive +
-Mode from config file:          enforcing +
-Policy MLS status:              enabled +
-Policy deny_unknown status:     allowed +
-Max kernel policy version:      28 +
- +
-Process contexts: +
-Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 +
-Init context:                   system_u:system_r:init_t:s0 +
-/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023 +
- +
-File contexts: +
-Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0 +
-/etc/passwd                     system_u:object_r:passwd_file_t:s0 +
-/etc/shadow                     system_u:object_r:shadow_t:s0 +
-/bin/bash                       system_u:object_r:shell_exec_t:s0 +
-/bin/login                      system_u:object_r:login_exec_t:s0 +
-/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0 +
-/sbin/agetty                    system_u:object_r:getty_exec_t:s0 +
-/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0 +
-/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0 +
-/lib/libc.so.6                  system_u:object_r:lib_t:s0 -> system_u:object_r:lib_t:s0 +
-/lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -> system_u:object_r:ld_so_t:s0+
 </code> </code>
  
-====Booléens====+<WRAP center round important 60%> 
 +**Important** - Cette commande lit le fichier .config du noyau actuel et le compare avec celui des sources du noyau. S'il existent des nouvelles configurations à effectuer dans les sources du noyau, la commande vous pose des questions. 
 +</WRAP>
  
-Les booléens permettent à des ensembles de règles d'être utilisées d'une manière alternative.+La configuration du noyau se trouve dans un fichier dénommé **.config**. Le fichier **.config** est généré par une des trois commandes suivantes et ne doit **pas** être édité manuellement :
  
-Pour visualiser l'état l'ensemble des booléens, il convient d'utiliser la commande **getsebool -a** :+  * make config 
 +  * make menuconfig 
 +  * make xconfig 
 +   
 +Exécutez la commande **make menuconfig** :
  
 <code> <code>
-[root@centos7 /]# getsebool -a | more +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ make menuconfig 
-abrt_anon_write --> off +  UPD     scripts/kconfig/.mconf-cfg 
-abrt_handle_event --> off +  HOSTCC  scripts/kconfig/mconf.o 
-abrt_upload_watch_anon_write --> on +  HOSTCC  scripts/kconfig/lxdialog/checklist.o 
-antivirus_can_scan_system --> off +  HOSTCC  scripts/kconfig/lxdialog/inputbox.o 
-antivirus_use_jit --> off +  HOSTCC  scripts/kconfig/lxdialog/menubox.o 
-auditadm_exec_content --> on +  HOSTCC  scripts/kconfig/lxdialog/textbox.o 
-authlogin_nsswitch_use_ldap --> off +  HOSTCC  scripts/kconfig/lxdialog/util.o 
-authlogin_radius --> off +  HOSTCC  scripts/kconfig/lxdialog/yesno.o 
-authlogin_yubikey --> off +  HOSTLD  scripts/kconfig/mconf 
-awstats_purge_apache_log_files --> off +scripts/kconfig/mconf  Kconfig
-boinc_execmem --> on +
-cdrecord_read_content --> off +
-cluster_can_network_connect --> off +
-cluster_manage_all_files --> off +
-cluster_use_execmem --> off +
-cobbler_anon_write --> off +
-cobbler_can_network_connect --> off +
-cobbler_use_cifs --> off +
-cobbler_use_nfs --> off +
-collectd_tcp_network_connect --> off +
-condor_tcp_network_connect --> off +
-conman_can_network --> off +
-container_connect_any --> off +
---More--+
 </code> </code>
  
-ou la commande **sestatus -b** :+Dans l'interface, vous pouvez constater la présence de lignes correspondantes à des fonctionalités suivies par une lettre ou une valeur. Dans le cas d'une lettre, la signification est la suivante :
  
-<code> +  * **y**, 
-[root@centos7 /]# sestatus -b | more +    * la fonctionalité est incluse dans le noyau monolithique ou dans le cas d'une dépendance d'un module, dans le module concerné, 
-SELinux status:                 enabled +  * **m**, 
-SELinuxfs mount:                /sys/fs/selinux +    * la fonctionalité est incluse en tant que module, 
-SELinux root directory:         /etc/selinux +  * **n**, 
-Loaded policy name:             targeted +    * la fonctionalité n'est pas incluse.
-Current mode:                   permissive +
-Mode from config file:          enforcing +
-Policy MLS status:              enabled +
-Policy deny_unknown status:     allowed +
-Max kernel policy version:      28+
  
-Policy booleans: +<WRAP center round important 60%> 
-abrt_anon_write                             off +**Important** Cette commande permet la modification de la configuration du noyau. 
-abrt_handle_event                           off +</WRAP
-abrt_upload_watch_anon_write                on +   
-antivirus_can_scan_system                   off +Sauvegardez simplement la configuration actuelle et sortez de l'interface :
-antivirus_use_jit                           off +
-auditadm_exec_content                       on +
-authlogin_nsswitch_use_ldap                 off +
-authlogin_radius                            off +
-authlogin_yubikey                           off +
-awstats_purge_apache_log_files              off +
-boinc_execmem                               on +
-cdrecord_read_content                       off +
---More-- +
-</code+
- +
-Pour fixer l'état d'un booléen, il convient d'utiliser la commande setsebool :+
  
 <code> <code>
-[root@centos7 /]# setsebool antivirus_can_scan_system 1 +*** End of the configuration. 
-[root@centos7 /]# getsebool antivirus_can_scan_system +*** Execute 'make' to start the build or try 'make help'.
-antivirus_can_scan_system --> on +
-[root@centos7 /]# setsebool antivirus_can_scan_system 0 +
-[root@centos7 /]# getsebool antivirus_can_scan_system +
-antivirus_can_scan_system --> off+
 </code> </code>
  
-=====LAB #3 - Travailler avec SELinux=====+Vérifiez que le fichier **.config** a été" créé par l'exécution de makeconfig :
  
-Afin reconstruire la politique actuelle **sans** les règles **dontaudit**, utilisez la commande **semodule** : 
-  
 <code> <code>
-[root@centos7 ~]# semodule -DB+[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ ls -a 
 +.                       .gitattributes  Documentation   Makefile.rhelver  drivers   lib       tools 
 +..                      .gitlab-ci.yml  Kbuild          README            firmware  mm        usr 
 +.clang-format           .mailmap        Kconfig         arch              fs        net       virt 
 +.cocciconfig            .mismatches     Kconfig.redhat  block             include   samples 
 +.config                 .scmversion     LICENSES        certs             init      scripts 
 +.config.old             COPYING-4.18.0  MAINTAINERS     configs           ipc       security 
 +.get_maintainer.ignore  CREDITS         Makefile        crypto            kernel    sound
 </code> </code>
  
-Vérifiez qu'il ne reste aucune règle de type **dontaudit** :+Consultez ce fichier :
  
 <code> <code>
-[root@centos7 ~]# seinfo+[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ more .config 
 +
 +# Automatically generated file; DO NOT EDIT. 
 +# Linux/x86 4.18.0 Kernel Configuration 
 +#
  
-Statistics for policy file: /sys/fs/selinux/policy +# 
-Policy Version & Typev.28 (binary, mls+# Compilergcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22
- +# 
-   Classes:            94    Permissions:       262 +CONFIG_64BIT=y 
-   Sensitivities:          Categories:       1024 +CONFIG_X86_64=y 
-   Types:            4747    Attributes:        251 +CONFIG_X86=y 
-   Users:                  Roles:              14 +CONFIG_INSTRUCTION_DECODER=y 
-   Booleans:          307    Cond. Expr.:       356 +CONFIG_OUTPUT_FORMAT="elf64-x86-64" 
-   Allow:          101746    Neverallow:          0 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" 
-   Auditallow:        155    Dontaudit:           0 +CONFIG_LOCKDEP_SUPPORT=y 
-   Type_trans:      17759    Type_change:        74 +CONFIG_STACKTRACE_SUPPORT=y 
-   Type_member:        35    Role allow:         39 +CONFIG_MMU=y 
-   Role_trans:        416    Range_trans:      5697 +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 
-   Constraints:       109    Validatetrans:       0 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 
-   Initial SIDs:       27    Fs_use:             29 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 
-   Genfscon:          105    Portcon:           602 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 
-   Netifcon:               Nodecon:             0 +CONFIG_GENERIC_ISA_DMA=y 
-   Permissives:            Polcap:              2+CONFIG_GENERIC_BUG=y 
 +--More--(0%)
 </code> </code>
  
-====Copier et Déplacer des Fichiers====+===Le Fichier Makefile===
  
-Créez deux fichiers **file1** et **file2** en tant que l'utilisateur **trainee** puis visualisez les SC des fichiers :+Le fichier **Makefile** contient le nom du noyau et spécifie les informations suivantes :
  
-<code> +  * VERSION, 
-[root@centos7 /]# exit +  * PATCHLEVEL, 
-logout +  SUBLEVEL, 
-[trainee@centos7 ~]$ touch file1 file2 +  EXTRAVERSION.
-[trainee@centos7 ~]$ ls -Z file+
--rw-rw-r--. trainee trainee unconfined_u:object_r:user_home_t:s0 file1 +
--rw-rw-r--. trainee trainee unconfined_u:object_r:user_home_t:s0 file2 +
-</code> +
- +
-Notez que le type des deux fichiers est **user_home_t**.+
  
-Copiez maintenant le fichier **file1** vers **/tmp** en utilisant la commande **cp** et visualiser son SC :+Les trois premières informations sont gérées par **kernel.org** et Linus Torvalds en personne tandis que l'EXTRAVERSION est gérée par Red Hat :
  
 <code> <code>
-[trainee@centos7 ~]$ cp file1 /tmp +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ more Makefile 
-[trainee@centos7 ~]$ ls -Z /tmp/file1 +# SPDX-License-Identifier: GPL-2.
--rw-rw-r--. trainee trainee unconfined_u:object_r:user_tmp_t:s0 /tmp/file1 +VERSION = 4 
-</code>+PATCHLEVEL = 18 
 +SUBLEVEL = 0 
 +EXTRAVERSION = 
 +NAME = Merciless Moray
  
-Notez que le fichier ainsi copié a hérité du **type** du répertoire parent, à savoir **tmp_t**.+
 +# DRM backport version 
 +
 +RHEL_DRM_VERSION = 6 
 +RHEL_DRM_PATCHLEVEL = 3 
 +RHEL_DRM_SUBLEVEL =  
 +RHEL_DRM_EXTRAVERSION = 
  
-Déplacez maintenant le fichier **file2** dans le répertoire **/tmp** et contrôlez son SC :+*DOCUMENTATION* 
 +# To see a list of typical targets execute "make help" 
 +# More info can be located in ./README 
 +# Comments in this file are targeted only to the developer, do not 
 +# expect to learn how to build the kernel reading this file.
  
-<code> +# That's our default target when none is given on the command line 
-[trainee@centos7 ~]$ mv file2 /tmp +PHONY := _all 
-[trainee@centos7 ~]$ ls -Z /tmp/file2 +--More--(0%)
--rw-rw-r--. trainee trainee unconfined_u:object_r:user_home_t:s0 /tmp/file2+
 </code> </code>
  
-Notez que la commande **mv** maintient le **type** d'origine.+<WRAP center round important 60%> 
 +**Important** - La version 2.6 du noyau a vu le jour en **2003**. Les **SUBLEVEL** se suivaient régulièrement. Avec la version 2.6 du noyau, la valeur paire du **PATCHLEVEL** indiquait que le noyau était stable. Quand vous recompilez le noyau à partir des sources, vous devez modifier la valeur de l'EXTRAVERSION.  Le passage à la version 3.0 fut décidé par Linus Torvalds à l'occasion des 20 ans du noyau Linux. Depuis l'arrivée de la version 3 du noyau, la signification de la valeur de PATCHLEVEL paire et impaire a été abondonnée. 
 +</WRAP>
  
-====Vérifier les SC des Processus====+====2.4 - Paramétrage du noyau====
  
-Il convient d'utiliser l'option **Z** avec la commande **ps** :+Insérez la sortie de la commande **uname -i** sur la première ligne du fichier .config :
  
 <code> <code>
-[trainee@centos7 ~]$ ps auxZ | more +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ uname -i 
-LABEL                           USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND +x86_64
-system_u:system_r:init_t:s0     root          0.0  1.2  46140  6456 ?        Ss   juin17   0:27 /usr/lib/systemd/systemd --system -- +
-deserialize 24 +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:00 [kthreadd] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:25 [ksoftirqd/0] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S<   juin17   0:00 [kworker/0:0H] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:00 [kworker/u2:0] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:00 [migration/0] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:00 [rcu_bh] +
-system_u:system_r:kernel_t:s0   root          0.0  0.0      0     0 ?        S    juin17   0:17 [rcu_sched] +
-system_u:system_r:kernel_t:s0   root        10  0.0  0.0      0     0 ?        S    juin17   0:01 [watchdog/0] +
-system_u:system_r:kernel_t:s0   root        12  0.0  0.0      0     0 ?        S    juin17   0:00 [kdevtmpfs] +
-system_u:system_r:kernel_t:s0   root        13  0.0  0.0      0     0 ?        S<   juin17   0:00 [netns] +
-system_u:system_r:kernel_t:s0   root        14  0.0  0.0      0     0 ?        S    juin17   0:00 [khungtaskd] +
-system_u:system_r:kernel_t:s0   root        15  0.0  0.0      0     0 ?        S<   juin17   0:00 [writeback] +
-system_u:system_r:kernel_t:s0   root        16  0.0  0.0      0     0 ?        S<   juin17   0:00 [kintegrityd] +
-system_u:system_r:kernel_t:s0   root        17  0.0  0.0      0     0 ?        S<   juin17   0:00 [bioset] +
-system_u:system_r:kernel_t:s0   root        18  0.0  0.0      0     0 ?        S<   juin17   0:00 [kblockd] +
-system_u:system_r:kernel_t:s0   root        19  0.0  0.0      0     0 ?        S<   juin17   0:00 [md] +
-system_u:system_r:kernel_t:s0   root        25  0.0  0.0      0     0 ?        S    juin17   0:05 [kswapd0] +
-system_u:system_r:kernel_t:s0   root        26  0.0  0.0      0     0 ?        SN   juin17   0:00 [ksmd] +
-system_u:system_r:kernel_t:s0   root        27  0.0  0.0      0     0 ?        S<   juin17   0:00 [crypto] +
-system_u:system_r:kernel_t:s0   root        35  0.0  0.0      0     0 ?        S<   juin17   0:00 [kthrotld] +
-system_u:system_r:kernel_t:s0   root        37  0.0  0.0      0     0 ?        S<   juin17   0:00 [kmpath_rdacd] +
-system_u:system_r:kernel_t:s0   root        38  0.0  0.0      0     0 ?        S<   juin17   0:00 [kpsmoused] +
-system_u:system_r:kernel_t:s0   root        39  0.0  0.0      0     0 ?        S<   juin17   0:00 [ipv6_addrconf] +
-system_u:system_r:kernel_t:s0   root        59  0.0  0.0      0     0 ?        S<   juin17   0:00 [deferwq] +
-system_u:system_r:kernel_t:s0   root        94  0.0  0.0      0     0 ?        S    juin17   0:00 [kauditd] +
-system_u:system_r:kernel_t:s0   root       226  0.0  0.0      0     0 ?        S<   juin17   0:00 [ata_sff] +
-system_u:system_r:kernel_t:s0   root       238  0.0  0.0      0     0 ?        S    juin17   0:00 [scsi_eh_0] +
-system_u:system_r:kernel_t:s0   root       240  0.0  0.0      0     0 ?        S<   juin17   0:00 [scsi_tmf_0] +
-system_u:system_r:kernel_t:s0   root       241  0.0  0.0      0     0 ?        S    juin17   0:00 [scsi_eh_1] +
-system_u:system_r:kernel_t:s0   root       242  0.0  0.0      0     0 ?        S    juin17   0:02 [kworker/u2:2] +
-system_u:system_r:kernel_t:s0   root       243  0.0  0.0      0     0 ?        S<   juin17   0:00 [scsi_tmf_1] +
-system_u:system_r:kernel_t:s0   root       244  0.0  0.0      0     0 ?        S    juin17   0:00 [scsi_eh_2] +
---Plus-+
-</code>+
  
-====Visualiser la SC d'un Utilisateur====+[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ vi .config
  
-Utilisez l'option **-Z** avec la commande **id** :+[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ head .config 
 +# x86_64 
 +
 +# Automatically generated file; DO NOT EDIT. 
 +# Linux/x86 4.18.0 Kernel Configuration 
 +#
  
-<code> +# 
-[trainee@centos7 ~]$ id -Z +# Compilergcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22) 
-unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023+
 +CONFIG_64BIT=y
 </code> </code>
  
-Notez que vous ne pouvez pas consulter le SC d'un autre utilisateur :+Renommez le fichier .config en le plaçant dans le répertoire **~/rpmbuild/SOURCES/** :
  
 <code> <code>
-[trainee@centos7 ~]$ id root +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp .config ~/rpmbuild/SOURCES/config-`uname -m`-generic 
-uid=0(root) gid=0(root) groupes=0(root) + 
-[trainee@centos7 ~]$ id -Z root +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ ls ~/rpmbuild/SOURCES 
-id: impossible d'afficher le contexte de sécurité quand un utilisateur est indiqué+Module.kabi_aarch64      filter-s390x.sh                            linux-4.18.0-553.16.1.el8_10.tar.xz 
 +Module.kabi_dup_aarch64  filter-x86_64.sh                           linux-kernel-test.patch 
 +Module.kabi_dup_ppc64le  gating.yaml                                mod-blacklist.sh 
 +Module.kabi_dup_s390x    generate_all_configs.sh                    mod-extra.list 
 +Module.kabi_dup_x86_64   generate_bls_conf.sh                       mod-internal.list 
 +Module.kabi_ppc64le      kernel-aarch64-debug.config                mod-sign.sh 
 +Module.kabi_s390x        kernel-aarch64.config                      parallel_xz.sh 
 +Module.kabi_x86_64       kernel-abi-stablelists-4.18.0-553.tar.bz2  process_configs.sh 
 +centossecureboot201.cer  kernel-kabi-dw-4.18.0-553.tar.bz2          redhatsecureboot302.cer 
 +centossecurebootca2.cer  kernel-ppc64le-debug.config                redhatsecureboot303.cer 
 +check-kabi               kernel-ppc64le.config                      redhatsecureboot501.cer 
 +config-x86_64-generic    kernel-s390x-debug.config                  redhatsecurebootca3.cer 
 +cpupower.config          kernel-s390x-zfcpdump.config               redhatsecurebootca7.cer 
 +cpupower.service         kernel-s390x.config                        rheldup3.x509 
 +filter-aarch64.sh        kernel-x86_64-debug.config                 rhelkpatch1.x509 
 +filter-modules.sh        kernel-x86_64.config                       rpminspect.yaml 
 +filter-ppc64le.sh        kvm_stat.logrotate                         x509.genkey
 </code> </code>
  
-====Vérifier la SC d'un fichier==== +Copiez le contenu du répertoire **configs** vers le répertoire **~/rpmbuild/SOURCES/** :
- +
-Il convient d'utiliser la commande ls avec l'option **-Z** :+
  
 <code> <code>
-[trainee@centos7 ~]$ cd /etc +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp configs/* ~/rpmbuild/SOURCES/
-[trainee@centos7 etc]$ ls -Z l* -d +
--rw-r--r--. root root unconfined_u:object_r:ld_so_cache_t:s0 ld.so.cache +
--rw-r--r--. root root system_u:object_r:etc_t:s0       ld.so.conf +
-drwxr-xr-x. root root system_u:object_r:etc_t:s0       ld.so.conf.d +
--rw-r-----. root root system_u:object_r:etc_t:s0       libaudit.conf +
-drwxr-xr-x. root root system_u:object_r:etc_t:s0       libnl +
-drwxr-xr-x. root root system_u:object_r:etc_t:s0       libreport +
--rw-r--r--. root root unconfined_u:object_r:etc_t:s0   libuser.conf +
--rw-r--r--. root root unconfined_u:object_r:locale_t:s0 locale.conf +
-lrwxrwxrwx. root root unconfined_u:object_r:locale_t:s0 localtime -> ../usr/share/zoneinfo/Europe/Paris +
--rw-r--r--. root root unconfined_u:object_r:etc_t:s0   login.defs +
--rw-r--r--. root root system_u:object_r:etc_t:s0       logrotate.conf +
-drwxr-xr-x. root root system_u:object_r:etc_t:s0       logrotate.d +
-drwxr-xr-x. root root system_u:object_r:etc_t:s0       lsm +
-drwxr-xr-x. root root system_u:object_r:lvm_etc_t:s0   lvm+
 </code> </code>
  
-====Troubleshooting SELinux====+Editez la directive **buildid** dans le fichier **~/rpmbuild/SPECS/kernel.spec** :
  
-L'interprétation des messages journalisés de %%SELinux%% est souvent la clef d'un dépannage efficace et rapide.+<code> 
 +[trainee@centos8 linux-4.18.0-305.7.1.el8.x86_64]$ cd ~/rpmbuild/SPECS
  
-Si le démon **auditd** est démarré, les messages de %%SELinux%% sont consignés dans le fichier **/var/log/audit/audit.log**. Dans le cas contraire, les mêmes messages sont consignés dans le fichier **/var/log/messages**. Dans les deux cas, chaque message de %%SELinux%% contient le mot clef **AVC** : +[trainee@centos8 SPECS]$ vi kernel.spec
  
-===La commande chcon===+[trainee@centos8 SPECS]$ head -n 50 kernel.spec 
 +# We have to override the new %%install behavior because, well... the kernel is special. 
 +%global __spec_install_pre %{___build_pre}
  
-La commande **chcon** permet de modifier //temporairement// une SC.+# At the time of this writing (2019-03), RHEL8 packages use w2.xzdio 
 +# compression for rpms (xz, level 2). 
 +# Kernel has several large (hundreds of mbytes) rpms, they take ~5 mins 
 +# to compress by single-threaded xz. Switch to threaded compression, 
 +# and from level 2 to 3 to keep compressed sizes close to "w2" results. 
 +
 +# NB: if default compression in /usr/lib/rpm/redhat/macros ever changes, 
 +# this one might need tweaking (e.g. if default changes to w3.xzdio, 
 +# change below to w4T.xzdio): 
 +%define _binary_payload w3T.xzdio
  
-<code> +%global distro_build 553
-[trainee@centos7 etc]$ cd ~ +
-[trainee@centos7 ~]$ chcon --help +
-Utilisation : chcon [OPTION]... CONTEXT FILE... +
-         ou : chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE... +
-         ou : chcon [OPTION]... --reference=RFILE FILE... +
-Modifier le contexte de sécurité SELinux de chaque FILE en CONTEXT. +
-Avec --reference, modifier le contexte de sécurité de chaque FILE à +
-celui de RFILE.+
  
-Les arguments obligatoires pour les options longues le sont aussi pour les +# Sign the x86_64 kernel for secure boot authentication 
-options courtes. +%ifarch x86_64 aarch64 s390x ppc64le 
-      --dereference      affecter le référent de chaque lien symbolique (par +%global signkernel 1 
-                           défaut), au lieu du lien symbolique lui-même +%else 
-  -h, --no-dereference   affecter les liens symboliques au lieu des fichiers +%global signkernel 0 
-                           référencés +%endif
-  -u, --user=USER        définir l'utilisateur USER dans le contexte de +
-                           sécurité cible +
-  -r, --role=ROLE        définir le rôle ROLE dans le contexte de sécurité cible +
-  -t, --type=TYPE        définir le type TYPE dans le contexte de sécurité cible +
-  -l, --range=RANGE      définir l'intervalle RANGE dans le contexte de +
-                         sécurité cible +
-      --no-preserve-root ne pas traiter « / » de manière spéciale (par défaut) +
-      --preserve-root    bloquer le traitement récursif sur « / » +
-      --reference=RFILE  utiliser le contexte de sécurité de RFILE au lieu +
-                           d'indiquer une valeur CONTEXT +
-  -R, --recursive        opérer récursivement sur les fichiers et répertoires +
-  -v, --verbose          afficher un diagnostic pour chaque fichier traité+
  
-Les options suivantes modifient la façon de parcourir la hiérarchie lorsque +# Sign modules on all arches 
-l'option -R est aussi indiquée. Si plusieurs options sont indiquées, seule la +%global signmodules 1
-dernière sera prise en compte.+
  
-  -H                     si l'argument en ligne de commande est un lien +# Compress modules only for architectures that build modules 
-                           symbolique vers un répertoire, le parcourir +%ifarch noarch 
-  -L                     parcourir tous les liens symboliques menant à un +%global zipmodules 0 
-                           répertoire +%else 
-  -P                     ne parcourir aucun lien symbolique (par défaut)+%global zipmodules 1 
 +%endif
  
-      --help     afficher l'aide et quitter +%if %{zipmodules} 
-      --version  afficher des informations de version et quitter+%global zipsed -e 's/\.ko$/\.ko.xz/
 +%endif
  
-Aide en ligne de GNU coreutils : <http://www.gnu.org/software/coreutils/> +%define buildid .ittraining
-Signalez les problèmes de traduction de « chcon » à : <traduc@traduc.org> +
-Utilisez « info coreutils 'chcon invocation' » pour toute la documentation +
-</code>+
  
-Prenons le cas de la création d'un répertoire à la racine du système de fichiers afin d'y stocker les pages web du serveur apache :+%define specversion 4.18.0 
 +%define pkgrelease 553.16.1.el8_10
  
-<code> +allow pkg_release to have configurable %%{?dist} tag 
-[trainee@centos7 ~]$ su - +%define specrelease 553.16.1%{?dist}
-Mot de passe :  +
-Dernière connexion : dimanche 17 juin 2018 à 20:21:42 CEST sur pts/1 +
-[root@centos7 ~]mkdir /www +
-[root@centos7 ~]# touch /www/index.html +
-</code>+
  
-Installez maintenant le serveur Apache :+%define pkg_release %{specrelease}%{?buildid}
  
-<code> +# libexec dir is not used by the linker, so the shared object there 
-[root@centos7 ~]yum install httpd+should not be exported to RPM provides 
 +%global __provides_exclude_from ^%{_libexecdir}/kselftests
 </code> </code>
  
-Modifiez ensuite la directive **%%DocumentRoot%%** dans le fichier **/etc/httpd/conf/httpd.conf** :+====2.5 - Compiler le Noyau====
  
-<file> +La compilation du noyau peut prendre beaucoup de temps (~5 heures)La commande utilisée est la suivante :
-[...] +
-#DocumentRoot "/var/www/html" +
-DocumentRoot "/www" +
-[...] +
-</file>+
  
-Ajoutez les section **<Directory "/www">**: +<code
- +[trainee@centos8 SPECS]$ rpmbuild -bb --target=`uname -m` kernel.spec 2build-err.log | tee build-out.log & 
-<file>+[1] 96990 
 +[trainee@centos8 SPECS]$ Building target platforms: x86_64 
 +Building for target x86_64
 ... ...
-<Directory "/var/www"> 
-    AllowOverride None 
-    # Allow open access: 
-    Require all granted 
-</Directory> 
- 
-<Directory "/www"> 
- Options Indexes FollowSymLinks 
- AllowOverride None 
- Require all granted 
-</Directory> 
- 
-# Further relax access to the default document root: 
-<Directory "/var/www/html"> 
-... 
-</file> 
- 
-Créez le fichier **/www/index.html** : 
- 
-<code> 
-[root@centos7 ~]# vi /www/index.html 
-[root@centos7 ~]# cat /www/index.html 
-<html> 
-<title> 
-This is a test 
-</title> 
-<body> 
-www test page 
-</body> 
-</html> 
 </code> </code>
  
-Modifiez ensuite le propriétaire et le groupe du répertoire **/www** et son contenu :+<WRAP center round important 60%> 
 +**Important** - La compilation peut prendre des heures. 
 +</WRAP>
  
-<code> +A l'issu du processusles RPMs se trouvent dans le répertoire **/home/trainee/rpmbuild/RPMS/x86_64/** :
-[root@centos7 ~]# chown -R apache:apache /www +
-</code> +
- +
-Dernièrementcréez un fichier index.html **vide** dans le répertoire **/var/www/html/** :+
  
 <code> <code>
-[root@centos7 ~]# touch /var/www/html/index.html +... 
-</code>+Wrote: /home/trainee/rpmbuild/RPMS/x86_64/kernel-4.18.0-553.16.1.el8.ittraining.x86_64.rpm 
 +...
  
-Redémarrez maintenant le service httpd : +[1]+  Done                    rpmbuild -bb --target=`uname -m` kernel.spec 2> build-err.log | tee build-out.log
- +
-<code> +
-[root@centos7 ~]# systemctl restart httpd.service+
 </code> </code>
  
-Consultez le site localhost en utilisant **lynx** +Notez que la génération du nouveau noyau peut consommer jusqu'à 21 Go d'espace disque :
  
 <code> <code>
-[root@centos7 ~]# lynx localhost+[trainee@centos8 x86_64]$ df -h 
 +Filesystem                   Size  Used Avail Use% Mounted on 
 +devtmpfs                     1.8G      1.8G   0% /dev 
 +tmpfs                        1.9G      1.9G   0% /dev/shm 
 +tmpfs                        1.9G  9.4M  1.9G   1% /run 
 +tmpfs                        1.9G      1.9G   0% /sys/fs/cgroup 
 +/dev/mapper/cl_centos8-root   28G  5.5G   23G  20% / 
 +/dev/sda1                    976M  289M  620M  32% /boot 
 +tmpfs                        374M   24K  374M   1% /run/user/1000 
 +tmpfs                        374M  1.2M  373M   1% /run/user/42 
 +/dev/sdc1                     63G   21G   39G  35% /home
 </code> </code>
  
-Pour consulter les messages d'alerte de %%SELinux%%, vous disposez de la commande **sealert** du paquet **setroubleshoot-server**+====2.6 - Installer le Nouveau Noyau====
  
-Installez donc ce paquet :+Installez maintenant les paquets **kernel***. L'installation du noyau peut prendre beaucoup de temps (~2 heures). La commande utilisée est la suivante : :
  
 <code> <code>
-[root@centos7 ~]# yum install setroubleshoot-server +[trainee@centos8 SPECS]$ cd ../RPMS/x86_64
-</code>+
  
-La commande **sealert** possède à la fois une interface graphique **et** un mode en ligne de commande : +[root@centos8 x86_64]# dnf localinstall kernel-*.rpm
- +
-<code> +
-[root@centos7 ~]# sealert -a /var/log/audit/audit.log > /root/mylogfile.txt +
-type=AVC msg=audit(1524491216.546:616): avc:  denied  { getattr } for  pid=15389 comm="gssproxy" name="/" dev="sda2" ino=128 scontext=system_u:system_r:gssproxy_t:s0 tcontext=system_u:object_r:fs_t:s0 tclass=filesystem +
-  +
-**** Invalid AVC allowed in current policy *** +
- +
-type=AVC msg=audit(1524491220.766:622): avc:  denied  { getattr } for  pid=15459 comm="gssproxy" name="/" dev="sda2" ino=128 scontext=system_u:system_r:gssproxy_t:s0 tcontext=system_u:object_r:fs_t:s0 tclass=filesystem +
-  +
-**** Invalid AVC allowed in current policy ***+
 </code> </code>
  
-Consultez le fichier **/root/mylogfile.txt** :+A l'issu de l'installation, re-démarrez la VM :
  
 <code> <code>
-[root@centos7 ~]# more /root/mylogfile.txt  +[root@centos7 ~]# reboot
- +
-found 3 alerts in /var/log/audit/audit.log +
--------------------------------------------------------------------------------- +
- +
-SELinux is preventing /usr/libexec/dbus-1/dbus-daemon-launch-helper from using the rlimitinh access on a process. +
- +
-*****  Plugin catchall (100. confidence) suggests   ************************** +
- +
-you believe that dbus-daemon-launch-helper should be allowed rlimitinh access on processes labeled unconfined_service_t by default. +
-Then you should report this as a bug. +
-You can generate a local policy module to allow this access. +
-Do +
-allow this access for now by executing: +
-# ausearch -c 'dbus-daemon-lau' --raw | audit2allow -M my-dbusdaemonlau +
-# semodule -i my-dbusdaemonlau.pp +
- +
- +
-Additional Information: +
-Source Context                system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 +
-Target Context                system_u:system_r:unconfined_service_t:s0-s0:c0.c1 +
-                              023 +
-Target Objects                Unknown [ process ] +
-Source                        dbus-daemon-lau +
-Source Path                   /usr/libexec/dbus-1/dbus-daemon-launch-helper +
-Port                          <Unknown> +
-Host                          <Unknown> +
-Source RPM Packages           dbus-1.10.24-13.el7_6.x86_64 +
-Target RPM Packages            +
-Policy RPM                    selinux-policy-3.13.1-166.el7_4.9.noarch +
-Selinux Enabled               True +
-Policy Type                   targeted +
-Enforcing Mode                Permissive +
-Host Name                     centos7.fenestros.loc +
-Platform                      Linux centos7.fenestros.loc +
-                              3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 +
-                              19:03:37 UTC 2018 x86_64 x86_64 +
-Alert Count                   1 +
-First Seen                    2020-01-23 16:04:33 CET +
-Last Seen                     2020-01-23 16:04:33 CET +
---More--(4%)+
 </code> </code>
  
-Cherchez dans le fichier la chaine **Plugin catchall** de la section concernant apache :+Connectez-vous en tant que trainee et devenez root. Constatez l'entrée **saved-entry** du fichier **/boot/grub2/grubenv** :
  
 <code> <code>
-*****  Plugin catchall (17.1 confidence) suggests   ************************** +[root@centos8 ~]# grep ittraining /boot/grub2/grubenv  
- +saved_entry=95bd69e34a7444a7b58cb74fbfb86df2-4.18.0-553.16.1.el8.ittraining.x86_64
-you believe that httpd should be allowed getattr access on the index.html file by default. +
-Then you should report this as a bug. +
-You can generate a local policy module to allow this access. +
-Do +
-allow this access for now by executing: +
-# ausearch -c 'httpd' --raw | audit2allow -M my-httpd +
-# semodule -i my-httpd.pp +
- +
- +
-Additional Information: +
-Source Context                system_u:system_r:httpd_t:s0 +
-Target Context                unconfined_u:object_r:default_t:s0 +
-Target Objects                /www/index.html file ] +
-Source                        httpd +
-Source Path                   /usr/sbin/httpd +
-Port                          <Unknown> +
-Host                          <Unknown> +
-Source RPM Packages           httpd-2.4.6-90.el7.centos.x86_64 +
-Target RPM Packages +
-Policy RPM                    selinux-policy-3.13.1-166.el7_4.9.noarch +
-Selinux Enabled               True +
-Policy Type                   targeted +
-Enforcing Mode                Permissive +
-Host Name                     centos7.fenestros.loc +
-Platform                      Linux centos7.fenestros.loc +
-                              3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 +
-                              19:03:37 UTC 2018 x86_64 x86_64 +
-Alert Count                   1 +
-First Seen                    2020-01-23 16:04:30 CET +
-Last Seen                     2020-01-23 16:04:30 CET +
-Local ID                      096941d6-1c72-49bd-862b-9bfc3aad32e5 +
- +
-Raw Audit Messages +
-type=AVC msg=audit(1579791870.276:244): avc:  denied  { getattr } for  pid=1728 comm="httpd" path="/www/index.html" dev="sda2" ino=2240172 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
- +
- +
-type=SYSCALL msg=audit(1579791870.276:244): arch=x86_64 syscall=stat success=yes exit=0 a0=56255c9727b8 a1=7ffd44466030 a2=7ffd44466030 a3=7f3a4d9ab712 items=0 ppid=1722 pid=1728 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm=httpd exe=/usr/sbin/httpd subj=system_u:system_r:httpd_t:s0 key=(null) +
- +
-Hash: httpd,httpd_t,default_t,file,getattr+
 </code> </code>
  
-Ce message a été généré parce que le repertoire /www ainsi que le fichier index.html ne possèdent pas le **type** nécessaire pour que le service apache puisse les utiliser :+Dernièrement, vérifiez l'utilisation du nouveau noyau :
  
 <code> <code>
-[root@centos6 ~]# ls -Z /www/index.html +[root@centos8 ~]# uname -
--rw-r--r--. root root unconfined_u:object_r:default_t:s0 /www/index.html+4.18.0-553.16.1.el8.ittraining.x86_64
 </code> </code>
  
-<code> +=====LAB #Gestion des Quotas=====
-[root@centos7 ~]ls -Z /var/www/html/index.html +
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html +
-</code>+
  
-L'exemple ci-dessus nous montre clairement que le type pour **/www/index.html** est **default_t** or apache a besoin du type **httpd_sys_content_t** pour pouvoir accéder au fichier.+Sous Linux il est possible de mettre en place des quotas par utilisateur et par groupe. Ceci étant, Linux ne sait  pas gérer des quotas par répertoire, uniquement des  
 +quotas par partition. L'administrateur met souvent des quotas en place sur l'arborescence de /home pour limiter l'espace de stockage occupé par les utilisateurs.
  
-Modifiez donc la SC de /www et /www/index.html en utilisant la commande **chcon** :+Déconnectez-vous et reconnectez-vous **directement** en tant que root :
  
 <code> <code>
-[root@centos7 ~]chcon -Rv --type=httpd_sys_content_t /www +root@computeXX:~# ssh -l root 10.0.2.45 
-changing security context of ‘/www/index.html’ +root@10.0.2.45's password: fenestros 
-changing security context of ‘/www’+Activate the web console with: systemctl enable --now cockpit.socket
  
-[root@centos7 ~]# ls -Z /www/index.html +Last login: Wed Jul 21 11:14:31 2021 
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /www/index.html+[root@centos8 ~]# 
 </code> </code>
  
-Afin de maintenir ces SC lors d'une **restauration des SC par défaut**il convient d'utiliser la commande **semanage** afin d'appliquer la modification d'une manière définitive :+Avant de mettre en place des quotasconfigurer SELINUX en mode **permissive** afin de ne pas avoir d'erreurs de ce dernier :
  
 <code> <code>
-[root@centos7 ~]# semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"+[root@centos8 ~]# getenforce 
 +Enforcing 
 +[root@centos8 ~]# setenforce permissive 
 +[root@centos8 ~]# getenforce 
 +Permissive 
 +[root@centos8 ~]# 
 </code> </code>
  
-====La commande restorecon====+Editez ensuite le fichier /etc/sysconfig/selinux ainsi :
  
-<file+<code
-usage:  restorecon [-iFnrRv] [-e excludedir [-o filename ] [-f filename | pathname... ] +[root@centos8 ~]# vi /etc/sysconfig/selinux 
-</file>+[root@centos8 ~]# cat /etc/sysconfig/selinux
  
-Pour illustrer l'utilisation de cette commande, créez les fichiers copy.html et move.html dans le répertoire /tmp :+# This file controls the state of SELinux on the system. 
 +# SELINUX= can take one of these three values: 
 +#     enforcing - SELinux security policy is enforced. 
 +#     permissive - SELinux prints warnings instead of enforcing. 
 +#     disabled - No SELinux policy is loaded. 
 +SELINUX=permissive 
 +# SELINUXTYPE= can take one of these three values: 
 +#     targeted - Targeted processes are protected, 
 +#     minimum - Modification of targeted policy. Only selected processes are protected.  
 +#     mls - Multi Level Security protection. 
 +SELINUXTYPE=targeted
  
-<code> 
-[root@centos7 ~]# cd /tmp ; touch copy.html move.html 
-[root@centos7 tmp]# ls -Z | grep html 
--rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 copy.html 
--rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 move.html 
 </code> </code>
  
-**Copiez** le fichier copy.html vers /var/www/html et **déplacez** le fichier move.html vers la même cible :+Commencez par vérifiez que le paquet **quota** est bien installé :
  
 <code> <code>
-[root@centos7 tmp]# cp copy.html /var/www/html/ +[root@centos8 ~]# rpm -qa | grep quota 
-[root@centos7 tmp]# mv move.html /var/www/html/ +quota-4.04-12.el8.x86_64 
-[root@centos7 tmp]# ls -Z /var/www/html +quota-nls-4.04-12.el8.noarch
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 copy.html +
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html +
--rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 move.html+
 </code> </code>
  
-<WRAP center round important 50%> +Editez le fichier **/etc/fstab** en ajoutant les options **usrquota** et **grpquota** à la ligne **/home** :
-**Important** : Notez ici que copy.html a pris le type du répertoire de destination tandis que move.html retient le type obtenu lors de la création. +
-</WRAP> +
- +
-Restaurez maintenant la SC par défaut de move.html compte tenu de son emplacement en utilisant la commande **restorecon** :+
  
 <code> <code>
-[root@centos7 tmp]# restorecon -v /var/www/html/move.html +[root@centos8 ~]# vi /etc/fstab 
-restorecon reset /var/www/html/move.html context unconfined_u:object_r:user_tmp_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0+[root@centos8 ~]# cat /etc/fstab
  
-[root@centos7 tmp]ls -Z /var/www/html +# 
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 copy.html +/etc/fstab 
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html +# Created by anaconda on Wed Jun 16 06:21:32 2021 
--rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 move.html+
 +# Accessible filesystems, by reference, are maintained under '/dev/disk/'
 +# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. 
 +
 +# After editing this file, run 'systemctl daemon-reload' to update systemd 
 +# units generated from this file. 
 +
 +/dev/mapper/cl_centos8-root /                       xfs     defaults        0 0 
 +UUID=1c04981e-5317-4b73-9695-3ce25246835d /boot                   ext4    defaults        1 2 
 +/dev/mapper/cl_centos8-swap swap                    swap    defaults        0 0 
 +UUID=f76d6b66-985b-4a91-af9c-4987e8c1443c /home     ext4          defaults,usrquota,grpquota            1 2
 </code> </code>
  
-====Le fichier /.autorelabel==== +Redémarrez la VM :
- +
-En cas de besoin il est intéressant de pouvoir restaurer les SC par défaut sur l'ensemble des objets du système. Cette procédure est très simple à mettre en oeuvre. Il convient de créer le fichier **.autorelabel** à la racine et de redémarrer le système :+
  
 <code> <code>
-[root@centos7 tmp]# touch /.autorelabel +[root@centos8 ~]# reboot
-[root@centos7 tmp]# shutdown -r now+
 </code> </code>
  
-====La commande semanage==== +Reconnectez-vous **directement** en tant que root :
- +
-La commande **semanage** peut prendre plusieurs options :+
  
 <code> <code>
-[root@centos7 tmp]semanage --help +root@computeXX:~ssh -l root 10.0.2.45 
-usage: semanage [-h] +root@10.0.2.45's password: fenestros 
-                 +Activate the web console with: systemctl enable --now cockpit.socket
-                {import,export,login,user,port,interface,module,node,fcontext,boolean,permissive,dontaudit} +
-                ...+
  
-semanage is used to configure certain elements of SELinux policy with-out +Last login: Wed Jul 21 11:19:46 2021 
-requiring modification to or recompilation from policy source.+[root@centos8 ~]#  
 +</code>
  
-positional arguments: +Vérifiez ensuite que les options **usrquota** et **grpquota** soient prises en compte :
-  {import,export,login,user,port,interface,module,node,fcontext,boolean,permissive,dontaudit} +
-    import              Import local customizations +
-    export              Output local customizations +
-    login               Manage login mappings between linux users and SELinux +
-                        confined users +
-    user                Manage SELinux confined users (Roles and levels for an +
-                        SELinux user) +
-    port                Manage network port type definitions +
-    interface           Manage network interface type definitions +
-    module              Manage SELinux policy modules +
-    node                Manage network node type definitions +
-    fcontext            Manage file context mapping definitions +
-    boolean             Manage booleans to selectively enable functionality +
-    permissive          Manage process type enforcement mode +
-    dontaudit           Disable/Enable dontaudit rules in policy+
  
-optional arguments: +<code> 
-  -h--help            show this help message and exit+[root@centos8 ~]# cat /etc/mtab | grep /home 
 +/dev/sdc1 /home ext4 rw,seclabel,relatime,quota,usrquota,grpquota 0 0
 </code> </code>
  
-Pour illustrer l'utilisation de cette commande, considérez le besoin de mettre le service apache à l'écoute du port **8090** au lieu du port standard.+====3.1 - La Commande quotacheck====
  
-%%SELinux%% gère aussi l'accès aux ports par les différents serveurs. La liste complète des ports autorisés par serveur puet être visualiser à l'aide de la commande **semanage** :+Pour activer les quotas sur /home, il convient d'utiliser la commande **quotacheck** :
  
 <code> <code>
-[root@centos7 tmp]# semanage port -+[root@centos8 ~]# quotacheck -cugvm -f /dev/sdc1 
-SELinux Port Type              Proto    Port Number +quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. 
- +quotacheck: Scanning /dev/sdc1 [/home] done 
-afs3_callback_port_t           tcp      7001 +quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted. 
-afs3_callback_port_t           udp      7001 +quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted. 
-afs_bos_port_t                 udp      7007 +quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted. 
-afs_fs_port_t                  tcp      2040 +quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted. 
-afs_fs_port_t                  udp      7000, 7005 +quotacheck: Checked 6763 directories and 129772 files 
-afs_ka_port_t                  udp      7004 +quotacheck: Old file not found. 
-afs_pt_port_t                  tcp      7002 +quotacheck: Old file not found.
-afs_pt_port_t                  udp      7002 +
-afs_vl_port_t                  udp      7003 +
-agentx_port_t                  tcp      705 +
-agentx_port_t                  udp      705 +
-amanda_port_t                  tcp      10080-10083 +
-amanda_port_t                  udp      10080-10082 +
-amavisd_recv_port_t            tcp      10024 +
-amavisd_send_port_t            tcp      10025 +
-amqp_port_t                    tcp      15672, 5671-5672 +
-amqp_port_t                    udp      5671-5672 +
-aol_port_t                     tcp      5190-5193 +
-aol_port_t                     udp      5190-5193 +
-apc_port_t                     tcp      3052 +
-apc_port_t                     udp      3052 +
-apcupsd_port_t                 tcp      3551 +
-apcupsd_port_t                 udp      3551 +
-apertus_ldp_port_t             tcp      539 +
-apertus_ldp_port_t             udp      539 +
-asterisk_port_t                tcp      1720 +
-asterisk_port_t                udp      2427, 2727, 4569 +
-audit_port_t                   tcp      60 +
-auth_port_t                    tcp      113 +
-bacula_port_t                  tcp      9103 +
-bacula_port_t                  udp      9103 +
-bctp_port_t                    tcp      8999 +
-bctp_port_t                    udp      8999 +
-bgp_port_t                     tcp      179, 2605 +
-bgp_port_t                     udp      179, 2605 +
-boinc_client_port_t            tcp      1043 +
-boinc_client_port_t            udp      1034 +
-boinc_port_t                   tcp      31416 +
-brlp_port_t                    tcp      4101 +
-certmaster_port_t              tcp      51235 +
-chronyd_port_t                 udp      323 +
-clamd_port_t                   tcp      3310 +
-clockspeed_port_t              udp      4041 +
-cluster_port_t                 tcp      5149, 40040, 50006-50008 +
-cluster_port_t                 udp      5149, 50006-50008 +
-cma_port_t                     tcp      1050 +
-cma_port_t                     udp      1050 +
-cobbler_port_t                 tcp      25151 +
-collectd_port_t                udp      25826 +
-commplex_link_port_t           tcp      4331, 5001 +
-commplex_link_port_t           udp      5001 +
-commplex_main_port_t           tcp      5000 +
-commplex_main_port_t           udp      5000 +
-comsat_port_t                  udp      512 +
-condor_port_t                  tcp      9618 +
-condor_port_t                  udp      9618 +
-conman_port_t                  tcp      7890 +
-conman_port_t                  udp      7890 +
-connlcli_port_t                tcp      1358 +
-connlcli_port_t                udp      1358 +
-couchdb_port_t                 tcp      5984, 6984 +
-couchdb_port_t                 udp      5984, 6984 +
-ctdb_port_t                    tcp      4379 +
-ctdb_port_t                    udp      4379 +
-cvs_port_t                     tcp      2401 +
-cvs_port_t                     udp      2401 +
-cyphesis_port_t                tcp      6767, 6769, 6780-6799 +
-cyphesis_port_t                udp      32771 +
-cyrus_imapd_port_t             tcp      2005 +
-daap_port_t                    tcp      3689 +
-daap_port_t                    udp      3689 +
-dbskkd_port_t                  tcp      1178 +
-dcc_port_t                     udp      6276, 6277 +
-dccm_port_t                    tcp      5679 +
-dccm_port_t                    udp      5679 +
-dey_keyneg_port_t              tcp      8750 +
-dey_keyneg_port_t              udp      8750 +
-dey_sapi_port_t                tcp      4330 +
-dhcpc_port_t                   tcp      68, 546, 5546 +
-dhcpc_port_t                   udp      68, 546, 5546 +
-dhcpd_port_t                   tcp      547, 548, 647, 847, 7911 +
-dhcpd_port_t                   udp      67, 547, 548, 647, 847 +
-dict_port_t                    tcp      2628 +
-distccd_port_t                 tcp      3632 +
-dns_port_t                     tcp      53 +
-dns_port_t                     udp      53 +
-dnssec_port_t                  tcp      8955 +
-dogtag_port_t                  tcp      7390 +
-echo_port_t                    tcp      7 +
-echo_port_t                    udp      7 +
-efs_port_t                     tcp      520 +
-embrace_dp_c_port_t            tcp      3198 +
-embrace_dp_c_port_t            udp      3198 +
-ephemeral_port_t               tcp      32768-61000 +
-ephemeral_port_t               udp      32768-61000 +
-epmap_port_t                   tcp      135 +
-epmap_port_t                   udp      135 +
-epmd_port_t                    tcp      4369 +
-epmd_port_t                    udp      4369 +
-fac_restore_port_t             tcp      5582 +
-fac_restore_port_t             udp      5582 +
-fingerd_port_t                 tcp      79 +
-flash_port_t                   tcp      843, 1935 +
-flash_port_t                   udp      1935 +
-fmpro_internal_port_t          tcp      5003 +
-fmpro_internal_port_t          udp      5003 +
-freeipmi_port_t                tcp      9225 +
-freeipmi_port_t                udp      9225 +
-ftp_data_port_t                tcp      20 +
-ftp_port_t                     tcp      21, 989, 990 +
-ftp_port_t                     udp      989, 990 +
-gatekeeper_port_t              tcp      1721, 7000 +
-gatekeeper_port_t              udp      1718, 1719 +
-gdomap_port_t                  tcp      538 +
-gdomap_port_t                  udp      538 +
-gds_db_port_t                  tcp      3050 +
-gds_db_port_t                  udp      3050 +
-gear_port_t                    tcp      43273 +
-gear_port_t                    udp      43273 +
-geneve_port_t                  tcp      6080 +
-giftd_port_t                   tcp      1213 +
-git_port_t                     tcp      9418 +
-git_port_t                     udp      9418 +
-glance_port_t                  tcp      9292 +
-glance_port_t                  udp      9292 +
-glance_registry_port_t         tcp      9191 +
-glance_registry_port_t         udp      9191 +
-gluster_port_t                 tcp      38465-38469, 24007-24027 +
-gluster_port_t                 udp      24007-24027 +
-gopher_port_t                  tcp      70 +
-gopher_port_t                  udp      70 +
-gpsd_port_t                    tcp      2947 +
-hadoop_datanode_port_t         tcp      50010 +
-hadoop_namenode_port_t         tcp      8020 +
-hddtemp_port_t                 tcp      7634 +
-hi_reserved_port_t             tcp      512-1023 +
-hi_reserved_port_t             udp      512-1023 +
-howl_port_t                    tcp      5335 +
-howl_port_t                    udp      5353 +
-hplip_port_t                   tcp      1782, 2207, 2208, 8290, 8292, 9100, 9101, 9102, 9220, 9221, 9222, 9280, 9281, 9282, 9290, 9291, 50000, 50002 +
-http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010 +
-http_cache_port_t              udp      3130 +
-http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000 +
-...+
 </code> </code>
  
-Notez par exemple que le serveur apache est autorisé d'utiliser les ports suivants :+Les options de la commande quotacheck sont :
  
-<file+<code
-http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000 +[root@centos8 ~]# quotacheck --help 
-</file>+Utility for checking and repairing quota files. 
 +quotacheck [-gucbfinvdmMR] [-F <quota-format>] filesystem|-a
  
-Dans le cas où on souhaite qu'apache utilise le port **8090** par exempleil est nécessaire de créer la règle adéquate avec la commande semanage :+-u--user                check user files 
 +-g, --group               check group files 
 +-c, --create-files        create new quota files 
 +-b, --backup              create backups of old quota files 
 +-f, --force               force check even if quotas are enabled 
 +-i, --interactive         interactive mode 
 +-n, --use-first-dquot     use the first copy of duplicated structure 
 +-v, --verbose             print more information 
 +-d, --debug               print even more messages 
 +-m, --no-remount          do not remount filesystem read-only 
 +-M, --try-remount         try remounting filesystem read-only, 
 +                          continue even if it fails 
 +-R, --exclude-root        exclude root when checking all filesystems 
 +-F, --format=formatname   check quota files of specific format 
 +-a, --all                 check all filesystems 
 +-h, --help                display this message and exit 
 +-V, --version             display version information and exit
  
-<code> +Bugs to jack@suse.cz
-[root@centos7 ~]# semanage port -a -t http_port_t -p tcp 8090+
 </code> </code>
  
-Vous noterez que le port 8090 a été ajouté à la liste des ports reconnus comme valides par %%SELinux%% :+Les quotas ont été activés et les fichier **aquota.user** et **aquota.group** ont été créés dans le répertoire /home :
  
 <code> <code>
-[root@centos7 tmp]# semanage port -l | grep http +[root@centos8 ~]# ls -la /home 
-http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010 +total 40 
-http_cache_port_t              udp      3130 +drwxr-xr-x.  4 root    root     4096 Jul 21 11:27 . 
-http_port_t                    tcp      8090, 80, 81, 443, 488, 8008, 8009, 8443, 9000 +dr-xr-xr-x. 17 root    root      224 Jul 19 12:05 .. 
-pegasus_http_port_t            tcp      5988 +-rw-------.  1 root    root     7168 Jul 21 11:27 aquota.group 
-pegasus_https_port_t           tcp      5989+-rw-------.  1 root    root     7168 Jul 21 11:27 aquota.user 
 +drwx------.  2 root    root    16384 Jul 19 12:02 lost+found 
 +drwxr-xr-x. 17 trainee trainee  4096 Jul 21 11:22 trainee 
 </code> </code>
  
-====La commande audit2allow====+Créez maintenant un utilisateur **fenestros** avec le mot de passe **fenestros** :
  
 <code> <code>
-[root@centos7 tmp]# audit2allow --help +[root@centos8 ~]# groupadd fenestros && useradd fenestros -c FenestrOs -d /home/fenestros -g fenestros -s /bin/bash 
-Usage: audit2allow [options] +[root@centos8 ~]# passwd fenestros 
- +Changing password for user fenestros. 
-Options: +New password:  
-  --version             show program'version number and exit +BAD PASSWORD: The password contains the user name in some form 
-  -h, --help            show this help message and exit +Retype new password:  
-  -b, --boot            audit messages since last boot conflicts with -i +passwd: all authentication tokens updated successfully.
-  -a, --all             read input from audit log - conflicts with -i +
-  -p POLICY, --policy=POLICY +
-                        Policy file to use for analysis +
-  -d, --dmesg           read input from dmesg - conflicts with --all and +
-                        --input +
-  -i INPUT, --input=INPUT +
-                        read input from <input> - conflicts with -a +
-  -l, --lastreload      read input only after the last reload +
-  -r, --requires        generate require statements for rules +
-  -m MODULE, --module=MODULE +
-                        set the module name - implies --requires +
-  -M MODULE_PACKAGE, --module-package=MODULE_PACKAGE +
-                        generate a module package - conflicts with -o and -m +
-  -o OUTPUT, --output=OUTPUT +
-                        append output to <filename>, conflicts with -M +
-  -D, --dontaudit       generate policy with dontaudit rules +
-  -R, --reference       generate refpolicy style output +
-  -N, --noreference     do not generate refpolicy style output +
-  -v, --verbose         explain generated output +
-  -e, --explain         fully explain generated output +
-  -t TYPE, --type=TYPE  only process messages with a type that matches this +
-                        regex +
-  --perm-map=PERM_MAP   file name of perm map +
-  --interface-info=INTERFACE_INFO +
-                        file name of interface information +
-  --debug               leave generated modules for -M +
-  -w, --why             Translates SELinux audit messages into a description +
-                        of why the access was denied+
 </code> </code>
  
-La création d'un module de politique personnalisé se fait en utilisant la commande **audit2allow**. L'administrateur de sécurité à recours à la création de modules quand, et uniquement quand : +====3.2 - La Commande edquota====
- +
-  * la résolution du problème n'est pas possible en utilisant une des commandes précédemment citées, +
-  * il n'existe pas de booléen capable de régler le problème.+
  
-Pour illustrer l'utilisation de cette commande, créez un nouveau répertoire pour les documents d'apache ainsi que la page d'accueil :+Mettez en place maintenant un quota de 10Mo pour l'utilisateur **fenestros** :
  
 <code> <code>
-[root@centos7 tmp]# mkdir /www1 +[root@centos8 ~]# edquota -u fenestros -f /home
-[root@centos7 tmp]# touch /www1/index.html+
 </code> </code>
  
-Éditez le fichier **/etc/httpd/conf/httpd.conf** :+L'éditeur **vi** se lance et vous obtiendrez un résultat similaire à celui-ci :
  
 <file> <file>
-[...] +Disk quotas for user fenestros (uid 1001): 
-#DocumentRoot "/var/www/html" +  Filesystem                   blocks       soft       hard     inodes     soft     hard 
-DocumentRoot "/www1" +  /dev/sdc1                                  0          0          0        0        0
-[...]+
 </file> </file>
  
-Ajoutez les section **<Directory "/www">**:+Modifiez ce fichier ainsi :
  
 <file> <file>
-... +Disk quotas for user fenestros (uid 1001): 
-<Directory "/var/www"> +  Filesystem                   blocks       soft       hard     inodes     soft     hard 
-    AllowOverride None +  /dev/sdc1                               8000      10000          0        0        0 
-    # Allow open access: +</file>
-    Require all granted +
-</Directory>+
  
-<Directory "/www1"> +Sauvegardez et quittez le fichier.
- Options Indexes FollowSymLinks +
- AllowOverride None +
- Require all granted +
-</Directory> +
- +
-# Further relax access to the default document root: +
-<Directory "/var/www/html"> +
-... +
-</file>+
  
-Créez le fichier **/www1/index.html** :+Les options de la commande **edquota** sont :
  
 <code> <code>
-[root@centos7 ~]# cd ~ +[root@centos8 ~]# edquota --help 
-[root@centos7 ~]# vi /www1/index.html +edquota: Usage: 
-[root@centos7 ~]# cat /www1/index.html +        edquota [-rm[-u] [-F formatname] [-p username] [-f filesystem] username ..
-<html> +        edquota [-rm-g [-F formatname] [-p groupname] [-f filesystem] groupname ..
-<title> +        edquota [-rm] -P [-F formatname] [-p projectname] [-f filesystem] projectname ... 
-This is a test +        edquota [-u|g|-P] [-F formatname] [-f filesystem] -t 
-</title> +        edquota [-u|g|-P] [-F formatname] [-f filesystem] -T username|groupname|projectname ...
-<body> +
-www test page +
-</body> +
-</html> +
-</code>+
  
-Modifiez ensuite le propriétaire et le groupe du répertoire **/www1** et son contenu :+-u, --user                    edit user data 
 +-g, --group                   edit group data 
 +-P, --project                 edit project data 
 +-r, --remote                  edit remote quota (via RPC) 
 +-m, --no-mixed-pathnames      trim leading slashes from NFSv4 mountpoints 
 +-F, --format=formatname       edit quotas of a specific format 
 +-p, --prototype=name          copy data from a prototype user/group 
 +    --always-resolve          always try to resolve name, even if it is 
 +                              composed only of digits 
 +-f, --filesystem=filesystem   edit data only on a specific filesystem 
 +-t, --edit-period             edit grace period 
 +-T, --edit-times              edit grace time of a user/group 
 +-h, --help                    display this help text and exit 
 +-V, --version                 display version information and exit
  
-<code> +Bugs tojack@suse.cz
-[root@centos7 ~]# chown -R apache:apache /www1+
 </code> </code>
  
-Redémarrez le service httpd :+<WRAP center round important 60%> 
 +**Important** - Pour mettre en place un quota par group, la procédure est similaire. Il suffit d'utiliser l'option -g de la commande edquota. 
 +</WRAP>
  
-<code> +====3.3 - La Commande quotaon====
-[root@centos7 ~]# systemctl restart httpd.service  +
-</code>+
  
-Consultez le site localhost en utilisant **lynx** +Appliquez maintenant les quotas :
  
 <code> <code>
-[root@centos7 ~]# lynx localhost+[root@centos8 ~]# quotaon -a
 </code> </code>
  
-Le fichier **/var/log/audit/audit.log** contient maintenant des notifications de type **AVC** :+Les options de la commande **quotaon** sont :
  
 <code> <code>
-[root@centos7 ~]# cat /var/log/audit/audit.log | grep AVC +[root@centos8 ~]# quotaon --help 
-type=USER_AVC msg=audit(1462020229.957:425)pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc:  received policyload notice (seqno=2)  exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?' +quotaonUsage
-type=AVC msg=audit(1524491216.546:616): avc:  denied  { getattr } for  pid=15389 comm="gssproxy" name="/" dev="sda2" ino=128 scontext=system_u:system_r:gssproxy_t:s0 tcontext=system_u:object_r:fs_t:s0 tclass=filesystem +        quotaon [-guPvp] [-F quotaformat] [-x state] -a 
-type=AVC msg=audit(1524491220.766:622): avc:  denied  { getattr } for  pid=15459 comm="gssproxy" name="/" dev="sda2" ino=128 scontext=system_u:system_r:gssproxy_t:s0 tcontext=system_u:object_r:fs_t:s0 tclass=filesystem +        quotaon [-guPvp] [-F quotaformat] [-x state] filesys ...
-type=AVC msg=audit(1529418883.052:818): avc:  denied  { getattr } for  pid=10071 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529418883.052:819): avc:  denied  { getattr } for  pid=10071 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529418919.091:822): avc:  denied  { getattr } for  pid=10385 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529418919.092:823): avc:  denied  { getattr } for  pid=10385 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529418954.500:826): avc:  denied  { getattr } for  pid=10669 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529418954.500:827): avc:  denied  { getattr } for  pid=10669 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529419054.949:865): avc:  denied  { getattr } for  pid=10670 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529419054.949:866): avc:  denied  { getattr } for  pid=10670 comm="httpd" path="/www/index.html" dev="sda2" ino=35670335 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=USER_AVC msg=audit(1529421001.608:919): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc:  received policyload notice (seqno=2)  exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?' +
-type=USER_AVC msg=audit(1529421602.007:946): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='avc:  received policyload notice (seqno=3)  exe="/usr/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?' +
-type=AVC msg=audit(1529422368.058:1019): avc:  denied  { getattr } for  pid=1755 comm="httpd" path="/www1/index.html" dev="sda2" ino=53579496 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-type=AVC msg=audit(1529422368.058:1020): avc:  denied  { getattr } for  pid=1755 comm="httpd" path="/www1/index.html" dev="sda2" ino=53579496 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:default_t:s0 tclass=file +
-</code>+
  
-A l'aide de la commande grep, il convient maintenant d'envoyer les messages d'erreurs en provenance du fichier **/var/log/audit/audit.log** sur l'entrée standard de la commande **audit2allow** afin de permettre celle-ci de créer des règles permettant l'autorisation de ce qui été précédemment interdit par %%SELinux%% : +-a, --all                turn quotas on for all filesystems 
- +-f, --off                turn quotas off 
-<code> +-u, --user               operate on user quotas 
-[root@centos7 ~]# grep httpd_t /var/log/audit/audit.log | audit2allow -m httpdlocal > httpdlocal.te+-g, --group              operate on group quotas 
 +-P, --project            operate on project quotas 
 +-p, --print-state        print whether quotas are on or off 
 +-x, --xfs-command=cmd    perform XFS quota command 
 +-F, --format=formatname  operate on specific quota format 
 +-v, --verbose            print more messages 
 +-h, --help               display this help text and exit 
 +-V, --version            display version information and exit
 </code> </code>
  
-L'examen du fichier **httpdlocal.te** révèle la création de ces règles :+De cette manière vous avez mis en place un quota **souple** pour fenestros de 8 000 Ko et un quota **stricte** de 10 000 Ko. 
  
-<code> +Quand l'utilisateur fenestros aura dépassé le quota **souple**, il recevra un message d'avertissement. Quand il dépasse le quota **stricte**, il ne pourra plus enregistrer dans /home, sauf dans le cas où il supprime des fichiers pour retomber en dessous de la limite **stricte**.
-[root@centos7 ~]# cat httpdlocal.te+
  
-module httpdlocal 1.0;+Il est à noter que vous pouvez soit mettre en place un quota en taille, soit mettre en place un quota basé sur le nombre d'inodes utilisés par l'utilisateur.
  
-require { +<WRAP center round important 60%> 
- type httpd_t; +**important** - La commande pour désactivez les quotas est **quotaoff**.  
- type default_t; +</WRAP>
- class file getattr; +
-}+
  
-#============= httpd_t ==============+====3.4 - La Commande repquota====
  
-#!!!! WARNING'default_t' is a base type. +Pour visualiser les quotas utilisez la commande **repquota** 
-#!!!! The file '/www/index.html' is mislabeled on your system.   + 
-#!!!! Fix with $ restorecon -R -v /www/index.html +<code> 
-allow httpd_t default_t:file getattr;+[root@centos8 ~]repquota /home 
 +*** Report for user quotas on device /dev/sdc1 
 +Block grace time7daysInode grace time: 7days 
 +                        Block limits                File limits 
 +User            used    soft    hard  grace    used  soft  hard  grace 
 +---------------------------------------------------------------------- 
 +root      --      20                          2                
 +trainee   -- 21495888                     136532                      
 +   
 </code> </code>
  
-L'audit du fichier terminéil faut maintenant utiliser audit2allow pour fabriquer un module de politique :+<WRAP center round important 60%> 
 +**Important** - Notez que l'utilisateur fenestros ne figure pas dans la liste. Sous RHEL / CentOSle quota n'est pas visible tant que l'utilisateur ne s'est pas connecté pour la première fois.  
 +</WRAP> 
 + 
 +Les options de la commande **repquota** sont :
  
 <code> <code>
-[root@centos7 ~]# grep httpd_t /var/log/audit/audit.log | audit2allow -M httpdlocal +[root@centos8 ~]# repquota --help 
-******************** IMPORTANT *********************** +repquota: Utility for reporting quotas. 
-To make this policy package active, execute:+Usage: 
 +repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] [-O (default | xml | csv)] (-a | mntpoint)
  
-semodule -i httpdlocal.pp+-v, --verbose               display also users/groups without any usage 
 +-u, --user                  display information about users 
 +-g, --group                 display information about groups 
 +-P, --project               display information about projects 
 +-s, --human-readable        show numbers in human friendly units (MB, GB, ...) 
 +-t, --truncate-names        truncate names to 9 characters 
 +-p, --raw-grace             print grace time in seconds since epoch 
 +-n, --no-names              do not translate uid/gid to name 
 +-i, --no-autofs             avoid autofs mountpoints 
 +-c, --cache                 translate big number of ids at once 
 +-C, --no-cache              translate ids one by one 
 +-F, --format=formatname     report information for specific format 
 +-O, --output=format         format output as xml or csv 
 +-a, --all                   report information for all mount points with quotas 
 +-h, --help                  display this help message and exit 
 +-V, --version               display version information and exit 
 + 
 +Bugs to jack@suse.cz
 </code> </code>
  
-Chargez maintenant le module dans la politique %%SELinux%% :+====3.5 - La Commande quota==== 
 + 
 +Pour visualiser les quotas d'un utilisateur spécifique, il convient d'utiliser la commande **quota** :
  
 <code> <code>
-[root@centos7 ~]# semodule -i httpdlocal.pp+[root@centos8 ~]# quota fenestros 
 +Disk quotas for user fenestros (uid 1001): no limited resources used 
 +[root@centos8 ~]# su fenestros 
 +[fenestros@centos8 ~]$ touch test 
 +[fenestros@centos8 ~]$ exit 
 +logout 
 +[root@centos8 ~]# quota fenestros 
 +Disk quotas for user fenestros (uid 1001):  
 +     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace 
 +      /dev/sdc1          8000   10000                                       
 </code> </code>
  
-Vérifiez que le module est chargé :+Les options de la commande **quota** sont :
  
 <code> <code>
-[root@centos7 ~]# semodule -l | grep httpd +[root@centos8 ~]# quota --help 
-httpdlocal 1.0 +quota: Usage: quota [-guPqvswim] [-l | [-Q | -A]] [-F quotaformat] 
-</code>+        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ..
 +        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ... 
 +        quota [-qvswugPQm] [-F quotaformat] -f filesystem ...
  
-Redémarrez le service httpd :+-u, --user                display quota for user 
 +-g, --group               display quota for group 
 +-P, --project             display quota for project 
 +-q, --quiet               print more terse message 
 +-v, --verbose             print more verbose message 
 +-s, --human-readable      display numbers in human friendly units (MB, GB...) 
 +    --always-resolve      always try to translate name to id, even if it is 
 +                          composed of only digits 
 +-w, --no-wrap             do not wrap long lines 
 +-p, --raw-grace           print grace time in seconds since epoch 
 +-l, --local-only          do not query NFS filesystems 
 +-Q, --quiet-refuse        do not print error message when NFS server does 
 +                          not respond 
 +-i, --no-autofs           do not query autofs mountpoints 
 +-F, --format=formatname   display quota of a specific format 
 +-f, --filesystem-list     display quota information only for given filesystems 
 +-A, --all-nfs             display quota for all NFS mountpoints 
 +-m, --no-mixed-pathnames  trim leading slashes from NFSv4 mountpoints 
 +    --show-mntpoint       show mount point of the file system in output 
 +    --hide-device         do not show file system device in output 
 +-h, --help                display this help message and exit 
 +-V, --version             display version information and exit
  
-<code> +Bugs to: jack@suse.cz
-[root@centos7 ~]# systemctl restart httpd.service +
 </code> </code>
  
-Videz le fichier **/var/log/audit/audit.log** :+====3.6 - La Commande warnquota==== 
 + 
 +La commande **warnquota** vérifie le ou les disques et envoie un message par mail à tout utilisateur qui a dépassé la limite soft. Elle est enrègle générale appelée par un job cron. Cependant elle peut aussi est appelée d'une manière intéractive. 
 + 
 +Sous RHEL/CentOS, warnquota n'est pas installé par défaut :
  
 <code> <code>
-[root@centos7 ~]# vi /var/log/audit/audit.log+[root@centos8 ~]# which warnquota 
 +/usr/bin/which: no warnquota in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
 </code> </code>
  
-Consultez le site localhost :+Installez donc le paquet **quota-warnquota** 
  
 <code> <code>
-[root@centos7 ~]# lynx localhost+[root@centos7 ~]# dnf install quota-warnquota 
 +...
 </code> </code>
  
-Constatez que la consultation ne génère plus de messages de type **AVC** :+Les options de la commande **warnquota** sont :
  
 <code> <code>
-[root@centos7 ~]# cat /var/log/audit/audit.log +[root@centos8 ~]# warnquota --help 
-[root@centos7 ~]+warnquota: Usage: 
 +  warnquota [-ugsid[-F quotaformat] [-c configfile] [-q quotatabfile] [-a adminsfile] [filesystem...] 
 + 
 +-u, --user                      warn users 
 +-g, --group                     warn groups 
 +-s, --human-readable            send information in more human friendly units 
 +-i, --no-autofs                 avoid autofs mountpoints 
 +-d, --no-details                do not send quota information itself 
 +-F, --format=formatname         use quotafiles of specific format 
 +-c, --config=config-file        non-default config file 
 +-q, --quota-tab=quotatab-file   non-default quotatab 
 +-a, --admins-file=admins-file   non-default admins file 
 +-h, --help                      display this help message and exit 
 +-v, --version                   display version information and exit 
 + 
 +warnquota: Bugs to jack@suse.cz
 </code> </code>
  
 ----- -----
-<html> +Copyright © 2024 Hugh Norris.
-<div align="center"> +
-Copyright © 2021 Hugh Norris.<br><br> +
-</div> +
-</html>+
Menu