{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Guide de renforcement du serveur CentOS 7 | Lisenet.com :: Linux | Sécurité\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-04T07:00:31+00:00","modified_at":"2019-05-04T07:00:31+00:00","word_count":8544,"reading_time_seconds":2564,"summary":"Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. Pour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis [&hellip;]","summary_points":["Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin.","Pour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services.","La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.","Une clause de non-responsabilité générale s&#39;applique: n&#39;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#39;elles font."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"47b20cd590423845f19d82a178ebcda8","plain_text":"Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. \nPour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.\nUne clause de non-responsabilité générale s&#39;applique: n&#39;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#39;elles font.\n1. Paramètres système &#8211; Partitionnement de disque et post-installation\n1.1 Cryptage de disque avec kickstart\nLe moyen le plus simple de chiffrer une partition est lors de l&#39;installation de Kickstart.\nCeci peut être réalisé en ajoutant le –Crypté et –Passphrase = options à la définition d&#39;un volume physique LVM.\nNotre modèle de Kickstart est fourni ci-dessous. Notez que le modèle nécessite un disque de 32 Go.\n# version = CentOS7.5\r\n\r\n# Informations d&#39;autorisation du système\r\n\r\n\r\n\r\nauth --enableshadow --passalgo = sha512\r\n# Utiliser le support d&#39;installation du CD-ROM\r\n\r\n\r\n\r\nCD ROM\r\n\r\nignoredisk --only-use = sda\r\n\r\n# Disposition du clavier\r\n\r\n\r\n\r\nclavier --vckeymap = gb --xlayouts = &#39;gb&#39;\r\n# Langue du système\r\n\r\n\r\n\r\nlang en_GB.UTF-8\r\n# SELinux\r\n\r\n\r\n\r\nselinux - en vigueur\r\n\r\n# Informations sur le réseau\r\n\r\n\r\n\r\nréseau --bootproto = dhcp --device = eth0 --onboot = on --activate\r\nréseau --hostname = ks-c7.example.com\r\n\r\n# Mot de passe root en clair: PleaseChangeMe\r\n\r\n\r\n\r\nrootpw --iscrypted $ 6 $ nS0mBJyS $ q / QgCof5unWrT9W3qngTISueSDhDHVNntDqd8sOcgmHp2lq4f / niUbjCmoEzaf3EWQ2x3z / k0eIZaOxkfNtJw\r\n# Fuseau horaire du système\r\n\r\n\r\n\r\nfuseau horaire Europe / London --isUtc\r\n# Configuration du chargeur de démarrage du système\r\n\r\n\r\n\r\nchargeur de démarrage --location = mbr --boot-drive = sda --timeout = 3\r\n# Informations de nettoyage de partition\r\n\r\n\r\n\r\nclearpart --all --drives = sda\r\nzerombr \r\n\r\n# Informations de partitionnement de disque\r\n#\r\n# Votre disque doit faire 32 Go: 1 Go pour / boot et 30 Go pour le volume physique.\r\n#\r\n# Journal pour le démarrage n&#39;est pas nécessaire donc ext2\r\n\r\n\r\n\r\npart / boot --fstype = &quot;ext2&quot; --ondisk = sda --size = 1024 --label = boot --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\r\n\r\n# La ligne ci-dessous créera un volume physique de 30 Go\r\n\r\n\r\n\r\npart pv.01 --fstype = &quot;lvmpv&quot; --ondisk = sda --size = 30720 --encrypted --passphrase = PleaseChangeMeToSomethingElse\r\nvolgroup vg_crypto pv.01\r\n\r\n# Besoin de pouvoir réduire les systèmes de fichiers donc ext4 sur xfs par défaut\r\n\r\n\r\n\r\nlogvol / --fstype = &quot;ext4&quot; --size = 6144 --vgname = vg_crypto --name = lv_root --mkfsoptions = &quot;- m 1&quot;\r\nlogvol / home --fstype = &quot;ext4&quot; --size = 2048 --vgname = vg_crypto --name = lv_home --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\r\nlogvol / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\r\nlogvol / var --fstype = &quot;ext4&quot; --size = 4096 --vgname = vg_crypto --name = lv_var --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nosuid&quot;\r\nlogvol / var / log --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-log --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\r\nlogvol / var / log / audit --fstype = &quot;ext4&quot; --size = 512 --vgname = vg_crypto --name = lv_var-aud --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec , nosuid &quot;\r\nlogvol / var / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\r\nlogvol / var / www --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-www --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\r\nlogvol swap --fstype = &quot;swap&quot; --size = 512 --vgname = vg_crypto --name = lv_swap --fsoptions = &quot;swap&quot;\r\n\r\n%paquets\r\n@coeur\r\n\r\n%fin\n1.2 Schéma de partitionnement\nGardez les partitions suivantes séparées: /démarrage, /maison, / tmp, / var, / var / log, / var / tmp, / var / log / audit, / var / www.\nLe fait de les placer dans leurs propres partitions donne plus de contrôle sur les options de montage. Cela garantit également que le système ne peut pas être arrêté en raison de l’espace disque insuffisant sur une partition.\nSe séparer /opter dépend d&#39;une configuration et n&#39;est généralement pas utile, mais non plus nuisible.\n1.3 Post-installation\nSauvegarder un en-tête LUKS, où / dev / sda2 est la partition chiffrée de LUKS:\n# cryptsetup luksHeaderBackup / dev / sda2 --header-backup-file /root/luks-header.backup\nAssurez-vous que le fichier de sauvegarde est stocké hors site, puis supprimé du serveur.\nAssurez-vous que le système est à jour:\n# miam mise à jour\nSupprimez les packages dont vous n’avez pas besoin sur un serveur, par exemple firmware des cartes son, firmware de WinTV, pilotes sans fil, etc.\n# yum remove alsa- * ivtv- * iwl * firmware aic94xx-firmware\n2. Paramètres système &#8211; Autorisations de fichiers et masques\n2.1 Limiter les options de montage de partition\nLes partitions doivent avoir des options de montage renforcées:\n\n/démarrage &#8211; rw, nodev, noexec, nosuid\n/maison &#8211; rw, nodev, nosuid\n/ tmp &#8211; rw, nodev, noexec, nosuid\n/ var &#8211; rw, nosuid\n/ var / log &#8211; rw, nodev, noexec, nosuid\n/ var / log / audit &#8211; rw, nodev, noexec, nosuid\n/ var / www &#8211; rw, nodev, nosuid\n\nEn règle générale, les applications malveillantes écrivent généralement sur / tmp et ensuite essayer d&#39;exécuter tout ce qui était écrit. Un moyen d&#39;éviter cela est de monter / tmp sur une partition séparée avec les options noexec, Nodev et nosuid activée.\nCela empêchera l&#39;exécution binaire de / tmp, désactivez tout binaire en tant que suid root et désactivez la création de tout bloc de périphériques.\nLe lieu de stockage / var / tmp devrait être lié à monté / tmp, car il n’est pas nécessaire d’avoir plusieurs emplacements pour le stockage temporaire:\n/ tmp / var / tmp none, nodev, noexec, nosuid, bind 0 0\nLa même chose s&#39;applique à la mémoire partagée / dev / shm:\ntmpfs / dev / shm tmpfs rw, nodev, noexec, nosuid 0 0\nLe pseudo-système de fichiers proc / proc devrait être monté avec caché. Lorsque vous définissez hidepid sur 2, les entrées de répertoires dans / proc sera caché.\nproc / proc proc rw, hidepid = 2 0 0\nDurcissez les supports amovibles en ajoutant Nodev, noexec et nosuid, par exemple.:\n/ dev / cdrom / mnt / cdrom iso9660 ro, noexec, nosuid, nodev, noauto 0 0\n2.2 Restreindre le montage et le démontage dynamiques de systèmes de fichiers\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf pour désactiver les systèmes de fichiers inhabituels:\ninstaller cramfs / bin / true\r\ninstaller freevxfs / bin / true\r\ninstaller jffs2 / bin / true\r\ninstaller hfs / bin / true\r\ninstaller hfsplus / bin / true\r\ninstaller squashfs / bin / true\r\ninstaller udf / bin / true\nSelon la configuration (si vous n’exécutez pas de grappes, NFS, CIFS, etc.), vous pouvez également désactiver les éléments suivants:\ninstaller fat / bin / true\r\ninstaller vfat / bin / true\r\ninstaller cifs / bin / true\r\ninstaller nfs / bin / true\r\ninstaller nfsv3 / bin / true\r\ninstaller nfsv4 / bin / true\r\ninstaller gfs2 / bin / true\nIl est sage de laisser ext4, xfs et btrfs activés à tout moment.\n2.3 Empêcher les utilisateurs de monter un stockage USB\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf Pour désactiver le chargement de modprobe des pilotes de stockage USB et FireWire:\nliste noire usb-storage\r\nliste noire firewire-core\r\ninstaller usb-storage / bin / true\nDésactiver l&#39;autorisation USB. Créer un fichier /opt/usb-auth.sh avec le contenu suivant:\n#! / bin / bash\r\necho 0&gt; / sys / bus / usb / devices / usb1 / autorisé\r\necho 0&gt; / sys / bus / usb / devices / usb1 / registered_default\nSi plusieurs périphériques USB sont disponibles, ajoutez-les tous. Créer un fichier de service /etc/systemd/system/usb-auth.service avec le contenu suivant:\n[Unit]\r\n\r\n\r\n\r\nDescription = Désactiver l&#39;authentification USB\r\nDefaultDependencies = no\r\n\r\n[Service]\r\nType = coup unique\r\nExecStart = / bin / bash /opt/usb-auth.sh\r\n\r\n[Install]\r\nWantedBy = multi-user.target\nDéfinissez les autorisations, activez et démarrez le service:\n# chmod 0700 /opt/usb-auth.sh\r\n# systemctl enable usb-auth.service\r\n# systemctl start usb-auth.service\nSi nécessaire, désactivez la prise en charge du noyau pour USB via la configuration du chargeur de démarrage. Pour ce faire, ajoutez nousb à la ligne de noyau GRUB_CMDLINE_LINUX dans / etc / default / grub et générez le fichier de configuration Grub2:\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nNotez que la désactivation de toute la prise en charge du noyau pour USB causera probablement des problèmes pour les systèmes dotés de claviers USB, etc.\n2.4 Restreindre les programmes à partir de schémas d&#39;exécution dangereux\nConfigurer /etc/sysctl.conf avec ce qui suit:\n# Désactiver les core dumps\r\n\r\n\r\n\r\nfs.suid_dumpable = 0\r\n\r\n# Désactiver la fonctionnalité de débogage des requêtes système\r\n\r\n\r\n\r\nkernel.sysrq = 0\r\n\r\n# Restreindre l&#39;accès aux journaux du noyau\r\n\r\n\r\n\r\nkernel.dmesg_restrict = 1\r\n\r\n# Activer la protection ExecShield - non disponible sur CentOS 7\r\n\r\n\r\n\r\n# kernel.exec-shield = 1\r\n\r\n# Randomise l&#39;espace mémoire\r\n\r\n\r\n\r\nkernel.randomize_va_space = 2\r\n\r\n# Masquer les pointeurs du noyau\r\n\r\n\r\n\r\nkernel.kptr_restrict = 2\nCharger les paramètres sysctl:\n# sysctp -p\n2.5 Set UMASK 027\nLes fichiers suivants nécessitent le renforcement de umask: / etc / bashrc, /etc/csh.cshrc, /etc/init.d/functions et / etc / profile.\nSed one-liner:\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / bashrc\r\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/csh.cshrc\r\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / profile\r\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/init.d/functions\n2.6 Désactiver les core dumps\nOuvrir /etc/security/limits.conf et définissez les éléments suivants:\n* noyau dur 0\n2.7 Fixer des limites de sécurité pour empêcher les dénis de service\nAjouter ce qui suit à /etc/security/limits.conf pour appliquer des limites de sécurité sensibles:\n# 4096 est un bon point de départ\r\n\r\n\r\n\r\n* nofile souple 4096\r\n* nofile dur 65536\r\n* soft nproc 4096\r\n* dur nproc 4096\r\n* Soft Locks 4096\r\n* serrures dures 4096\r\n* pile souple 10240\r\n* pile dure 32768\r\n* Soft Memlock 64\r\n* memlock difficile 64\r\n* maxlogins durs 10\r\n\r\n# Soft limite 32 Go, 64 Go dur\r\n\r\n\r\n\r\n* taille douce 33554432\r\n* taille dure 67108864\r\n\r\n# Limites pour root\r\n\r\n\r\n\r\nracine molle nofile 4096\r\nracine dure nofile 65536\r\nracine douce nproc 4096\r\nracine dure nproc 4096\r\npile logicielle racine 10240\r\nracine dure pile 32768\r\nracine molle fsize 33554432\n2.8 Vérifier les autorisations des fichiers\nAssurez-vous que tous les fichiers appartiennent à un utilisateur:\n# find / -ignore_readdir_race -nouser -print -exec racine chown  ;\nAssurez-vous que tous les fichiers appartiennent à un groupe:\n# find / -ignore_readdir_race -nogroup -print -exec chgrp root  ;\nSi nécessaire, un chemin spécifique peut être exclu de la recherche, par exemple:\n# find / -ignore_readdir_race -not -path &quot;/ proc / *&quot; -nouser -print -exec chown root  ;\nAutomatiser le processus en créant un fichier cron /etc/cron.daily/unowned_files avec le contenu suivant:\n#! / bin / bash\r\nfind / -ignore_readdir_race  (-nouser -print -exec chown root  ; ),  (-nogroup -print -exec chgrp root  ; )\nDéfinir la propriété et les autorisations:\n# racine chown: root /etc/cron.daily/unowned_files\r\n# chmod 0700 /etc/cron.daily/unowned_files\n2.9 Surveiller les fichiers SUID / GUID\nRecherchez les fichiers setuid / setgid et identifiez-les si tous sont requis:\n# find / -xdev -type f -perm -4000 -o -perm -2000\n3. Paramètres système &#8211; Configuration du pare-feu et du réseau\n3.1 Pare-feu\nSi vous définissez la zone de pare-feu par défaut à supprimer, tous les paquets qui ne sont pas explicitement autorisés à être rejetés.\n# sed -i &quot;s / DefaultZone =. * / DefaultZone = déposer / g&quot; /etc/firewalld/firewalld.conf\nSauf si firewalld est requis, masquez-le et remplacez-le par iptables:\n# systemctl stop firewalld.service\r\n# systemctl mask firewalld.service\r\n# systemctl daemon-reload\r\n# miam installe iptables-services\r\n# systemctl enable iptables.service ip6tables.service\nAjouter ce qui suit à / etc / sysconfig / iptables pour n&#39;autoriser que le trafic sortant minimal (DNS, NTP, HTTP / S et SMTPS):\n*filtre\r\n-F INPUT\r\n-F SORTIE\r\n-F EN AVANT\r\n-PASSEMENT ACCEPTER\r\n-P FORWARD DROP\r\n-P OUTPUT ACCEPT\r\n-A INPUT -i lo -m commentaire - commentaire local -j ACCEPTER\r\n-A INPUT -d 127.0.0.0/8! -i lo -j REJECT - rejette-avec icmp-port-inaccessible\r\n-A INPUT -m conntrack --ctstate CONNEXE, ÉTABLI -j ACCEPTER\r\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 10.0.0.0/8 -j ACCEPTER\r\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 172.16.0.0/12 -j ACCEPTER\r\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 192.168.0.0/16 -j ACCEPT\r\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 22 -j ACCEPTER\r\n-Une entrée -j DROP\r\n-A SORTIE -d 127.0.0.0/8 -o lo -m commentaire - commentaire local -j ACCEPTER\r\n-A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT\r\n-A SORTIE -p icmp -m icmp --icmp-type quelconque -j ACCEPTER\r\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU --dport 53 -j ACCEPTER\r\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 53 -j ACCEPTER\r\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU - rapport 123 -j ACCEPTER\r\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 80 -j ACCEPT\r\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 443 -j ACCEPTER\r\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 587 -j ACCEPTER\r\n-A SORTIE -j LOG - préfixe-journal &quot;iptables_output&quot;\r\n-A SORTIE -j REJET - rejette-avec icmp-port-inaccessible\r\nCOMMETTRE\nNotez que la règle autorisant tout le trafic SSH entrant doit être supprimée, limitant l&#39;accès à une liste blanche IP uniquement ou masquant SSH derrière un VPN.\nIdéalement, les règles sortantes devraient être renforcées en limitant l&#39;accès aux serveurs DNS, NTP et SMTP locaux uniquement. Si un système de correctif local est utilisé (par exemple, Red Hat Satellite), le trafic HTTP / S peut également être renforcé, en fonction de la configuration.\nAjouter ce qui suit à / etc / sysconfig / ip6tables refuser tout IPv6:\n*filtre\r\n-F INPUT\r\n-F SORTIE\r\n-F EN AVANT\r\n-PUT ENTREE DROP\r\n-P FORWARD DROP\r\n-P SORTIE DROP\r\nCOMMETTRE\nAppliquer les configurations:\n# iptables-restore &lt;/ etc / sysconfig / iptables\r\n# ip6tables-restore &lt;/ etc / sysconfig / ip6tables\n3.2 TCP Wrappers\nOuvrir /etc/hosts.allow et autoriser le trafic localhost et SSH:\nTOUS: 127.0.0.1\r\nsshd: ALL\nLe fichier /etc/hosts.deny devrait être configuré pour tout refuser par défaut:\nTOUS: TOUS\n3.3 Paramètres du noyau qui affectent la mise en réseau\nOuvrir /etc/sysctl.conf et ajoutez ce qui suit:\n# Désactiver le transfert de paquets\r\n\r\n\r\n\r\nnet.ipv4.ip_forward = 0\r\n\r\n# Désactive les redirections, pas un routeur\r\n\r\n\r\n\r\nnet.ipv4.conf.all.accept_redirects = 0\r\nnet.ipv4.conf.default.accept_redirects = 0\r\nnet.ipv4.conf.all.send_redirects = 0\r\nnet.ipv4.conf.default.send_redirects = 0\r\nnet.ipv4.conf.all.secure_redirects = 0\r\nnet.ipv4.conf.default.secure_redirects = 0\r\nnet.ipv6.conf.all.accept_redirects = 0\r\nnet.ipv6.conf.default.accept_redirects = 0\r\n\r\n# Désactiver le routage source\r\n\r\n\r\n\r\nnet.ipv4.conf.all.accept_source_route = 0\r\nnet.ipv4.conf.default.accept_source_route = 0\r\nnet.ipv6.conf.all.accept_source_route = 0\r\n\r\n# Activer la validation de la source par chemin inversé\r\n\r\n\r\n\r\nnet.ipv4.conf.all.rp_filter = 1\r\nnet.ipv4.conf.default.rp_filter = 1\r\n\r\n# Journalise les paquets avec des adresses impossibles dans le journal du noyau\r\n\r\n\r\n\r\nnet.ipv4.conf.all.log_martians = 1\r\nnet.ipv4.conf.default.log_martians = 1\r\n\r\n# Désactiver les diffusions ICMP\r\n\r\n\r\n\r\nnet.ipv4.icmp_echo_ignore_broadcasts = 1\r\n\r\n# Ignorer les erreurs fictives ICMP\r\n\r\n\r\n\r\nnet.ipv4.icmp_ignore_bogus_error_responses = 1\r\n\r\n# Contre les attaques par inondation SYN\r\n\r\n\r\n\r\nnet.ipv4.tcp_syncookies = 1\r\n\r\n# La désactivation des horodatages peut améliorer la sécurité mais dégrader les performances.\r\n# Les horodatages TCP sont utilisés pour améliorer les performances et se protéger contre\r\n# Les paquets en retard perturbent votre flux de données. Un effet secondaire de cette fonctionnalité est\r\n# que le temps de disponibilité de l&#39;hôte peut parfois être calculé.\r\n# Si vous désactivez les horodatages TCP, vous devriez vous attendre à de moins bonnes performances.\r\n# et des connexions moins fiables.\r\n\r\n\r\n\r\nnet.ipv4.tcp_timestamps = 1\r\n\r\n# Désactiver IPv6 sauf si requis\r\n\r\n\r\n\r\nnet.ipv6.conf.lo.disable_ipv6 = 1\r\nnet.ipv6.conf.all.disable_ipv6 = 1\r\nnet.ipv6.conf.default.disable_ipv6 = 1\r\n\r\n# Ne pas accepter les annonces de routeur\r\n\r\n\r\n\r\nnet.ipv6.conf.all.accept_ra = 0\r\nnet.ipv6.conf.default.accept_ra = 0\n3.4 Modules de noyau qui affectent la mise en réseau\nOuvrir /etc/modprobe.d/hardening.conf et désactivez les modules du noyau Bluetooth:\ninstaller bnep / bin / true\r\ninstaller bluetooth / bin / true\r\ninstaller btusb / bin / true\r\ninstaller net-pf-31 / bin / true\nDésactivez également AppleTalk:\ninstaller appletalk / bin / true\nSi nécessaire, désactivez la prise en charge d&#39;IPv6:\noptions ipv6 désactiver = 1\nDésactiver les protocoles (rares):\ninstaller dccp / bin / true\r\ninstallez sctp / bin / true\r\ninstaller rds / bin / true\r\ninstaller tipc / bin / true\nPuisque nous examinons la sécurité des serveurs, le sans fil ne devrait pas être un problème, nous pouvons donc désactiver tous les pilotes sans fil.\n# pour i dans $ (trouver / lib / modules / $ (uname -r) / kernel / drivers / net / wireless -name &quot;* .ko&quot; -type f);\r\n  echo blacklist &quot;$ i&quot; &gt;&gt; / etc / modprobe.d / hardening-wireless.conf; done\n3.5 Désactiver les radios\nDésactiver les radios (wifi et wwan):\n# nmcli radio tout est éteint\n3.6 Désactiver le réseau Zeroconf\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNOZEROCONF = oui\n3.7 Désactiver l&#39;utilisation de l&#39;interface IPv6 par l&#39;interface\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNETWORKING_IPV6 = no\r\nIPV6INIT = no\n3.8 renifleur de réseau\nLe serveur ne doit pas agir comme un renifleur réseau et une capture de packages. Exécutez ce qui suit pour déterminer si une interface est en cours d&#39;exécution en mode promiscuous:\n# lien ip | grep PROMISC\n3.9 Connexion VPN sécurisée\nInstallez le paquet libreswan si la mise en oeuvre de IPSec et IKE est requise.\n# miam installer libreswan\n3.10 Désactiver le client DHCP\nL&#39;attribution manuelle d&#39;adresses IP offre un degré de gestion supérieur.\nPour chaque interface réseau disponible sur le serveur, ouvrez un fichier correspondant. / etc / sysconfig / network-scripts / ifcfg-interface    et configurez les paramètres suivants:\nBOOTPROTO = aucun\r\nIPADDR =\r\nNETMASK =\r\nPASSERELLE =\n4. Paramètres système &#8211; SELinux\nAssurez-vous que SELinux n&#39;est pas désactivé dans / etc / default / grubet vérifiez que l&#39;état applique:\n# sestatus\n5. Paramètres système &#8211; Contrôle de compte et d&#39;accès\n5.1 Supprimer les comptes et les groupes inutilisés\nSupprimez tout compte non requis, par exemple:\n# userdel -r adm\r\n# userdel -r ftp\r\n# userdel -r jeux\r\n# userdel -r lp\nSupprimer tout groupe non requis, par exemple:\n# jeux groupdel\n5.2 Désactiver la connexion root directe\n# echo&gt; / etc / securetty\n5.3 Activer la stratégie de mot de passe sécurisé (haute qualité)\nNotez que lancer authconfig va écraser les fichiers de configuration PAM détruisant les modifications apportées manuellement. Assurez-vous que vous avez un sauvegarde.\nLes règles de stratégie de mot de passe sécurisé sont décrites ci-dessous.\n\nLongueur minimale du mot de passe &#8211; 16.\nNombre minimum de classes de caractères dans un mot de passe &#8211; 4.\nNombre maximum de mêmes caractères consécutifs dans un mot de passe &#8211; 2.\nNombre maximal de caractères consécutifs de la même classe dans un mot de passe &#8211; 2.\nExigez au moins une lettre minuscule et une lettre majuscule dans un mot de passe.\nExiger au moins un chiffre dans un mot de passe.\nExiger au moins un autre caractère dans un mot de passe.\n\nLa commande suivante activera SHA512 et définira les exigences de mot de passe ci-dessus:\n# authconfig --passalgo = sha512 \r\n --passminlen = 16 \r\n --passminclass = 4 \r\n --passmaxrepeat = 2 \r\n --passmaxclassrepeat = 2 \r\n --enablereqlower \r\n --enablerequpper \r\n --enablereqdigit \r\n --enablereqother \r\n --mettre à jour\nOuvrir /etc/security/pwquality.conf et ajoutez ce qui suit:\ndifok = 8\r\ngecoscheck = 1\nCela garantira que 8 caractères du nouveau mot de passe ne seront pas présents dans l&#39;ancien mot de passe et vérifiera les mots de la chaîne GECOS de mot de passe de l&#39;utilisateur.\n5.4 Empêcher la connexion à des comptes avec un mot de passe vide\nSupprimer toutes les occurrences de nullok de /etc/pam.d/system-auth et /etc/pam.d/password-auth pour empêcher les connexions avec des mots de passe vides.\nSed one-liner:\n# sed -i&#39;s / // g &#39;/etc/pam.d/system-auth /etc/pam.d/system-auth-ac\n# sed -i&#39;s / // g &#39;/etc/pam.d/password-auth /etc/pam.d/password-auth-ac\n5.5 Définir l&#39;expiration du compte après l&#39;inactivité\nDésactivez les comptes dès que le mot de passe a expiré.\nOuvrir / etc / default / useradd et définissez les éléments suivants:\nINACTIF = 0\nSed one-liner:\n# sed -i &#39;s / ^ INACTIVE. * / INACTIF = 0 /&#39; / etc / default / useradd\n5.6 Politique de mot de passe sécurisé\nOuvrir /etc/login.defs et définissez les éléments suivants:\nPASS_MAX_DAYS 60\r\nPASS_MIN_DAYS 1\r\nPASS_MIN_LEN 14\r\nPASS_WARN_AGE 14\nSed one-liner:\n# sed -i -e &#39;/ ^ PASS_MAX_DAYS. * / PASS_MAX_DAYS 60 /&#39; \r\n  -e &#39;s / ^ PASS_MIN_DAYS. * / PASS_MIN_DAYS 1 /&#39; \r\n  -e &#39;s / ^ PASS_MIN_LEN. * / PASS_MIN_LEN 14 /&#39; \r\n  -e &#39;s / ^ PASS_WARN_AGE. * / PASS_WARN_AGE 14 /&#39; /etc/login.defs\n5.7 Journal des tentatives de connexion infructueuses\nOuvrir /etc/login.defs et activer la journalisation:\nFAILLOG_ENAB oui\nAjoutez également un délai en secondes avant de pouvoir effectuer une autre tentative après un échec de connexion:\nFAIL_DELAY 4\n5.8 S&#39;assurer que les répertoires de base sont créés pour les nouveaux utilisateurs\nOuvrir /etc/login.defs et configurer:\nCREATE_HOME oui\n5.9 Vérifier que tous les mots de passe du compte sont masqués\nLa commande ci-dessous devrait renvoyer «x»:\n# cut -d: -f2 / etc / passwd | uniq\n5.10 Définir le délai de refus et de verrouillage pour les tentatives de mot de passe infructueuses\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nAjoutez la ligne suivante immédiatement après le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le COMPTE section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\ncompte requis pam_faillock.so\nLe contenu du fichier /etc/pam.d/system-auth peut être vu ci-dessous.\n#% PAM-1.0\r\n\r\n\r\n\r\nauth requis pam_env.so\r\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\r\nautorisation suffisante pam_unix.so try_first_pass\r\nauth        [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\r\nautorisation requise pam_succeed_if.so uid&gt; = 1000 quiet_success\r\nauth requis pam_deny.so\r\n\r\ncompte requis pam_faillock.so\r\ncompte requis pam_unix.so\r\ncompte suffisant pam_localuser.so\r\ncompte suffisant pam_succeed_if.so uid &lt;1000 silencieux\r\ncompte requis pam_permit.so\r\n\r\nmot de passe requis pam_pwquality.so try_first_pass local_users_only retry = 3 authtok_type =\r\nmot de passe suffisant pam_unix.so sha512 shadow try_first_pass use_authtok rappelez-vous = 5\r\nmot de passe requis pam_deny.so\r\n\r\nsession facultative pam_keyinit.so révoquer\r\nsession requise pam_limits.so\r\n-session optionnel pam_systemd.so\r\nsession     [success=1 default=ignore] pam_succeed_if.so service dans crond quiet use_uid\r\nsession requise pam_unix.so\nDe plus, n&#39;autorisez pas les utilisateurs à réutiliser des mots de passe récents en ajoutant le rappelles toi option.\nFaire /etc/pam.d/system-auth et /etc/pam.d/password-auth configurations immuables pour qu’elles ne soient pas écrasées lors de l’exécution d’authconfig:\n# chattr + i /etc/pam.d/system-auth /etc/pam.d/password-auth\nLes comptes seront verrouillés après 3 tentatives de connexion infructueuses:\ns&#39;identifier[]: pam_faillock (login: auth): échecs de connexion consécutifs pour le compte utilisateur tomas temporairement bloqué \nUtilisez ce qui suit pour effacer le nombre d’échecs de l’utilisateur:\n# faillock --user tomas --reset\n5.11 Définir le mot de passe du chargeur d&#39;amorçage\nEmpêcher les utilisateurs d’entrer dans la ligne de commande grub et d’éditer les entrées du menu:\n# grub2-setpassword\r\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nCela va créer le fichier /boot/grub2/user.cfg s&#39;il n&#39;y en a pas déjà un, qui contiendra le mot de passe haché du chargeur de démarrage Grub2.\nVérifier les autorisations de /boot/grub2/grub.cfg:\n# chmod 0600 /boot/grub2/grub.cfg\n5.12 Mode utilisateur unique protégé par mot de passe\nLe mode utilisateur unique CentOS 7 est protégé par mot de passe par le mot de passe root par défaut dans le cadre de la conception de Grub2 et de systemd.\n5.13 Assurer que les utilisateurs s&#39;authentifient de nouveau pour l&#39;escalade des privilèges\nLa balise NOPASSWD permet à un utilisateur d’exécuter des commandes à l’aide de sudo sans devoir fournir de mot de passe. Bien que cela puisse parfois être utile, il est également dangereux.\nAssurez-vous que la balise NOPASSWD n’existe pas dans / etc / sudoers fichier de configuration ou /etc/sudoers.d/.\n5.14 Écrans multiples de la console et verrouillage de la console\nInstallez le package d&#39;écran pour pouvoir émuler plusieurs fenêtres de console:\n# yum install screen\nInstallez le paquet vlock pour activer le verrouillage de l’écran de la console:\n# miam installer vlock\n5.15 Désactiver l&#39;activation de redémarrage Ctrl-Alt-Suppr\nEmpêcher un utilisateur de la console connecté localement de redémarrer le système lorsque vous appuyez sur Ctrl-Alt-Suppr:\n# systemctl mask ctrl-alt-del.target\n5.16 Bannières d&#39;avertissement pour l&#39;accès au système\nAjouter la ligne suivante aux fichiers / etc / issue et /etc/issue.net:\nAccès non autorisé interdit. Les journaux sont enregistrés et surveillés.\n5.17 Définir le délai d&#39;expiration de la session interactive\nOuvrir / etc / profile Et mettre:\nen lecture seule TMOUT = 900\n5.18 Authentification à deux facteurs\nLa version récente du serveur OpenSSH permet de chaîner plusieurs méthodes d&#39;authentification, ce qui signifie qu&#39;elles doivent toutes être satisfaites pour qu&#39;un utilisateur puisse se connecter avec succès.\nAjout de la ligne suivante à / etc / ssh / sshd_config nécessiterait que l&#39;utilisateur s&#39;authentifie d&#39;abord avec une clé, puis fournisse également un mot de passe.\nAuthenticationMethods publickey, mot de passe\nIl s’agit par définition d’une authentification à deux facteurs: le fichier de clé est une propriété de l’utilisateur et le mot de passe du compte est connu de l’utilisateur.\nL&#39;authentification à deux facteurs pour SSH peut également être configurée à l&#39;aide de Google Authenticator.\n5.19 Configurer la taille du fichier d&#39;historique\nOuvrir / etc / profile et définissez le nombre de commandes à mémoriser dans l&#39;historique des commandes à 5000:\nHISTSIZE = 5000\nSed one-liner:\n# sed -i&#39;s / HISTSIZE =. * / HISTSIZE = 5000 / g &#39;/ etc / profile\n6. Paramètres système &#8211; Comptabilité système avec auditd\n6.1 Configuration auditée\nOuvrir /etc/audit/auditd.conf et configurez les éléments suivants:\nlocal_events = yes\r\nwrite_logs = yes\r\nlog_file = /var/log/audit/audit.log\r\nmax_log_file = 25\r\nnum_logs = 10\r\nmax_log_file_action = rotation\r\nspace_left = 30\r\nspace_left_action = email\r\nadmin_space_left = 10\r\nadmin_space_left_action = email\r\ndisk_full_action = suspendre\r\ndisk_error_action = suspendre\r\naction_mail_acct = [email protected]\r\nflush = data\nLa configuration auditd ci-dessus ne doit jamais utiliser plus de 250 Mo d’espace disque (10 x 25 Mo = 250 Mo) sur / var / log / audit.\nEnsemble admin_space_left_action = single si vous souhaitez que le système passe en mode utilisateur unique pour une action corrective plutôt que d&#39;envoyer un courrier électronique.\nRotation automatique des bûches (max_log_file_action = rotation) minimise les chances que le système manque d’espace disque de manière inattendue en étant rempli de données de journal.\nNous devons nous assurer que les données d’événement d’audit sont entièrement synchronisées (flush = data) avec les fichiers de log sur le disque.\n6.2 Règles d&#39;audit\nLes règles d&#39;audit système doivent avoir le mode 0640 ou moins permissif et appartenir à l&#39;utilisateur root:\n# racine chown: root /etc/audit/rules.d/audit.rules\r\n# chmod 0640 /etc/audit/rules.d/audit.rules\nOuvrir /etc/audit/rules.d/audit.rules et ajoutez ce qui suit:\n# Supprimer toutes les règles actuellement chargées\r\n\r\n\r\n\r\n-RÉ\r\n\r\n# Définir la taille de la mémoire tampon du noyau\r\n\r\n\r\n\r\n-b 8192\r\n\r\n# Définit l&#39;action à effectuer lorsqu&#39;une erreur critique est détectée.\r\n# Modes d&#39;échec: 0 = silencieux 1 = printk 2 = panique\r\n\r\n\r\n\r\n-f 1\r\n\r\n# Record tente de modifier le fichier localtime\r\n\r\n\r\n\r\n-w / etc / localtime -p wa -k audit_time_rules\r\n\r\n# Enregistrer des événements qui modifient les informations utilisateur / groupe\r\n\r\n\r\n\r\n-w / etc / group -p wa -k audit_rules_usergroup_modification\r\n-w / etc / passwd -p wa -k audit_rules_usergroup_modification\r\n-w / etc / gshadow -p wa -k audit_rules_usergroup_modification\r\n-w / etc / shadow -p wa -k audit_rules_usergroup_modification\r\n-w / etc / security / opasswd -p wa -k audit_rules_usergroup_modification\r\n\r\n# Enregistrer des événements qui modifient l&#39;environnement réseau du système\r\n\r\n\r\n\r\n-w /etc/issue.net -p wa -k audit_rules_networkconfig_modification\r\n-w / etc / issue -p wa -k audit_rules_networkconfig_modification\r\n-w / etc / hosts -p wa -k audit_rules_networkconfig_modification\r\n-w / etc / sysconfig / network -p wa -k audit_rules_networkconfig_modification\r\n-a toujours, quittez -F arch = b32 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\r\n-a toujours, quittez -F arch = b64 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\r\n\r\n# Enregistrer des événements qui modifient les contrôles d&#39;accès obligatoires du système\r\n\r\n\r\n\r\n-w / etc / selinux / -p wa -k MAC-policy\r\n\r\n# Enregistrer les tentatives de modification des événements de connexion et de déconnexion\r\n\r\n\r\n\r\n-w / var / log / tallylog -p wa -k connexions\r\n-w / var / log / lastlog -p wa -k connexions\r\n-w / var / run / faillock / -p wa -k connexions\r\n\r\n# Enregistrer les tentatives de modification des informations de démarrage du processus et de la session\r\n\r\n\r\n\r\n-w / var / log / btmp -p wa -k session\r\n-w / var / log / wtmp -p wa -k session\r\n-w / var / run / utmp -p wa -k session\r\n\r\n# Assurez-audit auditd de collecter des informations sur le chargement et le déchargement des modules du noyau\r\n\r\n\r\n\r\n-w / usr / sbin / insmod -p x -k modules\r\n-w / usr / sbin / modprobe -p x -k modules\r\n-w / usr / sbin / rmmod -p x -k modules\r\n-a toujours, quittez -F arch = b64 -S init_module -S delete_module -k modules\r\n\r\n# S&#39;assurer que auditd collecte les actions de l&#39;administrateur système\r\n\r\n\r\n\r\n-w / etc / sudoers -p wa -k actions\r\n-w /etc/sudoers.d/ -p wa -k actions\r\n\r\n# Enregistrez les tentatives de modification du temps avec adjtimex\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b32 -S adjtimex -S settimeofday -S temps -k audit_time_rules\r\n\r\n# Record tentatives de changer le temps par settimeofday\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b64 -S adjtimex -S settimeofday -k audit_time_rules\r\n\r\n# Enregistrez les tentatives de modification de l&#39;heure via clock_settime\r\n\r\n\r\n\r\n-a toujours, quitte -F arch = b32 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure\r\n\r\n# Enregistrez les tentatives de modification de l&#39;heure via clock_settime\r\n\r\n\r\n\r\n-a toujours, quitte -F arch = b64 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure\r\n\r\n# Enregistrer des événements qui modifient les contrôles d&#39;accès discrétionnaires du système\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b32 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n-a toujours, quittez -F arch = b32 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n-a toujours, quittez -F arch = b64 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n-a toujours, quittez -F arch = b64 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n-a toujours, quittez -F arch = b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n-a toujours, quittez -F arch = b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\r\n\r\n# S&#39;assurer que auditd collecte les tentatives d&#39;accès non autorisé aux fichiers (non réussi)\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b32 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\r\n-a toujours, quittez -F arch = b32 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\r\n-a toujours, quittez -F arch = b64 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\r\n-a toujours, quittez -F arch = b64 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\r\n\r\n# S&#39;assure que auditd collecte des informations sur l&#39;exportation vers le support (avec succès)\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b32 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\r\n-a toujours, quittez -F arch = b64 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\r\n\r\n# S&#39;assure que auditd collecte les événements de suppression de fichier par utilisateur\r\n\r\n\r\n\r\n-a toujours, quittez -F arch = b32 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\r\n-a toujours, quittez -F arch = b64 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\r\n\r\n# Assurez-audit auditd de collecter des informations sur l&#39;utilisation de commandes privilégiées\r\n\r\n\r\n\r\n-a toujours, sortie -F chemin = / usr / bin / chage -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitte -F chemin = / usr / bin / chcon -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privileged-priv_change\r\n-a toujours, quitte -F chemin = / usr / bin / chfn -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / chsh -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / crontab -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / gpasswd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / mount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitte -F chemin = / usr / bin / newgrp -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitter -F chemin = / usr / bin / passwd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitter -F chemin = / usr / bin / pkexec -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitte -F chemin = / usr / bin / screen -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quittez -f chemin = / usr / bin / ssh-agent -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / sudo -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, quitte -F chemin = / usr / bin / sudoedit -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privilégié\r\n-a toujours, quitter -F chemin = / usr / bin / su -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / umount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / mur -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a toujours, sortie -F chemin = / usr / bin / écriture -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\r\n-a always,exit -F path=/usr/lib64/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/restorecon -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\r\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\r\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\r\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\r\n\r\n# Make the auditd configuration immutable.\r\n# The configuration can only be changed by rebooting the machine.\r\n\r\n\r\n\r\n-e 2\nThe auditd service does not include the ability to send audit records to a centralised server for management directly.\nIt does, however, include a plug-in for audit event multiplexor to pass audit records to the local syslog server.\nTo do so, open the file /etc/audisp/plugins.d/syslog.conf and set:\nactive = yes\nEnable and start the service:\n# systemctl enable auditd.service\r\n# systemctl start auditd.service\n6.3. Enable Kernel Auditing\nOuvrir /etc/default/grub and append the following parameter to the kernel boot line GRUB_CMDLINE_LINUX:\naudit=1\nUpdate Grub2 configuration to reflect changes:\n# grub2-mkconfig -o /boot/grub2/grub.cfg\n7. System Settings – Software Integrity Checking\n7.1 Advanced Intrusion Detection Environment (AIDE)\nInstall AIDE:\n# yum install aide\nBuild AIDE database:\n# /usr/sbin/aide --init\nBy default, the database will be written to the file /var/lib/aide/aide.db.new.gz.\n# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\nStoring the database and the configuration file /etc/aide.conf (or SHA2 hashes of the files) in a secure location provides additional assurance about their integrity.\nCheck AIDE database:\n# /usr/sbin/aide --check\nBy default, AIDE does not install itself for periodic execution. Configure periodic execution of AIDE by adding to cron:\n# echo &quot;30 4 * * * root /usr/sbin/aide --check|mail -s &#39;AIDE&#39; [email protected]&quot; &gt;&gt; /etc/crontab\nPeriodically running AIDE is necessary in order to reveal system changes.\n7.2 Tripwire\nOpen Source Tripwire is an alternative to AIDE. It is recommended to use one or another, but not both.\nInstall Tripwire from the EPEL repository:\n# yum install epel-release\r\n# yum install tripwire\r\n# /usr/sbin/tripwire-setup-keyfiles\nThe Tripwire configuration file is /etc/tripwire/twcfg.txt and the policy file is /etc/tripwire/twpol.txt. These can be edited and configured to match the system Tripwire is installed on, see this blog post for more details.\nInitialise the database to implement the policy:\n# tripwire --init\nCheck for policy violations:\n# tripwire --check\nTripwire adds itself to /etc/cron.daily/ for daily execution therefore no extra configuration is required.\n7.3 Prelink\nPrelinking is done by the prelink package, which is not installed by default.\n# yum install prelink\nTo disable prelinking, open the file /etc/sysconfig/prelink and set the following:\nPRELINKING=no\nSed one-liner:\n# sed -i &#39;s/PRELINKING.*/PRELINKING=no/g&#39; /etc/sysconfig/prelink\nDisable existing prelinking on all system files:\n# prelink -ua\n8. System Settings – Logging and Message Forwarding\n8.1 Configure Persistent Journald Storage\nBy default, journal stores log files only in memory or a small ring-buffer in the directory /run/log/journal. This is sufficient to show recent log history with journalctl, but logs aren’t saved permanently. Enabling persistent journal storage ensures that comprehensive data is available after system reboot.\nOpen the file /etc/systemd/journald.conf and put the following:\n[Journal]\r\n\r\n\r\n\r\nStorage=persistent\r\n\r\n# How much disk space the journal may use up at most\r\n\r\n\r\n\r\nSystemMaxUse=256M\r\n\r\n# How much disk space systemd-journald shall leave free for other uses\r\n\r\n\r\n\r\nSystemKeepFree=512M\r\n\r\n# How large individual journal files may grow at most\r\n\r\n\r\n\r\nSystemMaxFileSize=32M\nRestart the service:\n# systemctl daemon-reload\r\n# systemctl restart systemd-journald\n8.2 Configure Message Forwarding to Remote Server\nDepending on your setup, open /etc/rsyslog.conf and add the following to forward messages to a some remote server:\n*.* @graylog.example.com:514\nIci *.* représente facility.severity. Note that a single @ sends logs over UDP, where a double @ sends logs using TCP.\n8.3 Logwatch\nLogwatch is a customisable log-monitoring system.\n# yum install logwatch\nLogwatch adds itself to /etc/cron.daily/ for daily execution therefore no configuration is mandatory.\n9. System Settings – Security Software\n9.1 Malware Scanners\nInstall Rkhunter and ClamAV:\n# yum install epel-release\r\n# yum install rkhunter clamav clamav-update\r\n# rkhunter --update\r\n# rkhunter --propupd\r\n# freshclam -v\nRkhunter adds itself to /etc/cron.daily/ for daily execution therefore no configuration is required. ClamAV scans should be tailored to individual needs.\n9.2 Arpwatch\nArpwatch is a tool used to monitor ARP activity of a local network (ARP spoofing detection), therefore it is unlikely one will use it in the cloud, however, it is still worth mentioning that the tools exist.\nBe aware of the configuration file /etc/sysconfig/arpwatch which you use to set the email address where to send the reports.\n9.3 Commercial AV\nConsider installing a commercial AV product that provides real-time on-access scanning capabilities.\n9.4 Grsecurity\nGrsecurity is an extensive security enhancement to the Linux kernel. Although it isn’t free nowadays, the software is still worth mentioning.\nThe company behind Grsecurity stopped publicly distributing stable patches back in 2015, with an exception of the test series continuing to be available to the public in order to avoid impact to the Gentoo Hardened and Arch Linux communities.\nTwo years later, the company decided to cease free distribution of the test patches as well, therefore as of 2017, Grsecurity software is available to paying customers only.\n10. System Settings – OS Update Installation\nInstall the package yum-utils for better consistency checking of the package database.\n# yum install yum-utils\nConfigure automatic package updates via yum-cron.\n# yum install yum-cron\nAdd the following to /etc/yum/yum-cron.conf to get notified via email when new updates are available:\nupdate_cmd = default\r\nupdate_messages = yes\r\ndownload_updates = no\t\r\napply_updates = no\r\nemit_via = email\t\r\nemail_from = [email protected]\r\nemail_to = [email protected]\r\nemail_host = localhost\nAdd the following to /etc/yum/yum-cron-hourly.conf to check for bugfix-related updates every hour and automatically download and install them:\nupdate_cmd = minimal # yum --bugfix update-minimal\r\n\r\n\r\n\r\nupdate_messages = yes\r\ndownload_updates = yes\r\napply_updates = yes\r\nemit_via = stdio\nRemarque: security information is provided by RedHat only. When you query a repository that is provided by CentOS it does not supply security metadata (however the EPEL repository does have security metadata).\nTherefore if you decide to use update_cmd = security, yum will always tell you that nothing from CentOS needs a security update.\nEnable and start the service:\n# systemctl enable yum-cron.service\r\n# systemctl start yum-cron.service\n11. System Settings – Process Accounting\nThe package psacct contain utilities for monitoring process activities:\n\nac – displays statistics about how long users have been logged on.\nlastcomm – displays information about previously executed commands.\naccton – turns process accounting on or off.\nsa – summarises information about previously executed commands.\n\nInstall and enable the service:\n# yum install psacct\r\n# systemctl enable psacct.service\r\n# systemctl start psacct.service\n1. Services – SSH Server\nCreate a group for SSH access as well as some regular user account who will be a member of the group:\n# groupadd ssh-users\r\n# useradd -m -s /bin/bash -G ssh-users tomas\nGenerate SSH keys for the user:\n# su - tomas\r\n$ mkdir --mode=0700 ~/.ssh\r\n$ ssh-keygen -b 4096 -t rsa -C &quot;tomas&quot; -f ~/.ssh/id_rsa\nGenerate SSH host keys:\n# ssh-keygen -b 4096 -t rsa -N &quot;&quot; -f /etc/ssh/ssh_host_rsa_key\r\n# ssh-keygen -b 1024 -t dsa -N &quot;&quot; -f /etc/ssh/ssh_host_dsa_key\r\n# ssh-keygen -b 521 -t ecdsa -N &quot;&quot; -f /etc/ssh/ssh_host_ecdsa_key\r\n# ssh-keygen -t ed25519 -N &quot;&quot; -f /etc/ssh/ssh_host_ed25519_key\nPour RSA keys, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.\nPour ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. ED25519 keys have a fixed length and the -b flag is ignored.\nThe host can be impersonated if an unauthorised user obtains the private SSH host key file, therefore ensure that permissions of /etc/ssh/*_key are properly set:\n# chmod 0600 /etc/ssh/*_key\nConfigurer /etc/ssh/sshd_config with the following:\n# SSH port.\r\n\r\n\r\n\r\nPort 22\r\n\r\n# Listen on IPv4 only.\r\n\r\n\r\n\r\nListenAddress 0.0.0.0\r\n\r\n# Protocol version 1 has been exposed.\r\n\r\n\r\n\r\nProtocol 2\r\n\r\n#\r\n# OpenSSH cipher-related release notes.\r\n# OpenSSH 6.2: added support for AES-GCM authenticated encryption. \r\n# The cipher is available as [email protected] et [email protected]\r\n# OpenSSH 6.5: added new cipher [email protected]\r\n# OpenSSH 6.7: removed unsafe algorithms. CBC ciphers are disabled by default:\r\n# aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc.\r\n# OpenSSH 6.9: promoted [email protected] to be the default cipher.\r\n#\r\n\r\n\r\n\r\nCiphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr\r\n\r\n#\r\n# OpenSSH 6.2: added support for the UMAC-128 MAC as [email protected] \r\n# and [email protected] The latter being an encrypt-then-mac mode.\r\n# Do not use umac-64 or umac-64-etm because of a small 64 bit tag size.\r\n# Do not use any SHA1 (e.g. hmac-sha1, [email protected]) MACs \r\n# because of a weak hashing algorithm. \r\n# Do not use hmac-sha2-256, hmac-sha2-512 or [email protected] \r\n# because of an encrypt-and-MAC mode. See the link below:\r\n# https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac\r\n#\r\n\r\n\r\n\r\nMACs [email protected],[email protected],[email protected]\r\n\r\n#\r\n# OpenSSH 6.5: added support for ssh-ed25519. It offers better security \r\n# than ECDSA and DSA.\r\n# OpenSSH 7.0: disabled support for ssh-dss. \r\n# OpenSSH 7.2: added support for rsa-sha2-512 and rsa-sha2-256.\r\n#\r\n\r\n\r\n\r\nHostKeyAlgorithms ssh-ed25519,[email protected],ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,[email protected],[email protected],[email protected],[email protected],[email protected]\r\n\r\n#\r\n# OpenSSH 6.5: added support for key exchange using elliptic-curve\r\n# Diffie Hellman in Daniel Bernstein&#39;s Curve25519.\r\n# OpenSSH 7.3: added support for diffie-hellman-group14-sha256,\r\n# diffie-hellman-group16-sha512 and diffie-hellman-group18-sha512.\r\n#\r\n\r\n\r\n\r\nKexAlgorithms [email protected],diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256\r\n\r\n# HostKeys for protocol version 2.\r\n\r\n\r\n\r\nHostKey /etc/ssh/ssh_host_rsa_key\r\nHostKey /etc/ssh/ssh_host_ed25519_key\r\n\r\n# Disabled because uses a small 1024 bit key.\r\n\r\n\r\n\r\n#HostKey /etc/ssh/ssh_host_dsa_key\r\n\r\n# Disabled because uses weak elliptic curves.\r\n# See: https://safecurves.cr.yp.to/\r\n\r\n\r\n\r\n#HostKey /etc/ssh/ssh_host_ecdsa_key\r\n\r\n\r\n# INFO is a basic logging level that will capture user login/logout activity.\r\n# DEBUG logging level is not recommended for production servers.\r\n\r\n\r\n\r\nLogLevel INFO\r\n\r\n# Disconnect if no successful login is made in 60 seconds.\r\n\r\n\r\n\r\nLoginGraceTime 60\r\n\r\n# Do not permit root logins via SSH.\r\n\r\n\r\n\r\nPermitRootLogin no\r\n\r\n# Check file modes and ownership of the user&#39;s files before login.\r\n\r\n\r\n\r\nStrictModes yes\r\n\r\n# Close TCP socket after 2 invalid login attempts.\r\n\r\n\r\n\r\nMaxAuthTries 2\r\n\r\n# The maximum number of sessions per network connection.\r\n\r\n\r\n\r\nMaxSessions 3\r\n\r\n# User/group permissions.\r\n\r\n\r\n\r\nAllowUsers\r\nAllowGroups ssh-users\r\nDenyUsers root\r\nDenyGroups root\r\n\r\n# Password and public key authentications.\r\n\r\n\r\n\r\nPasswordAuthentication no\r\nPermitEmptyPasswords no\r\nPubkeyAuthentication yes\r\nAuthorizedKeysFile  .ssh/authorized_keys\r\n\r\n# Disable unused authentications mechanisms.\r\n\r\n\r\n\r\nRSAAuthentication no # DEPRECATED\r\n\r\n\r\n\r\nRhostsRSAAuthentication no # DEPRECATED\r\n\r\n\r\n\r\nChallengeResponseAuthentication no\r\nKerberosAuthentication no\r\nGSSAPIAuthentication no\r\nHostbasedAuthentication no\r\nIgnoreUserKnownHosts yes\r\n\r\n# Disable insecure access via rhosts files.\r\n\r\n\r\n\r\nIgnoreRhosts yes\r\n\r\nAllowAgentForwarding no\r\nAllowTcpForwarding no\r\n\r\n# Disable X Forwarding.\r\n\r\n\r\n\r\nX11Forwarding no\r\n\r\n# Disable message of the day but print last log.\r\n\r\n\r\n\r\nPrintMotd no\r\nPrintLastLog yes\r\n\r\n# Show banner.\r\n\r\n\r\n\r\nBanner /etc/issue\r\n\r\n# Do not send TCP keepalive messages.\r\n\r\n\r\n\r\nTCPKeepAlive no\r\n\r\n# Default for new installations.\r\n\r\n\r\n\r\nUsePrivilegeSeparation sandbox\r\n\r\n# Prevent users from potentially bypassing some access restrictions.\r\n\r\n\r\n\r\nPermitUserEnvironment no\r\n\r\n# Disable compression.\r\n\r\n\r\n\r\nCompression no\r\n\r\n# Disconnect the client if no activity has been detected for 900 seconds.\r\n\r\n\r\n\r\nClientAliveInterval 900\r\nClientAliveCountMax 0\r\n\r\n# Do not look up the remote hostname.\r\n\r\n\r\n\r\nUseDNS no\r\n\r\nUsePAM yes\nYou can use the ssh-audit tool to test your SSH server configuration.\nIn case you want to change the default SSH port to something else, you will need to tell SELinux about it.\n# yum install policycoreutils-python\nFor example, to allow SSH server to listen on TCP 2222, do the following:\n# semanage port -a -t ssh_port_t 2222 -p tcp\nEnsure that the firewall allows incoming traffic on the new SSH port and restart the sshd service.\n2. Service – Network Time Protocol\nCentOS 7 should come with Chrony, make sure that the service is enabled:\n# systemctl enable chronyd.service\n3. Services – Mail Server\n3.1 Postfix\nPostfix should be installed and enabled already. In case it isn’t, the do the following:\n# yum install postfix\r\n# systemctl enable postfix.service\nOuvrir /etc/postfix/main.cf and configure the following to act as a null client:\nsmtpd_banner = $myhostname ESMTP\r\ninet_interfaces = loopback-only\r\ninet_protocols = ipv4\r\nmydestination =\r\nlocal_transport = error: local delivery disabled\r\nunknown_local_recipient_reject_code = 550\r\nmynetworks = 127.0.0.0/8\r\nrelayhost = [mail.example.com]:587\nOptionally (depending on your setup), you can configure Postfix to use authentication:\n# yum install cyrus-sasl-plain\nOuvrir /etc/postfix/main.cf and add the following:\nsmtp_sasl_auth_enable = yes\r\nsmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd\r\nsmtp_sasl_security_options = noanonymous\r\nsmtp_tls_CApath = /etc/ssl/certs\r\nsmtp_use_tls = yes\nOuvrir /etc/postfix/sasl_passwd and put authentication credentials in a format of:\n[mail.example.com]:587 [email protected]:password\nSet permissions and create a database file:\n# chmod 0600 /etc/postfix/sasl_passwd\r\n# postmap /etc/postfix/sasl_passwd\nRestart the service and ensure that firewall allows outgoing traffic to the SMTP relay server.\n3.2 Mail Distribution to Active Mail Accounts\nConfigure the file /etc/aliases to have a forward rule for the root user.\n4. Services – Remove Obsolete Services\nNone of these should be installed on CentOS 7 minimal:\n# yum remove xinetd telnet-server rsh-server \r\n  telnet rsh ypbind ypserv tfsp-server bind \r\n  vsfptd dovecot squid net-snmpd talk-server talk\nCheck all enabled services:\n# systemctl list-unit-files --type=service|grep enabled\nDisable kernel dump service:\n# systemctl disable kdump.service\r\n# systemctl mask kdump.service\nDisable everything that is not required, e.g.:\n# systemctl disable tuned.service\n5. Services – Restrict at and cron to Authorised Users\nSi le fichier cron.allow exists, then only users listed in the file are allowed to use cron, and the cron.deny file is ignored.\n# echo root &gt; /etc/cron.allow\r\n# echo root &gt; /etc/at.allow\r\n# rm -f /etc/at.deny /etc/cron.deny\nNote that the root user can always use cron, regardless of the usernames listed in the access control files.\n6. Services – Disable X Windows Startup\nThis can be achieved by setting a default target:\n# systemctl set-default multi-user.target\n7. Services – Fail2ban\nInstall Fail2ban from the EPEL repository:\n# yum install epel-release\r\n# yum install fail2ban\nIf using iptables rather than firewalld, open the file /etc/fail2ban/jail.d/00-firewalld.conf and comment out the following line:\n#banaction = firewallcmd-ipset\nFail2Ban uses /etc/fail2ban/jail.conf. Configuration snippet for SSH is provided below:\n[sshd]\r\n\r\n\r\n\r\nport    = ssh\r\nenabled = true\r\nignoreip = 10.8.8.61\r\nbantime  = 600\r\nmaxretry = 5\nIf you run SSH on a non-default port, you can change the port value to any positive integer and then enable the jail.\n# systemctl enable fail2ban.service\r\n# systemctl start fail2ban.service\n8. Services – Sysstat to Collect Performance Activity\nSysstat may provide useful insight into system usage and performance, however, unless used, the service should be disabled, or not installed at all.\n# yum install sysstat\r\n# systemctl enable sysstat.service\r\n# systemctl start sysstat.service\nRéférences\nOpenSCAP Security Guide\nNSA Guide to the Secure Configuration of Red Hat Enterprise Linux 5\nhttps://highon.coffee/blog/security-harden-centos-7/\nhttps://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/\nhttps://www.openssh.com/releasenotes.html\nSecure Secure Shell\nWhat is pam_faillock and how to use it in Red Hat Enterprise Linux\nRevision\nThis guide was last updated on 26/03/2018.\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. \nPour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.\nUne clause de non-responsabilité générale s&#39;applique: n&#39;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#39;elles font.\n1. Paramètres système &#8211; Partitionnement de disque et post-installation\n1.1 Cryptage de disque avec kickstart\nLe moyen le plus simple de chiffrer une partition est lors de l&#39;installation de Kickstart.\nCeci peut être réalisé en ajoutant le –Crypté et –Passphrase = options à la définition d&#39;un volume physique LVM.\nNotre modèle de Kickstart est fourni ci-dessous. Notez que le modèle nécessite un disque de 32 Go.\n# version = CentOS7.5","# Informations d&#39;autorisation du système","auth --enableshadow --passalgo = sha512\n# Utiliser le support d&#39;installation du CD-ROM","CD ROM","ignoredisk --only-use = sda","# Disposition du clavier","clavier --vckeymap = gb --xlayouts = &#39;gb&#39;\n# Langue du système","lang en_GB.UTF-8\n# SELinux","selinux - en vigueur","# Informations sur le réseau","réseau --bootproto = dhcp --device = eth0 --onboot = on --activate\nréseau --hostname = ks-c7.example.com","# Mot de passe root en clair: PleaseChangeMe","rootpw --iscrypted $ 6 $ nS0mBJyS $ q / QgCof5unWrT9W3qngTISueSDhDHVNntDqd8sOcgmHp2lq4f / niUbjCmoEzaf3EWQ2x3z / k0eIZaOxkfNtJw\n# Fuseau horaire du système","fuseau horaire Europe / London --isUtc\n# Configuration du chargeur de démarrage du système","chargeur de démarrage --location = mbr --boot-drive = sda --timeout = 3\n# Informations de nettoyage de partition","clearpart --all --drives = sda\nzerombr","# Informations de partitionnement de disque\n#\n# Votre disque doit faire 32 Go: 1 Go pour / boot et 30 Go pour le volume physique.\n#\n# Journal pour le démarrage n&#39;est pas nécessaire donc ext2","part / boot --fstype = &quot;ext2&quot; --ondisk = sda --size = 1024 --label = boot --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;","# La ligne ci-dessous créera un volume physique de 30 Go","part pv.01 --fstype = &quot;lvmpv&quot; --ondisk = sda --size = 30720 --encrypted --passphrase = PleaseChangeMeToSomethingElse\nvolgroup vg_crypto pv.01","# Besoin de pouvoir réduire les systèmes de fichiers donc ext4 sur xfs par défaut","logvol / --fstype = &quot;ext4&quot; --size = 6144 --vgname = vg_crypto --name = lv_root --mkfsoptions = &quot;- m 1&quot;\nlogvol / home --fstype = &quot;ext4&quot; --size = 2048 --vgname = vg_crypto --name = lv_home --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\nlogvol / var --fstype = &quot;ext4&quot; --size = 4096 --vgname = vg_crypto --name = lv_var --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nosuid&quot;\nlogvol / var / log --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-log --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / log / audit --fstype = &quot;ext4&quot; --size = 512 --vgname = vg_crypto --name = lv_var-aud --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec , nosuid &quot;\nlogvol / var / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / www --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-www --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol swap --fstype = &quot;swap&quot; --size = 512 --vgname = vg_crypto --name = lv_swap --fsoptions = &quot;swap&quot;","%paquets\n@coeur","%fin\n1.2 Schéma de partitionnement\nGardez les partitions suivantes séparées: /démarrage, /maison, / tmp, / var, / var / log, / var / tmp, / var / log / audit, / var / www.\nLe fait de les placer dans leurs propres partitions donne plus de contrôle sur les options de montage. Cela garantit également que le système ne peut pas être arrêté en raison de l’espace disque insuffisant sur une partition.\nSe séparer /opter dépend d&#39;une configuration et n&#39;est généralement pas utile, mais non plus nuisible.\n1.3 Post-installation\nSauvegarder un en-tête LUKS, où / dev / sda2 est la partition chiffrée de LUKS:\n# cryptsetup luksHeaderBackup / dev / sda2 --header-backup-file /root/luks-header.backup\nAssurez-vous que le fichier de sauvegarde est stocké hors site, puis supprimé du serveur.\nAssurez-vous que le système est à jour:\n# miam mise à jour\nSupprimez les packages dont vous n’avez pas besoin sur un serveur, par exemple firmware des cartes son, firmware de WinTV, pilotes sans fil, etc.\n# yum remove alsa- * ivtv- * iwl * firmware aic94xx-firmware\n2. Paramètres système &#8211; Autorisations de fichiers et masques\n2.1 Limiter les options de montage de partition\nLes partitions doivent avoir des options de montage renforcées:","/démarrage &#8211; rw, nodev, noexec, nosuid\n/maison &#8211; rw, nodev, nosuid\n/ tmp &#8211; rw, nodev, noexec, nosuid\n/ var &#8211; rw, nosuid\n/ var / log &#8211; rw, nodev, noexec, nosuid\n/ var / log / audit &#8211; rw, nodev, noexec, nosuid\n/ var / www &#8211; rw, nodev, nosuid","En règle générale, les applications malveillantes écrivent généralement sur / tmp et ensuite essayer d&#39;exécuter tout ce qui était écrit. Un moyen d&#39;éviter cela est de monter / tmp sur une partition séparée avec les options noexec, Nodev et nosuid activée.\nCela empêchera l&#39;exécution binaire de / tmp, désactivez tout binaire en tant que suid root et désactivez la création de tout bloc de périphériques.\nLe lieu de stockage / var / tmp devrait être lié à monté / tmp, car il n’est pas nécessaire d’avoir plusieurs emplacements pour le stockage temporaire:\n/ tmp / var / tmp none, nodev, noexec, nosuid, bind 0 0\nLa même chose s&#39;applique à la mémoire partagée / dev / shm:\ntmpfs / dev / shm tmpfs rw, nodev, noexec, nosuid 0 0\nLe pseudo-système de fichiers proc / proc devrait être monté avec caché. Lorsque vous définissez hidepid sur 2, les entrées de répertoires dans / proc sera caché.\nproc / proc proc rw, hidepid = 2 0 0\nDurcissez les supports amovibles en ajoutant Nodev, noexec et nosuid, par exemple.:\n/ dev / cdrom / mnt / cdrom iso9660 ro, noexec, nosuid, nodev, noauto 0 0\n2.2 Restreindre le montage et le démontage dynamiques de systèmes de fichiers\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf pour désactiver les systèmes de fichiers inhabituels:\ninstaller cramfs / bin / true\ninstaller freevxfs / bin / true\ninstaller jffs2 / bin / true\ninstaller hfs / bin / true\ninstaller hfsplus / bin / true\ninstaller squashfs / bin / true\ninstaller udf / bin / true\nSelon la configuration (si vous n’exécutez pas de grappes, NFS, CIFS, etc.), vous pouvez également désactiver les éléments suivants:\ninstaller fat / bin / true\ninstaller vfat / bin / true\ninstaller cifs / bin / true\ninstaller nfs / bin / true\ninstaller nfsv3 / bin / true\ninstaller nfsv4 / bin / true\ninstaller gfs2 / bin / true\nIl est sage de laisser ext4, xfs et btrfs activés à tout moment.\n2.3 Empêcher les utilisateurs de monter un stockage USB\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf Pour désactiver le chargement de modprobe des pilotes de stockage USB et FireWire:\nliste noire usb-storage\nliste noire firewire-core\ninstaller usb-storage / bin / true\nDésactiver l&#39;autorisation USB. Créer un fichier /opt/usb-auth.sh avec le contenu suivant:\n#! / bin / bash\necho 0&gt; / sys / bus / usb / devices / usb1 / autorisé\necho 0&gt; / sys / bus / usb / devices / usb1 / registered_default\nSi plusieurs périphériques USB sont disponibles, ajoutez-les tous. Créer un fichier de service /etc/systemd/system/usb-auth.service avec le contenu suivant:\n[Unit]","Description = Désactiver l&#39;authentification USB\nDefaultDependencies = no","[Service]\nType = coup unique\nExecStart = / bin / bash /opt/usb-auth.sh","[Install]\nWantedBy = multi-user.target\nDéfinissez les autorisations, activez et démarrez le service:\n# chmod 0700 /opt/usb-auth.sh\n# systemctl enable usb-auth.service\n# systemctl start usb-auth.service\nSi nécessaire, désactivez la prise en charge du noyau pour USB via la configuration du chargeur de démarrage. Pour ce faire, ajoutez nousb à la ligne de noyau GRUB_CMDLINE_LINUX dans / etc / default / grub et générez le fichier de configuration Grub2:\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nNotez que la désactivation de toute la prise en charge du noyau pour USB causera probablement des problèmes pour les systèmes dotés de claviers USB, etc.\n2.4 Restreindre les programmes à partir de schémas d&#39;exécution dangereux\nConfigurer /etc/sysctl.conf avec ce qui suit:\n# Désactiver les core dumps","fs.suid_dumpable = 0","# Désactiver la fonctionnalité de débogage des requêtes système","kernel.sysrq = 0","# Restreindre l&#39;accès aux journaux du noyau","kernel.dmesg_restrict = 1","# Activer la protection ExecShield - non disponible sur CentOS 7","# kernel.exec-shield = 1","# Randomise l&#39;espace mémoire","kernel.randomize_va_space = 2","# Masquer les pointeurs du noyau","kernel.kptr_restrict = 2\nCharger les paramètres sysctl:\n# sysctp -p\n2.5 Set UMASK 027\nLes fichiers suivants nécessitent le renforcement de umask: / etc / bashrc, /etc/csh.cshrc, /etc/init.d/functions et / etc / profile.\nSed one-liner:\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / bashrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/csh.cshrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / profile\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/init.d/functions\n2.6 Désactiver les core dumps\nOuvrir /etc/security/limits.conf et définissez les éléments suivants:\n* noyau dur 0\n2.7 Fixer des limites de sécurité pour empêcher les dénis de service\nAjouter ce qui suit à /etc/security/limits.conf pour appliquer des limites de sécurité sensibles:\n# 4096 est un bon point de départ","* nofile souple 4096\n* nofile dur 65536\n* soft nproc 4096\n* dur nproc 4096\n* Soft Locks 4096\n* serrures dures 4096\n* pile souple 10240\n* pile dure 32768\n* Soft Memlock 64\n* memlock difficile 64\n* maxlogins durs 10","# Soft limite 32 Go, 64 Go dur","* taille douce 33554432\n* taille dure 67108864","# Limites pour root","racine molle nofile 4096\nracine dure nofile 65536\nracine douce nproc 4096\nracine dure nproc 4096\npile logicielle racine 10240\nracine dure pile 32768\nracine molle fsize 33554432\n2.8 Vérifier les autorisations des fichiers\nAssurez-vous que tous les fichiers appartiennent à un utilisateur:\n# find / -ignore_readdir_race -nouser -print -exec racine chown  ;\nAssurez-vous que tous les fichiers appartiennent à un groupe:\n# find / -ignore_readdir_race -nogroup -print -exec chgrp root  ;\nSi nécessaire, un chemin spécifique peut être exclu de la recherche, par exemple:\n# find / -ignore_readdir_race -not -path &quot;/ proc / *&quot; -nouser -print -exec chown root  ;\nAutomatiser le processus en créant un fichier cron /etc/cron.daily/unowned_files avec le contenu suivant:\n#! / bin / bash\nfind / -ignore_readdir_race  (-nouser -print -exec chown root  ; ),  (-nogroup -print -exec chgrp root  ; )\nDéfinir la propriété et les autorisations:\n# racine chown: root /etc/cron.daily/unowned_files\n# chmod 0700 /etc/cron.daily/unowned_files\n2.9 Surveiller les fichiers SUID / GUID\nRecherchez les fichiers setuid / setgid et identifiez-les si tous sont requis:\n# find / -xdev -type f -perm -4000 -o -perm -2000\n3. Paramètres système &#8211; Configuration du pare-feu et du réseau\n3.1 Pare-feu\nSi vous définissez la zone de pare-feu par défaut à supprimer, tous les paquets qui ne sont pas explicitement autorisés à être rejetés.\n# sed -i &quot;s / DefaultZone =. * / DefaultZone = déposer / g&quot; /etc/firewalld/firewalld.conf\nSauf si firewalld est requis, masquez-le et remplacez-le par iptables:\n# systemctl stop firewalld.service\n# systemctl mask firewalld.service\n# systemctl daemon-reload\n# miam installe iptables-services\n# systemctl enable iptables.service ip6tables.service\nAjouter ce qui suit à / etc / sysconfig / iptables pour n&#39;autoriser que le trafic sortant minimal (DNS, NTP, HTTP / S et SMTPS):\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PASSEMENT ACCEPTER\n-P FORWARD DROP\n-P OUTPUT ACCEPT\n-A INPUT -i lo -m commentaire - commentaire local -j ACCEPTER\n-A INPUT -d 127.0.0.0/8! -i lo -j REJECT - rejette-avec icmp-port-inaccessible\n-A INPUT -m conntrack --ctstate CONNEXE, ÉTABLI -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 10.0.0.0/8 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 172.16.0.0/12 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 192.168.0.0/16 -j ACCEPT\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 22 -j ACCEPTER\n-Une entrée -j DROP\n-A SORTIE -d 127.0.0.0/8 -o lo -m commentaire - commentaire local -j ACCEPTER\n-A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT\n-A SORTIE -p icmp -m icmp --icmp-type quelconque -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU --dport 53 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 53 -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU - rapport 123 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 80 -j ACCEPT\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 443 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 587 -j ACCEPTER\n-A SORTIE -j LOG - préfixe-journal &quot;iptables_output&quot;\n-A SORTIE -j REJET - rejette-avec icmp-port-inaccessible\nCOMMETTRE\nNotez que la règle autorisant tout le trafic SSH entrant doit être supprimée, limitant l&#39;accès à une liste blanche IP uniquement ou masquant SSH derrière un VPN.\nIdéalement, les règles sortantes devraient être renforcées en limitant l&#39;accès aux serveurs DNS, NTP et SMTP locaux uniquement. Si un système de correctif local est utilisé (par exemple, Red Hat Satellite), le trafic HTTP / S peut également être renforcé, en fonction de la configuration.\nAjouter ce qui suit à / etc / sysconfig / ip6tables refuser tout IPv6:\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PUT ENTREE DROP\n-P FORWARD DROP\n-P SORTIE DROP\nCOMMETTRE\nAppliquer les configurations:\n# iptables-restore &lt;/ etc / sysconfig / iptables\n# ip6tables-restore &lt;/ etc / sysconfig / ip6tables\n3.2 TCP Wrappers\nOuvrir /etc/hosts.allow et autoriser le trafic localhost et SSH:\nTOUS: 127.0.0.1\nsshd: ALL\nLe fichier /etc/hosts.deny devrait être configuré pour tout refuser par défaut:\nTOUS: TOUS\n3.3 Paramètres du noyau qui affectent la mise en réseau\nOuvrir /etc/sysctl.conf et ajoutez ce qui suit:\n# Désactiver le transfert de paquets","net.ipv4.ip_forward = 0","# Désactive les redirections, pas un routeur","net.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.all.secure_redirects = 0\nnet.ipv4.conf.default.secure_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0","# Désactiver le routage source","net.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0","# Activer la validation de la source par chemin inversé","net.ipv4.conf.all.rp_filter = 1\nnet.ipv4.conf.default.rp_filter = 1","# Journalise les paquets avec des adresses impossibles dans le journal du noyau","net.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1","# Désactiver les diffusions ICMP","net.ipv4.icmp_echo_ignore_broadcasts = 1","# Ignorer les erreurs fictives ICMP","net.ipv4.icmp_ignore_bogus_error_responses = 1","# Contre les attaques par inondation SYN","net.ipv4.tcp_syncookies = 1","# La désactivation des horodatages peut améliorer la sécurité mais dégrader les performances.\n# Les horodatages TCP sont utilisés pour améliorer les performances et se protéger contre\n# Les paquets en retard perturbent votre flux de données. Un effet secondaire de cette fonctionnalité est\n# que le temps de disponibilité de l&#39;hôte peut parfois être calculé.\n# Si vous désactivez les horodatages TCP, vous devriez vous attendre à de moins bonnes performances.\n# et des connexions moins fiables.","net.ipv4.tcp_timestamps = 1","# Désactiver IPv6 sauf si requis","net.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1","# Ne pas accepter les annonces de routeur","net.ipv6.conf.all.accept_ra = 0\nnet.ipv6.conf.default.accept_ra = 0\n3.4 Modules de noyau qui affectent la mise en réseau\nOuvrir /etc/modprobe.d/hardening.conf et désactivez les modules du noyau Bluetooth:\ninstaller bnep / bin / true\ninstaller bluetooth / bin / true\ninstaller btusb / bin / true\ninstaller net-pf-31 / bin / true\nDésactivez également AppleTalk:\ninstaller appletalk / bin / true\nSi nécessaire, désactivez la prise en charge d&#39;IPv6:\noptions ipv6 désactiver = 1\nDésactiver les protocoles (rares):\ninstaller dccp / bin / true\ninstallez sctp / bin / true\ninstaller rds / bin / true\ninstaller tipc / bin / true\nPuisque nous examinons la sécurité des serveurs, le sans fil ne devrait pas être un problème, nous pouvons donc désactiver tous les pilotes sans fil.\n# pour i dans $ (trouver / lib / modules / $ (uname -r) / kernel / drivers / net / wireless -name &quot;* .ko&quot; -type f);\n  echo blacklist &quot;$ i&quot; &gt;&gt; / etc / modprobe.d / hardening-wireless.conf; done\n3.5 Désactiver les radios\nDésactiver les radios (wifi et wwan):\n# nmcli radio tout est éteint\n3.6 Désactiver le réseau Zeroconf\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNOZEROCONF = oui\n3.7 Désactiver l&#39;utilisation de l&#39;interface IPv6 par l&#39;interface\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNETWORKING_IPV6 = no\nIPV6INIT = no\n3.8 renifleur de réseau\nLe serveur ne doit pas agir comme un renifleur réseau et une capture de packages. Exécutez ce qui suit pour déterminer si une interface est en cours d&#39;exécution en mode promiscuous:\n# lien ip | grep PROMISC\n3.9 Connexion VPN sécurisée\nInstallez le paquet libreswan si la mise en oeuvre de IPSec et IKE est requise.\n# miam installer libreswan\n3.10 Désactiver le client DHCP\nL&#39;attribution manuelle d&#39;adresses IP offre un degré de gestion supérieur.\nPour chaque interface réseau disponible sur le serveur, ouvrez un fichier correspondant. / etc / sysconfig / network-scripts / ifcfg-interface    et configurez les paramètres suivants:\nBOOTPROTO = aucun\nIPADDR =\nNETMASK =\nPASSERELLE =\n4. Paramètres système &#8211; SELinux\nAssurez-vous que SELinux n&#39;est pas désactivé dans / etc / default / grubet vérifiez que l&#39;état applique:\n# sestatus\n5. Paramètres système &#8211; Contrôle de compte et d&#39;accès\n5.1 Supprimer les comptes et les groupes inutilisés\nSupprimez tout compte non requis, par exemple:\n# userdel -r adm\n# userdel -r ftp\n# userdel -r jeux\n# userdel -r lp\nSupprimer tout groupe non requis, par exemple:\n# jeux groupdel\n5.2 Désactiver la connexion root directe\n# echo&gt; / etc / securetty\n5.3 Activer la stratégie de mot de passe sécurisé (haute qualité)\nNotez que lancer authconfig va écraser les fichiers de configuration PAM détruisant les modifications apportées manuellement. Assurez-vous que vous avez un sauvegarde.\nLes règles de stratégie de mot de passe sécurisé sont décrites ci-dessous.","Longueur minimale du mot de passe &#8211; 16.\nNombre minimum de classes de caractères dans un mot de passe &#8211; 4.\nNombre maximum de mêmes caractères consécutifs dans un mot de passe &#8211; 2.\nNombre maximal de caractères consécutifs de la même classe dans un mot de passe &#8211; 2.\nExigez au moins une lettre minuscule et une lettre majuscule dans un mot de passe.\nExiger au moins un chiffre dans un mot de passe.\nExiger au moins un autre caractère dans un mot de passe.","La commande suivante activera SHA512 et définira les exigences de mot de passe ci-dessus:\n# authconfig --passalgo = sha512 \n --passminlen = 16 \n --passminclass = 4 \n --passmaxrepeat = 2 \n --passmaxclassrepeat = 2 \n --enablereqlower \n --enablerequpper \n --enablereqdigit \n --enablereqother \n --mettre à jour\nOuvrir /etc/security/pwquality.conf et ajoutez ce qui suit:\ndifok = 8\ngecoscheck = 1\nCela garantira que 8 caractères du nouveau mot de passe ne seront pas présents dans l&#39;ancien mot de passe et vérifiera les mots de la chaîne GECOS de mot de passe de l&#39;utilisateur.\n5.4 Empêcher la connexion à des comptes avec un mot de passe vide\nSupprimer toutes les occurrences de nullok de /etc/pam.d/system-auth et /etc/pam.d/password-auth pour empêcher les connexions avec des mots de passe vides.\nSed one-liner:\n# sed -i&#39;s / // g &#39;/etc/pam.d/system-auth /etc/pam.d/system-auth-ac\n# sed -i&#39;s / // g &#39;/etc/pam.d/password-auth /etc/pam.d/password-auth-ac\n5.5 Définir l&#39;expiration du compte après l&#39;inactivité\nDésactivez les comptes dès que le mot de passe a expiré.\nOuvrir / etc / default / useradd et définissez les éléments suivants:\nINACTIF = 0\nSed one-liner:\n# sed -i &#39;s / ^ INACTIVE. * / INACTIF = 0 /&#39; / etc / default / useradd\n5.6 Politique de mot de passe sécurisé\nOuvrir /etc/login.defs et définissez les éléments suivants:\nPASS_MAX_DAYS 60\nPASS_MIN_DAYS 1\nPASS_MIN_LEN 14\nPASS_WARN_AGE 14\nSed one-liner:\n# sed -i -e &#39;/ ^ PASS_MAX_DAYS. * / PASS_MAX_DAYS 60 /&#39; \n  -e &#39;s / ^ PASS_MIN_DAYS. * / PASS_MIN_DAYS 1 /&#39; \n  -e &#39;s / ^ PASS_MIN_LEN. * / PASS_MIN_LEN 14 /&#39; \n  -e &#39;s / ^ PASS_WARN_AGE. * / PASS_WARN_AGE 14 /&#39; /etc/login.defs\n5.7 Journal des tentatives de connexion infructueuses\nOuvrir /etc/login.defs et activer la journalisation:\nFAILLOG_ENAB oui\nAjoutez également un délai en secondes avant de pouvoir effectuer une autre tentative après un échec de connexion:\nFAIL_DELAY 4\n5.8 S&#39;assurer que les répertoires de base sont créés pour les nouveaux utilisateurs\nOuvrir /etc/login.defs et configurer:\nCREATE_HOME oui\n5.9 Vérifier que tous les mots de passe du compte sont masqués\nLa commande ci-dessous devrait renvoyer «x»:\n# cut -d: -f2 / etc / passwd | uniq\n5.10 Définir le délai de refus et de verrouillage pour les tentatives de mot de passe infructueuses\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nAjoutez la ligne suivante immédiatement après le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le COMPTE section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\ncompte requis pam_faillock.so\nLe contenu du fichier /etc/pam.d/system-auth peut être vu ci-dessous.\n#% PAM-1.0","auth requis pam_env.so\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nautorisation suffisante pam_unix.so try_first_pass\nauth        [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nautorisation requise pam_succeed_if.so uid&gt; = 1000 quiet_success\nauth requis pam_deny.so","compte requis pam_faillock.so\ncompte requis pam_unix.so\ncompte suffisant pam_localuser.so\ncompte suffisant pam_succeed_if.so uid &lt;1000 silencieux\ncompte requis pam_permit.so","mot de passe requis pam_pwquality.so try_first_pass local_users_only retry = 3 authtok_type =\nmot de passe suffisant pam_unix.so sha512 shadow try_first_pass use_authtok rappelez-vous = 5\nmot de passe requis pam_deny.so","session facultative pam_keyinit.so révoquer\nsession requise pam_limits.so\n-session optionnel pam_systemd.so\nsession     [success=1 default=ignore] pam_succeed_if.so service dans crond quiet use_uid\nsession requise pam_unix.so\nDe plus, n&#39;autorisez pas les utilisateurs à réutiliser des mots de passe récents en ajoutant le rappelles toi option.\nFaire /etc/pam.d/system-auth et /etc/pam.d/password-auth configurations immuables pour qu’elles ne soient pas écrasées lors de l’exécution d’authconfig:\n# chattr + i /etc/pam.d/system-auth /etc/pam.d/password-auth\nLes comptes seront verrouillés après 3 tentatives de connexion infructueuses:\ns&#39;identifier[]: pam_faillock (login: auth): échecs de connexion consécutifs pour le compte utilisateur tomas temporairement bloqué \nUtilisez ce qui suit pour effacer le nombre d’échecs de l’utilisateur:\n# faillock --user tomas --reset\n5.11 Définir le mot de passe du chargeur d&#39;amorçage\nEmpêcher les utilisateurs d’entrer dans la ligne de commande grub et d’éditer les entrées du menu:\n# grub2-setpassword\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nCela va créer le fichier /boot/grub2/user.cfg s&#39;il n&#39;y en a pas déjà un, qui contiendra le mot de passe haché du chargeur de démarrage Grub2.\nVérifier les autorisations de /boot/grub2/grub.cfg:\n# chmod 0600 /boot/grub2/grub.cfg\n5.12 Mode utilisateur unique protégé par mot de passe\nLe mode utilisateur unique CentOS 7 est protégé par mot de passe par le mot de passe root par défaut dans le cadre de la conception de Grub2 et de systemd.\n5.13 Assurer que les utilisateurs s&#39;authentifient de nouveau pour l&#39;escalade des privilèges\nLa balise NOPASSWD permet à un utilisateur d’exécuter des commandes à l’aide de sudo sans devoir fournir de mot de passe. Bien que cela puisse parfois être utile, il est également dangereux.\nAssurez-vous que la balise NOPASSWD n’existe pas dans / etc / sudoers fichier de configuration ou /etc/sudoers.d/.\n5.14 Écrans multiples de la console et verrouillage de la console\nInstallez le package d&#39;écran pour pouvoir émuler plusieurs fenêtres de console:\n# yum install screen\nInstallez le paquet vlock pour activer le verrouillage de l’écran de la console:\n# miam installer vlock\n5.15 Désactiver l&#39;activation de redémarrage Ctrl-Alt-Suppr\nEmpêcher un utilisateur de la console connecté localement de redémarrer le système lorsque vous appuyez sur Ctrl-Alt-Suppr:\n# systemctl mask ctrl-alt-del.target\n5.16 Bannières d&#39;avertissement pour l&#39;accès au système\nAjouter la ligne suivante aux fichiers / etc / issue et /etc/issue.net:\nAccès non autorisé interdit. Les journaux sont enregistrés et surveillés.\n5.17 Définir le délai d&#39;expiration de la session interactive\nOuvrir / etc / profile Et mettre:\nen lecture seule TMOUT = 900\n5.18 Authentification à deux facteurs\nLa version récente du serveur OpenSSH permet de chaîner plusieurs méthodes d&#39;authentification, ce qui signifie qu&#39;elles doivent toutes être satisfaites pour qu&#39;un utilisateur puisse se connecter avec succès.\nAjout de la ligne suivante à / etc / ssh / sshd_config nécessiterait que l&#39;utilisateur s&#39;authentifie d&#39;abord avec une clé, puis fournisse également un mot de passe.\nAuthenticationMethods publickey, mot de passe\nIl s’agit par définition d’une authentification à deux facteurs: le fichier de clé est une propriété de l’utilisateur et le mot de passe du compte est connu de l’utilisateur.\nL&#39;authentification à deux facteurs pour SSH peut également être configurée à l&#39;aide de Google Authenticator.\n5.19 Configurer la taille du fichier d&#39;historique\nOuvrir / etc / profile et définissez le nombre de commandes à mémoriser dans l&#39;historique des commandes à 5000:\nHISTSIZE = 5000\nSed one-liner:\n# sed -i&#39;s / HISTSIZE =. * / HISTSIZE = 5000 / g &#39;/ etc / profile\n6. Paramètres système &#8211; Comptabilité système avec auditd\n6.1 Configuration auditée\nOuvrir /etc/audit/auditd.conf et configurez les éléments suivants:\nlocal_events = yes\nwrite_logs = yes\nlog_file = /var/log/audit/audit.log\nmax_log_file = 25\nnum_logs = 10\nmax_log_file_action = rotation\nspace_left = 30\nspace_left_action = email\nadmin_space_left = 10\nadmin_space_left_action = email\ndisk_full_action = suspendre\ndisk_error_action = suspendre\naction_mail_acct = [email protected]\nflush = data\nLa configuration auditd ci-dessus ne doit jamais utiliser plus de 250 Mo d’espace disque (10 x 25 Mo = 250 Mo) sur / var / log / audit.\nEnsemble admin_space_left_action = single si vous souhaitez que le système passe en mode utilisateur unique pour une action corrective plutôt que d&#39;envoyer un courrier électronique.\nRotation automatique des bûches (max_log_file_action = rotation) minimise les chances que le système manque d’espace disque de manière inattendue en étant rempli de données de journal.\nNous devons nous assurer que les données d’événement d’audit sont entièrement synchronisées (flush = data) avec les fichiers de log sur le disque.\n6.2 Règles d&#39;audit\nLes règles d&#39;audit système doivent avoir le mode 0640 ou moins permissif et appartenir à l&#39;utilisateur root:\n# racine chown: root /etc/audit/rules.d/audit.rules\n# chmod 0640 /etc/audit/rules.d/audit.rules\nOuvrir /etc/audit/rules.d/audit.rules et ajoutez ce qui suit:\n# Supprimer toutes les règles actuellement chargées","-RÉ","# Définir la taille de la mémoire tampon du noyau","-b 8192","# Définit l&#39;action à effectuer lorsqu&#39;une erreur critique est détectée.\n# Modes d&#39;échec: 0 = silencieux 1 = printk 2 = panique","-f 1","# Record tente de modifier le fichier localtime","-w / etc / localtime -p wa -k audit_time_rules","# Enregistrer des événements qui modifient les informations utilisateur / groupe","-w / etc / group -p wa -k audit_rules_usergroup_modification\n-w / etc / passwd -p wa -k audit_rules_usergroup_modification\n-w / etc / gshadow -p wa -k audit_rules_usergroup_modification\n-w / etc / shadow -p wa -k audit_rules_usergroup_modification\n-w / etc / security / opasswd -p wa -k audit_rules_usergroup_modification","# Enregistrer des événements qui modifient l&#39;environnement réseau du système","-w /etc/issue.net -p wa -k audit_rules_networkconfig_modification\n-w / etc / issue -p wa -k audit_rules_networkconfig_modification\n-w / etc / hosts -p wa -k audit_rules_networkconfig_modification\n-w / etc / sysconfig / network -p wa -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b32 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b64 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification","# Enregistrer des événements qui modifient les contrôles d&#39;accès obligatoires du système","-w / etc / selinux / -p wa -k MAC-policy","# Enregistrer les tentatives de modification des événements de connexion et de déconnexion","-w / var / log / tallylog -p wa -k connexions\n-w / var / log / lastlog -p wa -k connexions\n-w / var / run / faillock / -p wa -k connexions","# Enregistrer les tentatives de modification des informations de démarrage du processus et de la session","-w / var / log / btmp -p wa -k session\n-w / var / log / wtmp -p wa -k session\n-w / var / run / utmp -p wa -k session","# Assurez-audit auditd de collecter des informations sur le chargement et le déchargement des modules du noyau","-w / usr / sbin / insmod -p x -k modules\n-w / usr / sbin / modprobe -p x -k modules\n-w / usr / sbin / rmmod -p x -k modules\n-a toujours, quittez -F arch = b64 -S init_module -S delete_module -k modules","# S&#39;assurer que auditd collecte les actions de l&#39;administrateur système","-w / etc / sudoers -p wa -k actions\n-w /etc/sudoers.d/ -p wa -k actions","# Enregistrez les tentatives de modification du temps avec adjtimex","-a toujours, quittez -F arch = b32 -S adjtimex -S settimeofday -S temps -k audit_time_rules","# Record tentatives de changer le temps par settimeofday","-a toujours, quittez -F arch = b64 -S adjtimex -S settimeofday -k audit_time_rules","# Enregistrez les tentatives de modification de l&#39;heure via clock_settime","-a toujours, quitte -F arch = b32 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure","# Enregistrez les tentatives de modification de l&#39;heure via clock_settime","-a toujours, quitte -F arch = b64 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure","# Enregistrer des événements qui modifient les contrôles d&#39;accès discrétionnaires du système","-a toujours, quittez -F arch = b32 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod","# S&#39;assurer que auditd collecte les tentatives d&#39;accès non autorisé aux fichiers (non réussi)","-a toujours, quittez -F arch = b32 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b32 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès","# S&#39;assure que auditd collecte des informations sur l&#39;exportation vers le support (avec succès)","-a toujours, quittez -F arch = b32 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\n-a toujours, quittez -F arch = b64 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export","# S&#39;assure que auditd collecte les événements de suppression de fichier par utilisateur","-a toujours, quittez -F arch = b32 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\n-a toujours, quittez -F arch = b64 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer","# Assurez-audit auditd de collecter des informations sur l&#39;utilisation de commandes privilégiées","-a toujours, sortie -F chemin = / usr / bin / chage -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / chcon -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privileged-priv_change\n-a toujours, quitte -F chemin = / usr / bin / chfn -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / chsh -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / crontab -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / gpasswd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / newgrp -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / passwd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / pkexec -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / screen -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quittez -f chemin = / usr / bin / ssh-agent -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / sudo -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / sudoedit -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privilégié\n-a toujours, quitter -F chemin = / usr / bin / su -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / umount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mur -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / écriture -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a always,exit -F path=/usr/lib64/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/restorecon -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged","# Make the auditd configuration immutable.\n# The configuration can only be changed by rebooting the machine.","-e 2\nThe auditd service does not include the ability to send audit records to a centralised server for management directly.\nIt does, however, include a plug-in for audit event multiplexor to pass audit records to the local syslog server.\nTo do so, open the file /etc/audisp/plugins.d/syslog.conf and set:\nactive = yes\nEnable and start the service:\n# systemctl enable auditd.service\n# systemctl start auditd.service\n6.3. Enable Kernel Auditing\nOuvrir /etc/default/grub and append the following parameter to the kernel boot line GRUB_CMDLINE_LINUX:\naudit=1\nUpdate Grub2 configuration to reflect changes:\n# grub2-mkconfig -o /boot/grub2/grub.cfg\n7. System Settings – Software Integrity Checking\n7.1 Advanced Intrusion Detection Environment (AIDE)\nInstall AIDE:\n# yum install aide\nBuild AIDE database:\n# /usr/sbin/aide --init\nBy default, the database will be written to the file /var/lib/aide/aide.db.new.gz.\n# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\nStoring the database and the configuration file /etc/aide.conf (or SHA2 hashes of the files) in a secure location provides additional assurance about their integrity.\nCheck AIDE database:\n# /usr/sbin/aide --check\nBy default, AIDE does not install itself for periodic execution. Configure periodic execution of AIDE by adding to cron:\n# echo &quot;30 4 * * * root /usr/sbin/aide --check|mail -s &#39;AIDE&#39; [email protected]&quot; &gt;&gt; /etc/crontab\nPeriodically running AIDE is necessary in order to reveal system changes.\n7.2 Tripwire\nOpen Source Tripwire is an alternative to AIDE. It is recommended to use one or another, but not both.\nInstall Tripwire from the EPEL repository:\n# yum install epel-release\n# yum install tripwire\n# /usr/sbin/tripwire-setup-keyfiles\nThe Tripwire configuration file is /etc/tripwire/twcfg.txt and the policy file is /etc/tripwire/twpol.txt. These can be edited and configured to match the system Tripwire is installed on, see this blog post for more details.\nInitialise the database to implement the policy:\n# tripwire --init\nCheck for policy violations:\n# tripwire --check\nTripwire adds itself to /etc/cron.daily/ for daily execution therefore no extra configuration is required.\n7.3 Prelink\nPrelinking is done by the prelink package, which is not installed by default.\n# yum install prelink\nTo disable prelinking, open the file /etc/sysconfig/prelink and set the following:\nPRELINKING=no\nSed one-liner:\n# sed -i &#39;s/PRELINKING.*/PRELINKING=no/g&#39; /etc/sysconfig/prelink\nDisable existing prelinking on all system files:\n# prelink -ua\n8. System Settings – Logging and Message Forwarding\n8.1 Configure Persistent Journald Storage\nBy default, journal stores log files only in memory or a small ring-buffer in the directory /run/log/journal. This is sufficient to show recent log history with journalctl, but logs aren’t saved permanently. Enabling persistent journal storage ensures that comprehensive data is available after system reboot.\nOpen the file /etc/systemd/journald.conf and put the following:\n[Journal]","Storage=persistent","# How much disk space the journal may use up at most","SystemMaxUse=256M","# How much disk space systemd-journald shall leave free for other uses","SystemKeepFree=512M","# How large individual journal files may grow at most","SystemMaxFileSize=32M\nRestart the service:\n# systemctl daemon-reload\n# systemctl restart systemd-journald\n8.2 Configure Message Forwarding to Remote Server\nDepending on your setup, open /etc/rsyslog.conf and add the following to forward messages to a some remote server:\n*.* @graylog.example.com:514\nIci *.* représente facility.severity. Note that a single @ sends logs over UDP, where a double @ sends logs using TCP.\n8.3 Logwatch\nLogwatch is a customisable log-monitoring system.\n# yum install logwatch\nLogwatch adds itself to /etc/cron.daily/ for daily execution therefore no configuration is mandatory.\n9. System Settings – Security Software\n9.1 Malware Scanners\nInstall Rkhunter and ClamAV:\n# yum install epel-release\n# yum install rkhunter clamav clamav-update\n# rkhunter --update\n# rkhunter --propupd\n# freshclam -v\nRkhunter adds itself to /etc/cron.daily/ for daily execution therefore no configuration is required. ClamAV scans should be tailored to individual needs.\n9.2 Arpwatch\nArpwatch is a tool used to monitor ARP activity of a local network (ARP spoofing detection), therefore it is unlikely one will use it in the cloud, however, it is still worth mentioning that the tools exist.\nBe aware of the configuration file /etc/sysconfig/arpwatch which you use to set the email address where to send the reports.\n9.3 Commercial AV\nConsider installing a commercial AV product that provides real-time on-access scanning capabilities.\n9.4 Grsecurity\nGrsecurity is an extensive security enhancement to the Linux kernel. Although it isn’t free nowadays, the software is still worth mentioning.\nThe company behind Grsecurity stopped publicly distributing stable patches back in 2015, with an exception of the test series continuing to be available to the public in order to avoid impact to the Gentoo Hardened and Arch Linux communities.\nTwo years later, the company decided to cease free distribution of the test patches as well, therefore as of 2017, Grsecurity software is available to paying customers only.\n10. System Settings – OS Update Installation\nInstall the package yum-utils for better consistency checking of the package database.\n# yum install yum-utils\nConfigure automatic package updates via yum-cron.\n# yum install yum-cron\nAdd the following to /etc/yum/yum-cron.conf to get notified via email when new updates are available:\nupdate_cmd = default\nupdate_messages = yes\ndownload_updates = no\t\napply_updates = no\nemit_via = email\t\nemail_from = [email protected]\nemail_to = [email protected]\nemail_host = localhost\nAdd the following to /etc/yum/yum-cron-hourly.conf to check for bugfix-related updates every hour and automatically download and install them:\nupdate_cmd = minimal # yum --bugfix update-minimal","update_messages = yes\ndownload_updates = yes\napply_updates = yes\nemit_via = stdio\nRemarque: security information is provided by RedHat only. When you query a repository that is provided by CentOS it does not supply security metadata (however the EPEL repository does have security metadata).\nTherefore if you decide to use update_cmd = security, yum will always tell you that nothing from CentOS needs a security update.\nEnable and start the service:\n# systemctl enable yum-cron.service\n# systemctl start yum-cron.service\n11. System Settings – Process Accounting\nThe package psacct contain utilities for monitoring process activities:","ac – displays statistics about how long users have been logged on.\nlastcomm – displays information about previously executed commands.\naccton – turns process accounting on or off.\nsa – summarises information about previously executed commands.","Install and enable the service:\n# yum install psacct\n# systemctl enable psacct.service\n# systemctl start psacct.service\n1. Services – SSH Server\nCreate a group for SSH access as well as some regular user account who will be a member of the group:\n# groupadd ssh-users\n# useradd -m -s /bin/bash -G ssh-users tomas\nGenerate SSH keys for the user:\n# su - tomas\n$ mkdir --mode=0700 ~/.ssh\n$ ssh-keygen -b 4096 -t rsa -C &quot;tomas&quot; -f ~/.ssh/id_rsa\nGenerate SSH host keys:\n# ssh-keygen -b 4096 -t rsa -N &quot;&quot; -f /etc/ssh/ssh_host_rsa_key\n# ssh-keygen -b 1024 -t dsa -N &quot;&quot; -f /etc/ssh/ssh_host_dsa_key\n# ssh-keygen -b 521 -t ecdsa -N &quot;&quot; -f /etc/ssh/ssh_host_ecdsa_key\n# ssh-keygen -t ed25519 -N &quot;&quot; -f /etc/ssh/ssh_host_ed25519_key\nPour RSA keys, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.\nPour ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. ED25519 keys have a fixed length and the -b flag is ignored.\nThe host can be impersonated if an unauthorised user obtains the private SSH host key file, therefore ensure that permissions of /etc/ssh/*_key are properly set:\n# chmod 0600 /etc/ssh/*_key\nConfigurer /etc/ssh/sshd_config with the following:\n# SSH port.","Port 22","# Listen on IPv4 only.","ListenAddress 0.0.0.0","# Protocol version 1 has been exposed.","Protocol 2","#\n# OpenSSH cipher-related release notes.\n# OpenSSH 6.2: added support for AES-GCM authenticated encryption. \n# The cipher is available as [email protected] et [email protected]\n# OpenSSH 6.5: added new cipher [email protected]\n# OpenSSH 6.7: removed unsafe algorithms. CBC ciphers are disabled by default:\n# aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc.\n# OpenSSH 6.9: promoted [email protected] to be the default cipher.\n#","Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr","#\n# OpenSSH 6.2: added support for the UMAC-128 MAC as [email protected] \n# and [email protected] The latter being an encrypt-then-mac mode.\n# Do not use umac-64 or umac-64-etm because of a small 64 bit tag size.\n# Do not use any SHA1 (e.g. hmac-sha1, [email protected]) MACs \n# because of a weak hashing algorithm. \n# Do not use hmac-sha2-256, hmac-sha2-512 or [email protected] \n# because of an encrypt-and-MAC mode. See the link below:\n# https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac\n#","MACs [email protected],[email protected],[email protected]","#\n# OpenSSH 6.5: added support for ssh-ed25519. It offers better security \n# than ECDSA and DSA.\n# OpenSSH 7.0: disabled support for ssh-dss. \n# OpenSSH 7.2: added support for rsa-sha2-512 and rsa-sha2-256.\n#","HostKeyAlgorithms ssh-ed25519,[email protected],ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,[email protected],[email protected],[email protected],[email protected],[email protected]","#\n# OpenSSH 6.5: added support for key exchange using elliptic-curve\n# Diffie Hellman in Daniel Bernstein&#39;s Curve25519.\n# OpenSSH 7.3: added support for diffie-hellman-group14-sha256,\n# diffie-hellman-group16-sha512 and diffie-hellman-group18-sha512.\n#","KexAlgorithms [email protected],diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256","# HostKeys for protocol version 2.","HostKey /etc/ssh/ssh_host_rsa_key\nHostKey /etc/ssh/ssh_host_ed25519_key","# Disabled because uses a small 1024 bit key.","#HostKey /etc/ssh/ssh_host_dsa_key","# Disabled because uses weak elliptic curves.\n# See: https://safecurves.cr.yp.to/","#HostKey /etc/ssh/ssh_host_ecdsa_key","# INFO is a basic logging level that will capture user login/logout activity.\n# DEBUG logging level is not recommended for production servers.","LogLevel INFO","# Disconnect if no successful login is made in 60 seconds.","LoginGraceTime 60","# Do not permit root logins via SSH.","PermitRootLogin no","# Check file modes and ownership of the user&#39;s files before login.","StrictModes yes","# Close TCP socket after 2 invalid login attempts.","MaxAuthTries 2","# The maximum number of sessions per network connection.","MaxSessions 3","# User/group permissions.","AllowUsers\nAllowGroups ssh-users\nDenyUsers root\nDenyGroups root","# Password and public key authentications.","PasswordAuthentication no\nPermitEmptyPasswords no\nPubkeyAuthentication yes\nAuthorizedKeysFile  .ssh/authorized_keys","# Disable unused authentications mechanisms.","RSAAuthentication no # DEPRECATED","RhostsRSAAuthentication no # DEPRECATED","ChallengeResponseAuthentication no\nKerberosAuthentication no\nGSSAPIAuthentication no\nHostbasedAuthentication no\nIgnoreUserKnownHosts yes","# Disable insecure access via rhosts files.","IgnoreRhosts yes","AllowAgentForwarding no\nAllowTcpForwarding no","# Disable X Forwarding.","X11Forwarding no","# Disable message of the day but print last log.","PrintMotd no\nPrintLastLog yes","# Show banner.","Banner /etc/issue","# Do not send TCP keepalive messages.","TCPKeepAlive no","# Default for new installations.","UsePrivilegeSeparation sandbox","# Prevent users from potentially bypassing some access restrictions.","PermitUserEnvironment no","# Disable compression.","Compression no","# Disconnect the client if no activity has been detected for 900 seconds.","ClientAliveInterval 900\nClientAliveCountMax 0","# Do not look up the remote hostname.","UseDNS no","UsePAM yes\nYou can use the ssh-audit tool to test your SSH server configuration.\nIn case you want to change the default SSH port to something else, you will need to tell SELinux about it.\n# yum install policycoreutils-python\nFor example, to allow SSH server to listen on TCP 2222, do the following:\n# semanage port -a -t ssh_port_t 2222 -p tcp\nEnsure that the firewall allows incoming traffic on the new SSH port and restart the sshd service.\n2. Service – Network Time Protocol\nCentOS 7 should come with Chrony, make sure that the service is enabled:\n# systemctl enable chronyd.service\n3. Services – Mail Server\n3.1 Postfix\nPostfix should be installed and enabled already. In case it isn’t, the do the following:\n# yum install postfix\n# systemctl enable postfix.service\nOuvrir /etc/postfix/main.cf and configure the following to act as a null client:\nsmtpd_banner = $myhostname ESMTP\ninet_interfaces = loopback-only\ninet_protocols = ipv4\nmydestination =\nlocal_transport = error: local delivery disabled\nunknown_local_recipient_reject_code = 550\nmynetworks = 127.0.0.0/8\nrelayhost = [mail.example.com]:587\nOptionally (depending on your setup), you can configure Postfix to use authentication:\n# yum install cyrus-sasl-plain\nOuvrir /etc/postfix/main.cf and add the following:\nsmtp_sasl_auth_enable = yes\nsmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd\nsmtp_sasl_security_options = noanonymous\nsmtp_tls_CApath = /etc/ssl/certs\nsmtp_use_tls = yes\nOuvrir /etc/postfix/sasl_passwd and put authentication credentials in a format of:\n[mail.example.com]:587 [email protected]:password\nSet permissions and create a database file:\n# chmod 0600 /etc/postfix/sasl_passwd\n# postmap /etc/postfix/sasl_passwd\nRestart the service and ensure that firewall allows outgoing traffic to the SMTP relay server.\n3.2 Mail Distribution to Active Mail Accounts\nConfigure the file /etc/aliases to have a forward rule for the root user.\n4. Services – Remove Obsolete Services\nNone of these should be installed on CentOS 7 minimal:\n# yum remove xinetd telnet-server rsh-server \n  telnet rsh ypbind ypserv tfsp-server bind \n  vsfptd dovecot squid net-snmpd talk-server talk\nCheck all enabled services:\n# systemctl list-unit-files --type=service|grep enabled\nDisable kernel dump service:\n# systemctl disable kdump.service\n# systemctl mask kdump.service\nDisable everything that is not required, e.g.:\n# systemctl disable tuned.service\n5. Services – Restrict at and cron to Authorised Users\nSi le fichier cron.allow exists, then only users listed in the file are allowed to use cron, and the cron.deny file is ignored.\n# echo root &gt; /etc/cron.allow\n# echo root &gt; /etc/at.allow\n# rm -f /etc/at.deny /etc/cron.deny\nNote that the root user can always use cron, regardless of the usernames listed in the access control files.\n6. Services – Disable X Windows Startup\nThis can be achieved by setting a default target:\n# systemctl set-default multi-user.target\n7. Services – Fail2ban\nInstall Fail2ban from the EPEL repository:\n# yum install epel-release\n# yum install fail2ban\nIf using iptables rather than firewalld, open the file /etc/fail2ban/jail.d/00-firewalld.conf and comment out the following line:\n#banaction = firewallcmd-ipset\nFail2Ban uses /etc/fail2ban/jail.conf. Configuration snippet for SSH is provided below:\n[sshd]","port    = ssh\nenabled = true\nignoreip = 10.8.8.61\nbantime  = 600\nmaxretry = 5\nIf you run SSH on a non-default port, you can change the port value to any positive integer and then enable the jail.\n# systemctl enable fail2ban.service\n# systemctl start fail2ban.service\n8. Services – Sysstat to Collect Performance Activity\nSysstat may provide useful insight into system usage and performance, however, unless used, the service should be disabled, or not installed at all.\n# yum install sysstat\n# systemctl enable sysstat.service\n# systemctl start sysstat.service\nRéférences\nOpenSCAP Security Guide\nNSA Guide to the Secure Configuration of Red Hat Enterprise Linux 5\nhttps://highon.coffee/blog/security-harden-centos-7/\nhttps://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/\nhttps://www.openssh.com/releasenotes.html\nSecure Secure Shell\nWhat is pam_faillock and how to use it in Red Hat Enterprise Linux\nRevision\nThis guide was last updated on 26/03/2018.","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. \nPour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.\nUne clause de non-responsabilité générale s&#39;applique: n&#39;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#39;elles font.\n1. Paramètres système &#8211; Partitionnement de disque et post-installation\n1.1 Cryptage de disque avec kickstart\nLe moyen le plus simple de chiffrer une partition est lors de l&#39;installation de Kickstart.\nCeci peut être réalisé en ajoutant le –Crypté et –Passphrase = options à la définition d&#39;un volume physique LVM.\nNotre modèle de Kickstart est fourni ci-dessous. Notez que le modèle nécessite un disque de 32 Go.\n# version = CentOS7.5","html":"<p>Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. \nPour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.\nUne clause de non-responsabilité générale s&#039;applique: n&#039;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#039;elles font.\n1. Paramètres système &#8211; Partitionnement de disque et post-installation\n1.1 Cryptage de disque avec kickstart\nLe moyen le plus simple de chiffrer une partition est lors de l&#039;installation de Kickstart.\nCeci peut être réalisé en ajoutant le –Crypté et –Passphrase = options à la définition d&#039;un volume physique LVM.\nNotre modèle de Kickstart est fourni ci-dessous. Notez que le modèle nécessite un disque de 32 Go.\n# version = CentOS7.5</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"# Informations d&#39;autorisation du système","html":"<p># Informations d&#039;autorisation du système</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"auth --enableshadow --passalgo = sha512\n# Utiliser le support d&#39;installation du CD-ROM","html":"<p>auth --enableshadow --passalgo = sha512\n# Utiliser le support d&#039;installation du CD-ROM</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"CD ROM","html":"<p>CD ROM</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"ignoredisk --only-use = sda","html":"<p>ignoredisk --only-use = sda</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"# Disposition du clavier","html":"<p># Disposition du clavier</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"clavier --vckeymap = gb --xlayouts = &#39;gb&#39;\n# Langue du système","html":"<p>clavier --vckeymap = gb --xlayouts = &#039;gb&#039;\n# Langue du système</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"lang en_GB.UTF-8\n# SELinux","html":"<p>lang en_GB.UTF-8\n# SELinux</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"selinux - en vigueur","html":"<p>selinux - en vigueur</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"# Informations sur le réseau","html":"<p># Informations sur le réseau</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"réseau --bootproto = dhcp --device = eth0 --onboot = on --activate\nréseau --hostname = ks-c7.example.com","html":"<p>réseau --bootproto = dhcp --device = eth0 --onboot = on --activate\nréseau --hostname = ks-c7.example.com</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"# Mot de passe root en clair: PleaseChangeMe","html":"<p># Mot de passe root en clair: PleaseChangeMe</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"rootpw --iscrypted $ 6 $ nS0mBJyS $ q / QgCof5unWrT9W3qngTISueSDhDHVNntDqd8sOcgmHp2lq4f / niUbjCmoEzaf3EWQ2x3z / k0eIZaOxkfNtJw\n# Fuseau horaire du système","html":"<p>rootpw --iscrypted $ 6 $ nS0mBJyS $ q / QgCof5unWrT9W3qngTISueSDhDHVNntDqd8sOcgmHp2lq4f / niUbjCmoEzaf3EWQ2x3z / k0eIZaOxkfNtJw\n# Fuseau horaire du système</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"fuseau horaire Europe / London --isUtc\n# Configuration du chargeur de démarrage du système","html":"<p>fuseau horaire Europe / London --isUtc\n# Configuration du chargeur de démarrage du système</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"chargeur de démarrage --location = mbr --boot-drive = sda --timeout = 3\n# Informations de nettoyage de partition","html":"<p>chargeur de démarrage --location = mbr --boot-drive = sda --timeout = 3\n# Informations de nettoyage de partition</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"clearpart --all --drives = sda\nzerombr","html":"<p>clearpart --all --drives = sda\nzerombr</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"# Informations de partitionnement de disque\n#\n# Votre disque doit faire 32 Go: 1 Go pour / boot et 30 Go pour le volume physique.\n#\n# Journal pour le démarrage n&#39;est pas nécessaire donc ext2","html":"<p># Informations de partitionnement de disque\n#\n# Votre disque doit faire 32 Go: 1 Go pour / boot et 30 Go pour le volume physique.\n#\n# Journal pour le démarrage n&#039;est pas nécessaire donc ext2</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"part / boot --fstype = &quot;ext2&quot; --ondisk = sda --size = 1024 --label = boot --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;","html":"<p>part / boot --fstype = &quot;ext2&quot; --ondisk = sda --size = 1024 --label = boot --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"# La ligne ci-dessous créera un volume physique de 30 Go","html":"<p># La ligne ci-dessous créera un volume physique de 30 Go</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"part pv.01 --fstype = &quot;lvmpv&quot; --ondisk = sda --size = 30720 --encrypted --passphrase = PleaseChangeMeToSomethingElse\nvolgroup vg_crypto pv.01","html":"<p>part pv.01 --fstype = &quot;lvmpv&quot; --ondisk = sda --size = 30720 --encrypted --passphrase = PleaseChangeMeToSomethingElse\nvolgroup vg_crypto pv.01</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"# Besoin de pouvoir réduire les systèmes de fichiers donc ext4 sur xfs par défaut","html":"<p># Besoin de pouvoir réduire les systèmes de fichiers donc ext4 sur xfs par défaut</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"logvol / --fstype = &quot;ext4&quot; --size = 6144 --vgname = vg_crypto --name = lv_root --mkfsoptions = &quot;- m 1&quot;\nlogvol / home --fstype = &quot;ext4&quot; --size = 2048 --vgname = vg_crypto --name = lv_home --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\nlogvol / var --fstype = &quot;ext4&quot; --size = 4096 --vgname = vg_crypto --name = lv_var --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nosuid&quot;\nlogvol / var / log --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-log --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / log / audit --fstype = &quot;ext4&quot; --size = 512 --vgname = vg_crypto --name = lv_var-aud --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec , nosuid &quot;\nlogvol / var / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / www --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-www --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol swap --fstype = &quot;swap&quot; --size = 512 --vgname = vg_crypto --name = lv_swap --fsoptions = &quot;swap&quot;","html":"<p>logvol / --fstype = &quot;ext4&quot; --size = 6144 --vgname = vg_crypto --name = lv_root --mkfsoptions = &quot;- m 1&quot;\nlogvol / home --fstype = &quot;ext4&quot; --size = 2048 --vgname = vg_crypto --name = lv_home --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\nlogvol / var --fstype = &quot;ext4&quot; --size = 4096 --vgname = vg_crypto --name = lv_var --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nosuid&quot;\nlogvol / var / log --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-log --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / log / audit --fstype = &quot;ext4&quot; --size = 512 --vgname = vg_crypto --name = lv_var-aud --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec , nosuid &quot;\nlogvol / var / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / www --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-www --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol swap --fstype = &quot;swap&quot; --size = 512 --vgname = vg_crypto --name = lv_swap --fsoptions = &quot;swap&quot;</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"%paquets\n@coeur","html":"<p>%paquets\n@coeur</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"%fin\n1.2 Schéma de partitionnement\nGardez les partitions suivantes séparées: /démarrage, /maison, / tmp, / var, / var / log, / var / tmp, / var / log / audit, / var / www.\nLe fait de les placer dans leurs propres partitions donne plus de contrôle sur les options de montage. Cela garantit également que le système ne peut pas être arrêté en raison de l’espace disque insuffisant sur une partition.\nSe séparer /opter dépend d&#39;une configuration et n&#39;est généralement pas utile, mais non plus nuisible.\n1.3 Post-installation\nSauvegarder un en-tête LUKS, où / dev / sda2 est la partition chiffrée de LUKS:\n# cryptsetup luksHeaderBackup / dev / sda2 --header-backup-file /root/luks-header.backup\nAssurez-vous que le fichier de sauvegarde est stocké hors site, puis supprimé du serveur.\nAssurez-vous que le système est à jour:\n# miam mise à jour\nSupprimez les packages dont vous n’avez pas besoin sur un serveur, par exemple firmware des cartes son, firmware de WinTV, pilotes sans fil, etc.\n# yum remove alsa- * ivtv- * iwl * firmware aic94xx-firmware\n2. Paramètres système &#8211; Autorisations de fichiers et masques\n2.1 Limiter les options de montage de partition\nLes partitions doivent avoir des options de montage renforcées:","html":"<p>%fin\n1.2 Schéma de partitionnement\nGardez les partitions suivantes séparées: /démarrage, /maison, / tmp, / var, / var / log, / var / tmp, / var / log / audit, / var / www.\nLe fait de les placer dans leurs propres partitions donne plus de contrôle sur les options de montage. Cela garantit également que le système ne peut pas être arrêté en raison de l’espace disque insuffisant sur une partition.\nSe séparer /opter dépend d&#039;une configuration et n&#039;est généralement pas utile, mais non plus nuisible.\n1.3 Post-installation\nSauvegarder un en-tête LUKS, où / dev / sda2 est la partition chiffrée de LUKS:\n# cryptsetup luksHeaderBackup / dev / sda2 --header-backup-file /root/luks-header.backup\nAssurez-vous que le fichier de sauvegarde est stocké hors site, puis supprimé du serveur.\nAssurez-vous que le système est à jour:\n# miam mise à jour\nSupprimez les packages dont vous n’avez pas besoin sur un serveur, par exemple firmware des cartes son, firmware de WinTV, pilotes sans fil, etc.\n# yum remove alsa- * ivtv- * iwl * firmware aic94xx-firmware\n2. Paramètres système &#8211; Autorisations de fichiers et masques\n2.1 Limiter les options de montage de partition\nLes partitions doivent avoir des options de montage renforcées:</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"/démarrage &#8211; rw, nodev, noexec, nosuid\n/maison &#8211; rw, nodev, nosuid\n/ tmp &#8211; rw, nodev, noexec, nosuid\n/ var &#8211; rw, nosuid\n/ var / log &#8211; rw, nodev, noexec, nosuid\n/ var / log / audit &#8211; rw, nodev, noexec, nosuid\n/ var / www &#8211; rw, nodev, nosuid","html":"<p>/démarrage &#8211; rw, nodev, noexec, nosuid\n/maison &#8211; rw, nodev, nosuid\n/ tmp &#8211; rw, nodev, noexec, nosuid\n/ var &#8211; rw, nosuid\n/ var / log &#8211; rw, nodev, noexec, nosuid\n/ var / log / audit &#8211; rw, nodev, noexec, nosuid\n/ var / www &#8211; rw, nodev, nosuid</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"En règle générale, les applications malveillantes écrivent généralement sur / tmp et ensuite essayer d&#39;exécuter tout ce qui était écrit. Un moyen d&#39;éviter cela est de monter / tmp sur une partition séparée avec les options noexec, Nodev et nosuid activée.\nCela empêchera l&#39;exécution binaire de / tmp, désactivez tout binaire en tant que suid root et désactivez la création de tout bloc de périphériques.\nLe lieu de stockage / var / tmp devrait être lié à monté / tmp, car il n’est pas nécessaire d’avoir plusieurs emplacements pour le stockage temporaire:\n/ tmp / var / tmp none, nodev, noexec, nosuid, bind 0 0\nLa même chose s&#39;applique à la mémoire partagée / dev / shm:\ntmpfs / dev / shm tmpfs rw, nodev, noexec, nosuid 0 0\nLe pseudo-système de fichiers proc / proc devrait être monté avec caché. Lorsque vous définissez hidepid sur 2, les entrées de répertoires dans / proc sera caché.\nproc / proc proc rw, hidepid = 2 0 0\nDurcissez les supports amovibles en ajoutant Nodev, noexec et nosuid, par exemple.:\n/ dev / cdrom / mnt / cdrom iso9660 ro, noexec, nosuid, nodev, noauto 0 0\n2.2 Restreindre le montage et le démontage dynamiques de systèmes de fichiers\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf pour désactiver les systèmes de fichiers inhabituels:\ninstaller cramfs / bin / true\ninstaller freevxfs / bin / true\ninstaller jffs2 / bin / true\ninstaller hfs / bin / true\ninstaller hfsplus / bin / true\ninstaller squashfs / bin / true\ninstaller udf / bin / true\nSelon la configuration (si vous n’exécutez pas de grappes, NFS, CIFS, etc.), vous pouvez également désactiver les éléments suivants:\ninstaller fat / bin / true\ninstaller vfat / bin / true\ninstaller cifs / bin / true\ninstaller nfs / bin / true\ninstaller nfsv3 / bin / true\ninstaller nfsv4 / bin / true\ninstaller gfs2 / bin / true\nIl est sage de laisser ext4, xfs et btrfs activés à tout moment.\n2.3 Empêcher les utilisateurs de monter un stockage USB\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf Pour désactiver le chargement de modprobe des pilotes de stockage USB et FireWire:\nliste noire usb-storage\nliste noire firewire-core\ninstaller usb-storage / bin / true\nDésactiver l&#39;autorisation USB. Créer un fichier /opt/usb-auth.sh avec le contenu suivant:\n#! / bin / bash\necho 0&gt; / sys / bus / usb / devices / usb1 / autorisé\necho 0&gt; / sys / bus / usb / devices / usb1 / registered_default\nSi plusieurs périphériques USB sont disponibles, ajoutez-les tous. Créer un fichier de service /etc/systemd/system/usb-auth.service avec le contenu suivant:\n[Unit]","html":"<p>En règle générale, les applications malveillantes écrivent généralement sur / tmp et ensuite essayer d&#039;exécuter tout ce qui était écrit. Un moyen d&#039;éviter cela est de monter / tmp sur une partition séparée avec les options noexec, Nodev et nosuid activée.\nCela empêchera l&#039;exécution binaire de / tmp, désactivez tout binaire en tant que suid root et désactivez la création de tout bloc de périphériques.\nLe lieu de stockage / var / tmp devrait être lié à monté / tmp, car il n’est pas nécessaire d’avoir plusieurs emplacements pour le stockage temporaire:\n/ tmp / var / tmp none, nodev, noexec, nosuid, bind 0 0\nLa même chose s&#039;applique à la mémoire partagée / dev / shm:\ntmpfs / dev / shm tmpfs rw, nodev, noexec, nosuid 0 0\nLe pseudo-système de fichiers proc / proc devrait être monté avec caché. Lorsque vous définissez hidepid sur 2, les entrées de répertoires dans / proc sera caché.\nproc / proc proc rw, hidepid = 2 0 0\nDurcissez les supports amovibles en ajoutant Nodev, noexec et nosuid, par exemple.:\n/ dev / cdrom / mnt / cdrom iso9660 ro, noexec, nosuid, nodev, noauto 0 0\n2.2 Restreindre le montage et le démontage dynamiques de systèmes de fichiers\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf pour désactiver les systèmes de fichiers inhabituels:\ninstaller cramfs / bin / true\ninstaller freevxfs / bin / true\ninstaller jffs2 / bin / true\ninstaller hfs / bin / true\ninstaller hfsplus / bin / true\ninstaller squashfs / bin / true\ninstaller udf / bin / true\nSelon la configuration (si vous n’exécutez pas de grappes, NFS, CIFS, etc.), vous pouvez également désactiver les éléments suivants:\ninstaller fat / bin / true\ninstaller vfat / bin / true\ninstaller cifs / bin / true\ninstaller nfs / bin / true\ninstaller nfsv3 / bin / true\ninstaller nfsv4 / bin / true\ninstaller gfs2 / bin / true\nIl est sage de laisser ext4, xfs et btrfs activés à tout moment.\n2.3 Empêcher les utilisateurs de monter un stockage USB\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf Pour désactiver le chargement de modprobe des pilotes de stockage USB et FireWire:\nliste noire usb-storage\nliste noire firewire-core\ninstaller usb-storage / bin / true\nDésactiver l&#039;autorisation USB. Créer un fichier /opt/usb-auth.sh avec le contenu suivant:\n#! / bin / bash\necho 0&gt; / sys / bus / usb / devices / usb1 / autorisé\necho 0&gt; / sys / bus / usb / devices / usb1 / registered_default\nSi plusieurs périphériques USB sont disponibles, ajoutez-les tous. Créer un fichier de service /etc/systemd/system/usb-auth.service avec le contenu suivant:\n[Unit]</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"Description = Désactiver l&#39;authentification USB\nDefaultDependencies = no","html":"<p>Description = Désactiver l&#039;authentification USB\nDefaultDependencies = no</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"[Service]\nType = coup unique\nExecStart = / bin / bash /opt/usb-auth.sh","html":"<p>[Service]\nType = coup unique\nExecStart = / bin / bash /opt/usb-auth.sh</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"[Install]\nWantedBy = multi-user.target\nDéfinissez les autorisations, activez et démarrez le service:\n# chmod 0700 /opt/usb-auth.sh\n# systemctl enable usb-auth.service\n# systemctl start usb-auth.service\nSi nécessaire, désactivez la prise en charge du noyau pour USB via la configuration du chargeur de démarrage. Pour ce faire, ajoutez nousb à la ligne de noyau GRUB_CMDLINE_LINUX dans / etc / default / grub et générez le fichier de configuration Grub2:\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nNotez que la désactivation de toute la prise en charge du noyau pour USB causera probablement des problèmes pour les systèmes dotés de claviers USB, etc.\n2.4 Restreindre les programmes à partir de schémas d&#39;exécution dangereux\nConfigurer /etc/sysctl.conf avec ce qui suit:\n# Désactiver les core dumps","html":"<p>[Install]\nWantedBy = multi-user.target\nDéfinissez les autorisations, activez et démarrez le service:\n# chmod 0700 /opt/usb-auth.sh\n# systemctl enable usb-auth.service\n# systemctl start usb-auth.service\nSi nécessaire, désactivez la prise en charge du noyau pour USB via la configuration du chargeur de démarrage. Pour ce faire, ajoutez nousb à la ligne de noyau GRUB_CMDLINE_LINUX dans / etc / default / grub et générez le fichier de configuration Grub2:\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nNotez que la désactivation de toute la prise en charge du noyau pour USB causera probablement des problèmes pour les systèmes dotés de claviers USB, etc.\n2.4 Restreindre les programmes à partir de schémas d&#039;exécution dangereux\nConfigurer /etc/sysctl.conf avec ce qui suit:\n# Désactiver les core dumps</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"fs.suid_dumpable = 0","html":"<p>fs.suid_dumpable = 0</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"# Désactiver la fonctionnalité de débogage des requêtes système","html":"<p># Désactiver la fonctionnalité de débogage des requêtes système</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"kernel.sysrq = 0","html":"<p>kernel.sysrq = 0</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"# Restreindre l&#39;accès aux journaux du noyau","html":"<p># Restreindre l&#039;accès aux journaux du noyau</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"kernel.dmesg_restrict = 1","html":"<p>kernel.dmesg_restrict = 1</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"# Activer la protection ExecShield - non disponible sur CentOS 7","html":"<p># Activer la protection ExecShield - non disponible sur CentOS 7</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"# kernel.exec-shield = 1","html":"<p># kernel.exec-shield = 1</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"# Randomise l&#39;espace mémoire","html":"<p># Randomise l&#039;espace mémoire</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"kernel.randomize_va_space = 2","html":"<p>kernel.randomize_va_space = 2</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"# Masquer les pointeurs du noyau","html":"<p># Masquer les pointeurs du noyau</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"kernel.kptr_restrict = 2\nCharger les paramètres sysctl:\n# sysctp -p\n2.5 Set UMASK 027\nLes fichiers suivants nécessitent le renforcement de umask: / etc / bashrc, /etc/csh.cshrc, /etc/init.d/functions et / etc / profile.\nSed one-liner:\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / bashrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/csh.cshrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / profile\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/init.d/functions\n2.6 Désactiver les core dumps\nOuvrir /etc/security/limits.conf et définissez les éléments suivants:\n* noyau dur 0\n2.7 Fixer des limites de sécurité pour empêcher les dénis de service\nAjouter ce qui suit à /etc/security/limits.conf pour appliquer des limites de sécurité sensibles:\n# 4096 est un bon point de départ","html":"<p>kernel.kptr_restrict = 2\nCharger les paramètres sysctl:\n# sysctp -p\n2.5 Set UMASK 027\nLes fichiers suivants nécessitent le renforcement de umask: / etc / bashrc, /etc/csh.cshrc, /etc/init.d/functions et / etc / profile.\nSed one-liner:\n# sed -i -e &#039;/ umask 022 / umask 027 / g&#039; -e &#039;/ umask 002 / umask 027 / g&#039; / etc / bashrc\n# sed -i -e &#039;/ umask 022 / umask 027 / g&#039; -e &#039;/ umask 002 / umask 027 / g&#039; /etc/csh.cshrc\n# sed -i -e &#039;/ umask 022 / umask 027 / g&#039; -e &#039;/ umask 002 / umask 027 / g&#039; / etc / profile\n# sed -i -e &#039;/ umask 022 / umask 027 / g&#039; -e &#039;/ umask 002 / umask 027 / g&#039; /etc/init.d/functions\n2.6 Désactiver les core dumps\nOuvrir /etc/security/limits.conf et définissez les éléments suivants:\n* noyau dur 0\n2.7 Fixer des limites de sécurité pour empêcher les dénis de service\nAjouter ce qui suit à /etc/security/limits.conf pour appliquer des limites de sécurité sensibles:\n# 4096 est un bon point de départ</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"* nofile souple 4096\n* nofile dur 65536\n* soft nproc 4096\n* dur nproc 4096\n* Soft Locks 4096\n* serrures dures 4096\n* pile souple 10240\n* pile dure 32768\n* Soft Memlock 64\n* memlock difficile 64\n* maxlogins durs 10","html":"<p>* nofile souple 4096\n* nofile dur 65536\n* soft nproc 4096\n* dur nproc 4096\n* Soft Locks 4096\n* serrures dures 4096\n* pile souple 10240\n* pile dure 32768\n* Soft Memlock 64\n* memlock difficile 64\n* maxlogins durs 10</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"# Soft limite 32 Go, 64 Go dur","html":"<p># Soft limite 32 Go, 64 Go dur</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"* taille douce 33554432\n* taille dure 67108864","html":"<p>* taille douce 33554432\n* taille dure 67108864</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"# Limites pour root","html":"<p># Limites pour root</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"racine molle nofile 4096\nracine dure nofile 65536\nracine douce nproc 4096\nracine dure nproc 4096\npile logicielle racine 10240\nracine dure pile 32768\nracine molle fsize 33554432\n2.8 Vérifier les autorisations des fichiers\nAssurez-vous que tous les fichiers appartiennent à un utilisateur:\n# find / -ignore_readdir_race -nouser -print -exec racine chown  ;\nAssurez-vous que tous les fichiers appartiennent à un groupe:\n# find / -ignore_readdir_race -nogroup -print -exec chgrp root  ;\nSi nécessaire, un chemin spécifique peut être exclu de la recherche, par exemple:\n# find / -ignore_readdir_race -not -path &quot;/ proc / *&quot; -nouser -print -exec chown root  ;\nAutomatiser le processus en créant un fichier cron /etc/cron.daily/unowned_files avec le contenu suivant:\n#! / bin / bash\nfind / -ignore_readdir_race  (-nouser -print -exec chown root  ; ),  (-nogroup -print -exec chgrp root  ; )\nDéfinir la propriété et les autorisations:\n# racine chown: root /etc/cron.daily/unowned_files\n# chmod 0700 /etc/cron.daily/unowned_files\n2.9 Surveiller les fichiers SUID / GUID\nRecherchez les fichiers setuid / setgid et identifiez-les si tous sont requis:\n# find / -xdev -type f -perm -4000 -o -perm -2000\n3. Paramètres système &#8211; Configuration du pare-feu et du réseau\n3.1 Pare-feu\nSi vous définissez la zone de pare-feu par défaut à supprimer, tous les paquets qui ne sont pas explicitement autorisés à être rejetés.\n# sed -i &quot;s / DefaultZone =. * / DefaultZone = déposer / g&quot; /etc/firewalld/firewalld.conf\nSauf si firewalld est requis, masquez-le et remplacez-le par iptables:\n# systemctl stop firewalld.service\n# systemctl mask firewalld.service\n# systemctl daemon-reload\n# miam installe iptables-services\n# systemctl enable iptables.service ip6tables.service\nAjouter ce qui suit à / etc / sysconfig / iptables pour n&#39;autoriser que le trafic sortant minimal (DNS, NTP, HTTP / S et SMTPS):\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PASSEMENT ACCEPTER\n-P FORWARD DROP\n-P OUTPUT ACCEPT\n-A INPUT -i lo -m commentaire - commentaire local -j ACCEPTER\n-A INPUT -d 127.0.0.0/8! -i lo -j REJECT - rejette-avec icmp-port-inaccessible\n-A INPUT -m conntrack --ctstate CONNEXE, ÉTABLI -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 10.0.0.0/8 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 172.16.0.0/12 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 192.168.0.0/16 -j ACCEPT\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 22 -j ACCEPTER\n-Une entrée -j DROP\n-A SORTIE -d 127.0.0.0/8 -o lo -m commentaire - commentaire local -j ACCEPTER\n-A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT\n-A SORTIE -p icmp -m icmp --icmp-type quelconque -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU --dport 53 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 53 -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU - rapport 123 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 80 -j ACCEPT\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 443 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 587 -j ACCEPTER\n-A SORTIE -j LOG - préfixe-journal &quot;iptables_output&quot;\n-A SORTIE -j REJET - rejette-avec icmp-port-inaccessible\nCOMMETTRE\nNotez que la règle autorisant tout le trafic SSH entrant doit être supprimée, limitant l&#39;accès à une liste blanche IP uniquement ou masquant SSH derrière un VPN.\nIdéalement, les règles sortantes devraient être renforcées en limitant l&#39;accès aux serveurs DNS, NTP et SMTP locaux uniquement. Si un système de correctif local est utilisé (par exemple, Red Hat Satellite), le trafic HTTP / S peut également être renforcé, en fonction de la configuration.\nAjouter ce qui suit à / etc / sysconfig / ip6tables refuser tout IPv6:\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PUT ENTREE DROP\n-P FORWARD DROP\n-P SORTIE DROP\nCOMMETTRE\nAppliquer les configurations:\n# iptables-restore &lt;/ etc / sysconfig / iptables\n# ip6tables-restore &lt;/ etc / sysconfig / ip6tables\n3.2 TCP Wrappers\nOuvrir /etc/hosts.allow et autoriser le trafic localhost et SSH:\nTOUS: 127.0.0.1\nsshd: ALL\nLe fichier /etc/hosts.deny devrait être configuré pour tout refuser par défaut:\nTOUS: TOUS\n3.3 Paramètres du noyau qui affectent la mise en réseau\nOuvrir /etc/sysctl.conf et ajoutez ce qui suit:\n# Désactiver le transfert de paquets","html":"<p>racine molle nofile 4096\nracine dure nofile 65536\nracine douce nproc 4096\nracine dure nproc 4096\npile logicielle racine 10240\nracine dure pile 32768\nracine molle fsize 33554432\n2.8 Vérifier les autorisations des fichiers\nAssurez-vous que tous les fichiers appartiennent à un utilisateur:\n# find / -ignore_readdir_race -nouser -print -exec racine chown  ;\nAssurez-vous que tous les fichiers appartiennent à un groupe:\n# find / -ignore_readdir_race -nogroup -print -exec chgrp root  ;\nSi nécessaire, un chemin spécifique peut être exclu de la recherche, par exemple:\n# find / -ignore_readdir_race -not -path &quot;/ proc / *&quot; -nouser -print -exec chown root  ;\nAutomatiser le processus en créant un fichier cron /etc/cron.daily/unowned_files avec le contenu suivant:\n#! / bin / bash\nfind / -ignore_readdir_race  (-nouser -print -exec chown root  ; ),  (-nogroup -print -exec chgrp root  ; )\nDéfinir la propriété et les autorisations:\n# racine chown: root /etc/cron.daily/unowned_files\n# chmod 0700 /etc/cron.daily/unowned_files\n2.9 Surveiller les fichiers SUID / GUID\nRecherchez les fichiers setuid / setgid et identifiez-les si tous sont requis:\n# find / -xdev -type f -perm -4000 -o -perm -2000\n3. Paramètres système &#8211; Configuration du pare-feu et du réseau\n3.1 Pare-feu\nSi vous définissez la zone de pare-feu par défaut à supprimer, tous les paquets qui ne sont pas explicitement autorisés à être rejetés.\n# sed -i &quot;s / DefaultZone =. * / DefaultZone = déposer / g&quot; /etc/firewalld/firewalld.conf\nSauf si firewalld est requis, masquez-le et remplacez-le par iptables:\n# systemctl stop firewalld.service\n# systemctl mask firewalld.service\n# systemctl daemon-reload\n# miam installe iptables-services\n# systemctl enable iptables.service ip6tables.service\nAjouter ce qui suit à / etc / sysconfig / iptables pour n&#039;autoriser que le trafic sortant minimal (DNS, NTP, HTTP / S et SMTPS):\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PASSEMENT ACCEPTER\n-P FORWARD DROP\n-P OUTPUT ACCEPT\n-A INPUT -i lo -m commentaire - commentaire local -j ACCEPTER\n-A INPUT -d 127.0.0.0/8! -i lo -j REJECT - rejette-avec icmp-port-inaccessible\n-A INPUT -m conntrack --ctstate CONNEXE, ÉTABLI -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 10.0.0.0/8 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 172.16.0.0/12 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 192.168.0.0/16 -j ACCEPT\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 22 -j ACCEPTER\n-Une entrée -j DROP\n-A SORTIE -d 127.0.0.0/8 -o lo -m commentaire - commentaire local -j ACCEPTER\n-A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT\n-A SORTIE -p icmp -m icmp --icmp-type quelconque -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU --dport 53 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 53 -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU - rapport 123 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 80 -j ACCEPT\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 443 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 587 -j ACCEPTER\n-A SORTIE -j LOG - préfixe-journal &quot;iptables_output&quot;\n-A SORTIE -j REJET - rejette-avec icmp-port-inaccessible\nCOMMETTRE\nNotez que la règle autorisant tout le trafic SSH entrant doit être supprimée, limitant l&#039;accès à une liste blanche IP uniquement ou masquant SSH derrière un VPN.\nIdéalement, les règles sortantes devraient être renforcées en limitant l&#039;accès aux serveurs DNS, NTP et SMTP locaux uniquement. Si un système de correctif local est utilisé (par exemple, Red Hat Satellite), le trafic HTTP / S peut également être renforcé, en fonction de la configuration.\nAjouter ce qui suit à / etc / sysconfig / ip6tables refuser tout IPv6:\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PUT ENTREE DROP\n-P FORWARD DROP\n-P SORTIE DROP\nCOMMETTRE\nAppliquer les configurations:\n# iptables-restore &lt;/ etc / sysconfig / iptables\n# ip6tables-restore &lt;/ etc / sysconfig / ip6tables\n3.2 TCP Wrappers\nOuvrir /etc/hosts.allow et autoriser le trafic localhost et SSH:\nTOUS: 127.0.0.1\nsshd: ALL\nLe fichier /etc/hosts.deny devrait être configuré pour tout refuser par défaut:\nTOUS: TOUS\n3.3 Paramètres du noyau qui affectent la mise en réseau\nOuvrir /etc/sysctl.conf et ajoutez ce qui suit:\n# Désactiver le transfert de paquets</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"net.ipv4.ip_forward = 0","html":"<p>net.ipv4.ip_forward = 0</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"# Désactive les redirections, pas un routeur","html":"<p># Désactive les redirections, pas un routeur</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"net.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.all.secure_redirects = 0\nnet.ipv4.conf.default.secure_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0","html":"<p>net.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.all.secure_redirects = 0\nnet.ipv4.conf.default.secure_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0</p>"},{"id":"text-49","type":"text","heading":"","plain_text":"# Désactiver le routage source","html":"<p># Désactiver le routage source</p>"},{"id":"text-50","type":"text","heading":"","plain_text":"net.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0","html":"<p>net.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0</p>"},{"id":"text-51","type":"text","heading":"","plain_text":"# Activer la validation de la source par chemin inversé","html":"<p># Activer la validation de la source par chemin inversé</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"net.ipv4.conf.all.rp_filter = 1\nnet.ipv4.conf.default.rp_filter = 1","html":"<p>net.ipv4.conf.all.rp_filter = 1\nnet.ipv4.conf.default.rp_filter = 1</p>"},{"id":"text-53","type":"text","heading":"","plain_text":"# Journalise les paquets avec des adresses impossibles dans le journal du noyau","html":"<p># Journalise les paquets avec des adresses impossibles dans le journal du noyau</p>"},{"id":"text-54","type":"text","heading":"","plain_text":"net.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1","html":"<p>net.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"# Désactiver les diffusions ICMP","html":"<p># Désactiver les diffusions ICMP</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"net.ipv4.icmp_echo_ignore_broadcasts = 1","html":"<p>net.ipv4.icmp_echo_ignore_broadcasts = 1</p>"},{"id":"text-57","type":"text","heading":"","plain_text":"# Ignorer les erreurs fictives ICMP","html":"<p># Ignorer les erreurs fictives ICMP</p>"},{"id":"text-58","type":"text","heading":"","plain_text":"net.ipv4.icmp_ignore_bogus_error_responses = 1","html":"<p>net.ipv4.icmp_ignore_bogus_error_responses = 1</p>"},{"id":"text-59","type":"text","heading":"","plain_text":"# Contre les attaques par inondation SYN","html":"<p># Contre les attaques par inondation SYN</p>"},{"id":"text-60","type":"text","heading":"","plain_text":"net.ipv4.tcp_syncookies = 1","html":"<p>net.ipv4.tcp_syncookies = 1</p>"},{"id":"text-61","type":"text","heading":"","plain_text":"# La désactivation des horodatages peut améliorer la sécurité mais dégrader les performances.\n# Les horodatages TCP sont utilisés pour améliorer les performances et se protéger contre\n# Les paquets en retard perturbent votre flux de données. Un effet secondaire de cette fonctionnalité est\n# que le temps de disponibilité de l&#39;hôte peut parfois être calculé.\n# Si vous désactivez les horodatages TCP, vous devriez vous attendre à de moins bonnes performances.\n# et des connexions moins fiables.","html":"<p># La désactivation des horodatages peut améliorer la sécurité mais dégrader les performances.\n# Les horodatages TCP sont utilisés pour améliorer les performances et se protéger contre\n# Les paquets en retard perturbent votre flux de données. Un effet secondaire de cette fonctionnalité est\n# que le temps de disponibilité de l&#039;hôte peut parfois être calculé.\n# Si vous désactivez les horodatages TCP, vous devriez vous attendre à de moins bonnes performances.\n# et des connexions moins fiables.</p>"},{"id":"text-62","type":"text","heading":"","plain_text":"net.ipv4.tcp_timestamps = 1","html":"<p>net.ipv4.tcp_timestamps = 1</p>"},{"id":"text-63","type":"text","heading":"","plain_text":"# Désactiver IPv6 sauf si requis","html":"<p># Désactiver IPv6 sauf si requis</p>"},{"id":"text-64","type":"text","heading":"","plain_text":"net.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1","html":"<p>net.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1</p>"},{"id":"text-65","type":"text","heading":"","plain_text":"# Ne pas accepter les annonces de routeur","html":"<p># Ne pas accepter les annonces de routeur</p>"},{"id":"text-66","type":"text","heading":"","plain_text":"net.ipv6.conf.all.accept_ra = 0\nnet.ipv6.conf.default.accept_ra = 0\n3.4 Modules de noyau qui affectent la mise en réseau\nOuvrir /etc/modprobe.d/hardening.conf et désactivez les modules du noyau Bluetooth:\ninstaller bnep / bin / true\ninstaller bluetooth / bin / true\ninstaller btusb / bin / true\ninstaller net-pf-31 / bin / true\nDésactivez également AppleTalk:\ninstaller appletalk / bin / true\nSi nécessaire, désactivez la prise en charge d&#39;IPv6:\noptions ipv6 désactiver = 1\nDésactiver les protocoles (rares):\ninstaller dccp / bin / true\ninstallez sctp / bin / true\ninstaller rds / bin / true\ninstaller tipc / bin / true\nPuisque nous examinons la sécurité des serveurs, le sans fil ne devrait pas être un problème, nous pouvons donc désactiver tous les pilotes sans fil.\n# pour i dans $ (trouver / lib / modules / $ (uname -r) / kernel / drivers / net / wireless -name &quot;* .ko&quot; -type f);\n  echo blacklist &quot;$ i&quot; &gt;&gt; / etc / modprobe.d / hardening-wireless.conf; done\n3.5 Désactiver les radios\nDésactiver les radios (wifi et wwan):\n# nmcli radio tout est éteint\n3.6 Désactiver le réseau Zeroconf\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNOZEROCONF = oui\n3.7 Désactiver l&#39;utilisation de l&#39;interface IPv6 par l&#39;interface\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNETWORKING_IPV6 = no\nIPV6INIT = no\n3.8 renifleur de réseau\nLe serveur ne doit pas agir comme un renifleur réseau et une capture de packages. Exécutez ce qui suit pour déterminer si une interface est en cours d&#39;exécution en mode promiscuous:\n# lien ip | grep PROMISC\n3.9 Connexion VPN sécurisée\nInstallez le paquet libreswan si la mise en oeuvre de IPSec et IKE est requise.\n# miam installer libreswan\n3.10 Désactiver le client DHCP\nL&#39;attribution manuelle d&#39;adresses IP offre un degré de gestion supérieur.\nPour chaque interface réseau disponible sur le serveur, ouvrez un fichier correspondant. / etc / sysconfig / network-scripts / ifcfg-interface    et configurez les paramètres suivants:\nBOOTPROTO = aucun\nIPADDR =\nNETMASK =\nPASSERELLE =\n4. Paramètres système &#8211; SELinux\nAssurez-vous que SELinux n&#39;est pas désactivé dans / etc / default / grubet vérifiez que l&#39;état applique:\n# sestatus\n5. Paramètres système &#8211; Contrôle de compte et d&#39;accès\n5.1 Supprimer les comptes et les groupes inutilisés\nSupprimez tout compte non requis, par exemple:\n# userdel -r adm\n# userdel -r ftp\n# userdel -r jeux\n# userdel -r lp\nSupprimer tout groupe non requis, par exemple:\n# jeux groupdel\n5.2 Désactiver la connexion root directe\n# echo&gt; / etc / securetty\n5.3 Activer la stratégie de mot de passe sécurisé (haute qualité)\nNotez que lancer authconfig va écraser les fichiers de configuration PAM détruisant les modifications apportées manuellement. Assurez-vous que vous avez un sauvegarde.\nLes règles de stratégie de mot de passe sécurisé sont décrites ci-dessous.","html":"<p>net.ipv6.conf.all.accept_ra = 0\nnet.ipv6.conf.default.accept_ra = 0\n3.4 Modules de noyau qui affectent la mise en réseau\nOuvrir /etc/modprobe.d/hardening.conf et désactivez les modules du noyau Bluetooth:\ninstaller bnep / bin / true\ninstaller bluetooth / bin / true\ninstaller btusb / bin / true\ninstaller net-pf-31 / bin / true\nDésactivez également AppleTalk:\ninstaller appletalk / bin / true\nSi nécessaire, désactivez la prise en charge d&#039;IPv6:\noptions ipv6 désactiver = 1\nDésactiver les protocoles (rares):\ninstaller dccp / bin / true\ninstallez sctp / bin / true\ninstaller rds / bin / true\ninstaller tipc / bin / true\nPuisque nous examinons la sécurité des serveurs, le sans fil ne devrait pas être un problème, nous pouvons donc désactiver tous les pilotes sans fil.\n# pour i dans $ (trouver / lib / modules / $ (uname -r) / kernel / drivers / net / wireless -name &quot;* .ko&quot; -type f);\n  echo blacklist &quot;$ i&quot; &gt;&gt; / etc / modprobe.d / hardening-wireless.conf; done\n3.5 Désactiver les radios\nDésactiver les radios (wifi et wwan):\n# nmcli radio tout est éteint\n3.6 Désactiver le réseau Zeroconf\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNOZEROCONF = oui\n3.7 Désactiver l&#039;utilisation de l&#039;interface IPv6 par l&#039;interface\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNETWORKING_IPV6 = no\nIPV6INIT = no\n3.8 renifleur de réseau\nLe serveur ne doit pas agir comme un renifleur réseau et une capture de packages. Exécutez ce qui suit pour déterminer si une interface est en cours d&#039;exécution en mode promiscuous:\n# lien ip | grep PROMISC\n3.9 Connexion VPN sécurisée\nInstallez le paquet libreswan si la mise en oeuvre de IPSec et IKE est requise.\n# miam installer libreswan\n3.10 Désactiver le client DHCP\nL&#039;attribution manuelle d&#039;adresses IP offre un degré de gestion supérieur.\nPour chaque interface réseau disponible sur le serveur, ouvrez un fichier correspondant. / etc / sysconfig / network-scripts / ifcfg-interface    et configurez les paramètres suivants:\nBOOTPROTO = aucun\nIPADDR =\nNETMASK =\nPASSERELLE =\n4. Paramètres système &#8211; SELinux\nAssurez-vous que SELinux n&#039;est pas désactivé dans / etc / default / grubet vérifiez que l&#039;état applique:\n# sestatus\n5. Paramètres système &#8211; Contrôle de compte et d&#039;accès\n5.1 Supprimer les comptes et les groupes inutilisés\nSupprimez tout compte non requis, par exemple:\n# userdel -r adm\n# userdel -r ftp\n# userdel -r jeux\n# userdel -r lp\nSupprimer tout groupe non requis, par exemple:\n# jeux groupdel\n5.2 Désactiver la connexion root directe\n# echo&gt; / etc / securetty\n5.3 Activer la stratégie de mot de passe sécurisé (haute qualité)\nNotez que lancer authconfig va écraser les fichiers de configuration PAM détruisant les modifications apportées manuellement. Assurez-vous que vous avez un sauvegarde.\nLes règles de stratégie de mot de passe sécurisé sont décrites ci-dessous.</p>"},{"id":"text-67","type":"text","heading":"","plain_text":"Longueur minimale du mot de passe &#8211; 16.\nNombre minimum de classes de caractères dans un mot de passe &#8211; 4.\nNombre maximum de mêmes caractères consécutifs dans un mot de passe &#8211; 2.\nNombre maximal de caractères consécutifs de la même classe dans un mot de passe &#8211; 2.\nExigez au moins une lettre minuscule et une lettre majuscule dans un mot de passe.\nExiger au moins un chiffre dans un mot de passe.\nExiger au moins un autre caractère dans un mot de passe.","html":"<p>Longueur minimale du mot de passe &#8211; 16.\nNombre minimum de classes de caractères dans un mot de passe &#8211; 4.\nNombre maximum de mêmes caractères consécutifs dans un mot de passe &#8211; 2.\nNombre maximal de caractères consécutifs de la même classe dans un mot de passe &#8211; 2.\nExigez au moins une lettre minuscule et une lettre majuscule dans un mot de passe.\nExiger au moins un chiffre dans un mot de passe.\nExiger au moins un autre caractère dans un mot de passe.</p>"},{"id":"text-68","type":"text","heading":"","plain_text":"La commande suivante activera SHA512 et définira les exigences de mot de passe ci-dessus:\n# authconfig --passalgo = sha512 \n --passminlen = 16 \n --passminclass = 4 \n --passmaxrepeat = 2 \n --passmaxclassrepeat = 2 \n --enablereqlower \n --enablerequpper \n --enablereqdigit \n --enablereqother \n --mettre à jour\nOuvrir /etc/security/pwquality.conf et ajoutez ce qui suit:\ndifok = 8\ngecoscheck = 1\nCela garantira que 8 caractères du nouveau mot de passe ne seront pas présents dans l&#39;ancien mot de passe et vérifiera les mots de la chaîne GECOS de mot de passe de l&#39;utilisateur.\n5.4 Empêcher la connexion à des comptes avec un mot de passe vide\nSupprimer toutes les occurrences de nullok de /etc/pam.d/system-auth et /etc/pam.d/password-auth pour empêcher les connexions avec des mots de passe vides.\nSed one-liner:\n# sed -i&#39;s / // g &#39;/etc/pam.d/system-auth /etc/pam.d/system-auth-ac\n# sed -i&#39;s / // g &#39;/etc/pam.d/password-auth /etc/pam.d/password-auth-ac\n5.5 Définir l&#39;expiration du compte après l&#39;inactivité\nDésactivez les comptes dès que le mot de passe a expiré.\nOuvrir / etc / default / useradd et définissez les éléments suivants:\nINACTIF = 0\nSed one-liner:\n# sed -i &#39;s / ^ INACTIVE. * / INACTIF = 0 /&#39; / etc / default / useradd\n5.6 Politique de mot de passe sécurisé\nOuvrir /etc/login.defs et définissez les éléments suivants:\nPASS_MAX_DAYS 60\nPASS_MIN_DAYS 1\nPASS_MIN_LEN 14\nPASS_WARN_AGE 14\nSed one-liner:\n# sed -i -e &#39;/ ^ PASS_MAX_DAYS. * / PASS_MAX_DAYS 60 /&#39; \n  -e &#39;s / ^ PASS_MIN_DAYS. * / PASS_MIN_DAYS 1 /&#39; \n  -e &#39;s / ^ PASS_MIN_LEN. * / PASS_MIN_LEN 14 /&#39; \n  -e &#39;s / ^ PASS_WARN_AGE. * / PASS_WARN_AGE 14 /&#39; /etc/login.defs\n5.7 Journal des tentatives de connexion infructueuses\nOuvrir /etc/login.defs et activer la journalisation:\nFAILLOG_ENAB oui\nAjoutez également un délai en secondes avant de pouvoir effectuer une autre tentative après un échec de connexion:\nFAIL_DELAY 4\n5.8 S&#39;assurer que les répertoires de base sont créés pour les nouveaux utilisateurs\nOuvrir /etc/login.defs et configurer:\nCREATE_HOME oui\n5.9 Vérifier que tous les mots de passe du compte sont masqués\nLa commande ci-dessous devrait renvoyer «x»:\n# cut -d: -f2 / etc / passwd | uniq\n5.10 Définir le délai de refus et de verrouillage pour les tentatives de mot de passe infructueuses\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nAjoutez la ligne suivante immédiatement après le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le COMPTE section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\ncompte requis pam_faillock.so\nLe contenu du fichier /etc/pam.d/system-auth peut être vu ci-dessous.\n#% PAM-1.0","html":"<p>La commande suivante activera SHA512 et définira les exigences de mot de passe ci-dessus:\n# authconfig --passalgo = sha512 \n --passminlen = 16 \n --passminclass = 4 \n --passmaxrepeat = 2 \n --passmaxclassrepeat = 2 \n --enablereqlower \n --enablerequpper \n --enablereqdigit \n --enablereqother \n --mettre à jour\nOuvrir /etc/security/pwquality.conf et ajoutez ce qui suit:\ndifok = 8\ngecoscheck = 1\nCela garantira que 8 caractères du nouveau mot de passe ne seront pas présents dans l&#039;ancien mot de passe et vérifiera les mots de la chaîne GECOS de mot de passe de l&#039;utilisateur.\n5.4 Empêcher la connexion à des comptes avec un mot de passe vide\nSupprimer toutes les occurrences de nullok de /etc/pam.d/system-auth et /etc/pam.d/password-auth pour empêcher les connexions avec des mots de passe vides.\nSed one-liner:\n# sed -i&#039;s / // g &#039;/etc/pam.d/system-auth /etc/pam.d/system-auth-ac\n# sed -i&#039;s / // g &#039;/etc/pam.d/password-auth /etc/pam.d/password-auth-ac\n5.5 Définir l&#039;expiration du compte après l&#039;inactivité\nDésactivez les comptes dès que le mot de passe a expiré.\nOuvrir / etc / default / useradd et définissez les éléments suivants:\nINACTIF = 0\nSed one-liner:\n# sed -i &#039;s / ^ INACTIVE. * / INACTIF = 0 /&#039; / etc / default / useradd\n5.6 Politique de mot de passe sécurisé\nOuvrir /etc/login.defs et définissez les éléments suivants:\nPASS_MAX_DAYS 60\nPASS_MIN_DAYS 1\nPASS_MIN_LEN 14\nPASS_WARN_AGE 14\nSed one-liner:\n# sed -i -e &#039;/ ^ PASS_MAX_DAYS. * / PASS_MAX_DAYS 60 /&#039; \n  -e &#039;s / ^ PASS_MIN_DAYS. * / PASS_MIN_DAYS 1 /&#039; \n  -e &#039;s / ^ PASS_MIN_LEN. * / PASS_MIN_LEN 14 /&#039; \n  -e &#039;s / ^ PASS_WARN_AGE. * / PASS_WARN_AGE 14 /&#039; /etc/login.defs\n5.7 Journal des tentatives de connexion infructueuses\nOuvrir /etc/login.defs et activer la journalisation:\nFAILLOG_ENAB oui\nAjoutez également un délai en secondes avant de pouvoir effectuer une autre tentative après un échec de connexion:\nFAIL_DELAY 4\n5.8 S&#039;assurer que les répertoires de base sont créés pour les nouveaux utilisateurs\nOuvrir /etc/login.defs et configurer:\nCREATE_HOME oui\n5.9 Vérifier que tous les mots de passe du compte sont masqués\nLa commande ci-dessous devrait renvoyer «x»:\n# cut -d: -f2 / etc / passwd | uniq\n5.10 Définir le délai de refus et de verrouillage pour les tentatives de mot de passe infructueuses\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nAjoutez la ligne suivante immédiatement après le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le COMPTE section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\ncompte requis pam_faillock.so\nLe contenu du fichier /etc/pam.d/system-auth peut être vu ci-dessous.\n#% PAM-1.0</p>"},{"id":"text-69","type":"text","heading":"","plain_text":"auth requis pam_env.so\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nautorisation suffisante pam_unix.so try_first_pass\nauth        [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nautorisation requise pam_succeed_if.so uid&gt; = 1000 quiet_success\nauth requis pam_deny.so","html":"<p>auth requis pam_env.so\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nautorisation suffisante pam_unix.so try_first_pass\nauth        [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nautorisation requise pam_succeed_if.so uid&gt; = 1000 quiet_success\nauth requis pam_deny.so</p>"},{"id":"text-70","type":"text","heading":"","plain_text":"compte requis pam_faillock.so\ncompte requis pam_unix.so\ncompte suffisant pam_localuser.so\ncompte suffisant pam_succeed_if.so uid &lt;1000 silencieux\ncompte requis pam_permit.so","html":"<p>compte requis pam_faillock.so\ncompte requis pam_unix.so\ncompte suffisant pam_localuser.so\ncompte suffisant pam_succeed_if.so uid &lt;1000 silencieux\ncompte requis pam_permit.so</p>"},{"id":"text-71","type":"text","heading":"","plain_text":"mot de passe requis pam_pwquality.so try_first_pass local_users_only retry = 3 authtok_type =\nmot de passe suffisant pam_unix.so sha512 shadow try_first_pass use_authtok rappelez-vous = 5\nmot de passe requis pam_deny.so","html":"<p>mot de passe requis pam_pwquality.so try_first_pass local_users_only retry = 3 authtok_type =\nmot de passe suffisant pam_unix.so sha512 shadow try_first_pass use_authtok rappelez-vous = 5\nmot de passe requis pam_deny.so</p>"},{"id":"text-72","type":"text","heading":"","plain_text":"session facultative pam_keyinit.so révoquer\nsession requise pam_limits.so\n-session optionnel pam_systemd.so\nsession     [success=1 default=ignore] pam_succeed_if.so service dans crond quiet use_uid\nsession requise pam_unix.so\nDe plus, n&#39;autorisez pas les utilisateurs à réutiliser des mots de passe récents en ajoutant le rappelles toi option.\nFaire /etc/pam.d/system-auth et /etc/pam.d/password-auth configurations immuables pour qu’elles ne soient pas écrasées lors de l’exécution d’authconfig:\n# chattr + i /etc/pam.d/system-auth /etc/pam.d/password-auth\nLes comptes seront verrouillés après 3 tentatives de connexion infructueuses:\ns&#39;identifier[]: pam_faillock (login: auth): échecs de connexion consécutifs pour le compte utilisateur tomas temporairement bloqué \nUtilisez ce qui suit pour effacer le nombre d’échecs de l’utilisateur:\n# faillock --user tomas --reset\n5.11 Définir le mot de passe du chargeur d&#39;amorçage\nEmpêcher les utilisateurs d’entrer dans la ligne de commande grub et d’éditer les entrées du menu:\n# grub2-setpassword\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nCela va créer le fichier /boot/grub2/user.cfg s&#39;il n&#39;y en a pas déjà un, qui contiendra le mot de passe haché du chargeur de démarrage Grub2.\nVérifier les autorisations de /boot/grub2/grub.cfg:\n# chmod 0600 /boot/grub2/grub.cfg\n5.12 Mode utilisateur unique protégé par mot de passe\nLe mode utilisateur unique CentOS 7 est protégé par mot de passe par le mot de passe root par défaut dans le cadre de la conception de Grub2 et de systemd.\n5.13 Assurer que les utilisateurs s&#39;authentifient de nouveau pour l&#39;escalade des privilèges\nLa balise NOPASSWD permet à un utilisateur d’exécuter des commandes à l’aide de sudo sans devoir fournir de mot de passe. Bien que cela puisse parfois être utile, il est également dangereux.\nAssurez-vous que la balise NOPASSWD n’existe pas dans / etc / sudoers fichier de configuration ou /etc/sudoers.d/.\n5.14 Écrans multiples de la console et verrouillage de la console\nInstallez le package d&#39;écran pour pouvoir émuler plusieurs fenêtres de console:\n# yum install screen\nInstallez le paquet vlock pour activer le verrouillage de l’écran de la console:\n# miam installer vlock\n5.15 Désactiver l&#39;activation de redémarrage Ctrl-Alt-Suppr\nEmpêcher un utilisateur de la console connecté localement de redémarrer le système lorsque vous appuyez sur Ctrl-Alt-Suppr:\n# systemctl mask ctrl-alt-del.target\n5.16 Bannières d&#39;avertissement pour l&#39;accès au système\nAjouter la ligne suivante aux fichiers / etc / issue et /etc/issue.net:\nAccès non autorisé interdit. Les journaux sont enregistrés et surveillés.\n5.17 Définir le délai d&#39;expiration de la session interactive\nOuvrir / etc / profile Et mettre:\nen lecture seule TMOUT = 900\n5.18 Authentification à deux facteurs\nLa version récente du serveur OpenSSH permet de chaîner plusieurs méthodes d&#39;authentification, ce qui signifie qu&#39;elles doivent toutes être satisfaites pour qu&#39;un utilisateur puisse se connecter avec succès.\nAjout de la ligne suivante à / etc / ssh / sshd_config nécessiterait que l&#39;utilisateur s&#39;authentifie d&#39;abord avec une clé, puis fournisse également un mot de passe.\nAuthenticationMethods publickey, mot de passe\nIl s’agit par définition d’une authentification à deux facteurs: le fichier de clé est une propriété de l’utilisateur et le mot de passe du compte est connu de l’utilisateur.\nL&#39;authentification à deux facteurs pour SSH peut également être configurée à l&#39;aide de Google Authenticator.\n5.19 Configurer la taille du fichier d&#39;historique\nOuvrir / etc / profile et définissez le nombre de commandes à mémoriser dans l&#39;historique des commandes à 5000:\nHISTSIZE = 5000\nSed one-liner:\n# sed -i&#39;s / HISTSIZE =. * / HISTSIZE = 5000 / g &#39;/ etc / profile\n6. Paramètres système &#8211; Comptabilité système avec auditd\n6.1 Configuration auditée\nOuvrir /etc/audit/auditd.conf et configurez les éléments suivants:\nlocal_events = yes\nwrite_logs = yes\nlog_file = /var/log/audit/audit.log\nmax_log_file = 25\nnum_logs = 10\nmax_log_file_action = rotation\nspace_left = 30\nspace_left_action = email\nadmin_space_left = 10\nadmin_space_left_action = email\ndisk_full_action = suspendre\ndisk_error_action = suspendre\naction_mail_acct = [email protected]\nflush = data\nLa configuration auditd ci-dessus ne doit jamais utiliser plus de 250 Mo d’espace disque (10 x 25 Mo = 250 Mo) sur / var / log / audit.\nEnsemble admin_space_left_action = single si vous souhaitez que le système passe en mode utilisateur unique pour une action corrective plutôt que d&#39;envoyer un courrier électronique.\nRotation automatique des bûches (max_log_file_action = rotation) minimise les chances que le système manque d’espace disque de manière inattendue en étant rempli de données de journal.\nNous devons nous assurer que les données d’événement d’audit sont entièrement synchronisées (flush = data) avec les fichiers de log sur le disque.\n6.2 Règles d&#39;audit\nLes règles d&#39;audit système doivent avoir le mode 0640 ou moins permissif et appartenir à l&#39;utilisateur root:\n# racine chown: root /etc/audit/rules.d/audit.rules\n# chmod 0640 /etc/audit/rules.d/audit.rules\nOuvrir /etc/audit/rules.d/audit.rules et ajoutez ce qui suit:\n# Supprimer toutes les règles actuellement chargées","html":"<p>session facultative pam_keyinit.so révoquer\nsession requise pam_limits.so\n-session optionnel pam_systemd.so\nsession     [success=1 default=ignore] pam_succeed_if.so service dans crond quiet use_uid\nsession requise pam_unix.so\nDe plus, n&#039;autorisez pas les utilisateurs à réutiliser des mots de passe récents en ajoutant le rappelles toi option.\nFaire /etc/pam.d/system-auth et /etc/pam.d/password-auth configurations immuables pour qu’elles ne soient pas écrasées lors de l’exécution d’authconfig:\n# chattr + i /etc/pam.d/system-auth /etc/pam.d/password-auth\nLes comptes seront verrouillés après 3 tentatives de connexion infructueuses:\ns&#039;identifier[]: pam_faillock (login: auth): échecs de connexion consécutifs pour le compte utilisateur tomas temporairement bloqué \nUtilisez ce qui suit pour effacer le nombre d’échecs de l’utilisateur:\n# faillock --user tomas --reset\n5.11 Définir le mot de passe du chargeur d&#039;amorçage\nEmpêcher les utilisateurs d’entrer dans la ligne de commande grub et d’éditer les entrées du menu:\n# grub2-setpassword\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nCela va créer le fichier /boot/grub2/user.cfg s&#039;il n&#039;y en a pas déjà un, qui contiendra le mot de passe haché du chargeur de démarrage Grub2.\nVérifier les autorisations de /boot/grub2/grub.cfg:\n# chmod 0600 /boot/grub2/grub.cfg\n5.12 Mode utilisateur unique protégé par mot de passe\nLe mode utilisateur unique CentOS 7 est protégé par mot de passe par le mot de passe root par défaut dans le cadre de la conception de Grub2 et de systemd.\n5.13 Assurer que les utilisateurs s&#039;authentifient de nouveau pour l&#039;escalade des privilèges\nLa balise NOPASSWD permet à un utilisateur d’exécuter des commandes à l’aide de sudo sans devoir fournir de mot de passe. Bien que cela puisse parfois être utile, il est également dangereux.\nAssurez-vous que la balise NOPASSWD n’existe pas dans / etc / sudoers fichier de configuration ou /etc/sudoers.d/.\n5.14 Écrans multiples de la console et verrouillage de la console\nInstallez le package d&#039;écran pour pouvoir émuler plusieurs fenêtres de console:\n# yum install screen\nInstallez le paquet vlock pour activer le verrouillage de l’écran de la console:\n# miam installer vlock\n5.15 Désactiver l&#039;activation de redémarrage Ctrl-Alt-Suppr\nEmpêcher un utilisateur de la console connecté localement de redémarrer le système lorsque vous appuyez sur Ctrl-Alt-Suppr:\n# systemctl mask ctrl-alt-del.target\n5.16 Bannières d&#039;avertissement pour l&#039;accès au système\nAjouter la ligne suivante aux fichiers / etc / issue et /etc/issue.net:\nAccès non autorisé interdit. Les journaux sont enregistrés et surveillés.\n5.17 Définir le délai d&#039;expiration de la session interactive\nOuvrir / etc / profile Et mettre:\nen lecture seule TMOUT = 900\n5.18 Authentification à deux facteurs\nLa version récente du serveur OpenSSH permet de chaîner plusieurs méthodes d&#039;authentification, ce qui signifie qu&#039;elles doivent toutes être satisfaites pour qu&#039;un utilisateur puisse se connecter avec succès.\nAjout de la ligne suivante à / etc / ssh / sshd_config nécessiterait que l&#039;utilisateur s&#039;authentifie d&#039;abord avec une clé, puis fournisse également un mot de passe.\nAuthenticationMethods publickey, mot de passe\nIl s’agit par définition d’une authentification à deux facteurs: le fichier de clé est une propriété de l’utilisateur et le mot de passe du compte est connu de l’utilisateur.\nL&#039;authentification à deux facteurs pour SSH peut également être configurée à l&#039;aide de Google Authenticator.\n5.19 Configurer la taille du fichier d&#039;historique\nOuvrir / etc / profile et définissez le nombre de commandes à mémoriser dans l&#039;historique des commandes à 5000:\nHISTSIZE = 5000\nSed one-liner:\n# sed -i&#039;s / HISTSIZE =. * / HISTSIZE = 5000 / g &#039;/ etc / profile\n6. Paramètres système &#8211; Comptabilité système avec auditd\n6.1 Configuration auditée\nOuvrir /etc/audit/auditd.conf et configurez les éléments suivants:\nlocal_events = yes\nwrite_logs = yes\nlog_file = /var/log/audit/audit.log\nmax_log_file = 25\nnum_logs = 10\nmax_log_file_action = rotation\nspace_left = 30\nspace_left_action = email\nadmin_space_left = 10\nadmin_space_left_action = email\ndisk_full_action = suspendre\ndisk_error_action = suspendre\naction_mail_acct = [email protected]\nflush = data\nLa configuration auditd ci-dessus ne doit jamais utiliser plus de 250 Mo d’espace disque (10 x 25 Mo = 250 Mo) sur / var / log / audit.\nEnsemble admin_space_left_action = single si vous souhaitez que le système passe en mode utilisateur unique pour une action corrective plutôt que d&#039;envoyer un courrier électronique.\nRotation automatique des bûches (max_log_file_action = rotation) minimise les chances que le système manque d’espace disque de manière inattendue en étant rempli de données de journal.\nNous devons nous assurer que les données d’événement d’audit sont entièrement synchronisées (flush = data) avec les fichiers de log sur le disque.\n6.2 Règles d&#039;audit\nLes règles d&#039;audit système doivent avoir le mode 0640 ou moins permissif et appartenir à l&#039;utilisateur root:\n# racine chown: root /etc/audit/rules.d/audit.rules\n# chmod 0640 /etc/audit/rules.d/audit.rules\nOuvrir /etc/audit/rules.d/audit.rules et ajoutez ce qui suit:\n# Supprimer toutes les règles actuellement chargées</p>"},{"id":"text-73","type":"text","heading":"","plain_text":"-RÉ","html":"<p>-RÉ</p>"},{"id":"text-74","type":"text","heading":"","plain_text":"# Définir la taille de la mémoire tampon du noyau","html":"<p># Définir la taille de la mémoire tampon du noyau</p>"},{"id":"text-75","type":"text","heading":"","plain_text":"-b 8192","html":"<p>-b 8192</p>"},{"id":"text-76","type":"text","heading":"","plain_text":"# Définit l&#39;action à effectuer lorsqu&#39;une erreur critique est détectée.\n# Modes d&#39;échec: 0 = silencieux 1 = printk 2 = panique","html":"<p># Définit l&#039;action à effectuer lorsqu&#039;une erreur critique est détectée.\n# Modes d&#039;échec: 0 = silencieux 1 = printk 2 = panique</p>"},{"id":"text-77","type":"text","heading":"","plain_text":"-f 1","html":"<p>-f 1</p>"},{"id":"text-78","type":"text","heading":"","plain_text":"# Record tente de modifier le fichier localtime","html":"<p># Record tente de modifier le fichier localtime</p>"},{"id":"text-79","type":"text","heading":"","plain_text":"-w / etc / localtime -p wa -k audit_time_rules","html":"<p>-w / etc / localtime -p wa -k audit_time_rules</p>"},{"id":"text-80","type":"text","heading":"","plain_text":"# Enregistrer des événements qui modifient les informations utilisateur / groupe","html":"<p># Enregistrer des événements qui modifient les informations utilisateur / groupe</p>"},{"id":"text-81","type":"text","heading":"","plain_text":"-w / etc / group -p wa -k audit_rules_usergroup_modification\n-w / etc / passwd -p wa -k audit_rules_usergroup_modification\n-w / etc / gshadow -p wa -k audit_rules_usergroup_modification\n-w / etc / shadow -p wa -k audit_rules_usergroup_modification\n-w / etc / security / opasswd -p wa -k audit_rules_usergroup_modification","html":"<p>-w / etc / group -p wa -k audit_rules_usergroup_modification\n-w / etc / passwd -p wa -k audit_rules_usergroup_modification\n-w / etc / gshadow -p wa -k audit_rules_usergroup_modification\n-w / etc / shadow -p wa -k audit_rules_usergroup_modification\n-w / etc / security / opasswd -p wa -k audit_rules_usergroup_modification</p>"},{"id":"text-82","type":"text","heading":"","plain_text":"# Enregistrer des événements qui modifient l&#39;environnement réseau du système","html":"<p># Enregistrer des événements qui modifient l&#039;environnement réseau du système</p>"},{"id":"text-83","type":"text","heading":"","plain_text":"-w /etc/issue.net -p wa -k audit_rules_networkconfig_modification\n-w / etc / issue -p wa -k audit_rules_networkconfig_modification\n-w / etc / hosts -p wa -k audit_rules_networkconfig_modification\n-w / etc / sysconfig / network -p wa -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b32 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b64 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification","html":"<p>-w /etc/issue.net -p wa -k audit_rules_networkconfig_modification\n-w / etc / issue -p wa -k audit_rules_networkconfig_modification\n-w / etc / hosts -p wa -k audit_rules_networkconfig_modification\n-w / etc / sysconfig / network -p wa -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b32 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b64 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification</p>"},{"id":"text-84","type":"text","heading":"","plain_text":"# Enregistrer des événements qui modifient les contrôles d&#39;accès obligatoires du système","html":"<p># Enregistrer des événements qui modifient les contrôles d&#039;accès obligatoires du système</p>"},{"id":"text-85","type":"text","heading":"","plain_text":"-w / etc / selinux / -p wa -k MAC-policy","html":"<p>-w / etc / selinux / -p wa -k MAC-policy</p>"},{"id":"text-86","type":"text","heading":"","plain_text":"# Enregistrer les tentatives de modification des événements de connexion et de déconnexion","html":"<p># Enregistrer les tentatives de modification des événements de connexion et de déconnexion</p>"},{"id":"text-87","type":"text","heading":"","plain_text":"-w / var / log / tallylog -p wa -k connexions\n-w / var / log / lastlog -p wa -k connexions\n-w / var / run / faillock / -p wa -k connexions","html":"<p>-w / var / log / tallylog -p wa -k connexions\n-w / var / log / lastlog -p wa -k connexions\n-w / var / run / faillock / -p wa -k connexions</p>"},{"id":"text-88","type":"text","heading":"","plain_text":"# Enregistrer les tentatives de modification des informations de démarrage du processus et de la session","html":"<p># Enregistrer les tentatives de modification des informations de démarrage du processus et de la session</p>"},{"id":"text-89","type":"text","heading":"","plain_text":"-w / var / log / btmp -p wa -k session\n-w / var / log / wtmp -p wa -k session\n-w / var / run / utmp -p wa -k session","html":"<p>-w / var / log / btmp -p wa -k session\n-w / var / log / wtmp -p wa -k session\n-w / var / run / utmp -p wa -k session</p>"},{"id":"text-90","type":"text","heading":"","plain_text":"# Assurez-audit auditd de collecter des informations sur le chargement et le déchargement des modules du noyau","html":"<p># Assurez-audit auditd de collecter des informations sur le chargement et le déchargement des modules du noyau</p>"},{"id":"text-91","type":"text","heading":"","plain_text":"-w / usr / sbin / insmod -p x -k modules\n-w / usr / sbin / modprobe -p x -k modules\n-w / usr / sbin / rmmod -p x -k modules\n-a toujours, quittez -F arch = b64 -S init_module -S delete_module -k modules","html":"<p>-w / usr / sbin / insmod -p x -k modules\n-w / usr / sbin / modprobe -p x -k modules\n-w / usr / sbin / rmmod -p x -k modules\n-a toujours, quittez -F arch = b64 -S init_module -S delete_module -k modules</p>"},{"id":"text-92","type":"text","heading":"","plain_text":"# S&#39;assurer que auditd collecte les actions de l&#39;administrateur système","html":"<p># S&#039;assurer que auditd collecte les actions de l&#039;administrateur système</p>"},{"id":"text-93","type":"text","heading":"","plain_text":"-w / etc / sudoers -p wa -k actions\n-w /etc/sudoers.d/ -p wa -k actions","html":"<p>-w / etc / sudoers -p wa -k actions\n-w /etc/sudoers.d/ -p wa -k actions</p>"},{"id":"text-94","type":"text","heading":"","plain_text":"# Enregistrez les tentatives de modification du temps avec adjtimex","html":"<p># Enregistrez les tentatives de modification du temps avec adjtimex</p>"},{"id":"text-95","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b32 -S adjtimex -S settimeofday -S temps -k audit_time_rules","html":"<p>-a toujours, quittez -F arch = b32 -S adjtimex -S settimeofday -S temps -k audit_time_rules</p>"},{"id":"text-96","type":"text","heading":"","plain_text":"# Record tentatives de changer le temps par settimeofday","html":"<p># Record tentatives de changer le temps par settimeofday</p>"},{"id":"text-97","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b64 -S adjtimex -S settimeofday -k audit_time_rules","html":"<p>-a toujours, quittez -F arch = b64 -S adjtimex -S settimeofday -k audit_time_rules</p>"},{"id":"text-98","type":"text","heading":"","plain_text":"# Enregistrez les tentatives de modification de l&#39;heure via clock_settime","html":"<p># Enregistrez les tentatives de modification de l&#039;heure via clock_settime</p>"},{"id":"text-99","type":"text","heading":"","plain_text":"-a toujours, quitte -F arch = b32 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure","html":"<p>-a toujours, quitte -F arch = b32 -S clock_settime -F a0 = 0x0 -k changement d&#039;heure</p>"},{"id":"text-100","type":"text","heading":"","plain_text":"# Enregistrez les tentatives de modification de l&#39;heure via clock_settime","html":"<p># Enregistrez les tentatives de modification de l&#039;heure via clock_settime</p>"},{"id":"text-101","type":"text","heading":"","plain_text":"-a toujours, quitte -F arch = b64 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure","html":"<p>-a toujours, quitte -F arch = b64 -S clock_settime -F a0 = 0x0 -k changement d&#039;heure</p>"},{"id":"text-102","type":"text","heading":"","plain_text":"# Enregistrer des événements qui modifient les contrôles d&#39;accès discrétionnaires du système","html":"<p># Enregistrer des événements qui modifient les contrôles d&#039;accès discrétionnaires du système</p>"},{"id":"text-103","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b32 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod","html":"<p>-a toujours, quittez -F arch = b32 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod</p>"},{"id":"text-104","type":"text","heading":"","plain_text":"# S&#39;assurer que auditd collecte les tentatives d&#39;accès non autorisé aux fichiers (non réussi)","html":"<p># S&#039;assurer que auditd collecte les tentatives d&#039;accès non autorisé aux fichiers (non réussi)</p>"},{"id":"text-105","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b32 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b32 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès","html":"<p>-a toujours, quittez -F arch = b32 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b32 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès</p>"},{"id":"text-106","type":"text","heading":"","plain_text":"# S&#39;assure que auditd collecte des informations sur l&#39;exportation vers le support (avec succès)","html":"<p># S&#039;assure que auditd collecte des informations sur l&#039;exportation vers le support (avec succès)</p>"},{"id":"text-107","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b32 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\n-a toujours, quittez -F arch = b64 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export","html":"<p>-a toujours, quittez -F arch = b32 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\n-a toujours, quittez -F arch = b64 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export</p>"},{"id":"text-108","type":"text","heading":"","plain_text":"# S&#39;assure que auditd collecte les événements de suppression de fichier par utilisateur","html":"<p># S&#039;assure que auditd collecte les événements de suppression de fichier par utilisateur</p>"},{"id":"text-109","type":"text","heading":"","plain_text":"-a toujours, quittez -F arch = b32 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\n-a toujours, quittez -F arch = b64 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer","html":"<p>-a toujours, quittez -F arch = b32 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\n-a toujours, quittez -F arch = b64 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer</p>"},{"id":"text-110","type":"text","heading":"","plain_text":"# Assurez-audit auditd de collecter des informations sur l&#39;utilisation de commandes privilégiées","html":"<p># Assurez-audit auditd de collecter des informations sur l&#039;utilisation de commandes privilégiées</p>"},{"id":"text-111","type":"text","heading":"","plain_text":"-a toujours, sortie -F chemin = / usr / bin / chage -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / chcon -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privileged-priv_change\n-a toujours, quitte -F chemin = / usr / bin / chfn -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / chsh -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / crontab -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / gpasswd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / newgrp -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / passwd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / pkexec -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / screen -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quittez -f chemin = / usr / bin / ssh-agent -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / sudo -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / sudoedit -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privilégié\n-a toujours, quitter -F chemin = / usr / bin / su -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / umount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mur -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / écriture -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a always,exit -F path=/usr/lib64/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/restorecon -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged","html":"<p>-a toujours, sortie -F chemin = / usr / bin / chage -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / chcon -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privileged-priv_change\n-a toujours, quitte -F chemin = / usr / bin / chfn -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / chsh -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / crontab -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / gpasswd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / newgrp -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / passwd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / pkexec -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / screen -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quittez -f chemin = / usr / bin / ssh-agent -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / sudo -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / sudoedit -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privilégié\n-a toujours, quitter -F chemin = / usr / bin / su -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / umount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mur -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / écriture -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a always,exit -F path=/usr/lib64/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/restorecon -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged</p>"},{"id":"text-112","type":"text","heading":"","plain_text":"# Make the auditd configuration immutable.\n# The configuration can only be changed by rebooting the machine.","html":"<p># Make the auditd configuration immutable.\n# The configuration can only be changed by rebooting the machine.</p>"},{"id":"text-113","type":"text","heading":"","plain_text":"-e 2\nThe auditd service does not include the ability to send audit records to a centralised server for management directly.\nIt does, however, include a plug-in for audit event multiplexor to pass audit records to the local syslog server.\nTo do so, open the file /etc/audisp/plugins.d/syslog.conf and set:\nactive = yes\nEnable and start the service:\n# systemctl enable auditd.service\n# systemctl start auditd.service\n6.3. Enable Kernel Auditing\nOuvrir /etc/default/grub and append the following parameter to the kernel boot line GRUB_CMDLINE_LINUX:\naudit=1\nUpdate Grub2 configuration to reflect changes:\n# grub2-mkconfig -o /boot/grub2/grub.cfg\n7. System Settings – Software Integrity Checking\n7.1 Advanced Intrusion Detection Environment (AIDE)\nInstall AIDE:\n# yum install aide\nBuild AIDE database:\n# /usr/sbin/aide --init\nBy default, the database will be written to the file /var/lib/aide/aide.db.new.gz.\n# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\nStoring the database and the configuration file /etc/aide.conf (or SHA2 hashes of the files) in a secure location provides additional assurance about their integrity.\nCheck AIDE database:\n# /usr/sbin/aide --check\nBy default, AIDE does not install itself for periodic execution. Configure periodic execution of AIDE by adding to cron:\n# echo &quot;30 4 * * * root /usr/sbin/aide --check|mail -s &#39;AIDE&#39; [email protected]&quot; &gt;&gt; /etc/crontab\nPeriodically running AIDE is necessary in order to reveal system changes.\n7.2 Tripwire\nOpen Source Tripwire is an alternative to AIDE. It is recommended to use one or another, but not both.\nInstall Tripwire from the EPEL repository:\n# yum install epel-release\n# yum install tripwire\n# /usr/sbin/tripwire-setup-keyfiles\nThe Tripwire configuration file is /etc/tripwire/twcfg.txt and the policy file is /etc/tripwire/twpol.txt. These can be edited and configured to match the system Tripwire is installed on, see this blog post for more details.\nInitialise the database to implement the policy:\n# tripwire --init\nCheck for policy violations:\n# tripwire --check\nTripwire adds itself to /etc/cron.daily/ for daily execution therefore no extra configuration is required.\n7.3 Prelink\nPrelinking is done by the prelink package, which is not installed by default.\n# yum install prelink\nTo disable prelinking, open the file /etc/sysconfig/prelink and set the following:\nPRELINKING=no\nSed one-liner:\n# sed -i &#39;s/PRELINKING.*/PRELINKING=no/g&#39; /etc/sysconfig/prelink\nDisable existing prelinking on all system files:\n# prelink -ua\n8. System Settings – Logging and Message Forwarding\n8.1 Configure Persistent Journald Storage\nBy default, journal stores log files only in memory or a small ring-buffer in the directory /run/log/journal. This is sufficient to show recent log history with journalctl, but logs aren’t saved permanently. Enabling persistent journal storage ensures that comprehensive data is available after system reboot.\nOpen the file /etc/systemd/journald.conf and put the following:\n[Journal]","html":"<p>-e 2\nThe auditd service does not include the ability to send audit records to a centralised server for management directly.\nIt does, however, include a plug-in for audit event multiplexor to pass audit records to the local syslog server.\nTo do so, open the file /etc/audisp/plugins.d/syslog.conf and set:\nactive = yes\nEnable and start the service:\n# systemctl enable auditd.service\n# systemctl start auditd.service\n6.3. Enable Kernel Auditing\nOuvrir /etc/default/grub and append the following parameter to the kernel boot line GRUB_CMDLINE_LINUX:\naudit=1\nUpdate Grub2 configuration to reflect changes:\n# grub2-mkconfig -o /boot/grub2/grub.cfg\n7. System Settings – Software Integrity Checking\n7.1 Advanced Intrusion Detection Environment (AIDE)\nInstall AIDE:\n# yum install aide\nBuild AIDE database:\n# /usr/sbin/aide --init\nBy default, the database will be written to the file /var/lib/aide/aide.db.new.gz.\n# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\nStoring the database and the configuration file /etc/aide.conf (or SHA2 hashes of the files) in a secure location provides additional assurance about their integrity.\nCheck AIDE database:\n# /usr/sbin/aide --check\nBy default, AIDE does not install itself for periodic execution. Configure periodic execution of AIDE by adding to cron:\n# echo &quot;30 4 * * * root /usr/sbin/aide --check|mail -s &#039;AIDE&#039; [email protected]&quot; &gt;&gt; /etc/crontab\nPeriodically running AIDE is necessary in order to reveal system changes.\n7.2 Tripwire\nOpen Source Tripwire is an alternative to AIDE. It is recommended to use one or another, but not both.\nInstall Tripwire from the EPEL repository:\n# yum install epel-release\n# yum install tripwire\n# /usr/sbin/tripwire-setup-keyfiles\nThe Tripwire configuration file is /etc/tripwire/twcfg.txt and the policy file is /etc/tripwire/twpol.txt. These can be edited and configured to match the system Tripwire is installed on, see this blog post for more details.\nInitialise the database to implement the policy:\n# tripwire --init\nCheck for policy violations:\n# tripwire --check\nTripwire adds itself to /etc/cron.daily/ for daily execution therefore no extra configuration is required.\n7.3 Prelink\nPrelinking is done by the prelink package, which is not installed by default.\n# yum install prelink\nTo disable prelinking, open the file /etc/sysconfig/prelink and set the following:\nPRELINKING=no\nSed one-liner:\n# sed -i &#039;s/PRELINKING.*/PRELINKING=no/g&#039; /etc/sysconfig/prelink\nDisable existing prelinking on all system files:\n# prelink -ua\n8. System Settings – Logging and Message Forwarding\n8.1 Configure Persistent Journald Storage\nBy default, journal stores log files only in memory or a small ring-buffer in the directory /run/log/journal. This is sufficient to show recent log history with journalctl, but logs aren’t saved permanently. Enabling persistent journal storage ensures that comprehensive data is available after system reboot.\nOpen the file /etc/systemd/journald.conf and put the following:\n[Journal]</p>"},{"id":"text-114","type":"text","heading":"","plain_text":"Storage=persistent","html":"<p>Storage=persistent</p>"},{"id":"text-115","type":"text","heading":"","plain_text":"# How much disk space the journal may use up at most","html":"<p># How much disk space the journal may use up at most</p>"},{"id":"text-116","type":"text","heading":"","plain_text":"SystemMaxUse=256M","html":"<p>SystemMaxUse=256M</p>"},{"id":"text-117","type":"text","heading":"","plain_text":"# How much disk space systemd-journald shall leave free for other uses","html":"<p># How much disk space systemd-journald shall leave free for other uses</p>"},{"id":"text-118","type":"text","heading":"","plain_text":"SystemKeepFree=512M","html":"<p>SystemKeepFree=512M</p>"},{"id":"text-119","type":"text","heading":"","plain_text":"# How large individual journal files may grow at most","html":"<p># How large individual journal files may grow at most</p>"},{"id":"text-120","type":"text","heading":"","plain_text":"SystemMaxFileSize=32M\nRestart the service:\n# systemctl daemon-reload\n# systemctl restart systemd-journald\n8.2 Configure Message Forwarding to Remote Server\nDepending on your setup, open /etc/rsyslog.conf and add the following to forward messages to a some remote server:\n*.* @graylog.example.com:514\nIci *.* représente facility.severity. Note that a single @ sends logs over UDP, where a double @ sends logs using TCP.\n8.3 Logwatch\nLogwatch is a customisable log-monitoring system.\n# yum install logwatch\nLogwatch adds itself to /etc/cron.daily/ for daily execution therefore no configuration is mandatory.\n9. System Settings – Security Software\n9.1 Malware Scanners\nInstall Rkhunter and ClamAV:\n# yum install epel-release\n# yum install rkhunter clamav clamav-update\n# rkhunter --update\n# rkhunter --propupd\n# freshclam -v\nRkhunter adds itself to /etc/cron.daily/ for daily execution therefore no configuration is required. ClamAV scans should be tailored to individual needs.\n9.2 Arpwatch\nArpwatch is a tool used to monitor ARP activity of a local network (ARP spoofing detection), therefore it is unlikely one will use it in the cloud, however, it is still worth mentioning that the tools exist.\nBe aware of the configuration file /etc/sysconfig/arpwatch which you use to set the email address where to send the reports.\n9.3 Commercial AV\nConsider installing a commercial AV product that provides real-time on-access scanning capabilities.\n9.4 Grsecurity\nGrsecurity is an extensive security enhancement to the Linux kernel. Although it isn’t free nowadays, the software is still worth mentioning.\nThe company behind Grsecurity stopped publicly distributing stable patches back in 2015, with an exception of the test series continuing to be available to the public in order to avoid impact to the Gentoo Hardened and Arch Linux communities.\nTwo years later, the company decided to cease free distribution of the test patches as well, therefore as of 2017, Grsecurity software is available to paying customers only.\n10. System Settings – OS Update Installation\nInstall the package yum-utils for better consistency checking of the package database.\n# yum install yum-utils\nConfigure automatic package updates via yum-cron.\n# yum install yum-cron\nAdd the following to /etc/yum/yum-cron.conf to get notified via email when new updates are available:\nupdate_cmd = default\nupdate_messages = yes\ndownload_updates = no\t\napply_updates = no\nemit_via = email\t\nemail_from = [email protected]\nemail_to = [email protected]\nemail_host = localhost\nAdd the following to /etc/yum/yum-cron-hourly.conf to check for bugfix-related updates every hour and automatically download and install them:\nupdate_cmd = minimal # yum --bugfix update-minimal","html":"<p>SystemMaxFileSize=32M\nRestart the service:\n# systemctl daemon-reload\n# systemctl restart systemd-journald\n8.2 Configure Message Forwarding to Remote Server\nDepending on your setup, open /etc/rsyslog.conf and add the following to forward messages to a some remote server:\n*.* @graylog.example.com:514\nIci *.* représente facility.severity. Note that a single @ sends logs over UDP, where a double @ sends logs using TCP.\n8.3 Logwatch\nLogwatch is a customisable log-monitoring system.\n# yum install logwatch\nLogwatch adds itself to /etc/cron.daily/ for daily execution therefore no configuration is mandatory.\n9. System Settings – Security Software\n9.1 Malware Scanners\nInstall Rkhunter and ClamAV:\n# yum install epel-release\n# yum install rkhunter clamav clamav-update\n# rkhunter --update\n# rkhunter --propupd\n# freshclam -v\nRkhunter adds itself to /etc/cron.daily/ for daily execution therefore no configuration is required. ClamAV scans should be tailored to individual needs.\n9.2 Arpwatch\nArpwatch is a tool used to monitor ARP activity of a local network (ARP spoofing detection), therefore it is unlikely one will use it in the cloud, however, it is still worth mentioning that the tools exist.\nBe aware of the configuration file /etc/sysconfig/arpwatch which you use to set the email address where to send the reports.\n9.3 Commercial AV\nConsider installing a commercial AV product that provides real-time on-access scanning capabilities.\n9.4 Grsecurity\nGrsecurity is an extensive security enhancement to the Linux kernel. Although it isn’t free nowadays, the software is still worth mentioning.\nThe company behind Grsecurity stopped publicly distributing stable patches back in 2015, with an exception of the test series continuing to be available to the public in order to avoid impact to the Gentoo Hardened and Arch Linux communities.\nTwo years later, the company decided to cease free distribution of the test patches as well, therefore as of 2017, Grsecurity software is available to paying customers only.\n10. System Settings – OS Update Installation\nInstall the package yum-utils for better consistency checking of the package database.\n# yum install yum-utils\nConfigure automatic package updates via yum-cron.\n# yum install yum-cron\nAdd the following to /etc/yum/yum-cron.conf to get notified via email when new updates are available:\nupdate_cmd = default\nupdate_messages = yes\ndownload_updates = no\t\napply_updates = no\nemit_via = email\t\nemail_from = [email protected]\nemail_to = [email protected]\nemail_host = localhost\nAdd the following to /etc/yum/yum-cron-hourly.conf to check for bugfix-related updates every hour and automatically download and install them:\nupdate_cmd = minimal # yum --bugfix update-minimal</p>"},{"id":"text-121","type":"text","heading":"","plain_text":"update_messages = yes\ndownload_updates = yes\napply_updates = yes\nemit_via = stdio\nRemarque: security information is provided by RedHat only. When you query a repository that is provided by CentOS it does not supply security metadata (however the EPEL repository does have security metadata).\nTherefore if you decide to use update_cmd = security, yum will always tell you that nothing from CentOS needs a security update.\nEnable and start the service:\n# systemctl enable yum-cron.service\n# systemctl start yum-cron.service\n11. System Settings – Process Accounting\nThe package psacct contain utilities for monitoring process activities:","html":"<p>update_messages = yes\ndownload_updates = yes\napply_updates = yes\nemit_via = stdio\nRemarque: security information is provided by RedHat only. When you query a repository that is provided by CentOS it does not supply security metadata (however the EPEL repository does have security metadata).\nTherefore if you decide to use update_cmd = security, yum will always tell you that nothing from CentOS needs a security update.\nEnable and start the service:\n# systemctl enable yum-cron.service\n# systemctl start yum-cron.service\n11. System Settings – Process Accounting\nThe package psacct contain utilities for monitoring process activities:</p>"},{"id":"text-122","type":"text","heading":"","plain_text":"ac – displays statistics about how long users have been logged on.\nlastcomm – displays information about previously executed commands.\naccton – turns process accounting on or off.\nsa – summarises information about previously executed commands.","html":"<p>ac – displays statistics about how long users have been logged on.\nlastcomm – displays information about previously executed commands.\naccton – turns process accounting on or off.\nsa – summarises information about previously executed commands.</p>"},{"id":"text-123","type":"text","heading":"","plain_text":"Install and enable the service:\n# yum install psacct\n# systemctl enable psacct.service\n# systemctl start psacct.service\n1. Services – SSH Server\nCreate a group for SSH access as well as some regular user account who will be a member of the group:\n# groupadd ssh-users\n# useradd -m -s /bin/bash -G ssh-users tomas\nGenerate SSH keys for the user:\n# su - tomas\n$ mkdir --mode=0700 ~/.ssh\n$ ssh-keygen -b 4096 -t rsa -C &quot;tomas&quot; -f ~/.ssh/id_rsa\nGenerate SSH host keys:\n# ssh-keygen -b 4096 -t rsa -N &quot;&quot; -f /etc/ssh/ssh_host_rsa_key\n# ssh-keygen -b 1024 -t dsa -N &quot;&quot; -f /etc/ssh/ssh_host_dsa_key\n# ssh-keygen -b 521 -t ecdsa -N &quot;&quot; -f /etc/ssh/ssh_host_ecdsa_key\n# ssh-keygen -t ed25519 -N &quot;&quot; -f /etc/ssh/ssh_host_ed25519_key\nPour RSA keys, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.\nPour ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. ED25519 keys have a fixed length and the -b flag is ignored.\nThe host can be impersonated if an unauthorised user obtains the private SSH host key file, therefore ensure that permissions of /etc/ssh/*_key are properly set:\n# chmod 0600 /etc/ssh/*_key\nConfigurer /etc/ssh/sshd_config with the following:\n# SSH port.","html":"<p>Install and enable the service:\n# yum install psacct\n# systemctl enable psacct.service\n# systemctl start psacct.service\n1. Services – SSH Server\nCreate a group for SSH access as well as some regular user account who will be a member of the group:\n# groupadd ssh-users\n# useradd -m -s /bin/bash -G ssh-users tomas\nGenerate SSH keys for the user:\n# su - tomas\n$ mkdir --mode=0700 ~/.ssh\n$ ssh-keygen -b 4096 -t rsa -C &quot;tomas&quot; -f ~/.ssh/id_rsa\nGenerate SSH host keys:\n# ssh-keygen -b 4096 -t rsa -N &quot;&quot; -f /etc/ssh/ssh_host_rsa_key\n# ssh-keygen -b 1024 -t dsa -N &quot;&quot; -f /etc/ssh/ssh_host_dsa_key\n# ssh-keygen -b 521 -t ecdsa -N &quot;&quot; -f /etc/ssh/ssh_host_ecdsa_key\n# ssh-keygen -t ed25519 -N &quot;&quot; -f /etc/ssh/ssh_host_ed25519_key\nPour RSA keys, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.\nPour ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. ED25519 keys have a fixed length and the -b flag is ignored.\nThe host can be impersonated if an unauthorised user obtains the private SSH host key file, therefore ensure that permissions of /etc/ssh/*_key are properly set:\n# chmod 0600 /etc/ssh/*_key\nConfigurer /etc/ssh/sshd_config with the following:\n# SSH port.</p>"},{"id":"text-124","type":"text","heading":"","plain_text":"Port 22","html":"<p>Port 22</p>"},{"id":"text-125","type":"text","heading":"","plain_text":"# Listen on IPv4 only.","html":"<p># Listen on IPv4 only.</p>"},{"id":"text-126","type":"text","heading":"","plain_text":"ListenAddress 0.0.0.0","html":"<p>ListenAddress 0.0.0.0</p>"},{"id":"text-127","type":"text","heading":"","plain_text":"# Protocol version 1 has been exposed.","html":"<p># Protocol version 1 has been exposed.</p>"},{"id":"text-128","type":"text","heading":"","plain_text":"Protocol 2","html":"<p>Protocol 2</p>"},{"id":"text-129","type":"text","heading":"","plain_text":"#\n# OpenSSH cipher-related release notes.\n# OpenSSH 6.2: added support for AES-GCM authenticated encryption. \n# The cipher is available as [email protected] et [email protected]\n# OpenSSH 6.5: added new cipher [email protected]\n# OpenSSH 6.7: removed unsafe algorithms. CBC ciphers are disabled by default:\n# aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc.\n# OpenSSH 6.9: promoted [email protected] to be the default cipher.\n#","html":"<p>#\n# OpenSSH cipher-related release notes.\n# OpenSSH 6.2: added support for AES-GCM authenticated encryption. \n# The cipher is available as [email protected] et [email protected]\n# OpenSSH 6.5: added new cipher [email protected]\n# OpenSSH 6.7: removed unsafe algorithms. CBC ciphers are disabled by default:\n# aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc.\n# OpenSSH 6.9: promoted [email protected] to be the default cipher.\n#</p>"},{"id":"text-130","type":"text","heading":"","plain_text":"Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr","html":"<p>Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr</p>"},{"id":"text-131","type":"text","heading":"","plain_text":"#\n# OpenSSH 6.2: added support for the UMAC-128 MAC as [email protected] \n# and [email protected] The latter being an encrypt-then-mac mode.\n# Do not use umac-64 or umac-64-etm because of a small 64 bit tag size.\n# Do not use any SHA1 (e.g. hmac-sha1, [email protected]) MACs \n# because of a weak hashing algorithm. \n# Do not use hmac-sha2-256, hmac-sha2-512 or [email protected] \n# because of an encrypt-and-MAC mode. See the link below:\n# https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac\n#","html":"<p>#\n# OpenSSH 6.2: added support for the UMAC-128 MAC as [email protected] \n# and [email protected] The latter being an encrypt-then-mac mode.\n# Do not use umac-64 or umac-64-etm because of a small 64 bit tag size.\n# Do not use any SHA1 (e.g. hmac-sha1, [email protected]) MACs \n# because of a weak hashing algorithm. \n# Do not use hmac-sha2-256, hmac-sha2-512 or [email protected] \n# because of an encrypt-and-MAC mode. See the link below:\n# https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac\n#</p>"},{"id":"text-132","type":"text","heading":"","plain_text":"MACs [email protected],[email protected],[email protected]","html":"<p>MACs [email protected],[email protected],[email protected]</p>"},{"id":"text-133","type":"text","heading":"","plain_text":"#\n# OpenSSH 6.5: added support for ssh-ed25519. It offers better security \n# than ECDSA and DSA.\n# OpenSSH 7.0: disabled support for ssh-dss. \n# OpenSSH 7.2: added support for rsa-sha2-512 and rsa-sha2-256.\n#","html":"<p>#\n# OpenSSH 6.5: added support for ssh-ed25519. It offers better security \n# than ECDSA and DSA.\n# OpenSSH 7.0: disabled support for ssh-dss. \n# OpenSSH 7.2: added support for rsa-sha2-512 and rsa-sha2-256.\n#</p>"},{"id":"text-134","type":"text","heading":"","plain_text":"HostKeyAlgorithms ssh-ed25519,[email protected],ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,[email protected],[email protected],[email protected],[email protected],[email protected]","html":"<p>HostKeyAlgorithms ssh-ed25519,[email protected],ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,[email protected],[email protected],[email protected],[email protected],[email protected]</p>"},{"id":"text-135","type":"text","heading":"","plain_text":"#\n# OpenSSH 6.5: added support for key exchange using elliptic-curve\n# Diffie Hellman in Daniel Bernstein&#39;s Curve25519.\n# OpenSSH 7.3: added support for diffie-hellman-group14-sha256,\n# diffie-hellman-group16-sha512 and diffie-hellman-group18-sha512.\n#","html":"<p>#\n# OpenSSH 6.5: added support for key exchange using elliptic-curve\n# Diffie Hellman in Daniel Bernstein&#039;s Curve25519.\n# OpenSSH 7.3: added support for diffie-hellman-group14-sha256,\n# diffie-hellman-group16-sha512 and diffie-hellman-group18-sha512.\n#</p>"},{"id":"text-136","type":"text","heading":"","plain_text":"KexAlgorithms [email protected],diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256","html":"<p>KexAlgorithms [email protected],diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256</p>"},{"id":"text-137","type":"text","heading":"","plain_text":"# HostKeys for protocol version 2.","html":"<p># HostKeys for protocol version 2.</p>"},{"id":"text-138","type":"text","heading":"","plain_text":"HostKey /etc/ssh/ssh_host_rsa_key\nHostKey /etc/ssh/ssh_host_ed25519_key","html":"<p>HostKey /etc/ssh/ssh_host_rsa_key\nHostKey /etc/ssh/ssh_host_ed25519_key</p>"},{"id":"text-139","type":"text","heading":"","plain_text":"# Disabled because uses a small 1024 bit key.","html":"<p># Disabled because uses a small 1024 bit key.</p>"},{"id":"text-140","type":"text","heading":"","plain_text":"#HostKey /etc/ssh/ssh_host_dsa_key","html":"<p>#HostKey /etc/ssh/ssh_host_dsa_key</p>"},{"id":"text-141","type":"text","heading":"","plain_text":"# Disabled because uses weak elliptic curves.\n# See: https://safecurves.cr.yp.to/","html":"<p># Disabled because uses weak elliptic curves.\n# See: https://safecurves.cr.yp.to/</p>"},{"id":"text-142","type":"text","heading":"","plain_text":"#HostKey /etc/ssh/ssh_host_ecdsa_key","html":"<p>#HostKey /etc/ssh/ssh_host_ecdsa_key</p>"},{"id":"text-143","type":"text","heading":"","plain_text":"# INFO is a basic logging level that will capture user login/logout activity.\n# DEBUG logging level is not recommended for production servers.","html":"<p># INFO is a basic logging level that will capture user login/logout activity.\n# DEBUG logging level is not recommended for production servers.</p>"},{"id":"text-144","type":"text","heading":"","plain_text":"LogLevel INFO","html":"<p>LogLevel INFO</p>"},{"id":"text-145","type":"text","heading":"","plain_text":"# Disconnect if no successful login is made in 60 seconds.","html":"<p># Disconnect if no successful login is made in 60 seconds.</p>"},{"id":"text-146","type":"text","heading":"","plain_text":"LoginGraceTime 60","html":"<p>LoginGraceTime 60</p>"},{"id":"text-147","type":"text","heading":"","plain_text":"# Do not permit root logins via SSH.","html":"<p># Do not permit root logins via SSH.</p>"},{"id":"text-148","type":"text","heading":"","plain_text":"PermitRootLogin no","html":"<p>PermitRootLogin no</p>"},{"id":"text-149","type":"text","heading":"","plain_text":"# Check file modes and ownership of the user&#39;s files before login.","html":"<p># Check file modes and ownership of the user&#039;s files before login.</p>"},{"id":"text-150","type":"text","heading":"","plain_text":"StrictModes yes","html":"<p>StrictModes yes</p>"},{"id":"text-151","type":"text","heading":"","plain_text":"# Close TCP socket after 2 invalid login attempts.","html":"<p># Close TCP socket after 2 invalid login attempts.</p>"},{"id":"text-152","type":"text","heading":"","plain_text":"MaxAuthTries 2","html":"<p>MaxAuthTries 2</p>"},{"id":"text-153","type":"text","heading":"","plain_text":"# The maximum number of sessions per network connection.","html":"<p># The maximum number of sessions per network connection.</p>"},{"id":"text-154","type":"text","heading":"","plain_text":"MaxSessions 3","html":"<p>MaxSessions 3</p>"},{"id":"text-155","type":"text","heading":"","plain_text":"# User/group permissions.","html":"<p># User/group permissions.</p>"},{"id":"text-156","type":"text","heading":"","plain_text":"AllowUsers\nAllowGroups ssh-users\nDenyUsers root\nDenyGroups root","html":"<p>AllowUsers\nAllowGroups ssh-users\nDenyUsers root\nDenyGroups root</p>"},{"id":"text-157","type":"text","heading":"","plain_text":"# Password and public key authentications.","html":"<p># Password and public key authentications.</p>"},{"id":"text-158","type":"text","heading":"","plain_text":"PasswordAuthentication no\nPermitEmptyPasswords no\nPubkeyAuthentication yes\nAuthorizedKeysFile  .ssh/authorized_keys","html":"<p>PasswordAuthentication no\nPermitEmptyPasswords no\nPubkeyAuthentication yes\nAuthorizedKeysFile  .ssh/authorized_keys</p>"},{"id":"text-159","type":"text","heading":"","plain_text":"# Disable unused authentications mechanisms.","html":"<p># Disable unused authentications mechanisms.</p>"},{"id":"text-160","type":"text","heading":"","plain_text":"RSAAuthentication no # DEPRECATED","html":"<p>RSAAuthentication no # DEPRECATED</p>"},{"id":"text-161","type":"text","heading":"","plain_text":"RhostsRSAAuthentication no # DEPRECATED","html":"<p>RhostsRSAAuthentication no # DEPRECATED</p>"},{"id":"text-162","type":"text","heading":"","plain_text":"ChallengeResponseAuthentication no\nKerberosAuthentication no\nGSSAPIAuthentication no\nHostbasedAuthentication no\nIgnoreUserKnownHosts yes","html":"<p>ChallengeResponseAuthentication no\nKerberosAuthentication no\nGSSAPIAuthentication no\nHostbasedAuthentication no\nIgnoreUserKnownHosts yes</p>"},{"id":"text-163","type":"text","heading":"","plain_text":"# Disable insecure access via rhosts files.","html":"<p># Disable insecure access via rhosts files.</p>"},{"id":"text-164","type":"text","heading":"","plain_text":"IgnoreRhosts yes","html":"<p>IgnoreRhosts yes</p>"},{"id":"text-165","type":"text","heading":"","plain_text":"AllowAgentForwarding no\nAllowTcpForwarding no","html":"<p>AllowAgentForwarding no\nAllowTcpForwarding no</p>"},{"id":"text-166","type":"text","heading":"","plain_text":"# Disable X Forwarding.","html":"<p># Disable X Forwarding.</p>"},{"id":"text-167","type":"text","heading":"","plain_text":"X11Forwarding no","html":"<p>X11Forwarding no</p>"},{"id":"text-168","type":"text","heading":"","plain_text":"# Disable message of the day but print last log.","html":"<p># Disable message of the day but print last log.</p>"},{"id":"text-169","type":"text","heading":"","plain_text":"PrintMotd no\nPrintLastLog yes","html":"<p>PrintMotd no\nPrintLastLog yes</p>"},{"id":"text-170","type":"text","heading":"","plain_text":"# Show banner.","html":"<p># Show banner.</p>"},{"id":"text-171","type":"text","heading":"","plain_text":"Banner /etc/issue","html":"<p>Banner /etc/issue</p>"},{"id":"text-172","type":"text","heading":"","plain_text":"# Do not send TCP keepalive messages.","html":"<p># Do not send TCP keepalive messages.</p>"},{"id":"text-173","type":"text","heading":"","plain_text":"TCPKeepAlive no","html":"<p>TCPKeepAlive no</p>"},{"id":"text-174","type":"text","heading":"","plain_text":"# Default for new installations.","html":"<p># Default for new installations.</p>"},{"id":"text-175","type":"text","heading":"","plain_text":"UsePrivilegeSeparation sandbox","html":"<p>UsePrivilegeSeparation sandbox</p>"},{"id":"text-176","type":"text","heading":"","plain_text":"# Prevent users from potentially bypassing some access restrictions.","html":"<p># Prevent users from potentially bypassing some access restrictions.</p>"},{"id":"text-177","type":"text","heading":"","plain_text":"PermitUserEnvironment no","html":"<p>PermitUserEnvironment no</p>"},{"id":"text-178","type":"text","heading":"","plain_text":"# Disable compression.","html":"<p># Disable compression.</p>"},{"id":"text-179","type":"text","heading":"","plain_text":"Compression no","html":"<p>Compression no</p>"},{"id":"text-180","type":"text","heading":"","plain_text":"# Disconnect the client if no activity has been detected for 900 seconds.","html":"<p># Disconnect the client if no activity has been detected for 900 seconds.</p>"},{"id":"text-181","type":"text","heading":"","plain_text":"ClientAliveInterval 900\nClientAliveCountMax 0","html":"<p>ClientAliveInterval 900\nClientAliveCountMax 0</p>"},{"id":"text-182","type":"text","heading":"","plain_text":"# Do not look up the remote hostname.","html":"<p># Do not look up the remote hostname.</p>"},{"id":"text-183","type":"text","heading":"","plain_text":"UseDNS no","html":"<p>UseDNS no</p>"},{"id":"text-184","type":"text","heading":"","plain_text":"UsePAM yes\nYou can use the ssh-audit tool to test your SSH server configuration.\nIn case you want to change the default SSH port to something else, you will need to tell SELinux about it.\n# yum install policycoreutils-python\nFor example, to allow SSH server to listen on TCP 2222, do the following:\n# semanage port -a -t ssh_port_t 2222 -p tcp\nEnsure that the firewall allows incoming traffic on the new SSH port and restart the sshd service.\n2. Service – Network Time Protocol\nCentOS 7 should come with Chrony, make sure that the service is enabled:\n# systemctl enable chronyd.service\n3. Services – Mail Server\n3.1 Postfix\nPostfix should be installed and enabled already. In case it isn’t, the do the following:\n# yum install postfix\n# systemctl enable postfix.service\nOuvrir /etc/postfix/main.cf and configure the following to act as a null client:\nsmtpd_banner = $myhostname ESMTP\ninet_interfaces = loopback-only\ninet_protocols = ipv4\nmydestination =\nlocal_transport = error: local delivery disabled\nunknown_local_recipient_reject_code = 550\nmynetworks = 127.0.0.0/8\nrelayhost = [mail.example.com]:587\nOptionally (depending on your setup), you can configure Postfix to use authentication:\n# yum install cyrus-sasl-plain\nOuvrir /etc/postfix/main.cf and add the following:\nsmtp_sasl_auth_enable = yes\nsmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd\nsmtp_sasl_security_options = noanonymous\nsmtp_tls_CApath = /etc/ssl/certs\nsmtp_use_tls = yes\nOuvrir /etc/postfix/sasl_passwd and put authentication credentials in a format of:\n[mail.example.com]:587 [email protected]:password\nSet permissions and create a database file:\n# chmod 0600 /etc/postfix/sasl_passwd\n# postmap /etc/postfix/sasl_passwd\nRestart the service and ensure that firewall allows outgoing traffic to the SMTP relay server.\n3.2 Mail Distribution to Active Mail Accounts\nConfigure the file /etc/aliases to have a forward rule for the root user.\n4. Services – Remove Obsolete Services\nNone of these should be installed on CentOS 7 minimal:\n# yum remove xinetd telnet-server rsh-server \n  telnet rsh ypbind ypserv tfsp-server bind \n  vsfptd dovecot squid net-snmpd talk-server talk\nCheck all enabled services:\n# systemctl list-unit-files --type=service|grep enabled\nDisable kernel dump service:\n# systemctl disable kdump.service\n# systemctl mask kdump.service\nDisable everything that is not required, e.g.:\n# systemctl disable tuned.service\n5. Services – Restrict at and cron to Authorised Users\nSi le fichier cron.allow exists, then only users listed in the file are allowed to use cron, and the cron.deny file is ignored.\n# echo root &gt; /etc/cron.allow\n# echo root &gt; /etc/at.allow\n# rm -f /etc/at.deny /etc/cron.deny\nNote that the root user can always use cron, regardless of the usernames listed in the access control files.\n6. Services – Disable X Windows Startup\nThis can be achieved by setting a default target:\n# systemctl set-default multi-user.target\n7. Services – Fail2ban\nInstall Fail2ban from the EPEL repository:\n# yum install epel-release\n# yum install fail2ban\nIf using iptables rather than firewalld, open the file /etc/fail2ban/jail.d/00-firewalld.conf and comment out the following line:\n#banaction = firewallcmd-ipset\nFail2Ban uses /etc/fail2ban/jail.conf. Configuration snippet for SSH is provided below:\n[sshd]","html":"<p>UsePAM yes\nYou can use the ssh-audit tool to test your SSH server configuration.\nIn case you want to change the default SSH port to something else, you will need to tell SELinux about it.\n# yum install policycoreutils-python\nFor example, to allow SSH server to listen on TCP 2222, do the following:\n# semanage port -a -t ssh_port_t 2222 -p tcp\nEnsure that the firewall allows incoming traffic on the new SSH port and restart the sshd service.\n2. Service – Network Time Protocol\nCentOS 7 should come with Chrony, make sure that the service is enabled:\n# systemctl enable chronyd.service\n3. Services – Mail Server\n3.1 Postfix\nPostfix should be installed and enabled already. In case it isn’t, the do the following:\n# yum install postfix\n# systemctl enable postfix.service\nOuvrir /etc/postfix/main.cf and configure the following to act as a null client:\nsmtpd_banner = $myhostname ESMTP\ninet_interfaces = loopback-only\ninet_protocols = ipv4\nmydestination =\nlocal_transport = error: local delivery disabled\nunknown_local_recipient_reject_code = 550\nmynetworks = 127.0.0.0/8\nrelayhost = [mail.example.com]:587\nOptionally (depending on your setup), you can configure Postfix to use authentication:\n# yum install cyrus-sasl-plain\nOuvrir /etc/postfix/main.cf and add the following:\nsmtp_sasl_auth_enable = yes\nsmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd\nsmtp_sasl_security_options = noanonymous\nsmtp_tls_CApath = /etc/ssl/certs\nsmtp_use_tls = yes\nOuvrir /etc/postfix/sasl_passwd and put authentication credentials in a format of:\n[mail.example.com]:587 [email protected]:password\nSet permissions and create a database file:\n# chmod 0600 /etc/postfix/sasl_passwd\n# postmap /etc/postfix/sasl_passwd\nRestart the service and ensure that firewall allows outgoing traffic to the SMTP relay server.\n3.2 Mail Distribution to Active Mail Accounts\nConfigure the file /etc/aliases to have a forward rule for the root user.\n4. Services – Remove Obsolete Services\nNone of these should be installed on CentOS 7 minimal:\n# yum remove xinetd telnet-server rsh-server \n  telnet rsh ypbind ypserv tfsp-server bind \n  vsfptd dovecot squid net-snmpd talk-server talk\nCheck all enabled services:\n# systemctl list-unit-files --type=service|grep enabled\nDisable kernel dump service:\n# systemctl disable kdump.service\n# systemctl mask kdump.service\nDisable everything that is not required, e.g.:\n# systemctl disable tuned.service\n5. Services – Restrict at and cron to Authorised Users\nSi le fichier cron.allow exists, then only users listed in the file are allowed to use cron, and the cron.deny file is ignored.\n# echo root &gt; /etc/cron.allow\n# echo root &gt; /etc/at.allow\n# rm -f /etc/at.deny /etc/cron.deny\nNote that the root user can always use cron, regardless of the usernames listed in the access control files.\n6. Services – Disable X Windows Startup\nThis can be achieved by setting a default target:\n# systemctl set-default multi-user.target\n7. Services – Fail2ban\nInstall Fail2ban from the EPEL repository:\n# yum install epel-release\n# yum install fail2ban\nIf using iptables rather than firewalld, open the file /etc/fail2ban/jail.d/00-firewalld.conf and comment out the following line:\n#banaction = firewallcmd-ipset\nFail2Ban uses /etc/fail2ban/jail.conf. Configuration snippet for SSH is provided below:\n[sshd]</p>"},{"id":"text-185","type":"text","heading":"","plain_text":"port    = ssh\nenabled = true\nignoreip = 10.8.8.61\nbantime  = 600\nmaxretry = 5\nIf you run SSH on a non-default port, you can change the port value to any positive integer and then enable the jail.\n# systemctl enable fail2ban.service\n# systemctl start fail2ban.service\n8. Services – Sysstat to Collect Performance Activity\nSysstat may provide useful insight into system usage and performance, however, unless used, the service should be disabled, or not installed at all.\n# yum install sysstat\n# systemctl enable sysstat.service\n# systemctl start sysstat.service\nRéférences\nOpenSCAP Security Guide\nNSA Guide to the Secure Configuration of Red Hat Enterprise Linux 5\nhttps://highon.coffee/blog/security-harden-centos-7/\nhttps://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/\nhttps://www.openssh.com/releasenotes.html\nSecure Secure Shell\nWhat is pam_faillock and how to use it in Red Hat Enterprise Linux\nRevision\nThis guide was last updated on 26/03/2018.","html":"<p>port    = ssh\nenabled = true\nignoreip = 10.8.8.61\nbantime  = 600\nmaxretry = 5\nIf you run SSH on a non-default port, you can change the port value to any positive integer and then enable the jail.\n# systemctl enable fail2ban.service\n# systemctl start fail2ban.service\n8. Services – Sysstat to Collect Performance Activity\nSysstat may provide useful insight into system usage and performance, however, unless used, the service should be disabled, or not installed at all.\n# yum install sysstat\n# systemctl enable sysstat.service\n# systemctl start sysstat.service\nRéférences\nOpenSCAP Security Guide\nNSA Guide to the Secure Configuration of Red Hat Enterprise Linux 5\nhttps://highon.coffee/blog/security-harden-centos-7/\nhttps://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/\nhttps://www.openssh.com/releasenotes.html\nSecure Secure Shell\nWhat is pam_faillock and how to use it in Red Hat Enterprise Linux\nRevision\nThis guide was last updated on 26/03/2018.</p>"},{"id":"text-186","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Ce guide est basé sur une installation minimale de CentOS 7 selon l’idée que vous n’installez que les logiciels dont vous avez besoin. \nPour ceux qui connaissent OpenSCAP, vous remarquerez le guide divisé en deux sections principales: Paramètres du système et Services. La première partie contient des règles qui vérifient les paramètres du système, tandis que la seconde partie vise à renforcer les services.\nUne clause de non-responsabilité générale s&#39;applique: n&#39;implémentez pas les modifications dans les systèmes de production à moins que vous ne compreniez ce qu&#39;elles font.\n1. Paramètres système &#8211; Partitionnement de disque et post-installation\n1.1 Cryptage de disque avec kickstart\nLe moyen le plus simple de chiffrer une partition est lors de l&#39;installation de Kickstart.\nCeci peut être réalisé en ajoutant le –Crypté et –Passphrase = options à la définition d&#39;un volume physique LVM.\nNotre modèle de Kickstart est fourni ci-dessous. Notez que le modèle nécessite un disque de 32 Go.\n# version = CentOS7.5"},{"id":"text-2","heading":"Text","content":"# Informations d&#39;autorisation du système"},{"id":"text-3","heading":"Text","content":"auth --enableshadow --passalgo = sha512\n# Utiliser le support d&#39;installation du CD-ROM"},{"id":"text-4","heading":"Text","content":"CD ROM"},{"id":"text-5","heading":"Text","content":"ignoredisk --only-use = sda"},{"id":"text-6","heading":"Text","content":"# Disposition du clavier"},{"id":"text-7","heading":"Text","content":"clavier --vckeymap = gb --xlayouts = &#39;gb&#39;\n# Langue du système"},{"id":"text-8","heading":"Text","content":"lang en_GB.UTF-8\n# SELinux"},{"id":"text-9","heading":"Text","content":"selinux - en vigueur"},{"id":"text-10","heading":"Text","content":"# Informations sur le réseau"},{"id":"text-11","heading":"Text","content":"réseau --bootproto = dhcp --device = eth0 --onboot = on --activate\nréseau --hostname = ks-c7.example.com"},{"id":"text-12","heading":"Text","content":"# Mot de passe root en clair: PleaseChangeMe"},{"id":"text-13","heading":"Text","content":"rootpw --iscrypted $ 6 $ nS0mBJyS $ q / QgCof5unWrT9W3qngTISueSDhDHVNntDqd8sOcgmHp2lq4f / niUbjCmoEzaf3EWQ2x3z / k0eIZaOxkfNtJw\n# Fuseau horaire du système"},{"id":"text-14","heading":"Text","content":"fuseau horaire Europe / London --isUtc\n# Configuration du chargeur de démarrage du système"},{"id":"text-15","heading":"Text","content":"chargeur de démarrage --location = mbr --boot-drive = sda --timeout = 3\n# Informations de nettoyage de partition"},{"id":"text-16","heading":"Text","content":"clearpart --all --drives = sda\nzerombr"},{"id":"text-17","heading":"Text","content":"# Informations de partitionnement de disque\n#\n# Votre disque doit faire 32 Go: 1 Go pour / boot et 30 Go pour le volume physique.\n#\n# Journal pour le démarrage n&#39;est pas nécessaire donc ext2"},{"id":"text-18","heading":"Text","content":"part / boot --fstype = &quot;ext2&quot; --ondisk = sda --size = 1024 --label = boot --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;"},{"id":"text-19","heading":"Text","content":"# La ligne ci-dessous créera un volume physique de 30 Go"},{"id":"text-20","heading":"Text","content":"part pv.01 --fstype = &quot;lvmpv&quot; --ondisk = sda --size = 30720 --encrypted --passphrase = PleaseChangeMeToSomethingElse\nvolgroup vg_crypto pv.01"},{"id":"text-21","heading":"Text","content":"# Besoin de pouvoir réduire les systèmes de fichiers donc ext4 sur xfs par défaut"},{"id":"text-22","heading":"Text","content":"logvol / --fstype = &quot;ext4&quot; --size = 6144 --vgname = vg_crypto --name = lv_root --mkfsoptions = &quot;- m 1&quot;\nlogvol / home --fstype = &quot;ext4&quot; --size = 2048 --vgname = vg_crypto --name = lv_home --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid&quot;\nlogvol / var --fstype = &quot;ext4&quot; --size = 4096 --vgname = vg_crypto --name = lv_var --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nosuid&quot;\nlogvol / var / log --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-log --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / log / audit --fstype = &quot;ext4&quot; --size = 512 --vgname = vg_crypto --name = lv_var-aud --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, noexec , nosuid &quot;\nlogvol / var / tmp --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-tmp --mkfsoptions = &quot;- m 1&quot; --fsoptions = &quot;rw, nodev, noexec, nosuid &quot;\nlogvol / var / www --fstype = &quot;ext4&quot; --size = 1024 --vgname = vg_crypto --name = lv_var-www --mkfsoptions = &quot;- m 0&quot; --fsoptions = &quot;rw, nodev, nosuid&quot;\nlogvol swap --fstype = &quot;swap&quot; --size = 512 --vgname = vg_crypto --name = lv_swap --fsoptions = &quot;swap&quot;"},{"id":"text-23","heading":"Text","content":"%paquets\n@coeur"},{"id":"text-24","heading":"Text","content":"%fin\n1.2 Schéma de partitionnement\nGardez les partitions suivantes séparées: /démarrage, /maison, / tmp, / var, / var / log, / var / tmp, / var / log / audit, / var / www.\nLe fait de les placer dans leurs propres partitions donne plus de contrôle sur les options de montage. Cela garantit également que le système ne peut pas être arrêté en raison de l’espace disque insuffisant sur une partition.\nSe séparer /opter dépend d&#39;une configuration et n&#39;est généralement pas utile, mais non plus nuisible.\n1.3 Post-installation\nSauvegarder un en-tête LUKS, où / dev / sda2 est la partition chiffrée de LUKS:\n# cryptsetup luksHeaderBackup / dev / sda2 --header-backup-file /root/luks-header.backup\nAssurez-vous que le fichier de sauvegarde est stocké hors site, puis supprimé du serveur.\nAssurez-vous que le système est à jour:\n# miam mise à jour\nSupprimez les packages dont vous n’avez pas besoin sur un serveur, par exemple firmware des cartes son, firmware de WinTV, pilotes sans fil, etc.\n# yum remove alsa- * ivtv- * iwl * firmware aic94xx-firmware\n2. Paramètres système &#8211; Autorisations de fichiers et masques\n2.1 Limiter les options de montage de partition\nLes partitions doivent avoir des options de montage renforcées:"},{"id":"text-25","heading":"Text","content":"/démarrage &#8211; rw, nodev, noexec, nosuid\n/maison &#8211; rw, nodev, nosuid\n/ tmp &#8211; rw, nodev, noexec, nosuid\n/ var &#8211; rw, nosuid\n/ var / log &#8211; rw, nodev, noexec, nosuid\n/ var / log / audit &#8211; rw, nodev, noexec, nosuid\n/ var / www &#8211; rw, nodev, nosuid"},{"id":"text-26","heading":"Text","content":"En règle générale, les applications malveillantes écrivent généralement sur / tmp et ensuite essayer d&#39;exécuter tout ce qui était écrit. Un moyen d&#39;éviter cela est de monter / tmp sur une partition séparée avec les options noexec, Nodev et nosuid activée.\nCela empêchera l&#39;exécution binaire de / tmp, désactivez tout binaire en tant que suid root et désactivez la création de tout bloc de périphériques.\nLe lieu de stockage / var / tmp devrait être lié à monté / tmp, car il n’est pas nécessaire d’avoir plusieurs emplacements pour le stockage temporaire:\n/ tmp / var / tmp none, nodev, noexec, nosuid, bind 0 0\nLa même chose s&#39;applique à la mémoire partagée / dev / shm:\ntmpfs / dev / shm tmpfs rw, nodev, noexec, nosuid 0 0\nLe pseudo-système de fichiers proc / proc devrait être monté avec caché. Lorsque vous définissez hidepid sur 2, les entrées de répertoires dans / proc sera caché.\nproc / proc proc rw, hidepid = 2 0 0\nDurcissez les supports amovibles en ajoutant Nodev, noexec et nosuid, par exemple.:\n/ dev / cdrom / mnt / cdrom iso9660 ro, noexec, nosuid, nodev, noauto 0 0\n2.2 Restreindre le montage et le démontage dynamiques de systèmes de fichiers\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf pour désactiver les systèmes de fichiers inhabituels:\ninstaller cramfs / bin / true\ninstaller freevxfs / bin / true\ninstaller jffs2 / bin / true\ninstaller hfs / bin / true\ninstaller hfsplus / bin / true\ninstaller squashfs / bin / true\ninstaller udf / bin / true\nSelon la configuration (si vous n’exécutez pas de grappes, NFS, CIFS, etc.), vous pouvez également désactiver les éléments suivants:\ninstaller fat / bin / true\ninstaller vfat / bin / true\ninstaller cifs / bin / true\ninstaller nfs / bin / true\ninstaller nfsv3 / bin / true\ninstaller nfsv4 / bin / true\ninstaller gfs2 / bin / true\nIl est sage de laisser ext4, xfs et btrfs activés à tout moment.\n2.3 Empêcher les utilisateurs de monter un stockage USB\nAjouter ce qui suit à /etc/modprobe.d/hardening.conf Pour désactiver le chargement de modprobe des pilotes de stockage USB et FireWire:\nliste noire usb-storage\nliste noire firewire-core\ninstaller usb-storage / bin / true\nDésactiver l&#39;autorisation USB. Créer un fichier /opt/usb-auth.sh avec le contenu suivant:\n#! / bin / bash\necho 0&gt; / sys / bus / usb / devices / usb1 / autorisé\necho 0&gt; / sys / bus / usb / devices / usb1 / registered_default\nSi plusieurs périphériques USB sont disponibles, ajoutez-les tous. Créer un fichier de service /etc/systemd/system/usb-auth.service avec le contenu suivant:\n[Unit]"},{"id":"text-27","heading":"Text","content":"Description = Désactiver l&#39;authentification USB\nDefaultDependencies = no"},{"id":"text-28","heading":"Text","content":"[Service]\nType = coup unique\nExecStart = / bin / bash /opt/usb-auth.sh"},{"id":"text-29","heading":"Text","content":"[Install]\nWantedBy = multi-user.target\nDéfinissez les autorisations, activez et démarrez le service:\n# chmod 0700 /opt/usb-auth.sh\n# systemctl enable usb-auth.service\n# systemctl start usb-auth.service\nSi nécessaire, désactivez la prise en charge du noyau pour USB via la configuration du chargeur de démarrage. Pour ce faire, ajoutez nousb à la ligne de noyau GRUB_CMDLINE_LINUX dans / etc / default / grub et générez le fichier de configuration Grub2:\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nNotez que la désactivation de toute la prise en charge du noyau pour USB causera probablement des problèmes pour les systèmes dotés de claviers USB, etc.\n2.4 Restreindre les programmes à partir de schémas d&#39;exécution dangereux\nConfigurer /etc/sysctl.conf avec ce qui suit:\n# Désactiver les core dumps"},{"id":"text-30","heading":"Text","content":"fs.suid_dumpable = 0"},{"id":"text-31","heading":"Text","content":"# Désactiver la fonctionnalité de débogage des requêtes système"},{"id":"text-32","heading":"Text","content":"kernel.sysrq = 0"},{"id":"text-33","heading":"Text","content":"# Restreindre l&#39;accès aux journaux du noyau"},{"id":"text-34","heading":"Text","content":"kernel.dmesg_restrict = 1"},{"id":"text-35","heading":"Text","content":"# Activer la protection ExecShield - non disponible sur CentOS 7"},{"id":"text-36","heading":"Text","content":"# kernel.exec-shield = 1"},{"id":"text-37","heading":"Text","content":"# Randomise l&#39;espace mémoire"},{"id":"text-38","heading":"Text","content":"kernel.randomize_va_space = 2"},{"id":"text-39","heading":"Text","content":"# Masquer les pointeurs du noyau"},{"id":"text-40","heading":"Text","content":"kernel.kptr_restrict = 2\nCharger les paramètres sysctl:\n# sysctp -p\n2.5 Set UMASK 027\nLes fichiers suivants nécessitent le renforcement de umask: / etc / bashrc, /etc/csh.cshrc, /etc/init.d/functions et / etc / profile.\nSed one-liner:\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / bashrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/csh.cshrc\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; / etc / profile\n# sed -i -e &#39;/ umask 022 / umask 027 / g&#39; -e &#39;/ umask 002 / umask 027 / g&#39; /etc/init.d/functions\n2.6 Désactiver les core dumps\nOuvrir /etc/security/limits.conf et définissez les éléments suivants:\n* noyau dur 0\n2.7 Fixer des limites de sécurité pour empêcher les dénis de service\nAjouter ce qui suit à /etc/security/limits.conf pour appliquer des limites de sécurité sensibles:\n# 4096 est un bon point de départ"},{"id":"text-41","heading":"Text","content":"* nofile souple 4096\n* nofile dur 65536\n* soft nproc 4096\n* dur nproc 4096\n* Soft Locks 4096\n* serrures dures 4096\n* pile souple 10240\n* pile dure 32768\n* Soft Memlock 64\n* memlock difficile 64\n* maxlogins durs 10"},{"id":"text-42","heading":"Text","content":"# Soft limite 32 Go, 64 Go dur"},{"id":"text-43","heading":"Text","content":"* taille douce 33554432\n* taille dure 67108864"},{"id":"text-44","heading":"Text","content":"# Limites pour root"},{"id":"text-45","heading":"Text","content":"racine molle nofile 4096\nracine dure nofile 65536\nracine douce nproc 4096\nracine dure nproc 4096\npile logicielle racine 10240\nracine dure pile 32768\nracine molle fsize 33554432\n2.8 Vérifier les autorisations des fichiers\nAssurez-vous que tous les fichiers appartiennent à un utilisateur:\n# find / -ignore_readdir_race -nouser -print -exec racine chown  ;\nAssurez-vous que tous les fichiers appartiennent à un groupe:\n# find / -ignore_readdir_race -nogroup -print -exec chgrp root  ;\nSi nécessaire, un chemin spécifique peut être exclu de la recherche, par exemple:\n# find / -ignore_readdir_race -not -path &quot;/ proc / *&quot; -nouser -print -exec chown root  ;\nAutomatiser le processus en créant un fichier cron /etc/cron.daily/unowned_files avec le contenu suivant:\n#! / bin / bash\nfind / -ignore_readdir_race  (-nouser -print -exec chown root  ; ),  (-nogroup -print -exec chgrp root  ; )\nDéfinir la propriété et les autorisations:\n# racine chown: root /etc/cron.daily/unowned_files\n# chmod 0700 /etc/cron.daily/unowned_files\n2.9 Surveiller les fichiers SUID / GUID\nRecherchez les fichiers setuid / setgid et identifiez-les si tous sont requis:\n# find / -xdev -type f -perm -4000 -o -perm -2000\n3. Paramètres système &#8211; Configuration du pare-feu et du réseau\n3.1 Pare-feu\nSi vous définissez la zone de pare-feu par défaut à supprimer, tous les paquets qui ne sont pas explicitement autorisés à être rejetés.\n# sed -i &quot;s / DefaultZone =. * / DefaultZone = déposer / g&quot; /etc/firewalld/firewalld.conf\nSauf si firewalld est requis, masquez-le et remplacez-le par iptables:\n# systemctl stop firewalld.service\n# systemctl mask firewalld.service\n# systemctl daemon-reload\n# miam installe iptables-services\n# systemctl enable iptables.service ip6tables.service\nAjouter ce qui suit à / etc / sysconfig / iptables pour n&#39;autoriser que le trafic sortant minimal (DNS, NTP, HTTP / S et SMTPS):\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PASSEMENT ACCEPTER\n-P FORWARD DROP\n-P OUTPUT ACCEPT\n-A INPUT -i lo -m commentaire - commentaire local -j ACCEPTER\n-A INPUT -d 127.0.0.0/8! -i lo -j REJECT - rejette-avec icmp-port-inaccessible\n-A INPUT -m conntrack --ctstate CONNEXE, ÉTABLI -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 10.0.0.0/8 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 172.16.0.0/12 -j ACCEPTER\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 22 -s 192.168.0.0/16 -j ACCEPT\n-A INPUT -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 22 -j ACCEPTER\n-Une entrée -j DROP\n-A SORTIE -d 127.0.0.0/8 -o lo -m commentaire - commentaire local -j ACCEPTER\n-A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT\n-A SORTIE -p icmp -m icmp --icmp-type quelconque -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU --dport 53 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 53 -j ACCEPTER\n-A SORTIE -p udp -m udp -m conntrack --ctstate NOUVEAU - rapport 123 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 80 -j ACCEPT\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU --dport 443 -j ACCEPTER\n-A SORTIE -p tcp -m tcp -m conntrack --ctstate NOUVEAU - rapport 587 -j ACCEPTER\n-A SORTIE -j LOG - préfixe-journal &quot;iptables_output&quot;\n-A SORTIE -j REJET - rejette-avec icmp-port-inaccessible\nCOMMETTRE\nNotez que la règle autorisant tout le trafic SSH entrant doit être supprimée, limitant l&#39;accès à une liste blanche IP uniquement ou masquant SSH derrière un VPN.\nIdéalement, les règles sortantes devraient être renforcées en limitant l&#39;accès aux serveurs DNS, NTP et SMTP locaux uniquement. Si un système de correctif local est utilisé (par exemple, Red Hat Satellite), le trafic HTTP / S peut également être renforcé, en fonction de la configuration.\nAjouter ce qui suit à / etc / sysconfig / ip6tables refuser tout IPv6:\n*filtre\n-F INPUT\n-F SORTIE\n-F EN AVANT\n-PUT ENTREE DROP\n-P FORWARD DROP\n-P SORTIE DROP\nCOMMETTRE\nAppliquer les configurations:\n# iptables-restore &lt;/ etc / sysconfig / iptables\n# ip6tables-restore &lt;/ etc / sysconfig / ip6tables\n3.2 TCP Wrappers\nOuvrir /etc/hosts.allow et autoriser le trafic localhost et SSH:\nTOUS: 127.0.0.1\nsshd: ALL\nLe fichier /etc/hosts.deny devrait être configuré pour tout refuser par défaut:\nTOUS: TOUS\n3.3 Paramètres du noyau qui affectent la mise en réseau\nOuvrir /etc/sysctl.conf et ajoutez ce qui suit:\n# Désactiver le transfert de paquets"},{"id":"text-46","heading":"Text","content":"net.ipv4.ip_forward = 0"},{"id":"text-47","heading":"Text","content":"# Désactive les redirections, pas un routeur"},{"id":"text-48","heading":"Text","content":"net.ipv4.conf.all.accept_redirects = 0\nnet.ipv4.conf.default.accept_redirects = 0\nnet.ipv4.conf.all.send_redirects = 0\nnet.ipv4.conf.default.send_redirects = 0\nnet.ipv4.conf.all.secure_redirects = 0\nnet.ipv4.conf.default.secure_redirects = 0\nnet.ipv6.conf.all.accept_redirects = 0\nnet.ipv6.conf.default.accept_redirects = 0"},{"id":"text-49","heading":"Text","content":"# Désactiver le routage source"},{"id":"text-50","heading":"Text","content":"net.ipv4.conf.all.accept_source_route = 0\nnet.ipv4.conf.default.accept_source_route = 0\nnet.ipv6.conf.all.accept_source_route = 0"},{"id":"text-51","heading":"Text","content":"# Activer la validation de la source par chemin inversé"},{"id":"text-52","heading":"Text","content":"net.ipv4.conf.all.rp_filter = 1\nnet.ipv4.conf.default.rp_filter = 1"},{"id":"text-53","heading":"Text","content":"# Journalise les paquets avec des adresses impossibles dans le journal du noyau"},{"id":"text-54","heading":"Text","content":"net.ipv4.conf.all.log_martians = 1\nnet.ipv4.conf.default.log_martians = 1"},{"id":"text-55","heading":"Text","content":"# Désactiver les diffusions ICMP"},{"id":"text-56","heading":"Text","content":"net.ipv4.icmp_echo_ignore_broadcasts = 1"},{"id":"text-57","heading":"Text","content":"# Ignorer les erreurs fictives ICMP"},{"id":"text-58","heading":"Text","content":"net.ipv4.icmp_ignore_bogus_error_responses = 1"},{"id":"text-59","heading":"Text","content":"# Contre les attaques par inondation SYN"},{"id":"text-60","heading":"Text","content":"net.ipv4.tcp_syncookies = 1"},{"id":"text-61","heading":"Text","content":"# La désactivation des horodatages peut améliorer la sécurité mais dégrader les performances.\n# Les horodatages TCP sont utilisés pour améliorer les performances et se protéger contre\n# Les paquets en retard perturbent votre flux de données. Un effet secondaire de cette fonctionnalité est\n# que le temps de disponibilité de l&#39;hôte peut parfois être calculé.\n# Si vous désactivez les horodatages TCP, vous devriez vous attendre à de moins bonnes performances.\n# et des connexions moins fiables."},{"id":"text-62","heading":"Text","content":"net.ipv4.tcp_timestamps = 1"},{"id":"text-63","heading":"Text","content":"# Désactiver IPv6 sauf si requis"},{"id":"text-64","heading":"Text","content":"net.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1"},{"id":"text-65","heading":"Text","content":"# Ne pas accepter les annonces de routeur"},{"id":"text-66","heading":"Text","content":"net.ipv6.conf.all.accept_ra = 0\nnet.ipv6.conf.default.accept_ra = 0\n3.4 Modules de noyau qui affectent la mise en réseau\nOuvrir /etc/modprobe.d/hardening.conf et désactivez les modules du noyau Bluetooth:\ninstaller bnep / bin / true\ninstaller bluetooth / bin / true\ninstaller btusb / bin / true\ninstaller net-pf-31 / bin / true\nDésactivez également AppleTalk:\ninstaller appletalk / bin / true\nSi nécessaire, désactivez la prise en charge d&#39;IPv6:\noptions ipv6 désactiver = 1\nDésactiver les protocoles (rares):\ninstaller dccp / bin / true\ninstallez sctp / bin / true\ninstaller rds / bin / true\ninstaller tipc / bin / true\nPuisque nous examinons la sécurité des serveurs, le sans fil ne devrait pas être un problème, nous pouvons donc désactiver tous les pilotes sans fil.\n# pour i dans $ (trouver / lib / modules / $ (uname -r) / kernel / drivers / net / wireless -name &quot;* .ko&quot; -type f);\n  echo blacklist &quot;$ i&quot; &gt;&gt; / etc / modprobe.d / hardening-wireless.conf; done\n3.5 Désactiver les radios\nDésactiver les radios (wifi et wwan):\n# nmcli radio tout est éteint\n3.6 Désactiver le réseau Zeroconf\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNOZEROCONF = oui\n3.7 Désactiver l&#39;utilisation de l&#39;interface IPv6 par l&#39;interface\nOuvrir / etc / sysconfig / network et ajoutez ce qui suit:\nNETWORKING_IPV6 = no\nIPV6INIT = no\n3.8 renifleur de réseau\nLe serveur ne doit pas agir comme un renifleur réseau et une capture de packages. Exécutez ce qui suit pour déterminer si une interface est en cours d&#39;exécution en mode promiscuous:\n# lien ip | grep PROMISC\n3.9 Connexion VPN sécurisée\nInstallez le paquet libreswan si la mise en oeuvre de IPSec et IKE est requise.\n# miam installer libreswan\n3.10 Désactiver le client DHCP\nL&#39;attribution manuelle d&#39;adresses IP offre un degré de gestion supérieur.\nPour chaque interface réseau disponible sur le serveur, ouvrez un fichier correspondant. / etc / sysconfig / network-scripts / ifcfg-interface    et configurez les paramètres suivants:\nBOOTPROTO = aucun\nIPADDR =\nNETMASK =\nPASSERELLE =\n4. Paramètres système &#8211; SELinux\nAssurez-vous que SELinux n&#39;est pas désactivé dans / etc / default / grubet vérifiez que l&#39;état applique:\n# sestatus\n5. Paramètres système &#8211; Contrôle de compte et d&#39;accès\n5.1 Supprimer les comptes et les groupes inutilisés\nSupprimez tout compte non requis, par exemple:\n# userdel -r adm\n# userdel -r ftp\n# userdel -r jeux\n# userdel -r lp\nSupprimer tout groupe non requis, par exemple:\n# jeux groupdel\n5.2 Désactiver la connexion root directe\n# echo&gt; / etc / securetty\n5.3 Activer la stratégie de mot de passe sécurisé (haute qualité)\nNotez que lancer authconfig va écraser les fichiers de configuration PAM détruisant les modifications apportées manuellement. Assurez-vous que vous avez un sauvegarde.\nLes règles de stratégie de mot de passe sécurisé sont décrites ci-dessous."},{"id":"text-67","heading":"Text","content":"Longueur minimale du mot de passe &#8211; 16.\nNombre minimum de classes de caractères dans un mot de passe &#8211; 4.\nNombre maximum de mêmes caractères consécutifs dans un mot de passe &#8211; 2.\nNombre maximal de caractères consécutifs de la même classe dans un mot de passe &#8211; 2.\nExigez au moins une lettre minuscule et une lettre majuscule dans un mot de passe.\nExiger au moins un chiffre dans un mot de passe.\nExiger au moins un autre caractère dans un mot de passe."},{"id":"text-68","heading":"Text","content":"La commande suivante activera SHA512 et définira les exigences de mot de passe ci-dessus:\n# authconfig --passalgo = sha512 \n --passminlen = 16 \n --passminclass = 4 \n --passmaxrepeat = 2 \n --passmaxclassrepeat = 2 \n --enablereqlower \n --enablerequpper \n --enablereqdigit \n --enablereqother \n --mettre à jour\nOuvrir /etc/security/pwquality.conf et ajoutez ce qui suit:\ndifok = 8\ngecoscheck = 1\nCela garantira que 8 caractères du nouveau mot de passe ne seront pas présents dans l&#39;ancien mot de passe et vérifiera les mots de la chaîne GECOS de mot de passe de l&#39;utilisateur.\n5.4 Empêcher la connexion à des comptes avec un mot de passe vide\nSupprimer toutes les occurrences de nullok de /etc/pam.d/system-auth et /etc/pam.d/password-auth pour empêcher les connexions avec des mots de passe vides.\nSed one-liner:\n# sed -i&#39;s / // g &#39;/etc/pam.d/system-auth /etc/pam.d/system-auth-ac\n# sed -i&#39;s / // g &#39;/etc/pam.d/password-auth /etc/pam.d/password-auth-ac\n5.5 Définir l&#39;expiration du compte après l&#39;inactivité\nDésactivez les comptes dès que le mot de passe a expiré.\nOuvrir / etc / default / useradd et définissez les éléments suivants:\nINACTIF = 0\nSed one-liner:\n# sed -i &#39;s / ^ INACTIVE. * / INACTIF = 0 /&#39; / etc / default / useradd\n5.6 Politique de mot de passe sécurisé\nOuvrir /etc/login.defs et définissez les éléments suivants:\nPASS_MAX_DAYS 60\nPASS_MIN_DAYS 1\nPASS_MIN_LEN 14\nPASS_WARN_AGE 14\nSed one-liner:\n# sed -i -e &#39;/ ^ PASS_MAX_DAYS. * / PASS_MAX_DAYS 60 /&#39; \n  -e &#39;s / ^ PASS_MIN_DAYS. * / PASS_MIN_DAYS 1 /&#39; \n  -e &#39;s / ^ PASS_MIN_LEN. * / PASS_MIN_LEN 14 /&#39; \n  -e &#39;s / ^ PASS_WARN_AGE. * / PASS_WARN_AGE 14 /&#39; /etc/login.defs\n5.7 Journal des tentatives de connexion infructueuses\nOuvrir /etc/login.defs et activer la journalisation:\nFAILLOG_ENAB oui\nAjoutez également un délai en secondes avant de pouvoir effectuer une autre tentative après un échec de connexion:\nFAIL_DELAY 4\n5.8 S&#39;assurer que les répertoires de base sont créés pour les nouveaux utilisateurs\nOuvrir /etc/login.defs et configurer:\nCREATE_HOME oui\n5.9 Vérifier que tous les mots de passe du compte sont masqués\nLa commande ci-dessous devrait renvoyer «x»:\n# cut -d: -f2 / etc / passwd | uniq\n5.10 Définir le délai de refus et de verrouillage pour les tentatives de mot de passe infructueuses\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nAjoutez la ligne suivante immédiatement après le pam_unix.so déclaration dans le AUTH section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\nauth [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nAjouter la ligne suivante immédiatement avant le pam_unix.so déclaration dans le COMPTE section de /etc/pam.d/system-auth et /etc/pam.d/password-auth:\ncompte requis pam_faillock.so\nLe contenu du fichier /etc/pam.d/system-auth peut être vu ci-dessous.\n#% PAM-1.0"},{"id":"text-69","heading":"Text","content":"auth requis pam_env.so\nauth requis pam_faillock.so preauth silencieux deny = 3 unlock_time = 900 fail_interval = 900\nautorisation suffisante pam_unix.so try_first_pass\nauth        [default=die] pam_faillock.so authfail deny = 3 unlock_time = 900 fail_interval = 900\nautorisation requise pam_succeed_if.so uid&gt; = 1000 quiet_success\nauth requis pam_deny.so"},{"id":"text-70","heading":"Text","content":"compte requis pam_faillock.so\ncompte requis pam_unix.so\ncompte suffisant pam_localuser.so\ncompte suffisant pam_succeed_if.so uid &lt;1000 silencieux\ncompte requis pam_permit.so"},{"id":"text-71","heading":"Text","content":"mot de passe requis pam_pwquality.so try_first_pass local_users_only retry = 3 authtok_type =\nmot de passe suffisant pam_unix.so sha512 shadow try_first_pass use_authtok rappelez-vous = 5\nmot de passe requis pam_deny.so"},{"id":"text-72","heading":"Text","content":"session facultative pam_keyinit.so révoquer\nsession requise pam_limits.so\n-session optionnel pam_systemd.so\nsession     [success=1 default=ignore] pam_succeed_if.so service dans crond quiet use_uid\nsession requise pam_unix.so\nDe plus, n&#39;autorisez pas les utilisateurs à réutiliser des mots de passe récents en ajoutant le rappelles toi option.\nFaire /etc/pam.d/system-auth et /etc/pam.d/password-auth configurations immuables pour qu’elles ne soient pas écrasées lors de l’exécution d’authconfig:\n# chattr + i /etc/pam.d/system-auth /etc/pam.d/password-auth\nLes comptes seront verrouillés après 3 tentatives de connexion infructueuses:\ns&#39;identifier[]: pam_faillock (login: auth): échecs de connexion consécutifs pour le compte utilisateur tomas temporairement bloqué \nUtilisez ce qui suit pour effacer le nombre d’échecs de l’utilisateur:\n# faillock --user tomas --reset\n5.11 Définir le mot de passe du chargeur d&#39;amorçage\nEmpêcher les utilisateurs d’entrer dans la ligne de commande grub et d’éditer les entrées du menu:\n# grub2-setpassword\n# grub2-mkconfig -o / boot/grub2/grub.cfg\nCela va créer le fichier /boot/grub2/user.cfg s&#39;il n&#39;y en a pas déjà un, qui contiendra le mot de passe haché du chargeur de démarrage Grub2.\nVérifier les autorisations de /boot/grub2/grub.cfg:\n# chmod 0600 /boot/grub2/grub.cfg\n5.12 Mode utilisateur unique protégé par mot de passe\nLe mode utilisateur unique CentOS 7 est protégé par mot de passe par le mot de passe root par défaut dans le cadre de la conception de Grub2 et de systemd.\n5.13 Assurer que les utilisateurs s&#39;authentifient de nouveau pour l&#39;escalade des privilèges\nLa balise NOPASSWD permet à un utilisateur d’exécuter des commandes à l’aide de sudo sans devoir fournir de mot de passe. Bien que cela puisse parfois être utile, il est également dangereux.\nAssurez-vous que la balise NOPASSWD n’existe pas dans / etc / sudoers fichier de configuration ou /etc/sudoers.d/.\n5.14 Écrans multiples de la console et verrouillage de la console\nInstallez le package d&#39;écran pour pouvoir émuler plusieurs fenêtres de console:\n# yum install screen\nInstallez le paquet vlock pour activer le verrouillage de l’écran de la console:\n# miam installer vlock\n5.15 Désactiver l&#39;activation de redémarrage Ctrl-Alt-Suppr\nEmpêcher un utilisateur de la console connecté localement de redémarrer le système lorsque vous appuyez sur Ctrl-Alt-Suppr:\n# systemctl mask ctrl-alt-del.target\n5.16 Bannières d&#39;avertissement pour l&#39;accès au système\nAjouter la ligne suivante aux fichiers / etc / issue et /etc/issue.net:\nAccès non autorisé interdit. Les journaux sont enregistrés et surveillés.\n5.17 Définir le délai d&#39;expiration de la session interactive\nOuvrir / etc / profile Et mettre:\nen lecture seule TMOUT = 900\n5.18 Authentification à deux facteurs\nLa version récente du serveur OpenSSH permet de chaîner plusieurs méthodes d&#39;authentification, ce qui signifie qu&#39;elles doivent toutes être satisfaites pour qu&#39;un utilisateur puisse se connecter avec succès.\nAjout de la ligne suivante à / etc / ssh / sshd_config nécessiterait que l&#39;utilisateur s&#39;authentifie d&#39;abord avec une clé, puis fournisse également un mot de passe.\nAuthenticationMethods publickey, mot de passe\nIl s’agit par définition d’une authentification à deux facteurs: le fichier de clé est une propriété de l’utilisateur et le mot de passe du compte est connu de l’utilisateur.\nL&#39;authentification à deux facteurs pour SSH peut également être configurée à l&#39;aide de Google Authenticator.\n5.19 Configurer la taille du fichier d&#39;historique\nOuvrir / etc / profile et définissez le nombre de commandes à mémoriser dans l&#39;historique des commandes à 5000:\nHISTSIZE = 5000\nSed one-liner:\n# sed -i&#39;s / HISTSIZE =. * / HISTSIZE = 5000 / g &#39;/ etc / profile\n6. Paramètres système &#8211; Comptabilité système avec auditd\n6.1 Configuration auditée\nOuvrir /etc/audit/auditd.conf et configurez les éléments suivants:\nlocal_events = yes\nwrite_logs = yes\nlog_file = /var/log/audit/audit.log\nmax_log_file = 25\nnum_logs = 10\nmax_log_file_action = rotation\nspace_left = 30\nspace_left_action = email\nadmin_space_left = 10\nadmin_space_left_action = email\ndisk_full_action = suspendre\ndisk_error_action = suspendre\naction_mail_acct = [email protected]\nflush = data\nLa configuration auditd ci-dessus ne doit jamais utiliser plus de 250 Mo d’espace disque (10 x 25 Mo = 250 Mo) sur / var / log / audit.\nEnsemble admin_space_left_action = single si vous souhaitez que le système passe en mode utilisateur unique pour une action corrective plutôt que d&#39;envoyer un courrier électronique.\nRotation automatique des bûches (max_log_file_action = rotation) minimise les chances que le système manque d’espace disque de manière inattendue en étant rempli de données de journal.\nNous devons nous assurer que les données d’événement d’audit sont entièrement synchronisées (flush = data) avec les fichiers de log sur le disque.\n6.2 Règles d&#39;audit\nLes règles d&#39;audit système doivent avoir le mode 0640 ou moins permissif et appartenir à l&#39;utilisateur root:\n# racine chown: root /etc/audit/rules.d/audit.rules\n# chmod 0640 /etc/audit/rules.d/audit.rules\nOuvrir /etc/audit/rules.d/audit.rules et ajoutez ce qui suit:\n# Supprimer toutes les règles actuellement chargées"},{"id":"text-73","heading":"Text","content":"-RÉ"},{"id":"text-74","heading":"Text","content":"# Définir la taille de la mémoire tampon du noyau"},{"id":"text-75","heading":"Text","content":"-b 8192"},{"id":"text-76","heading":"Text","content":"# Définit l&#39;action à effectuer lorsqu&#39;une erreur critique est détectée.\n# Modes d&#39;échec: 0 = silencieux 1 = printk 2 = panique"},{"id":"text-77","heading":"Text","content":"-f 1"},{"id":"text-78","heading":"Text","content":"# Record tente de modifier le fichier localtime"},{"id":"text-79","heading":"Text","content":"-w / etc / localtime -p wa -k audit_time_rules"},{"id":"text-80","heading":"Text","content":"# Enregistrer des événements qui modifient les informations utilisateur / groupe"},{"id":"text-81","heading":"Text","content":"-w / etc / group -p wa -k audit_rules_usergroup_modification\n-w / etc / passwd -p wa -k audit_rules_usergroup_modification\n-w / etc / gshadow -p wa -k audit_rules_usergroup_modification\n-w / etc / shadow -p wa -k audit_rules_usergroup_modification\n-w / etc / security / opasswd -p wa -k audit_rules_usergroup_modification"},{"id":"text-82","heading":"Text","content":"# Enregistrer des événements qui modifient l&#39;environnement réseau du système"},{"id":"text-83","heading":"Text","content":"-w /etc/issue.net -p wa -k audit_rules_networkconfig_modification\n-w / etc / issue -p wa -k audit_rules_networkconfig_modification\n-w / etc / hosts -p wa -k audit_rules_networkconfig_modification\n-w / etc / sysconfig / network -p wa -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b32 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification\n-a toujours, quittez -F arch = b64 -S nom_hôte -S nom_domaine_s -k audit_rules_networkconfig_modification"},{"id":"text-84","heading":"Text","content":"# Enregistrer des événements qui modifient les contrôles d&#39;accès obligatoires du système"},{"id":"text-85","heading":"Text","content":"-w / etc / selinux / -p wa -k MAC-policy"},{"id":"text-86","heading":"Text","content":"# Enregistrer les tentatives de modification des événements de connexion et de déconnexion"},{"id":"text-87","heading":"Text","content":"-w / var / log / tallylog -p wa -k connexions\n-w / var / log / lastlog -p wa -k connexions\n-w / var / run / faillock / -p wa -k connexions"},{"id":"text-88","heading":"Text","content":"# Enregistrer les tentatives de modification des informations de démarrage du processus et de la session"},{"id":"text-89","heading":"Text","content":"-w / var / log / btmp -p wa -k session\n-w / var / log / wtmp -p wa -k session\n-w / var / run / utmp -p wa -k session"},{"id":"text-90","heading":"Text","content":"# Assurez-audit auditd de collecter des informations sur le chargement et le déchargement des modules du noyau"},{"id":"text-91","heading":"Text","content":"-w / usr / sbin / insmod -p x -k modules\n-w / usr / sbin / modprobe -p x -k modules\n-w / usr / sbin / rmmod -p x -k modules\n-a toujours, quittez -F arch = b64 -S init_module -S delete_module -k modules"},{"id":"text-92","heading":"Text","content":"# S&#39;assurer que auditd collecte les actions de l&#39;administrateur système"},{"id":"text-93","heading":"Text","content":"-w / etc / sudoers -p wa -k actions\n-w /etc/sudoers.d/ -p wa -k actions"},{"id":"text-94","heading":"Text","content":"# Enregistrez les tentatives de modification du temps avec adjtimex"},{"id":"text-95","heading":"Text","content":"-a toujours, quittez -F arch = b32 -S adjtimex -S settimeofday -S temps -k audit_time_rules"},{"id":"text-96","heading":"Text","content":"# Record tentatives de changer le temps par settimeofday"},{"id":"text-97","heading":"Text","content":"-a toujours, quittez -F arch = b64 -S adjtimex -S settimeofday -k audit_time_rules"},{"id":"text-98","heading":"Text","content":"# Enregistrez les tentatives de modification de l&#39;heure via clock_settime"},{"id":"text-99","heading":"Text","content":"-a toujours, quitte -F arch = b32 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure"},{"id":"text-100","heading":"Text","content":"# Enregistrez les tentatives de modification de l&#39;heure via clock_settime"},{"id":"text-101","heading":"Text","content":"-a toujours, quitte -F arch = b64 -S clock_settime -F a0 = 0x0 -k changement d&#39;heure"},{"id":"text-102","heading":"Text","content":"# Enregistrer des événements qui modifient les contrôles d&#39;accès discrétionnaires du système"},{"id":"text-103","heading":"Text","content":"-a toujours, quittez -F arch = b32 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chmod -S fchmod -S fchmodat -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S chown -S fchown -S fchownat -S lchown -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod\n-a toujours, quittez -F arch = b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid&gt; = 1000 -F auid! = 4294967295 -k perm_mod"},{"id":"text-104","heading":"Text","content":"# S&#39;assurer que auditd collecte les tentatives d&#39;accès non autorisé aux fichiers (non réussi)"},{"id":"text-105","heading":"Text","content":"-a toujours, quittez -F arch = b32 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b32 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvert -S ouvert à -S ouvert_by_handle_at -S tronqué -S ftruncate -F sortie = -EACCES -F auid&gt; = 1000 -F auid! = 4294967295 -k accès\n-a toujours, quittez -F arch = b64 -S cré -S ouvrir -S ouvrirat -S open_by_handle_at -S tronquer -S ftronquer -F quitter = -EPERM -F auid&gt; = 1000 -F auid! = 4294967295 -k accès"},{"id":"text-106","heading":"Text","content":"# S&#39;assure que auditd collecte des informations sur l&#39;exportation vers le support (avec succès)"},{"id":"text-107","heading":"Text","content":"-a toujours, quittez -F arch = b32 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export\n-a toujours, quittez -F arch = b64 -S montage -F auid&gt; = 1000 -F auid! = 4294967295 -k export"},{"id":"text-108","heading":"Text","content":"# S&#39;assure que auditd collecte les événements de suppression de fichier par utilisateur"},{"id":"text-109","heading":"Text","content":"-a toujours, quittez -F arch = b32 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer\n-a toujours, quittez -F arch = b64 -S rmdir -S unlink -S unlinkat -S renommer -S renameat -F auid&gt; = 1000 -F auid! = 4294967295 -k supprimer"},{"id":"text-110","heading":"Text","content":"# Assurez-audit auditd de collecter des informations sur l&#39;utilisation de commandes privilégiées"},{"id":"text-111","heading":"Text","content":"-a toujours, sortie -F chemin = / usr / bin / chage -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / chcon -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privileged-priv_change\n-a toujours, quitte -F chemin = / usr / bin / chfn -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / chsh -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / crontab -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / gpasswd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / newgrp -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / passwd -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitter -F chemin = / usr / bin / pkexec -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / screen -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quittez -f chemin = / usr / bin / ssh-agent -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / sudo -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, quitte -F chemin = / usr / bin / sudoedit -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -F clé = privilégié\n-a toujours, quitter -F chemin = / usr / bin / su -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / umount -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / mur -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a toujours, sortie -F chemin = / usr / bin / écriture -F perm = x -F auid&gt; = 1000 -F auid! = 4294967295 -k privilégié\n-a always,exit -F path=/usr/lib64/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/restorecon -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -F key=privileged-priv_change\n-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged\n-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid&gt;=1000 -F auid!=4294967295 -k privileged"},{"id":"text-112","heading":"Text","content":"# Make the auditd configuration immutable.\n# The configuration can only be changed by rebooting the machine."},{"id":"text-113","heading":"Text","content":"-e 2\nThe auditd service does not include the ability to send audit records to a centralised server for management directly.\nIt does, however, include a plug-in for audit event multiplexor to pass audit records to the local syslog server.\nTo do so, open the file /etc/audisp/plugins.d/syslog.conf and set:\nactive = yes\nEnable and start the service:\n# systemctl enable auditd.service\n# systemctl start auditd.service\n6.3. Enable Kernel Auditing\nOuvrir /etc/default/grub and append the following parameter to the kernel boot line GRUB_CMDLINE_LINUX:\naudit=1\nUpdate Grub2 configuration to reflect changes:\n# grub2-mkconfig -o /boot/grub2/grub.cfg\n7. System Settings – Software Integrity Checking\n7.1 Advanced Intrusion Detection Environment (AIDE)\nInstall AIDE:\n# yum install aide\nBuild AIDE database:\n# /usr/sbin/aide --init\nBy default, the database will be written to the file /var/lib/aide/aide.db.new.gz.\n# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz\nStoring the database and the configuration file /etc/aide.conf (or SHA2 hashes of the files) in a secure location provides additional assurance about their integrity.\nCheck AIDE database:\n# /usr/sbin/aide --check\nBy default, AIDE does not install itself for periodic execution. Configure periodic execution of AIDE by adding to cron:\n# echo &quot;30 4 * * * root /usr/sbin/aide --check|mail -s &#39;AIDE&#39; [email protected]&quot; &gt;&gt; /etc/crontab\nPeriodically running AIDE is necessary in order to reveal system changes.\n7.2 Tripwire\nOpen Source Tripwire is an alternative to AIDE. It is recommended to use one or another, but not both.\nInstall Tripwire from the EPEL repository:\n# yum install epel-release\n# yum install tripwire\n# /usr/sbin/tripwire-setup-keyfiles\nThe Tripwire configuration file is /etc/tripwire/twcfg.txt and the policy file is /etc/tripwire/twpol.txt. These can be edited and configured to match the system Tripwire is installed on, see this blog post for more details.\nInitialise the database to implement the policy:\n# tripwire --init\nCheck for policy violations:\n# tripwire --check\nTripwire adds itself to /etc/cron.daily/ for daily execution therefore no extra configuration is required.\n7.3 Prelink\nPrelinking is done by the prelink package, which is not installed by default.\n# yum install prelink\nTo disable prelinking, open the file /etc/sysconfig/prelink and set the following:\nPRELINKING=no\nSed one-liner:\n# sed -i &#39;s/PRELINKING.*/PRELINKING=no/g&#39; /etc/sysconfig/prelink\nDisable existing prelinking on all system files:\n# prelink -ua\n8. System Settings – Logging and Message Forwarding\n8.1 Configure Persistent Journald Storage\nBy default, journal stores log files only in memory or a small ring-buffer in the directory /run/log/journal. This is sufficient to show recent log history with journalctl, but logs aren’t saved permanently. Enabling persistent journal storage ensures that comprehensive data is available after system reboot.\nOpen the file /etc/systemd/journald.conf and put the following:\n[Journal]"},{"id":"text-114","heading":"Text","content":"Storage=persistent"},{"id":"text-115","heading":"Text","content":"# How much disk space the journal may use up at most"},{"id":"text-116","heading":"Text","content":"SystemMaxUse=256M"},{"id":"text-117","heading":"Text","content":"# How much disk space systemd-journald shall leave free for other uses"},{"id":"text-118","heading":"Text","content":"SystemKeepFree=512M"},{"id":"text-119","heading":"Text","content":"# How large individual journal files may grow at most"},{"id":"text-120","heading":"Text","content":"SystemMaxFileSize=32M\nRestart the service:\n# systemctl daemon-reload\n# systemctl restart systemd-journald\n8.2 Configure Message Forwarding to Remote Server\nDepending on your setup, open /etc/rsyslog.conf and add the following to forward messages to a some remote server:\n*.* @graylog.example.com:514\nIci *.* représente facility.severity. Note that a single @ sends logs over UDP, where a double @ sends logs using TCP.\n8.3 Logwatch\nLogwatch is a customisable log-monitoring system.\n# yum install logwatch\nLogwatch adds itself to /etc/cron.daily/ for daily execution therefore no configuration is mandatory.\n9. System Settings – Security Software\n9.1 Malware Scanners\nInstall Rkhunter and ClamAV:\n# yum install epel-release\n# yum install rkhunter clamav clamav-update\n# rkhunter --update\n# rkhunter --propupd\n# freshclam -v\nRkhunter adds itself to /etc/cron.daily/ for daily execution therefore no configuration is required. ClamAV scans should be tailored to individual needs.\n9.2 Arpwatch\nArpwatch is a tool used to monitor ARP activity of a local network (ARP spoofing detection), therefore it is unlikely one will use it in the cloud, however, it is still worth mentioning that the tools exist.\nBe aware of the configuration file /etc/sysconfig/arpwatch which you use to set the email address where to send the reports.\n9.3 Commercial AV\nConsider installing a commercial AV product that provides real-time on-access scanning capabilities.\n9.4 Grsecurity\nGrsecurity is an extensive security enhancement to the Linux kernel. Although it isn’t free nowadays, the software is still worth mentioning.\nThe company behind Grsecurity stopped publicly distributing stable patches back in 2015, with an exception of the test series continuing to be available to the public in order to avoid impact to the Gentoo Hardened and Arch Linux communities.\nTwo years later, the company decided to cease free distribution of the test patches as well, therefore as of 2017, Grsecurity software is available to paying customers only.\n10. System Settings – OS Update Installation\nInstall the package yum-utils for better consistency checking of the package database.\n# yum install yum-utils\nConfigure automatic package updates via yum-cron.\n# yum install yum-cron\nAdd the following to /etc/yum/yum-cron.conf to get notified via email when new updates are available:\nupdate_cmd = default\nupdate_messages = yes\ndownload_updates = no\t\napply_updates = no\nemit_via = email\t\nemail_from = [email protected]\nemail_to = [email protected]\nemail_host = localhost\nAdd the following to /etc/yum/yum-cron-hourly.conf to check for bugfix-related updates every hour and automatically download and install them:\nupdate_cmd = minimal # yum --bugfix update-minimal"},{"id":"text-121","heading":"Text","content":"update_messages = yes\ndownload_updates = yes\napply_updates = yes\nemit_via = stdio\nRemarque: security information is provided by RedHat only. When you query a repository that is provided by CentOS it does not supply security metadata (however the EPEL repository does have security metadata).\nTherefore if you decide to use update_cmd = security, yum will always tell you that nothing from CentOS needs a security update.\nEnable and start the service:\n# systemctl enable yum-cron.service\n# systemctl start yum-cron.service\n11. System Settings – Process Accounting\nThe package psacct contain utilities for monitoring process activities:"},{"id":"text-122","heading":"Text","content":"ac – displays statistics about how long users have been logged on.\nlastcomm – displays information about previously executed commands.\naccton – turns process accounting on or off.\nsa – summarises information about previously executed commands."},{"id":"text-123","heading":"Text","content":"Install and enable the service:\n# yum install psacct\n# systemctl enable psacct.service\n# systemctl start psacct.service\n1. Services – SSH Server\nCreate a group for SSH access as well as some regular user account who will be a member of the group:\n# groupadd ssh-users\n# useradd -m -s /bin/bash -G ssh-users tomas\nGenerate SSH keys for the user:\n# su - tomas\n$ mkdir --mode=0700 ~/.ssh\n$ ssh-keygen -b 4096 -t rsa -C &quot;tomas&quot; -f ~/.ssh/id_rsa\nGenerate SSH host keys:\n# ssh-keygen -b 4096 -t rsa -N &quot;&quot; -f /etc/ssh/ssh_host_rsa_key\n# ssh-keygen -b 1024 -t dsa -N &quot;&quot; -f /etc/ssh/ssh_host_dsa_key\n# ssh-keygen -b 521 -t ecdsa -N &quot;&quot; -f /etc/ssh/ssh_host_ecdsa_key\n# ssh-keygen -t ed25519 -N &quot;&quot; -f /etc/ssh/ssh_host_ed25519_key\nPour RSA keys, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as specified by FIPS 186-2.\nPour ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. ED25519 keys have a fixed length and the -b flag is ignored.\nThe host can be impersonated if an unauthorised user obtains the private SSH host key file, therefore ensure that permissions of /etc/ssh/*_key are properly set:\n# chmod 0600 /etc/ssh/*_key\nConfigurer /etc/ssh/sshd_config with the following:\n# SSH port."},{"id":"text-124","heading":"Text","content":"Port 22"},{"id":"text-125","heading":"Text","content":"# Listen on IPv4 only."},{"id":"text-126","heading":"Text","content":"ListenAddress 0.0.0.0"},{"id":"text-127","heading":"Text","content":"# Protocol version 1 has been exposed."},{"id":"text-128","heading":"Text","content":"Protocol 2"},{"id":"text-129","heading":"Text","content":"#\n# OpenSSH cipher-related release notes.\n# OpenSSH 6.2: added support for AES-GCM authenticated encryption. \n# The cipher is available as [email protected] et [email protected]\n# OpenSSH 6.5: added new cipher [email protected]\n# OpenSSH 6.7: removed unsafe algorithms. CBC ciphers are disabled by default:\n# aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc.\n# OpenSSH 6.9: promoted [email protected] to be the default cipher.\n#"},{"id":"text-130","heading":"Text","content":"Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr"},{"id":"text-131","heading":"Text","content":"#\n# OpenSSH 6.2: added support for the UMAC-128 MAC as [email protected] \n# and [email protected] The latter being an encrypt-then-mac mode.\n# Do not use umac-64 or umac-64-etm because of a small 64 bit tag size.\n# Do not use any SHA1 (e.g. hmac-sha1, [email protected]) MACs \n# because of a weak hashing algorithm. \n# Do not use hmac-sha2-256, hmac-sha2-512 or [email protected] \n# because of an encrypt-and-MAC mode. See the link below:\n# https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac\n#"},{"id":"text-132","heading":"Text","content":"MACs [email protected],[email protected],[email protected]"},{"id":"text-133","heading":"Text","content":"#\n# OpenSSH 6.5: added support for ssh-ed25519. It offers better security \n# than ECDSA and DSA.\n# OpenSSH 7.0: disabled support for ssh-dss. \n# OpenSSH 7.2: added support for rsa-sha2-512 and rsa-sha2-256.\n#"},{"id":"text-134","heading":"Text","content":"HostKeyAlgorithms ssh-ed25519,[email protected],ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,[email protected],[email protected],[email protected],[email protected],[email protected]"},{"id":"text-135","heading":"Text","content":"#\n# OpenSSH 6.5: added support for key exchange using elliptic-curve\n# Diffie Hellman in Daniel Bernstein&#39;s Curve25519.\n# OpenSSH 7.3: added support for diffie-hellman-group14-sha256,\n# diffie-hellman-group16-sha512 and diffie-hellman-group18-sha512.\n#"},{"id":"text-136","heading":"Text","content":"KexAlgorithms [email protected],diffie-hellman-group18-sha512,diffie-hellman-group16-sha512,diffie-hellman-group14-sha256"},{"id":"text-137","heading":"Text","content":"# HostKeys for protocol version 2."},{"id":"text-138","heading":"Text","content":"HostKey /etc/ssh/ssh_host_rsa_key\nHostKey /etc/ssh/ssh_host_ed25519_key"},{"id":"text-139","heading":"Text","content":"# Disabled because uses a small 1024 bit key."},{"id":"text-140","heading":"Text","content":"#HostKey /etc/ssh/ssh_host_dsa_key"},{"id":"text-141","heading":"Text","content":"# Disabled because uses weak elliptic curves.\n# See: https://safecurves.cr.yp.to/"},{"id":"text-142","heading":"Text","content":"#HostKey /etc/ssh/ssh_host_ecdsa_key"},{"id":"text-143","heading":"Text","content":"# INFO is a basic logging level that will capture user login/logout activity.\n# DEBUG logging level is not recommended for production servers."},{"id":"text-144","heading":"Text","content":"LogLevel INFO"},{"id":"text-145","heading":"Text","content":"# Disconnect if no successful login is made in 60 seconds."},{"id":"text-146","heading":"Text","content":"LoginGraceTime 60"},{"id":"text-147","heading":"Text","content":"# Do not permit root logins via SSH."},{"id":"text-148","heading":"Text","content":"PermitRootLogin no"},{"id":"text-149","heading":"Text","content":"# Check file modes and ownership of the user&#39;s files before login."},{"id":"text-150","heading":"Text","content":"StrictModes yes"},{"id":"text-151","heading":"Text","content":"# Close TCP socket after 2 invalid login attempts."},{"id":"text-152","heading":"Text","content":"MaxAuthTries 2"},{"id":"text-153","heading":"Text","content":"# The maximum number of sessions per network connection."},{"id":"text-154","heading":"Text","content":"MaxSessions 3"},{"id":"text-155","heading":"Text","content":"# User/group permissions."},{"id":"text-156","heading":"Text","content":"AllowUsers\nAllowGroups ssh-users\nDenyUsers root\nDenyGroups root"},{"id":"text-157","heading":"Text","content":"# Password and public key authentications."},{"id":"text-158","heading":"Text","content":"PasswordAuthentication no\nPermitEmptyPasswords no\nPubkeyAuthentication yes\nAuthorizedKeysFile  .ssh/authorized_keys"},{"id":"text-159","heading":"Text","content":"# Disable unused authentications mechanisms."},{"id":"text-160","heading":"Text","content":"RSAAuthentication no # DEPRECATED"},{"id":"text-161","heading":"Text","content":"RhostsRSAAuthentication no # DEPRECATED"},{"id":"text-162","heading":"Text","content":"ChallengeResponseAuthentication no\nKerberosAuthentication no\nGSSAPIAuthentication no\nHostbasedAuthentication no\nIgnoreUserKnownHosts yes"},{"id":"text-163","heading":"Text","content":"# Disable insecure access via rhosts files."},{"id":"text-164","heading":"Text","content":"IgnoreRhosts yes"},{"id":"text-165","heading":"Text","content":"AllowAgentForwarding no\nAllowTcpForwarding no"},{"id":"text-166","heading":"Text","content":"# Disable X Forwarding."},{"id":"text-167","heading":"Text","content":"X11Forwarding no"},{"id":"text-168","heading":"Text","content":"# Disable message of the day but print last log."},{"id":"text-169","heading":"Text","content":"PrintMotd no\nPrintLastLog yes"},{"id":"text-170","heading":"Text","content":"# Show banner."},{"id":"text-171","heading":"Text","content":"Banner /etc/issue"},{"id":"text-172","heading":"Text","content":"# Do not send TCP keepalive messages."},{"id":"text-173","heading":"Text","content":"TCPKeepAlive no"},{"id":"text-174","heading":"Text","content":"# Default for new installations."},{"id":"text-175","heading":"Text","content":"UsePrivilegeSeparation sandbox"},{"id":"text-176","heading":"Text","content":"# Prevent users from potentially bypassing some access restrictions."},{"id":"text-177","heading":"Text","content":"PermitUserEnvironment no"},{"id":"text-178","heading":"Text","content":"# Disable compression."},{"id":"text-179","heading":"Text","content":"Compression no"},{"id":"text-180","heading":"Text","content":"# Disconnect the client if no activity has been detected for 900 seconds."},{"id":"text-181","heading":"Text","content":"ClientAliveInterval 900\nClientAliveCountMax 0"},{"id":"text-182","heading":"Text","content":"# Do not look up the remote hostname."},{"id":"text-183","heading":"Text","content":"UseDNS no"},{"id":"text-184","heading":"Text","content":"UsePAM yes\nYou can use the ssh-audit tool to test your SSH server configuration.\nIn case you want to change the default SSH port to something else, you will need to tell SELinux about it.\n# yum install policycoreutils-python\nFor example, to allow SSH server to listen on TCP 2222, do the following:\n# semanage port -a -t ssh_port_t 2222 -p tcp\nEnsure that the firewall allows incoming traffic on the new SSH port and restart the sshd service.\n2. Service – Network Time Protocol\nCentOS 7 should come with Chrony, make sure that the service is enabled:\n# systemctl enable chronyd.service\n3. Services – Mail Server\n3.1 Postfix\nPostfix should be installed and enabled already. In case it isn’t, the do the following:\n# yum install postfix\n# systemctl enable postfix.service\nOuvrir /etc/postfix/main.cf and configure the following to act as a null client:\nsmtpd_banner = $myhostname ESMTP\ninet_interfaces = loopback-only\ninet_protocols = ipv4\nmydestination =\nlocal_transport = error: local delivery disabled\nunknown_local_recipient_reject_code = 550\nmynetworks = 127.0.0.0/8\nrelayhost = [mail.example.com]:587\nOptionally (depending on your setup), you can configure Postfix to use authentication:\n# yum install cyrus-sasl-plain\nOuvrir /etc/postfix/main.cf and add the following:\nsmtp_sasl_auth_enable = yes\nsmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd\nsmtp_sasl_security_options = noanonymous\nsmtp_tls_CApath = /etc/ssl/certs\nsmtp_use_tls = yes\nOuvrir /etc/postfix/sasl_passwd and put authentication credentials in a format of:\n[mail.example.com]:587 [email protected]:password\nSet permissions and create a database file:\n# chmod 0600 /etc/postfix/sasl_passwd\n# postmap /etc/postfix/sasl_passwd\nRestart the service and ensure that firewall allows outgoing traffic to the SMTP relay server.\n3.2 Mail Distribution to Active Mail Accounts\nConfigure the file /etc/aliases to have a forward rule for the root user.\n4. Services – Remove Obsolete Services\nNone of these should be installed on CentOS 7 minimal:\n# yum remove xinetd telnet-server rsh-server \n  telnet rsh ypbind ypserv tfsp-server bind \n  vsfptd dovecot squid net-snmpd talk-server talk\nCheck all enabled services:\n# systemctl list-unit-files --type=service|grep enabled\nDisable kernel dump service:\n# systemctl disable kdump.service\n# systemctl mask kdump.service\nDisable everything that is not required, e.g.:\n# systemctl disable tuned.service\n5. Services – Restrict at and cron to Authorised Users\nSi le fichier cron.allow exists, then only users listed in the file are allowed to use cron, and the cron.deny file is ignored.\n# echo root &gt; /etc/cron.allow\n# echo root &gt; /etc/at.allow\n# rm -f /etc/at.deny /etc/cron.deny\nNote that the root user can always use cron, regardless of the usernames listed in the access control files.\n6. Services – Disable X Windows Startup\nThis can be achieved by setting a default target:\n# systemctl set-default multi-user.target\n7. Services – Fail2ban\nInstall Fail2ban from the EPEL repository:\n# yum install epel-release\n# yum install fail2ban\nIf using iptables rather than firewalld, open the file /etc/fail2ban/jail.d/00-firewalld.conf and comment out the following line:\n#banaction = firewallcmd-ipset\nFail2Ban uses /etc/fail2ban/jail.conf. Configuration snippet for SSH is provided below:\n[sshd]"},{"id":"text-185","heading":"Text","content":"port    = ssh\nenabled = true\nignoreip = 10.8.8.61\nbantime  = 600\nmaxretry = 5\nIf you run SSH on a non-default port, you can change the port value to any positive integer and then enable the jail.\n# systemctl enable fail2ban.service\n# systemctl start fail2ban.service\n8. Services – Sysstat to Collect Performance Activity\nSysstat may provide useful insight into system usage and performance, however, unless used, the service should be disabled, or not installed at all.\n# yum install sysstat\n# systemctl enable sysstat.service\n# systemctl start sysstat.service\nRéférences\nOpenSCAP Security Guide\nNSA Guide to the Secure Configuration of Red Hat Enterprise Linux 5\nhttps://highon.coffee/blog/security-harden-centos-7/\nhttps://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/\nhttps://www.openssh.com/releasenotes.html\nSecure Secure Shell\nWhat is pam_faillock and how to use it in Red Hat Enterprise Linux\nRevision\nThis guide was last updated on 26/03/2018."},{"id":"text-186","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/05/lisenet_logo.png"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/04/guide-de-renforcement-du-serveur-centos-7-lisenet-com-linux-securite-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}