Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:workbooks:centos:8:avance:l115 [2023/12/08 14:56] – created 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~~
  
-======LRF402 Netfilter et Firewalld======+======LCF607 Gestion du Noyau et des Quotas======
  
 =====Contenu du Module===== =====Contenu du Module=====
  
-  * **LRF402 Netfilter et Firewalld**+  * **LCF607 Gestion du Noyau et des Quotas**
     * Contenu du Module     * Contenu du Module
-    * Les Problématiques +    * Rôle du noyau 
-      L'IP Spoofing +    LAB #1 - Modules 
-      * Déni de Service (DoS) +    * LAB #2 - Compilation et installation du noyau et des modules 
-      * SYN Flooding +      * 2.1 - Déplacer /home 
-      * Flood +      * 2.2 - Préparer l'Environnement 
-    * Le Contre-Mesure +      * 2.3 - Préparer l'Arborescence Source du Noyau 
-      * Le Pare-feu Netfilter/iptables +        * Le Fichier .config 
-      * LAB #1 - Configuration par Scripts sous RHEL/CentOS 6 et versions Antérieures +        * Le Fichier Makefile 
-      * LAB #2 - La Configuration par firewalld sous RHEL/CentOS 7 +      * 2.4 Paramétrage du noyau 
-        * La Configuration de Base de firewalld +      * 2.5 Compiler le Noyau 
-        * La Commande firewall-cmd +      * 2.6 - Installer le Nouveau Noyau 
-        * La Configuration Avancée de firewalld +    * LAB #3 - Gestion des Quotas 
-        Le mode Panic de firewalld+      * 3.1 - La Commande quotacheck 
 +      * 3.2 - La Commande edquota 
 +      3.3 - La Commande quotaon 
 +      3.4 - La Commande repquota 
 +      3.5 - La Commande quota 
 +      3.6 - La Commande warnquota
  
-=====Les Problématiques=====+=====Rôle du noyau=====
  
-====L'IP Spoofing====+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 :
  
-L'IP Spoofing consiste en faire croire à un serveur que sa machine possède une adresse IP autre que celle réellement attribuée. Le but de cette opération est de se placer en tant que point de passage obligatoire des paquets envoyés entre le serveur et le vrai //propriétaire// de l'adresse IP spoofée. Le mécanisme est la suivante :+  * 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 :
  
-  * L'attaquant change son adresse IP en prenant une à laquelle le serveur cible fera confiance, +<code> 
-  * L'attaquant envoie une requête au serveur en stipulant une route de communication qui passe par l'adresse IP réelle de l'attaquant, +[root@centos8 ~]# dnf update 
-  * L'attaquant reprend son adresse IP réelle, +... 
-  * Le serveur accepte la requête car elle provient d'une adresse IP à laquelle il peux faire confiance et renvoie une réponse en utilisant la route spécifiée par l'attaquant, +[root@centos8 ~]# reboot 
-  * Le client utilise la route spécifiée par l'attaquant pour répondre au serveur.+</code>
  
-====Déni de Service (DoS)====+Identifiez ensuite le noyau utilisé par votre machine virtuelle :
  
-Une attaque de déni de service consiste à rendre inopérable une machine en lui envoyant une grande quantité de données inutilesUn exemple de ce type d'attaque s'appelle un //ping flood/:+<code> 
 +[root@centos8 ~]# uname -r 
 +4.18.0-305.7.1.el8_4.x86_64 
 +</code>
  
-  * L'attaquant prend l'adresse IP de sa cible, +=====LAB #1 - Modules=====
-  * Il envoie ensuite un ping à une machine de diffusion, +
-  * La machine de diffusion envoie ce même ping à un grand nombre de clients en spécifiant l'origine de la requête, +
-  * L'attaquant reprend son adresse IP d'origine, +
-  * Tous les clients renvoie une réponse au ping //en même temps// à la cible.+
  
-====SYN Flooding====+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>** :
  
-Le **SYN Flooding**, aussi appelé un //SYN-ACK Attack//, consiste à envoyer vers une cible de multiples paquets **SYN** très rapidementLa cible répond à chaque paquet reçu avec un paquet **ACK** et attend une réponse **ACK** de l'attaquantA ce stade pour chaque ACK renvoyé par la cible, une connexion dite //semi-ouverte// existe entre les deux machinesLa cible doit réserver une petite partie de sa mémoire pour chaque connexion semi-ouverte jusqu'au //time-out// de la dite semi-connexionSi l'attaquant envoie très rapidement des paquets SYN, le système de time-out n'a pas la possibilité d'expirer les semi-connexions précédentesDans ce cas la mémoire de la cible se remplit et on obtient un //buffer overflow//.+<code> 
 +[root@centos8 ~]# ls /lib/modules/`uname -r`/ 
 +bls.conf           modules.builtin      modules.networking   System.map 
 +build              modules.builtin.bin  modules.order        updates 
 +config             modules.dep          modules.softdep      vdso 
 +kernel             modules.dep.bin      modules.symbols      vmlinuz 
 +modules.alias      modules.devname      modules.symbols.bin  weak-updates 
 +modules.alias.bin  modules.drm          source 
 +modules.block      modules.modesetting  symvers.gz 
 +</code>
  
-====Flood====+Les commandes pour manipuler les modules sont :
  
-Le **Flood** consiste à envoyer très rapidement des gros paquets **ICMP** vers la cible.+  insmod 
 +  rmmod 
 +  lsmod 
 +  modprobe
  
-=====Le Contre-Mesure=====+Par exemple :
  
-Le contre-mesure est principalement l'utilisation d'un pare-feu.+<code> 
 +[root@centos8 ~]# lsmod 
 +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 
 +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  6 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 
 +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 
 +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  4 nf_conntrack,nf_nat,nf_tables,xfs 
 +sr_mod                 28672 
 +sd_mod                 53248 
 +cdrom                  65536  1 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  2 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  4 ata_piix,libahci,ahci,ata_generic 
 +dm_mirror              28672  0 
 +dm_region_hash         20480  1 dm_mirror 
 +dm_log                 20480  2 dm_region_hash,dm_mirror 
 +dm_mod                151552  8 dm_log,dm_mirror 
 +fuse                  151552 
 +</code>
  
-====Le Pare-feu Netfilter/iptables=====+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 :
  
-**Netfilter** est composé de 5 //hooks// :+<code> 
 +[root@centos8 ~]# modprobe bonding 
 +[root@centos8 ~]# lsmod | more 
 +Module                  Size  Used by 
 +bonding               196608 
 +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 
 +--More-- 
 +</code>
  
-  NF_IP_PRE_ROUTING +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 :
-  NF_IP_LOCAL_IN +
-  NF_IP_LOCAL_OUT +
-  NF_IP_FORWARD +
-  NF_IP_POSTROUTING+
  
-Ces hooks sont utilisés par deux branchesla première est celle concernée par les paquets qui entrent vers des services locaux :+<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>
  
-  NF_IP_PRE_ROUTING NF_IP_LOCAL_IN > NF_IP_LOCAL_OUT > NF_IP_POSTROUTING+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** :
  
-tandis que la deuxième concerne les paquets qui traversent la passerelle:+<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>
  
-  NF_IP_PRE_ROUTING > NF_IP_FORWARD > NF_IP_POSTROUTING+Il est possible d'obtenir des informations sur un module grâce à la commande **modinfo** :
  
-Si IPTABLES été compilé en tant que moduleson utilisation nécessite le chargement de plusieurs modules supplémentaires en fonction de la situation:+<code> 
 +[root@centos8 ~]# modinfo bonding 
 +filename:       /lib/modules/4.18.0-305.7.1.el8_4.x86_64/kernel/drivers/net/bonding/bonding.ko.xz 
 +author:         Thomas Davis, tadavis@lbl.gov and many others 
 +description:    Ethernet Channel Bonding Driver 
 +license:        GPL 
 +alias:          rtnl-link-bond 
 +rhelversion:    8.4 
 +srcversion:     445F4CC9A2F7E64E3A87FD0 
 +depends:         
 +intree:         Y 
 +name:           bonding 
 +vermagic:       4.18.0-305.7.1.el8_4.x86_64 SMP mod_unload modversions  
 +sig_id:         PKCS#
 +signer:         CentOS kernel signing key 
 +sig_key:        3B:5A:0A:B8:8E:4A:51:C0:AA:FF:97:FD:CB:94:D6:B6:D2:46:B8:17 
 +sig_hashalgo:   sha256 
 +signature:      B2:3A:20:BE:2B:F3:E0:5A:1A:74:0E:69:76:40:2A:D4:80:10:2C:5A: 
 +                B7:F1:1E:7A:71:13:29:F0:0A:4A:28:EE:81:33:C8:C2:5C:BD:FF:E4: 
 +                3F:A9:15:A3:9A:0E:A7:98:9E:99:06:23:10:47:D3:B2:48:B3:F1:61: 
 +                BE:4B:B0:FC:62:B9:3B:D6:64:CC:E3:29:01:4D:91:92:32:FD:EB:54: 
 +                44:F1:2C:1B:23:30:F1:3E:EE:69:EA:94:54:D9:A0:8D:16:53:F5:20: 
 +                DE:38:A0:13:E8:2F:89:66:CB:11:D7:AA:30:37:7B:EC:DF:A1:69:29: 
 +                7F:4E:80:4D:34:6E:F2:07:01:FA:18:23:94:58:10:C6:97:27:68:B9: 
 +                D8:08:5E:9D:00:17:F4:1B:48:BE:CA:BF:5C:5A:A8:6D:36:EE:3F:95: 
 +                BA:BE:59:82:EE:7B:CA:BB:32:1E:E3:05:ED:C9:C2:C8:10:64:B9:29: 
 +                B8:09:4B:79:42:65:1A:FA:99:96:BA:7E:2D:6E:75:F1:91:0E:F4:9A: 
 +                8F:11:10:9F:70:BD:35:06:BE:F0:4C:D8:AB:D5:C4:E1:B3:A2:2A:CA: 
 +                58:CA:9E:16:1D:0C:BE:9C:37:A1:82:20:6F:24:CD:23:63:F7:F5:BC: 
 +                6E:81:14:F0:52:DA:04:0E:9D:CC:17:60:2D:B0:D8:BD:6E:2C:AD:E7: 
 +                50:48:49:B6:57:96:AC:FD:A4:29:33:01:43:92:32:88:A2:AC:CB:93: 
 +                2F:C3:29:F3:01:77:84:00:AB:AA:C8:59:43:F1:DA:90:7B:5F:9A:A9: 
 +                CA:60:97:34:85:5E:98:56:73:03:0D:D7:8D:A6:AB:51:D4:8C:92:91: 
 +                0C:0A:BA:6B:92:01:16:FE:8B:86:80:11:5F:8E:21:BD:C2:2F:02:58: 
 +                A6:CF:6C:E3:87:28:8B:4D:CE:54:8C:00:B3:F7:AE:9E:01:81:1E:83: 
 +                AE:6D:58:B0:10:98:36:D9:69:76:E2:C0:E2:15:94:3B:D4:14:19:D9: 
 +                59:86:75:31 
 +parm:           max_bonds:Max number of bonded devices (int) 
 +parm:           tx_queues:Max number of transmit queues (default = 16) (int) 
 +parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int) 
 +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 random slave1 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>
  
-  iptable_filter +Dernièrement, les 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 :
-  iptable_mangle +
-  iptable_net +
-  etc+
  
-Netfilter est organisé en **tables**La commande **iptables** de netfilter permet d'insérer des **policies** dans les **chaines**:+<code> 
 +[root@centos8 ~]# ls /etc/modprobe.d 
 +firewalld-sysctls.conf  lockd.conf  nvdimm-security.conf  tuned.conf 
 +kvm.conf                mlx4.conf   truescale.conf        vhost.conf
  
-  * La table **FILTER** +[root@centos8 ~]# cat /etc/modprobe.d/kvm.conf  
-    * La chaîne INPUT +# Setting modprobe kvm_intel/kvm_amd nested = 1 
-      * Concerne les paquets entrants +# only enables Nested Virtualization until the next reboot or 
-        * Policies: ACCEPT, DROP, REJECT +# module reload. Uncomment the option applicable 
-    * La chaîne OUTPUT +# to your system below to enable the feature permanently. 
-      * Concerne les paquets sortants +# 
-        * Policies: ACCEPT, DROP, REJECT +# User changes in this file are preserved across upgrades. 
-    * La chaîne FORWARD +# 
-      * Concerne les paquets traversant le par-feu. +# For Intel 
-        * Policies: ACCEPT, DROP, REJECT+#options kvm_intel nested=1 
 +
 +# For AMD 
 +#options kvm_amd nested=1 
 +</code>
  
-Si aucune table n'est précisée, c'est la table FILTER qui s'applique par défaut.+=====LAB #2 - Compilation et installation du noyau et des modules=====
  
-  La table **NAT** +Activez le dépôt **CentOS-Stream-PowerTools** en passant la directive **enabled** à **1** :
-    La chaîne PREROUTING +
-      Permet de faire la translation d'adresse de destination +
-        Cibles: SNAT, DNAT, MASQUERADE +
-    La chaîne POSTROUTING +
-      Permet de faire la translation d'adresse de la source +
-        CiblesSNAT, DNAT, MASQUERADE +
-    * Le cas spécifique OUTPUT +
-      * Permet la modification de la destination des paquets générés localement+
  
-  * La table **MANGLE** +<code> 
-    * Permet le marquage de paquets générés localement (OUTPUT) et entrants (PREROUTING)+[root@centos8 ~]# vi /etc/yum.repos.d/CentOS-Stream-PowerTools.repo  
 +[root@centos8 ~]# cat /etc/yum.repos.d/CentOS-Stream-PowerTools.repo  
 +# 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 you, as a fall back you can try the 
 +# remarked out baseurl= line instead. 
 +
 +#
  
-Les **policies** sont:+[Stream-PowerTools] 
 +name=CentOS-Stream - PowerTools 
 +###mirrorlist=http://###mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=PowerTools&infra=$infra 
 +baseurl=http://vault.centos.org/$contentdir/$stream/PowerTools/$basearch/os/ 
 +gpgcheck=1 
 +enabled=1 
 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial 
 +</code>
  
-  * ACCEPT +Installez maintenant les paquets necéssaires :
-    * Permet d'accepter le paquet concerné +
-  * DROP +
-    * Permet de rejeter le paquet concerné sans générer un message d'erreur +
-  * REJECT +
-    * Permet de rejeter le paquet concerné en générant une message d'erreur+
  
-Les **cibles** sont:+<code> 
 +[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>
  
-  * SNAT +====2.1 - Déplacer /home====
-    * Permet de modifier l'adresse source du paquet concerné +
-  * DNAT +
-    * Permet de modifier l'adresse de destination du paquet concerné +
-  * MASQUERADE +
-    * Permet de remplacer l'adresse IP privée de l'expéditeur par un socket public de la passerelle.+
  
-IPTABLES peut être configuré soit par des outils tels shorewall, soit en utilisant des lignes de commandes ou un scriptDans ce dernier casla ligne prend la forme:+<WRAP center round alert 60%> 
 +**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. 
 +</WRAP>
  
-  # IPTABLES --action CHAINE --option1 --option2+<WRAP center round todo 60%> 
 +**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>
  
-Les actions sont:+Créez ensuite une seule partition sur **/dev/sdc** :
  
-^  Action  ^  Abréviation  ^  Déscription  ^ +<code> 
-| - -append |  -A  | Ajouter une règle à la fin de la chaîne spécifiée |  +[root@centos8 ~]# fdisk /dev/sdc
-| - -delete |  -D  | Supprimer une règle en spécifiant son numéro ou la règle à supprimer |  +
-| - -replace |  -R  | Permet de remplacer la règle spécifée par son numéro |  +
-| - -insert |  -I  | Permet d'insérer une règle à l'endroit spécifié |  +
-| - -list |  -L  | Permet d'afficher des règles | +
-| - -flush |  -F  | Permet de vider toutes les règles d'une chaîne |  +
  
-Les options sont:+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.
  
-^  Option  ^  Abréviation  ^  Déscription  ^ +Device does not contain a recognized partition table. 
-| - -protocol |  -p  | Permet de spécifier un protocol - tcp, udp, icmp, all |  +Created a new DOS disklabel with disk identifier 0xc321702b.
-| - -source |  -s  | Permet de spécifier une adresse source |  +
-| - -destination |  -d  | Permet de spécifier une adresse de destination |  +
-| - -in-interface |  -i  | Permet de spécifier une interface réseau d'entrée |  +
-| - -out-interface |  -o  | Permet de spécifier une interface réseau de sortie | +
-| - -fragment |  -f  | Permet de ne spécifier que les paquets fragmentés |   +
-| - -source-port |  -sport  | Permet de spécifier un port source ou une plage de ports source |  +
-| - -destination-port |  -dport  | Permet de spécifier un port de destination ou une plage de ports de destination |  +
-| - -tcp-flags |  s/o  | Permet de spécifier un flag TCP à matcher - SYN, ACK, FIN, RST, URG, PSH, ALL, NONE |  +
-| - -icmp-type |  s/o  | Permet de spécifier un type de paquet ICMP | +
-| - -mac-source |  s/o  | Permet de spécifier une adresse MAC | +
  
-Les options spécifiques à NET sont:+Command (m for help): n 
 +Partition type 
 +     primary (0 primary, 0 extended, 4 free) 
 +     extended (container for logical partitions) 
 +Select (default p)
  
-- -to-destination |  s/o  | Permet de spécifier l'adresse de destination d'une translation |  +Using default response p. 
-| - -to-source |  s/o  | Permet spécifier l'adresse source d'une translation | +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): 
  
-Les options spécifiques aux LOGS sont:+Created a new partition 1 of type 'Linux' and of size 20 GiB.
  
--log-level |  s/o  | Permet de spécifier le niveau de logs |  +Command (m for help): w 
-| - -log-prefix |  s/o  | Permet de spécifier un préfix pour les logs |+The partition table has been altered. 
 +Calling ioctl() to re-read partition table. 
 +Syncing disks. 
 +</code>
  
-L'option spécifique au STATEFUL est:+Créez maintenant un système de fichiers ext4 sur **/dev/sdc1** :
  
-- -state |  s/o  | Permet de spécifier l'état du paquet à vérifier | +<code> 
 +[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
  
-Ce dernier cas fait référence au STATEFUL. Le STATEFUL est la capacité du par-feu à enregistrer dans une table spécifique, l'état des différentes connexions. Cette table s'appelle une **table d'état**. Le principe du fonctionnement de STATEFUL est simple, à savoir, si le paquet entrant appartient à une communication déjà établie, celui-ci n'est pas vérifié.+Allocating group tables: done                             
 +Writing inode tables: done                             
 +Creating journal (65536 blocks): done 
 +Writing superblocks and filesystem accounting information: done  
 +</code>
  
-Il existe 4 états:+Montez **/dev/sdc1** sur /mnt :
  
-  * NEW +<code> 
-    * Le paquet concerne une nouvelle connexion et contient donc un flag SYN à 1 +[root@centos8 ~]# mount /dev/sdc1 /mnt 
-  * ESTABLISHED +</code>
-    * Le paquet concerne une connexion déjà établie. Le paquet ne doit contenir **ni** flag SYN à 1, **ni** flag FIN à 1 +
-  * RELATED +
-    * Le paquet est d'une connexion qui présente une relation avec une autre connexion +
-  * INVALID +
-    * La paquet provient d'une connexion anormale.+
  
-====LAB #1 - Configuration par Scripts sous RHEL/CentOS 6 et versions Antérieures====+Copiez le contenu de /home vers /mnt :
  
-Dans l'exemple suivant, expliquez le fonctionnement du script en détaillant les règles écrites :+<code> 
 +[root@centos8 ~]# cp -a /home/* /mnt 
 +</code>
  
-<file> +Démontez /dev/sdc1 et déplacez /home vers /root :
-#!/bin/bash +
-##################################### +
-# proxy server IP +
-PROXY_SERVER="192.168.1.2" +
-# Interface connected to Internet +
-INTERNET="eth1" +
-# Interface connected to LAN +
-LAN_IN="eth0" +
-# Local Interface +
-LOCAL="lo" +
-# Squid port +
-PROXY_PORT="8080" +
-# DO NOT MODIFY BELOW +
-# Clean old firewall +
-iptables -F +
-iptables -X +
-iptables -t nat -F +
-iptables -t nat -X +
-iptables -t mangle -F +
-iptables -t mangle -X +
-# Load IPTABLES modules for NAT and IP conntrack support +
-modprobe ip_conntrack +
-modprobe ip_conntrack_ftp +
-# For win xp ftp client +
-modprobe ip_nat_ftp +
-echo 1 > /proc/sys/net/ipv4/ip_forward +
-# Setting default filter policy +
-iptables -P INPUT DROP +
-iptables -P OUTPUT ACCEPT +
-# Unlimited access to loop back +
-iptables -A INPUT -i lo -j ACCEPT +
-iptables -A OUTPUT -o lo -j ACCEPT +
-# Allow UDP, DNS and Passive FTP +
-iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT +
-# set this system as a router for Rest of LAN +
-iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE +
-iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT +
-# unlimited access to LAN +
-iptables -A INPUT -i $LAN_IN -j ACCEPT +
-iptables -A OUTPUT -o $LAN_IN -j ACCEPT +
-# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy +
-iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $PROXY_SERVER:$PROXY_PORT +
-# iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128 +
-# if it is same system +
-iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT +
-# DROP everything and Log it +
-iptables -A INPUT -j LOG +
-iptables -A INPUT -j DROP +
-</file>+
  
-====LAB #2 - La Configuration par firewalld sous RHEL/CentOS 7====+<code> 
 +[root@centos8 ~]umount /mnt 
 +[root@centos8 ~]# mv /home /root 
 +</code>
  
-firewalld est à Netfilter ce que NetworkManager est au réseau. firewalld utilise des **zones** - des jeux de règles pré-définis dans lesquels sont placés les interfaces :+Identifiez l'UUID de /dev/sdc1 :
  
-  * **trusted** un réseau fiableDans ce cas tous les ports sont autorisés, +<code> 
-  * **work**, **home****internal** un réseau partiellement fiableDans ce cas quelques ports sont autorisés+[root@centos8 ~]# ls -l /dev/disk/by-uuid/ | grep sdc1 
-  * **dmz****public****external** un réseau non fiableDans ce cas peu de ports sont autorisés+lrwxrwxrwx1 root root 10 Jul 19 12:02 f76d6b66-985b-4a91-af9c-4987e8c1443c -> ../../sdc 
-  * **block****drop** tout est interditLa zone drop n'envoie pas de messages d'erreurs.+[root@centos8 ~]#  
 +</code> 
 + 
 +Editez le fichier **/etc/fstab** et ajoutez une ligne pour /dev/sdc1 : 
 + 
 +<code> 
 +[root@centos8 ~]# vi /etc/fstab 
 +[root@centos8 ~]# cat /etc/fstab 
 + 
 +
 +# /etc/fstab 
 +# Created by anaconda on Wed Jun 16 06:21:32 2021 
 +
 +# Accessible filesystemsby referenceare 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> 
 + 
 +Créez le point de montage /home : 
 + 
 +<code> 
 +[root@centos8 ~]# mkdir /home 
 +</code> 
 + 
 +Montez /dev/sdc1 : 
 + 
 +<code> 
 +[root@centos8 ~]# mount -a 
 +[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> 
 + 
 +Notez la taille de /home : 
 + 
 +<code> 
 +[root@centos8 ~]# 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.2G   23G  19% / 
 +/dev/sda1                    976M  289M  620M  32% /boot 
 +tmpfs                        374M   16K  374M   1% /run/user/1000 
 +tmpfs                        374M  1.2M  373M   1% /run/user/42 
 +/dev/sdc1                     63G   67M   60G   1% /home 
 +</code>
  
-<WRAP center round important 50%> +<WRAP center round todo 60%> 
-**Important** - Une interface ne peut être que dans une zone à la fois tandis que plusieurs interfaces peuvent être dans la même zone.+**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>
  
-Le service firewalld doit toujours être lancé :+====2.2 - Préparer l'Environnement==== 
 + 
 +Pour créer l'arborescence de l'environnement de création de paquets dans /home/trainee, utilisez la commande **rpmdev-setuptree** :
  
 <code> <code>
-[root@centos7 ~]# systemctl status firewalld.service +[trainee@centos8 ~]$ rpmdev-setuptree 
-firewalld.service - firewalld dynamic firewall daemon +...> 
-   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) +[trainee@centos8 ~]$ ls -laR rpmbuild/ 
-   Activeactive (running) since Tue 2015-07-07 15:53:56 CEST; 1 day 21h ago +rpmbuild/: 
- Main PID493 (firewalld) +total 28 
-   CGroup/system.slice/firewalld.service +drwxrwxr-x.  7 trainee trainee 4096 Jul 19 12:10 . 
-           └─493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid+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
  
-Jul 07 15:53:56 centos7.fenestros.loc systemd[1]Started firewalld dynamic firewall daemon.+rpmbuild/BUILD: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 .. 
 + 
 +rpmbuild/RPMS: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 .. 
 + 
 +rpmbuild/SOURCES: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 .. 
 + 
 +rpmbuild/SPECS: 
 +total 8 
 +drwxrwxr-x. 2 trainee trainee 4096 Jul 19 12:10 . 
 +drwxrwxr-x. 7 trainee trainee 4096 Jul 19 12:10 .. 
 + 
 +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> </code>
  
-===La Configuration de Base de firewalld===+Téléchargez le rpm source du noyau :
  
-La configuration par défaut de firewalld se trouve dans **/usr/lib/firewalld** :+<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 
 + 
 +[root@centos8 ~]# cat /etc/centos-release 
 +CentOS Stream release 8 
 + 
 +[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> 
 + 
 +Installez maintenant les dépendances pour le rpm source en tant que root :
  
 <code> <code>
-[root@centos7 ~]# ls -l /usr/lib/firewalld/ +[trainee@centos8 ~]$ su 
-total 12 +Mot de passe fenestros 
-drwxr-x---. 2 root root 4096 Jun  4 09:52 icmptypes + 
-drwxr-x---. 2 root root 4096 Jun  4 09:52 services +[root@centos8 ~]# dnf install yum-utils 
-drwxr-x---. 2 root root 4096 Jun  4 09:52 zones +... 
-[root@centos7 ~]# ls -l /usr/lib/firewalld/zones + 
-total 36 +[root@centos8 ~]# yum-builddep /home/trainee/kernel-4.18.0-553.16.1.el8_10.src.rpm 
--rw-r-----1 root root 299 Mar  6 00:35 block.xml +...
--rw-r-----1 root root 293 Mar  6 00:35 dmz.xml +
--rw-r-----. 1 root root 291 Mar  6 00:35 drop.xml +
--rw-r-----. 1 root root 304 Mar  6 00:35 external.xml +
--rw-r-----. 1 root root 400 Mar  6 00:35 home.xml +
--rw-r-----. 1 root root 415 Mar  6 00:35 internal.xml +
--rw-r-----. 1 root root 315 Mar  6 00:35 public.xml +
--rw-r-----. 1 root root 162 Mar  6 00:35 trusted.xml +
--rw-r-----. 1 root root 342 Mar  6 00:35 work.xml +
-[root@centos7 ~]# ls -/usr/lib/firewalld/services +
-total 192 +
--rw-r-----. 1 root root 412 Mar  6 00:35 amanda-client.xml +
--rw-r-----. 1 root root 320 Mar  6 00:35 bacula-client.xml +
--rw-r-----. 1 root root 346 Mar  6 00:35 bacula.xml +
--rw-r-----1 root root 305 Mar  6 00:35 dhcpv6-client.xml +
--rw-r-----1 root root 234 Mar  6 00:35 dhcpv6.xml +
--rw-r-----. 1 root root 227 Mar  6 00:35 dhcp.xml +
--rw-r-----. 1 root root 346 Mar  6 00:35 dns.xml +
--rw-r-----. 1 root root 374 Mar  6 00:35 ftp.xml +
--rw-r-----. 1 root root 476 Mar  6 00:35 high-availability.xml +
--rw-r-----. 1 root root 448 Mar  6 00:35 https.xml +
--rw-r-----. 1 root root 353 Mar  6 00:35 http.xml +
--rw-r-----. 1 root root 372 Mar  6 00:35 imaps.xml +
--rw-r-----. 1 root root 454 Mar  6 00:35 ipp-client.xml +
--rw-r-----. 1 root root 427 Mar  6 00:35 ipp.xml +
--rw-r-----. 1 root root 517 Mar  6 00:35 ipsec.xml +
--rw-r-----. 1 root root 233 Mar  6 00:35 kerberos.xml +
--rw-r-----. 1 root root 221 Mar  6 00:35 kpasswd.xml +
--rw-r-----. 1 root root 232 Mar  6 00:35 ldaps.xml +
--rw-r-----. 1 root root 199 Mar  6 00:35 ldap.xml +
--rw-r-----. 1 root root 385 Mar  6 00:35 libvirt-tls.xml +
--rw-r-----. 1 root root 389 Mar  6 00:35 libvirt.xml +
--rw-r-----. 1 root root 424 Mar  6 00:35 mdns.xml +
--rw-r-----. 1 root root 211 Mar  6 00:35 mountd.xml +
--rw-r-----. 1 root root 190 Mar  6 00:35 ms-wbt.xml +
--rw-r-----. 1 root root 171 Mar  6 00:35 mysql.xml +
--rw-r-----. 1 root root 324 Mar  6 00:35 nfs.xml +
--rw-r-----. 1 root root 389 Mar  6 00:35 ntp.xml +
--rw-r-----. 1 root root 335 Mar  6 00:35 openvpn.xml +
--rw-r-----. 1 root root 433 Mar  6 00:35 pmcd.xml +
--rw-r-----. 1 root root 474 Mar  6 00:35 pmproxy.xml +
--rw-r-----. 1 root root 544 Mar  6 00:35 pmwebapis.xml +
--rw-r-----. 1 root root 460 Mar  6 00:35 pmwebapi.xml +
--rw-r-----. 1 root root 357 Mar  6 00:35 pop3s.xml +
--rw-r-----. 1 root root 181 Mar  6 00:35 postgresql.xml +
--rw-r-----. 1 root root 261 Mar  6 00:35 proxy-dhcp.xml +
--rw-r-----. 1 root root 446 Mar  6 00:35 radius.xml +
--rw-r-----. 1 root root 517 Mar  6 00:35 RH-Satellite-6.xml +
--rw-r-----. 1 root root 214 Mar  6 00:35 rpc-bind.xml +
--rw-r-----. 1 root root 384 Mar  6 00:35 samba-client.xml +
--rw-r-----. 1 root root 461 Mar  6 00:35 samba.xml +
--rw-r-----. 1 root root 550 Mar  6 00:35 smtp.xml +
--rw-r-----. 1 root root 463 Mar  6 00:35 ssh.xml +
--rw-r-----. 1 root root 393 Mar  6 00:35 telnet.xml +
--rw-r-----. 1 root root 301 Mar  6 00:35 tftp-client.xml +
--rw-r-----. 1 root root 437 Mar  6 00:35 tftp.xml +
--rw-r-----. 1 root root 211 Mar  6 00:35 transmission-client.xml +
--rw-r-----. 1 root root 475 Mar  6 00:35 vnc-server.xml +
--rw-r-----. 1 root root 310 Mar  6 00:35 wbem-https.xml +
-[root@centos7 ~]# ls -l /usr/lib/firewalld/icmptypes/ +
-total 36 +
--rw-r-----. 1 root root 222 Mar  6 00:35 destination-unreachable.xml +
--rw-r-----. 1 root root 173 Mar  6 00:35 echo-reply.xml +
--rw-r-----. 1 root root 210 Mar  6 00:35 echo-request.xml +
--rw-r-----. 1 root root 225 Mar  6 00:35 parameter-problem.xml +
--rw-r-----. 1 root root 185 Mar  6 00:35 redirect.xml +
--rw-r-----. 1 root root 227 Mar  6 00:35 router-advertisement.xml +
--rw-r-----. 1 root root 223 Mar  6 00:35 router-solicitation.xml +
--rw-r-----. 1 root root 248 Mar  6 00:35 source-quench.xml +
--rw-r-----. 1 root root 253 Mar  6 00:35 time-exceeded.xml+
 </code> </code>
  
-Ces fichiers sont au format **xml**, par exemple :+Installez maintenant le paquet **kernel-4.18.0-553.16.1.el8_10.src.rpm** :
  
 <code> <code>
-[root@centos7 ~]# cat /usr/lib/firewalld/zones/home.xml  +[root@centos8 ~]# exit 
-<?xml version="1.0" encoding="utf-8"?> +logout 
-<zone> +[trainee@centos8 ~]$ rpm -Uvh kernel-4.18.0-553.16.1.el8_10.src.rpm 
-  <short>Home</short> +Updating installing..
-  <description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> +   1:kernel-4.18.0-553.16.1.el8_10      warning: user mockbuild does not exist - using root 
-  <service name="ssh"/> +warning: group mockbuild does not exist - using root 
-  <service name="ipp-client"/> +warning: user mockbuild does not exist - using root 
-  <service name="mdns"/> +warning: group mockbuild does not exist - using root 
-  <service name="samba-client"/> +warning: user mockbuild does not exist - using root 
-  <service name="dhcpv6-client"/> +warning: group mockbuild does not exist using root 
-</zone>+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 
 +warning: group mockbuild does not exist - using root
 </code> </code>
  
-La configuration de firewalld ainsi que les définitions et règles personnalisées se trouvent dans **/etc/firewalld** :+<WRAP center round important 60%> 
 +**Important** - Les erreurs sont sans importance. 
 +</WRAP> 
 + 
 +====2.3 - Préparer l'Arborescence Source du Noyau==== 
 + 
 +Naviguez vers le repertoire **~/rpmbuild/SPECS** et utilisez la commande **rpmbuild** pour préparer l'arborescence source du noyau :
  
 <code> <code>
-[root@centos7 ~]# ls -l /etc/firewalld/ +[trainee@centos7 ~]$ cd ~/rpmbuild/SPECS 
-total 8 +[trainee@centos7 SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec 
--rw-r-----. 1 root root 1026 Mar  6 00:35 firewalld.conf +...
-drwxr-x---. 2 root root    6 Mar  6 00:35 icmptypes +
--rw-r-----. 1 root root  271 Mar  6 00:35 lockdown-whitelist.xml +
-drwxr-x---. 2 root root    6 Mar  6 00:35 services +
-drwxr-x---. 2 root root   23 Mar  6 00:35 zones +
-[root@centos7 ~]# ls -l /etc/firewalld/zones/ +
-total 4 +
--rw-r--r--. 1 root root 315 Mar  8 14:05 public.xml +
-[root@centos7 ~]# ls -l /etc/firewalld/services/ +
-total 0 +
-[root@centos7 ~]# ls -l /etc/firewalld/icmptypes/ +
-total 0+
 </code> </code>
  
-Le fichier de configuration de firewalld est **/etc/firewalld/firewalld.conf** :+A l'issu du processus, examinez l'arborescence :
  
 <code> <code>
-[root@centos7 ~]# cat /etc/firewalld/firewalld.conf  +[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/ 
-# firewalld config file+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>
  
-# default zone +===Le Fichier .config===
-# The default zone used if an empty zone string is used. +
-# Default: public +
-DefaultZone=public+
  
-# Minimal mark +Changez de répertoire de travail :
-# Marks up to this minimum are free for use for example in the direct  +
-# interface. If more free marks are needed, increase the minimum +
-# Default100 +
-MinimalMark=100+
  
-# Clean up on exit +<code> 
-# If set to no or false the firewall configuration will not get cleaned up +[trainee@centos8 SPECS]$ cd ~/rpmbuild/BUILD/kernel-*/linux-*/ 
-# on exit or stop of firewalld +</code>
-# Default: yes +
-CleanupOnExit=yes+
  
-# Lockdown +Copiez le fichier **configs/kernel-4.18.0-`uname -m`.config** vers **.config** dans le répertoire courant :
-# If set to enabled, firewall changes with the D-Bus interface will be limited +
-# to applications that are listed in the lockdown whitelist. +
-# The lockdown whitelist file is lockdown-whitelist.xml +
-# Defaultno +
-Lockdown=no+
  
-# IPv6_rpfilter +<code> 
-# Performs a reverse path filter test on a packet for IPv6If a reply to the +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp configs/kernel-4.18.0-`uname -m`.config .config 
-# packet would be sent via the same interface that the packet arrived on, the  +</code>
-# packet will match and be accepted, otherwise dropped. +
-# The rp_filter for IPv4 is controlled using sysctl+
-# Default: yes +
-IPv6_rpfilter=yes+
  
 +Mettez à jour le fichier .config par rapport à la configuration actuelle du noyau :
 +
 +<code>
 +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ make oldconfig
 +scripts/kconfig/conf  --oldconfig Kconfig
 +#
 +# configuration written to .config
 +#
 </code> </code>
  
-===La Commande firewall-cmd===+<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> 
 + 
 +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 : 
 + 
 +  * make config 
 +  * make menuconfig 
 +  * make xconfig 
 +   
 +Exécutez la commande **make menuconfig** : 
 + 
 +<code> 
 +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ make menuconfig 
 +  UPD     scripts/kconfig/.mconf-cfg 
 +  HOSTCC  scripts/kconfig/mconf.o 
 +  HOSTCC  scripts/kconfig/lxdialog/checklist.o 
 +  HOSTCC  scripts/kconfig/lxdialog/inputbox.o 
 +  HOSTCC  scripts/kconfig/lxdialog/menubox.o 
 +  HOSTCC  scripts/kconfig/lxdialog/textbox.o 
 +  HOSTCC  scripts/kconfig/lxdialog/util.o 
 +  HOSTCC  scripts/kconfig/lxdialog/yesno.o 
 +  HOSTLD  scripts/kconfig/mconf 
 +scripts/kconfig/mconf  Kconfig 
 +</code> 
 + 
 +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 :
  
-firewalld s'appuie sur netfilter. Pour cette raisonl'utilisation de firewall-cmd est incompatible avec l'utilisation des commandes iptables et system-config-firewall.+  * **y**, 
 +    * la fonctionalité est incluse dans le noyau monolithique ou dans le cas d'une dépendance d'un module, dans le module concerné, 
 +  * **m**, 
 +    * la fonctionalité est incluse en tant que module, 
 +  * **n**, 
 +    * la fonctionalité n'est pas incluse.
  
-<WRAP center round important 50%> +<WRAP center round important 60%> 
-**Important** - firewall-cmd est le front-end de firewalld en ligne de commande. Il existe aussi la commande **firewall-config** qui lance un outi de configuration graphique.+**Important** - Cette commande permet la modification de la configuration du noyau.
 </WRAP> </WRAP>
 +  
 +Sauvegardez simplement la configuration actuelle et sortez de l'interface :
  
-Pour obtenir la liste de toutes les zones prédéfinies, utilisez la commande suivante :+<code> 
 +*** End of the configuration. 
 +*** Execute 'make' to start the build or try 'make help'
 +</code> 
 + 
 +Vérifiez que le fichier **.config** a été" créé par l'exécution de makeconfig :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --get-zones +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ ls -
-block dmz drop external home internal public trusted work+.                       .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>
  
-Pour obtenir la liste de toutes les services prédéfinis, utilisez la commande suivante :+Consultez ce fichier :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --get-services +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ more .config 
-RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https+
 +# Automatically generated file; DO NOT EDIT. 
 +# Linux/x86 4.18.0 Kernel Configuration 
 +
 + 
 +
 +Compiler: gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22) 
 +
 +CONFIG_64BIT=y 
 +CONFIG_X86_64=y 
 +CONFIG_X86=y 
 +CONFIG_INSTRUCTION_DECODER=y 
 +CONFIG_OUTPUT_FORMAT="elf64-x86-64" 
 +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" 
 +CONFIG_LOCKDEP_SUPPORT=y 
 +CONFIG_STACKTRACE_SUPPORT=y 
 +CONFIG_MMU=y 
 +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 
 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 
 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 
 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 
 +CONFIG_GENERIC_ISA_DMA=y 
 +CONFIG_GENERIC_BUG=y 
 +--More--(0%)
 </code> </code>
  
-Pour obtenir la liste de toutes les types ICMP prédéfinisutilisez la commande suivante :+===Le Fichier Makefile=== 
 + 
 +Le fichier **Makefile** contient le nom du noyau et spécifie les informations suivantes : 
 + 
 +  * VERSION, 
 +  * PATCHLEVEL, 
 +  * SUBLEVEL, 
 +  * EXTRAVERSION. 
 + 
 +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>
-[root@centos7 ~]# firewall-cmd --get-icmptypes +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ more Makefile 
-destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded+# SPDX-License-Identifier: GPL-2.0 
 +VERSION = 4 
 +PATCHLEVEL = 18 
 +SUBLEVEL = 0 
 +EXTRAVERSION = 
 +NAME = Merciless Moray 
 + 
 +
 +# DRM backport version 
 +
 +RHEL_DRM_VERSION = 6 
 +RHEL_DRM_PATCHLEVEL = 3 
 +RHEL_DRM_SUBLEVEL =  
 +RHEL_DRM_EXTRAVERSION =  
 + 
 +# *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. 
 + 
 +# That's our default target when none is given on the command line 
 +PHONY := _all 
 +--More--(0%)
 </code> </code>
  
-Pour obtenir la liste des zones de la configuration couranteutilisez la commande suivante :+<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 noyaula signification de la valeur de PATCHLEVEL paire et impaire a été abondonnée. 
 +</WRAP> 
 + 
 +====2.4 - Paramétrage du noyau==== 
 + 
 +Insérez la sortie de la commande **uname -i** sur la première ligne du fichier .config :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --get-active-zones +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ uname -
-public +x86_64 
-  interfacesenp0s3+ 
 +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ vi .config 
 + 
 +[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 
 +
 + 
 +
 +# Compilergcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22) 
 +
 +CONFIG_64BIT=y
 </code> </code>
  
-Pour obtenir la liste des zones de la configuration courante pour une interface spécifique, utilisez la commande suivante :+Renommez le fichier .config en le plaçant dans le répertoire **~/rpmbuild/SOURCES/** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --get-zone-of-interface=enp0s3 +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp .config ~/rpmbuild/SOURCES/config-`uname -m`-generic 
-public+ 
 +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ ls ~/rpmbuild/SOURCES 
 +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>
  
-Pour obtenir la liste des services autorisés pour la zone public, utilisez la commande suivante :+Copiez le contenu du répertoire **configs** vers le répertoire **~/rpmbuild/SOURCES/** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=public --list-services +[trainee@centos8 linux-4.18.0-553.16.1.el8.x86_64]$ cp configs/* ~/rpmbuild/SOURCES/
-dhcpv6-client ssh+
 </code> </code>
  
-Pour obtenir toute la configuration pour la zone public, utilisez la commande suivante :+Editez la directive **buildid** dans le fichier **~/rpmbuild/SPECS/kernel.spec** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=public --list-all +[trainee@centos8 linux-4.18.0-305.7.1.el8.x86_64]$ cd ~/rpmbuild/SPECS
-public (default, active) +
-  interfaces: enp0s3 +
-  sources:  +
-  services: dhcpv6-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
- +
  
 +[trainee@centos8 SPECS]$ vi kernel.spec
 +
 +[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}
 +
 +# 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
 +
 +%global distro_build 553
 +
 +# Sign the x86_64 kernel for secure boot authentication
 +%ifarch x86_64 aarch64 s390x ppc64le
 +%global signkernel 1
 +%else
 +%global signkernel 0
 +%endif
 +
 +# Sign modules on all arches
 +%global signmodules 1
 +
 +# Compress modules only for architectures that build modules
 +%ifarch noarch
 +%global zipmodules 0
 +%else
 +%global zipmodules 1
 +%endif
 +
 +%if %{zipmodules}
 +%global zipsed -e 's/\.ko$/\.ko.xz/'
 +%endif
 +
 +%define buildid .ittraining
 +
 +%define specversion 4.18.0
 +%define pkgrelease 553.16.1.el8_10
 +
 +# allow pkg_release to have configurable %%{?dist} tag
 +%define specrelease 553.16.1%{?dist}
 +
 +%define pkg_release %{specrelease}%{?buildid}
 +
 +# libexec dir is not used by the linker, so the shared object there
 +# should not be exported to RPM provides
 +%global __provides_exclude_from ^%{_libexecdir}/kselftests
 </code> </code>
  
-Pour obtenir la liste complète de toutes les zones et leurs configurations, utilisez la commande suivante :+====2.5 - Compiler le Noyau==== 
 + 
 +La compilation du noyau peut prendre beaucoup de temps (~5 heures). La commande utilisée est la suivante :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --list-all-zones +[trainee@centos8 SPECS]$ rpmbuild -bb --target=`uname -m` kernel.spec 2> build-err.log | tee build-out.log & 
-block +[1] 96990 
-  interfaces:  +[trainee@centos8 SPECS]$ Building target platformsx86_64 
-  sources:  +Building for target x86_64 
-  services:  +...
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-dmz +
-  interfaces:  +
-  sources:  +
-  services: ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-drop +
-  interfaces:  +
-  sources:  +
-  services:  +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-external +
-  interfaces:  +
-  sources:  +
-  services: ssh +
-  ports:  +
-  masquerade: yes +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-home +
-  interfaces:  +
-  sources:  +
-  services: dhcpv6-client ipp-client mdns samba-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-internal +
-  interfaces:  +
-  sources:  +
-  services: dhcpv6-client ipp-client mdns samba-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-public (default, active) +
-  interfaces: enp0s3 +
-  sources:  +
-  services: dhcpv6-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-trusted +
-  interfaces:  +
-  sources:  +
-  services:  +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-work +
-  interfaces:  +
-  sources:  +
-  services: dhcpv6-client ipp-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules: +
 </code> </code>
  
-Pour changer la zone par défaut de public à workutilisez la commande suivante :+<WRAP center round important 60%> 
 +**Important** - La compilation peut prendre des heures. 
 +</WRAP> 
 + 
 +A l'issu du processusles RPMs se trouvent dans le répertoire **/home/trainee/rpmbuild/RPMS/x86_64/** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --set-default-zone=work +... 
-success +Wrote: /home/trainee/rpmbuild/RPMS/x86_64/kernel-4.18.0-553.16.1.el8.ittraining.x86_64.rpm 
-[root@centos7 ~]# firewall-cmd --get-active-zones +... 
-work + 
-  interfaces: enp0s3+[1]+  Done                    rpmbuild -bb --target=`uname -m` kernel.spec 2> build-err.log | tee build-out.log
 </code> </code>
  
-Pour ajouter l'interface ip_fixe à la zone work, utilisez la commande suivante :+Notez que la génération du nouveau noyau peut consommer jusqu'à 21 Go d'espace disque :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=work --add-interface=ip_fixe +[trainee@centos8 x86_64]$ df -h 
-success +Filesystem                   Size  Used Avail Use% Mounted on 
-[root@centos7 ~]# firewall-cmd --get-active-zones +devtmpfs                     1.8G      1.8G   0% /dev 
-work +tmpfs                        1.9G      1.9G   0% /dev/shm 
-  interfaces: enp0s3 ip_fixe+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 supprimer l'interface ip_fixe à la zone work, utilisez la commande suivante :+====2.6 - Installer le Nouveau Noyau==== 
 + 
 +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 ~]# firewall-cmd --zone=work --remove-interface=ip_fixe +[trainee@centos8 SPECS]$ cd ../RPMS/x86_64 
-success + 
-[root@centos7 ~]# firewall-cmd --get-active-zones +[root@centos8 x86_64]# dnf localinstall kernel-*.rpm
-work +
-  interfaces: enp0s3+
 </code> </code>
  
-Pour ajouter le service **http** à la zone **work**utilisez la commande suivante :+A l'issu de l'installationre-démarrez la VM :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=work --add-service=http +[root@centos7 ~]# reboot
-success +
-[root@centos7 ~]# firewall-cmd --zone=work --list-services +
-dhcpv6-client http ipp-client ssh+
 </code> </code>
  
-Pour supprimer le service **http** de la zone **work**, utilisez la commande suivante :+Connectez-vous en tant que trainee et devenez root. Constatez l'entrée **saved-entry** du fichier **/boot/grub2/grubenv** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=work --remove-service=http +[root@centos8 ~]# grep ittraining /boot/grub2/grubenv  
-success +saved_entry=95bd69e34a7444a7b58cb74fbfb86df2-4.18.0-553.16.1.el8.ittraining.x86_64
-[root@centos7 ~]# firewall-cmd --zone=work --list-services +
-dhcpv6-client ipp-client ssh+
 </code> </code>
  
-Pour ajouter un nouveau bloc ICMPutilisez la commande suivante :+Dernièrementvérifiez l'utilisation du nouveau noyau :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=work --add-icmp-block=echo-reply +[root@centos8 ~]# uname -r 
-success +4.18.0-553.16.1.el8.ittraining.x86_64
-[root@centos7 ~]# firewall-cmd --zone=work --list-icmp-blocks +
-echo-reply+
 </code> </code>
  
-Pour supprimer un bloc ICMPutilisez la commande suivante :+=====LAB #3 - Gestion des Quotas===== 
 + 
 +Sous Linux il est possible de mettre en place des quotas par utilisateur et par groupe. Ceci étantLinux 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. 
 + 
 +Déconnectez-vous et reconnectez-vous **directement** en tant que root :
  
 <code> <code>
-[root@centos7 ~]firewall-cmd --zone=work --remove-icmp-block=echo-reply +root@computeXX:~# ssh -l root 10.0.2.45 
-success +root@10.0.2.45's password: fenestros 
-[root@centos7 ~]# firewall-cmd --zone=work --list-icmp-blocks +Activate the web console with: systemctl enable --now cockpit.socket 
-[root@centos7 ~]# + 
 +Last login: Wed Jul 21 11:14:31 2021 
 +[root@centos8 ~]# 
 </code> </code>
  
-Pour ajouter le port 591/tcp à la zone workutilisez la commande suivante :+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 ~]# firewall-cmd --zone=work --add-port=591/tcp +[root@centos8 ~]# getenforce 
-success +Enforcing 
-[root@centos7 ~]# firewall-cmd --zone=work --list-ports +[root@centos8 ~]# setenforce permissive 
-591/tcp+[root@centos8 ~]# getenforce 
 +Permissive 
 +[root@centos8 ~]# 
 </code> </code>
  
-Pour supprimer le port 591/tcp à la zone work, utilisez la commande suivante :+Editez ensuite le fichier /etc/sysconfig/selinux ainsi :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=work --remove-port=591/tcp +[root@centos8 ~]# vi /etc/sysconfig/selinux 
-success +[root@centos8 ~]# cat /etc/sysconfig/selinux 
-[root@centos7 ~]# firewall-cmd --zone=work --list-ports + 
-[root@centos7 ~]#+# 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> </code>
  
-Pour créer un nouveau service, il convient de :+Commencez par vérifiez que le paquet **quota** est bien installé :
  
-  * copier un fichier existant se trouvant dans le répertoire **/usr/lib/firewalld/services** vers **/etc/firewalld/services**, +<code> 
-  * modifier le fichier, +[root@centos8 ~]# rpm -qa | grep quota 
-  * recharger la configuration de firewalld, +quota-4.04-12.el8.x86_64 
-  * vérifier que firewalld voit le nouveau service.+quota-nls-4.04-12.el8.noarch 
 +</code>
  
-Par exemple :+Editez le fichier **/etc/fstab** en ajoutant les options **usrquota** et **grpquota** à la ligne **/home** :
  
 <code> <code>
-[root@centos7 ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/filemaker.xml +[root@centos8 ~]# vi /etc/fstab 
-[root@centos7 ~]# +[root@centos8 ~]# cat /etc/fstab 
-[root@centos7 ~]# cat /etc/firewalld/services/filemaker.xml  + 
-<?xml version="1.0" encoding="utf-8"?> +
-<service> +/etc/fstab 
-  <short>FileMakerPro</short> +# Created by anaconda on Wed Jun 16 06:21:32 2021 
-  <description>fichier de service firewalld pour FileMaker Pro</description> +# 
-  <port protocol="tcp" port="591"/> +# Accessible filesystems, by reference, are maintained under '/dev/disk/'. 
-</service> +# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. 
-[root@centos7 ~]+
-[root@centos7 ~]firewall-cmd --reload +After editing this file, run 'systemctl daemon-reload' to update systemd 
-success +# units generated from this file. 
-[root@centos7 ~]+
-[root@centos7 ~]# firewall-cmd --get-services +/dev/mapper/cl_centos8-root /                       xfs     defaults        0 0 
-RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns filemaker ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https+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>
  
-===La Configuration Avancée de firewalld===+Redémarrez la VM :
  
-La configuration de base de firewalld ne permet que la configuration des zones, services, blocs ICMP et les ports non-standard. Cependant firewalld peut également être configuré avec des **Rich Rules** ou **//Règles Riches//**. Rich Rules ou Règles Riches évaluent des **critères** pour ensuite entreprendre une **action**. +<code> 
 +[root@centos8 ~]# reboot 
 +</code>
  
-Les **Critères** sont :+Reconnectez-vous **directement** en tant que root :
  
-  * **source address="<adresse_IP>"** +<code
-  * **destination address="<adresse_IP>"**, +root@computeXX:~# ssh -l root 10.0.2.45 
-  * **rule port port="<numéro_du_port>"**, +root@10.0.2.45's password: fenestros 
-  * **service name=<nom_d'un_sevice_prédéfini>**.+Activate the web console with: systemctl enable --now cockpit.socket
  
-Les **Actions** sont :+Last loginWed Jul 21 11:19:46 2021 
 +[root@centos8 ~]#  
 +</code>
  
-  * **accept**+Vérifiez ensuite que les options **usrquota** et **grpquota** soient prises en compte :
-  * **reject**, +
-    * une Action reject peut être associée avec un message d'erreur spécifique par la clause **type="<type_d'erreur>**, +
-  * **drop**.+
  
-Saisissez la commande suivante pour ouvrir le port 80 :+<code> 
 +[root@centos8 ~]# cat /etc/mtab | grep /home 
 +/dev/sdc1 /home ext4 rw,seclabel,relatime,quota,usrquota,grpquota 0 0 
 +</code> 
 + 
 +====3.1 - La Commande quotacheck==== 
 + 
 +Pour activer les quotas sur /home, il convient d'utiliser la commande **quotacheck** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --add-rich-rule='rule port port="80" protocol="tcp" accept' +[root@centos8 ~]# quotacheck -cugvm -f /dev/sdc1 
-success+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 
 +quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted. 
 +quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted. 
 +quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted. 
 +quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted. 
 +quotacheck: Checked 6763 directories and 129772 files 
 +quotacheck: Old file not found. 
 +quotacheck: Old file not found.
 </code> </code>
  
-<WRAP center round important 50%> +Les options de la commande quotacheck sont : 
-**Important** - Notez que la Rich Rule doit être entourée de caractères **'**+ 
 +<code> 
 +[root@centos8 ~]# quotacheck --help 
 +Utility for checking and repairing quota files. 
 +quotacheck [-gucbfinvdmMR] [-F <quota-format>] filesystem|-a 
 + 
 +-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 
 + 
 +Bugs to jack@suse.cz 
 +</code> 
 + 
 +Les quotas ont été activés et les fichier **aquota.user** et **aquota.group** ont été créés dans le répertoire /home : 
 + 
 +<code> 
 +[root@centos8 ~]# ls -la /home 
 +total 40 
 +drwxr-xr-x.  4 root    root     4096 Jul 21 11:27 . 
 +dr-xr-xr-x. 17 root    root      224 Jul 19 12:05 .. 
 +-rw-------.  1 root    root     7168 Jul 21 11:27 aquota.group 
 +-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> 
 + 
 +Créez maintenant un utilisateur **fenestros** avec le mot de passe **fenestros** : 
 + 
 +<code> 
 +[root@centos8 ~]# groupadd fenestros && useradd fenestros -c FenestrOs -d /home/fenestros -g fenestros -s /bin/bash 
 +[root@centos8 ~]# passwd fenestros 
 +Changing password for user fenestros. 
 +New password:  
 +BAD PASSWORD: The password contains the user name in some form 
 +Retype new password:  
 +passwd: all authentication tokens updated successfully. 
 +</code> 
 + 
 +====3.2 - La Commande edquota==== 
 + 
 +Mettez en place maintenant un quota de 10Mo pour l'utilisateur **fenestros** : 
 + 
 +<code> 
 +[root@centos8 ~]# edquota -u fenestros -f /home 
 +</code> 
 + 
 +L'éditeur **vi** se lance et vous obtiendrez un résultat similaire à celui-ci : 
 + 
 +<file> 
 +Disk quotas for user fenestros (uid 1001): 
 +  Filesystem                   blocks       soft       hard     inodes     soft     hard 
 +  /dev/sdc1                                  0          0          0        0        0 
 +</file> 
 + 
 +Modifiez ce fichier ainsi : 
 + 
 +<file> 
 +Disk quotas for user fenestros (uid 1001): 
 +  Filesystem                   blocks       soft       hard     inodes     soft     hard 
 +  /dev/sdc1                               8000      10000          0        0        0 
 +</file> 
 + 
 +Sauvegardez et quittez le fichier. 
 + 
 +Les options de la commande **edquota** sont : 
 + 
 +<code> 
 +[root@centos8 ~]# edquota --help 
 +edquota: Usage: 
 +        edquota [-rm] [-u] [-F formatname] [-p username] [-f filesystem] username ... 
 +        edquota [-rm] -g [-F formatname] [-p groupname] [-f filesystem] groupname ... 
 +        edquota [-rm] -P [-F formatname] [-p projectname] [-f filesystem] projectname ... 
 +        edquota [-u|g|-P] [-F formatname] [-f filesystem] -t 
 +        edquota [-u|g|-P] [-F formatname] [-f filesystem] -T username|groupname|projectname ... 
 + 
 +-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 
 + 
 +Bugs to: jack@suse.cz 
 +</code> 
 + 
 +<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> </WRAP>
  
-Saisissez la commande suivante pour visualiser la règle iptables pour IPv4 :+====3.3 - La Commande quotaon==== 
 + 
 +Appliquez maintenant les quotas :
  
 <code> <code>
-[root@centos7 ~]# iptables -L -n | grep 80 +[root@centos8 ~]# quotaon -a
-ACCEPT     tcp  --  0.0.0.0/           0.0.0.0/           tcp dpt:80 ctstate NEW+
 </code> </code>
  
-Saisissez la commande suivante pour visualiser la règle iptables pour IPv6 :+Les options de la commande **quotaon** sont :
  
 <code> <code>
-[root@centos7 ~]# ip6tables --n | grep 80 +[root@centos8 ~]# quotaon --help 
-ACCEPT     udp      ::/0                 fe80::/64            udp dpt:546 ctstate NEW +quotaonUsage: 
-ACCEPT     tcp      ::/0                 ::/                tcp dpt:80 ctstate NEW+        quotaon [-guPvp] [-F quotaformat] [-x state] -a 
 +        quotaon [-guPvp] [-F quotaformat] [-x state] filesys ... 
 + 
 +-a, --all                turn quotas on for all filesystems 
 +-f, --off                turn quotas off 
 +-u, --user               operate on user quotas 
 +-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>
  
-<WRAP center round important 50%> +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 
-**Important** - Notez que la Rich Rule a créé deux règles, une pour IPv4 et une deuxième pour IPv6Une règle peut être créée pour IPv4 seul en incluant le Critère **family=ipv4**. De la même façonune règle peut être créée pour IPv6 seul en incluant le Critère **family=ipv6**.+ 
 +Quand l'utilisateur fenestros aura dépassé le quota **souple**, il recevra un message d'avertissementQuand 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**. 
 + 
 +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. 
 + 
 +<WRAP center round important 60%> 
 +**important** - La commande pour désactivez les quotas est **quotaoff**. 
 </WRAP> </WRAP>
  
-Cette nouvelle règle est écrite en mémoire mais non pas sur disque. Pour l'écrire sur disque dans le fichier zone se trouvant dans **/etc/firewalld**, il faut ajouter l'option **--permanent** :+====3.4 - La Commande repquota==== 
 + 
 +Pour visualiser les quotas utilisez la commande **repquota** :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --add-rich-rule='rule port port="80" protocol="tcp" accept' --permanent +[root@centos8 ~]# repquota /home 
-success +*** Report for user quotas on device /dev/sdc1 
-[root@centos7 ~]# +Block grace time: 7days; Inode grace time: 7days 
-[root@centos7 ~]# cat /etc/firewalld/zones/work.xml  +                        Block limits                File limits 
-<?xml version="1.0" encoding="utf-8"?> +User            used    soft    hard  grace    used  soft  hard  grace 
-<zone> +---------------------------------------------------------------------- 
-  <short>Work</short> +root      --      20                          2                
-  <description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> +trainee   -- 21495888                     136532                      
-  <service name="ipp-client"/> +   
-  <service name="dhcpv6-client"/> +
-  <service name="ssh"/> +
-  <rule> +
-    <port protocol="tcp" port="80"/> +
-    <accept/> +
-  </rule> +
-</zone>+
 </code> </code>
  
-<WRAP center round important 50%> +<WRAP center round important 60%> 
-**Important** - Attention ! La règle ajoutée avec l'option --permanent n'est pas prise en compte imédiatement mais uniquement au prochain redémmarge. Pour qu'une règle soit appliquée immédiatement **et** être écrite sur disque, il faut saisir la commande deux fois dont une avec l'option --permanent et l'autre sans l'option --permanent.+**Important** - Notez que l'utilisateur fenestros ne figure pas dans la liste. Sous RHEL / CentOS, le quota n'est pas visible tant que l'utilisateur ne s'est pas connecté pour la première fois. 
 </WRAP> </WRAP>
  
-Pour visualiser cette règle dans la configuration de firewalld, il convient de saisir la commande suivante :+Les options de la commande **repquota** sont :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --list-all-zones +[root@centos8 ~]# repquota --help 
-...  +repquota: Utility for reporting quotas
-work (default, active) +Usage
-  interfacesenp0s3 +repquota [-vugsi] [-c|C] [-t|n] [-F quotaformat] [-O (default | xml | csv)] (-a | mntpoint)
-  sources:  +
-  services: dhcpv6-client ipp-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
- rule port port="80" protocol="tcp" accept+
  
 +-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>
  
-Notez que la Rich Rule est créée dans la Zone par DéfautIl est possible de créer une Rich Rule dans une autre zone en utilisant l'option **--zone=<zone>** de la commande firewall-cmd :+====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 ~]# firewall-cmd --zone=public --add-rich-rule='rule port port="80" protocol="tcp" accept' +[root@centos8 ~]# quota fenestros 
-success +Disk quotas for user fenestros (uid 1001): no limited resources used 
-[root@centos7 ~]# firewall-cmd --list-all-zones +[root@centos8 ~]# su fenestros 
-... +[fenestros@centos8 ~]$ touch test 
-public +[fenestros@centos8 ~]$ exit 
-  interfaces:  +logout 
-  sources:  +[root@centos8 ~]# quota fenestros 
-  services: dhcpv6-client ssh +Disk quotas for user fenestros (uid 1001):  
-  ports:  +     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace 
-  masquerade: no +      /dev/sdc1          8000   10000                                       
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
- rule port port="80" protocol="tcp" accept +
-trusted +
-  interfaces:  +
-  sources:  +
-  services:  +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
-  +
-work (default, active) +
-  interfacesenp0s3 +
-  sources:  +
-  services: dhcpv6-client ipp-client ssh +
-  ports:  +
-  masquerade: no +
-  forward-ports:  +
-  icmp-blocks:  +
-  rich rules:  +
- rule port port="80" protocol="tcp" accept+
 </code> </code>
  
- +Les options de la commande **quota** sont :
-Pour supprimer une Rich Rule, il faut copier la ligne entière la concernant qui se trouve dans la sortie de la commande **firewall-cmd --list-all-zones** :+
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --zone=public --remove-rich-rule='rule port port="80" protocol="tcp" accept' +[root@centos8 ~]# quota --help 
-success+quota: Usage: quota [-guPqvswim] [-l | [-Q | -A]] [-F quotaformat] 
 +        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -u username ... 
 +        quota [-qvswim] [-l | [-Q | -A]] [-F quotaformat] -g groupname ... 
 +        quota [-qvswugPQm] [-F quotaformat] -f filesystem ... 
 + 
 +-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 
 + 
 +Bugs to: jack@suse.cz
 </code> </code>
  
-===Le mode Panic de firewalld===+====3.6 - La Commande warnquota====
  
-Le mode Panic de firewalld permet de bloquer tout le trafic avec une seule commande. Pour connaître l'état du mode Panicutilisez la commande suivante :+La commande **warnquota** vérifie le ou les disques et envoie un message par mail à tout utilisateur qui a dépassé la limite softElle 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/CentOSwarnquota n'est pas installé par défaut :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --query-panic +[root@centos8 ~]# which warnquota 
-no+/usr/bin/which: no warnquota in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
 </code> </code>
  
-Pour activer le mode Panic, il convient de saisir la commande suivante :+Installez donc le paquet **quota-warnquota** 
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --panic-on +[root@centos7 ~]# dnf install quota-warnquota 
-success +...
-[root@centos7 ~]# firewall-cmd --query-panic +
-yes+
 </code> </code>
  
-Pour désactiver le mode Panic, il convient de saisir la commande suivante :+Les options de la commande **warnquota** sont :
  
 <code> <code>
-[root@centos7 ~]# firewall-cmd --panic-off +[root@centos8 ~]# warnquota --help 
-success +warnquota: Usage: 
-[root@centos7 ~]# firewall-cmd --query-panic +  warnquota [-ugsid[-F quotaformat] [-c configfile] [-q quotatabfile] [-a adminsfile] [filesystem...] 
-no+ 
 +-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