Sommaire Sécurité
Sauter à la navigation
Sauter à la recherche
Consulter le wiki : Accueil du wiki - Objectifs - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur Consulter le Redmine : Accueil du Redmine
Sommaire
- 1 Sécurité
- 1.1 Générer un mot de passe fort pour chaque compte à utiliser
- 1.2 Gestion des mots de passe
- 1.2.1 Changer le mot de passe d'un utilisateur
- 1.2.2 Modifier le mot de passe de l'utilisateur root au démarrage de grub
- 1.2.3 Configurer la gestion de l'âge des mots de passe
- 1.2.4 Interdire la réutilisation d'un même mot de passe
- 1.2.5 Vérifier qu'aucun compte n'a un mot de passe vide
- 1.2.6 Vérifier l'intégrité des fichiers de mots de passe
- 1.3 Stocker les mots de passe
- 1.4 Gestion des comptes utilisateurs
- 1.5 Prendre une photo avec la webcam en cas d'échec de connexion au système
- 1.6 Anonymat
- 1.7 Antivol pour localiser votre ordinateur
- 1.8 Utiliser ses logiciels dans un bac à sable avec Firejail
- 1.9 Configurer et utiliser SSH
- 1.10 Configurer les fichiers du dossier racine etc
- 1.11 Sauvegarder Linux
- 1.12 Désactiver les fichiers binaires SUID et SGID indésirables
- 1.13 Compresser des fichiers
- 1.14 Chiffrement
- 1.14.1 Introduction
- 1.14.2 Chiffrer un fichier avec gpg
- 1.14.3 Chiffrer une archive avec openssl et tar.gz
- 1.14.4 Chiffrer une archive avec 7z
- 1.14.5 Cryptsetup
- 1.14.6 Ecryptfs
- 1.14.7 Mcrypt
- 1.14.8 Off-the-Record (OTR) Messaging
- 1.14.9 Système de chiffrement EncFS
- 1.14.10 Veracrypt
- 1.14.11 Zulucrypt
- 1.15 Somme de contrôle
- 1.16 Comprendre et utiliser systemd
- 1.17 Firewall Iptables
- 1.18 Sécurité du serveur physique
- 1.18.1 Activer l'authentification pour le mode mono-utilisateur
- 1.18.2 BIOS
- 1.18.3 Grub
- 1.18.3.1 Améliorer la vitesse de démarrage
- 1.18.3.2 Exemple de désinstallation / réinstallation de grub
- 1.18.3.3 Changer de mot de passe utilisateur ou root depuis Grub
- 1.18.3.4 Changer la résolution de GRUB2 au démarrage
- 1.18.3.5 Changer le thème de GRUB2
- 1.18.3.6 Protéger Grub par mot de passe
- 1.18.3.7 Désactivez la génération des entrées de menu en mode de récupération
- 1.18.3.8 Problèmes d'hibernation et résolution avec GRUB
- 1.18.3.9 Outil de configuration ou de réparation
- 1.18.4 Chiffrer le disque en intégral
- 1.18.5 Chiffrer la SWAP
- 1.18.6 Désactiver les périphériques USB / Firewire / Thunderbolt
- 1.19 Désactiver le Bureau à distance
- 1.20 Désactiver le Bluetooth
- 1.21 Journalisation et audit des fichiers de logs
- 1.22 Analyser et afficher un visuel des statistiques de fréquentation de votre site
- 1.23 Port Knocking
- 1.24 Crontab
- 1.25 Fail2ban
- 1.26 IPQ BDB filter
- 1.27 SSHGuard
- 1.28 Antivirus
- 1.29 Antivirus en ligne
- 1.30 Anti Rootkits
- 1.31 Audit de sécurité
- 1.32 Détecteur d'intrusion - NIDS
- 1.33 Portsentry
- 1.34 Tests de montées en charge
- 1.35 Scann de port
- 1.36 Scanner le réseau
- 1.37 Activer - Désactiver la réponse du ping sur le réseau
- 1.38 Prelude
- 1.39 Interdire l'accès à la console
- 1.40 Protéger les dossiers et les fichiers
- 1.41 Virtualisation avec XEN
- 1.42 Protéger et chiffrer des scripts Bash en production avec SHc
- 1.43 Pile TCP/IP
- 1.44 Limiter le temps de connexion à internet
- 1.45 Sécurité du matériel
- 1.46 Définir la priorité d'un programme
- 2 Processeur
- 3 Renforcer la sécurité du noyau
- 4 Supprimer les systèmes X Window - X11
- 5 Disques et partitions
- 6 Bibliographie
- 6.1 Liens complémentaires sur la sécurité
- 6.2 Les agences gouvernementales de sécurité informatique
- 6.3 Sites spécialisés
- 6.4 Les forums sur la sécurité
- 6.5 Sites complémentaires
- 6.6 Informations complémentaires sur la sécurité avec Debian
- 6.7 Informations complémentaires sur la sécurité avec RedHat
- 6.8 Magazines et presse en ligne sur la sécurité
- 6.9 La sécurité en vidéo
- 7 Ressources utilisées sur cette page pour la Sécurité de GNU/Linux
- 8 NAVIGATION
Sécurité
Générer un mot de passe fort pour chaque compte à utiliser
Utiliser des assemblages de mots ou utiliser un générateur de mot de passe pour créer un mot de passe fort.
Pwgen
sudo apt install pwgen
Lancer pwgen pour obtenir des mots de passe de 15 caractères aléatoires. pwgen -ysBv 15 (Noter que l'option -v supprime les voyelles. Cette option n'est donc pas nécessaire.)
_x@)R4c&k^?sz#9 s`9CjR%VCWw-mT) xCp%/#z:X3NJp%J ckhLkt7Kmk|q"=< _brbc{(N7!"pV(W ]bvj.3&,7n?CR37 X9<T_%R<]K[/d>( z*t>kMP>gr/c;9W `=[@"v]]t7"f7Vc ?!htcN9~bd]*%w/ cc..@;vzH3:pR*+ /JvJKHP\W_k\3CM 4|9hd9@%%Xk<`(H 7W:g</<3K`7vd(< $h9<V^f"N)|XV}{ ,p4%3x\'RcsX?JW xX\v*x7gz#Xj;zx "!jz?$vL7""RP7. #&ks-Jh4dx3jfXb "}f&f%-{Cg3RR)] ^Czg4[&)/{z>dMM .xj.p3RwpW;THkh */qHvxL'z3{r=P~ p]H4_!r`%c;m4d7 s]4?qCtV([}3"-L ^R@F/9pkh~"mz@q $xPX'J{9RcV4&h& #-H/~n#t%9xtj(q tk^[Fvmg(gW!Nx9 R3-^mVJr`h,-=~# ''`L`(%!~9-(9LT n{7;J\wxbrnXm}K ].FL'9"t!=r=g\* ^]<}4W-kW?L|[v+ Tp4~(RW[!4/c\RF ?K]7fVdW%W)%.&! nV`q%%=zvJ3tT%v Kd^fxk"7;K[\+|` @.\+Fr&)Rv}zn9~ hbwRsL{:]p'q:L9 RRj"=h<T\_3)f-v >vk@Ht;4wTq4cRr ^@N*-3H%.XV~=n+ <`4`(kF]$bFXqtz 7vMN4`m,9=-|WW@ X?gjL-,<$t9!(9[ P~dx{9hgf9"9!/F vK@7R4TbfjnrM:h `b-<zdXj3[&p=cv #){J!q$C4jsV`P@ CXP.f)W|^=?(4j? 79J''Kt*`n]ws$H r@WLX??cRJ@^9cp FfRX>pJd@*Tzj4~ bNdrP7;x#k/Vs:p N9C*p}(|$}-,}wW t`$3#7MtFwHn_Fv MHKh/~n[4>)/$3n Kt[$R!}FWT9($(c Ncm4,q/39WjtM7F x%@4XT*?qn%)h_! c%X{4-7$T*mK73X Vc)F^b9zN:fhs.C `+7K')9p%#]4]v/ %3;4bX.n3'd$b{~ }|fRgk#9md~F]N7 m;j[f-7HM.,N*T& ?n-H@=3M3-)P?:$ h;+{C+sw],34Mr[ Jhg[#7bmz7J_)@~ Rj4<(f+z%W|s@~g qpnr7C\j?*9):hd kb"K-{9V'xqN4N: jCc&F%~C{dqHK7j ~`sf~P]~_s4+CnP ~H>3'>ts7#'W$k9 *3=~WHxpp{#49"* +7/L\RtH/*9P}!( Thm]KmR]9W^:rr@ 9~hKp{CT_3pw>#P gPq44H`<"*W@4t/ k!]rK^9'+WMRF|p (s\v-h/F4NFm%%s "rL9],}`"vP9|"~ n9|qHbf"g,pMsH, L*VNtF}}4Ht@,b{ >q{Kdp.[d"KF9N] vrfJ?R~s+rF7.Mr 7fLmkss3`MrHvtC 9{=pfs{c<dHNMRx ?&(P[4<{([npj&R JNq%`&@\HX&=94J qmc/~-wqq-Mxn)9 cdCr~4d&tm)z&F} +cPr(<txV4z"J{_ gw$T)WCbfqt;;4m P,L{L.!$pt7.|q` JwT\>Pk^j+);9,n Npf'.wPJ~fz9Tt< 7T)z(.fR*X}'7dn
xkcdpass
sudo apt install xkcdpass
Lancer la commande : xkcdpass va générer 6 mots aléatoires en anglais : two-piece washbasin forelimb Roethke Ryazan Thackeray. Les mots générés sont basés sur : http://wordlist.aspell.net/12dicts-readme/ xkcdpass utilise par défaut dict2 et dict6.
Diceware
sudo aptitude install diceware diceware -v
Lancer la commande : diceware va générer des mots aléatoires en anglais mis bout à bout sans espace. MalignPreyOiledPalmFireSome
Revelation
sudo apt install revelation
Lancer la commande : revelation va ouvrir une fenêtre pour générer les mots de passe.
En ligne de commande
# Générer un mot de passe complexe aléatoire de 20 caractères : tr -cd [:alnum:][:punct:] < /dev/urandom | head -c 20 ; echo
Gestion des mots de passe
Changer le mot de passe d'un utilisateur
1) Solution sale : Quand tu a trouvé le nom de l'utilisateur dans /etc/passwd, tu peux aller supprimer le mot de passe correspondant dans /etc/shadow. Ensuite redémarrer l'ordi sur son disque dur, tu te connecte sans mot de passe et tu en crées un nouveau avec la commande "passwd". C'est assez sale car durant un moment l'ordi fonctionne sans que le compte en question ne soit protégé par un mot de passe. Il faut donc couper toute connexion réseau a ce moment la (pour un câble on débranche facilement, pour la wifi c'est moins évident) ou alors utiliser une solution plus propre.
2) Solution propre : Quand tu a trouvé le nom de l'utilisateur dans /etc/passwd, tu peux éditer /etc/shadow et remplacer l'empreinte du mot de passe correspondant a ce compte par l'empreinte de ton mot de passe. Ça demande de connaître l'empreinte de ton mot de passe, donc de l'avoir préparée au préalable a un endroit que tu pourra accéder quand tu fera la manip.
3) Autre solution propre : ( A revoir ) Quand tu a trouvé le nom de l'utilisateur dans /etc/passwd, tu peux utiliser un chroot pour lancer la commande passwd du système dont tu veux modifier le mot de passe. Par exemple si tu a monté la partition système que tu veux modifier sur /mnt/root et tu vois que l'utilisateur s'appelle "bob" : mount -o bind /proc /mnt/root/proc mount -o bind /sys /mnt/root/sys mount -o bind /dev /mnt/root/dev chroot /mnt/root /bin/bash passwd bob exit umount /mnt/root/dev umount /mnt/root/sys umount /mnt/root/proc umount /mnt/root
Modifier le mot de passe de l'utilisateur root au démarrage de grub
Voir plus bas.
Configurer la gestion de l'âge des mots de passe
La commande chage change le nombre de jours entre les changements de mot de passe et la date du dernier changement de mot de passe. Le système utilise ces informations pour déterminer quand un utilisateur doit changer son mot de passe. Le fichier /etc/login.defs définit la configuration pour la suite de mots de passe shadow, y compris pour la configuration de l'âge des mots de passe. Pour désactiver le vieillissement du mot de passe : sudo chage -M 99999 userName
# Obtenir des informations sur l'expiration du mot de passe : sudo chage -l userName
# Activer un mot de passe comme était valable 60 jours, avertir 7 jours avant la fin de validité, expirer le mot de passe ce qui rend le compte inactif 7 jours après la fin de validité. sudo chage -M 60 -m 7 -W 7 userName
Interdire la réutilisation d'un même mot de passe
Source : https://www.cyberciti.biz/tips/how-to-linux-prevent-the-reuse-of-old-passwords.html
Vérifier qu'aucun compte n'a un mot de passe vide
sudo awk -F: '($2 == "") {print}' /etc/shadow
Vérifier l'intégrité des fichiers de mots de passe
Utiliser la commande pwck pour vérifier l’intégrité des utilisateurs et des informations d’authentification. Il vérifie que les entrées dans /etc/passwd et /etc/shadow ont le format approprié et contiennent des données valides. L'utilisateur est invité à supprimer les entrées mal formatées ou comportant d'autres erreurs impossibles à corriger.
pwck -r /etc/passwd pwck -r /etc/shadow
Stocker les mots de passe
KeePass
KeePass 2 pour Linux
Le gestionnaire de mots de passe KeePass sert à stocker les mots de passe. Il permet également de générer des mots de passe aléatoire.
Installer KeePass 2 depuis les dépôts
apt-get install keepass2
Si KeePass 2 n'est pas présent dans les dépôts
Installer KeePass 2 pour GNU/Linux à l'aide du dépôt par ppa. $ sudo add-apt-repository ppa:eugenesan/ppa $ sudo apt-get update $ sudo apt-get install keepass2
Installer KeePass 2.43 depuis les dépôts
wget -c - O keepass2_2.43+dfsg-1_all.deb http://deb.debian.org/debian/pool/main/k/keepass2/keepass2_2.43+dfsg-1_all.deb wget -c - O keepassx_2.0.3+git20190121.1682ab9-2.1_amd64.deb http://deb.debian.org/debian/pool/main/k/keepassx/keepassx_2.0.3+git20190121.1682ab9-2.1_amd64.deb sudo gdebi keepass2_2.43+dfsg-1_all.deb sudo gdebi keepassx_2.0.3+git20190121.1682ab9-2.1_amd64.deb
Plugins pour KeePass
Liste de plugins pour KeePass : https://keepass.info/plugins.html
Installer KeeAgent pour stocker les clés SSH
KeeAgent est un plugin pour KeePass pour stocker et charger les clés SSH. Site officiel : https://lechnology.com/software/keeagent/ Source : https://github.com/dlech/KeeAgent
Supprimer KeePass 2
$ sudo apt-get remove keepass2
KeePass 2 pour Windows
Installer Keepass2 sur Windows : https://sourceforge.net/projects/keepass/files/KeePass%202.x/
Gestion des comptes utilisateurs
Désactiver l'utilisateur root
# Se connecter avec un utilisateur sudoers et désactiver le compte root avec la commande suivante : sudo passwd --lock root
Aucun compte non-root ne doit avoir un UID défini sur 0
Seul le compte root a un UID 0 avec des autorisations complètes pour accéder au système. La commande suivante affiche tous les comptes dont l'UID est défini sur 0 : sudo awk -F: '($3 == "0") {print}' /etc/passwd
Une seule ligne devrait être affichée : root:x:0:0:root:/root:/bin/bash
Si d'autres lignes sont présentes, les supprimer ou s'assurer que les autres comptes sont autorisés par vous à utiliser l'UID 0.
Verrouiller des comptes utilisateurs suite a des échecs de connexion
# Identifier des tentatives de connexion infructueuses. # Je n'ai aucun retour pour cette commande sur un système Linux Mint. faillog faillog -r -u userName
# Bloquer ou débloquer un compte suite à des échecs de connexion. # On peut utiliser la commande passwd pour verrouiller et déverrouiller des comptes utilisateurs : # Bloquer un compte : passwd -l userName
# Débloquer un compte : passwd -u userName
Utiliser un service d'authentification centralisé
Sans un système d'authentification centralisé, les données d'authentification de l'utilisateur deviennent incohérentes. Cela peut entraîner des informations d'identification obsolètes et des comptes oubliés qui auraient dû être supprimés en premier lieu. Un service d'authentification centralisé vous permet de maintenir un contrôle centralisé sur le compte Linux / UNIX et les données d'authentification. Vous pouvez garder les données d'authentification synchronisées entre les serveurs.
Ne pas utiliser le service NIS pour l'authentification centralisée. Utiliser OpenLDAP pour les clients et les serveurs.
Kerberos
Kerberos effectue l'authentification en tant que service d'authentification tiers de confiance en utilisant un secret cryptographique partagé. Kerberos s'appuie sur la cryptographie à clé symétrique et nécessite un centre de distribution de clé.
Vous pouvez rendre la connexion à distance, la copie à distance, la copie de fichiers intersystème sécurisée et d'autres tâches à haut risque plus sûres et plus contrôlables à l'aide de Kerberos. En utilisant Kerberos, les utilisateurs non autorisés qui tentent de collecter des mots de passe en surveillant le trafic réseau sont contrecarrés.
Prendre une photo avec la webcam en cas d'échec de connexion au système
# Prendre une photo avec la webcam quand il y a un échec de connexion, que ce soit sur la fenêtre de login ou depuis le terminal avec un sudo. # Fonctionnel sous Linux Mint 19.2 Tina.
# Installer streamer : sudo apt install streamer
# Créer un dossier .backup dans le répertoire utilisateur : sudo mkdir /home/.backup
# Créer le fichier /usr/local/bin/grabcam sudo touch /usr/local/bin/grabcam
# Ajouter le script dans le fichier : sudo nano /usr/local/bin/grabcam
#!/bin/bash # Ce script va capturer une image de la webcam qui sera stockée dans le répertoire /home/.backup au format jpeg : streamer -s 1600x900 -o "/home/.backup/capture-`date --rfc-3339=seconds`.jpeg" 2>/dev/null exit 0
# Rendre le script exécutable : sudo chmod +x /usr/local/bin/grabcam
# Faire une copie de sauvegarde du fichier de config PAM : sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.old
# Modifier le fichier /etc/pam.d/common-auth sudo nano /etc/pam.d/common-auth
# Repérer la ligne : auth [success=1 default=ignore] pam_unix.so nullok_secure
# Remplacer par : # Capture de la cam suite à une erreur de mot de passe à la connexion : auth [success=2 default=ignore] pam_unix.so nullok_secure auth optional pam_exec.so seteuid /usr/local/bin/grabcam
Le success=2 veut dire, en cas de réussite, "Aller à la seconde ligne en cas de succès" donc sans faire la capture. En cas d'échec, la ligne suivante sera donc exécutée : pam_exec.so lancera donc votre script, faisant une capture d'écran. Vous n'avez plus qu'a collecter les photos dans /home/.backup
Certaines webcam mettent quelques secondes pour obtenir une image correcte après s'être allumée. Il faudra peut-être capturer plusieurs images. Exemple pour prendre 1 image par seconde pendant 4 secondes : streamer -r 1 -t 4 -s 1600x900 -o "/home/.backup/capture-`date --rfc-3339=seconds`.jpeg" 2>/dev/null
Source : https://sebsauvage.net/wiki/doku.php?id=mint_customization_17_3&redirect=1#notes_diverses
Pour améliorer ce système de surveillance, il faudrait pouvoir synchroniser immédiatement une copie des captures ayant été effectuées vers un cloud distant.
Anonymat
Anonymat.
Antivol pour localiser votre ordinateur
Pombo
Pombo fait un travail en tâche de fond qui envoie des informations de traçage à un serveur web. Si votre ordinateur est perdu ou volé, il suffit de se connecter sur votre serveur web. Récupérer le dernier fichier envoyé par Pombo, le décrypter et le fournir à la police. Il faut pour cela qu'une connexion internet soit effectuée avec votre machine. Installer Pompo : http://sebsauvage.net/pombo/index.fr.html
Preyproject
Un projet similaire mais payant, qui propose tout de même une offre gratuite. Source : https://www.preyproject.com/download
Utiliser ses logiciels dans un bac à sable avec Firejail
Le programme firejail permet d'isoler les applications et restreindre ce à quoi elles ont accès (Système de fichier, réseau, API…).
# Installer Firejail : sudo apt install firejail
# Lancer une application : firejail firefox
# Si un profile existe pour cette application, le profile sera utilisé. Les profiles sont situés dans : /etc/firejail ~/.config/firejail
# Lancer une application en lui donnant un répertoire /home vide fait que tout ce que l'application écrit sera détruit à la fin de l'exécution : firejail --private firefox
# Lancer une application en lui donnant un répertoire /home précis fait que tout ce que l'application écrit sera conservé dans ce répertoire à la fin de l'exécution : firejail --private=~/mon_repertoire gedit
# Afficher une notification au lancement du programme pour se souvenir qu'on le lance avec Firejail : notify-send -i info -t 5000 "Firefox" "Lancement par Firejail !" ; firejail --private firefox
# Interdire l'accès réseau à un logiciel : firejail --net=none vlc
# Voir quels programmes lancés sont actuellement pris en main par Firejail : firejail --list
# Consulter le manuel : man firejail
# Notes pour les fichiers de profile : # Interdire l'accès à vos documents : blacklist ${HOME}/Documents
# Autoriser un sous-dossier spécifique: noblacklist ${HOME}/Documents/Screenshots
Source complémentaire : https://forums.linuxmint.com/viewtopic.php?t=202735 Source : Utiliser ses logiciels dans un bac à sable avec Firejail : https://ownyourbits.com/2017/10/29/sandbox-your-applications-with-firejail/
Configurer et utiliser SSH
Configurer et utiliser SSH.
Configurer les fichiers du dossier racine etc
Configurer le fichier hosts
Plus d'informations sur la page suivante, avec plusieurs exemples et des liens en ressource. ( Le nom de la page doit être modifié. )
Le fichier /etc/hosts du 8 Août 2017 : GNU Linux etc hosts 8 Aout 2017.
Installer le paquet DenyHosts
Prérequis : Avoir installé le paquet openssh-server.
Permet d'établir des règles pour les connexions entrantes distantes. Denyhosts est un daemon qui analyse en permanence le fichier de log /var/log/auth.log. Au bout de plusieurs tentatives de connexion infructueuses l'adresse IP est blacklistée dans le fichier /etc/hosts.deny.
Installer denyhosts : sudo apt install denyhosts
Si le paquet n'est pas présent dans la distribution, installer denyhosts sur Debian 9 Stretch : cd /home/debian/ wget http://ftp.fr.debian.org/debian/pool/main/d/denyhosts/denyhosts_2.10-2_all.deb ou wget -c -O denyhosts_2.10-2_all.deb http://ftp.fr.debian.org/debian/pool/main/d/denyhosts/denyhosts_2.10-2_all.deb ou encore wget -c -O $HOME/Téléchargements/denyhosts_2.10-2_all.deb http://ftp.fr.debian.org/debian/pool/main/d/denyhosts/denyhosts_2.10-2_all.deb # Les options de wget : -c permet de reprendre le chargement en cas d'arrêt et -O permet de définir la destination. dpkg -i denyhosts_2.10-2_all.deb sudo rm denyhosts_2.10-2_all.deb
Ouvrir le fichier de configuration de Denyhosts
sudo nano /etc/denyhosts.conf
A la ligne 93 : # Bloquer les tentatives automatisées et placer les IP en ALL fait que le serveur ne répondra plus aux adresses IP attaquantes. BLOCK_SERVICE = ALL # To block only sshd: # BLOCK_SERVICE = sshd
# Permet un reverse pour trouver et bloquer le nom de domaine correspondant à l'adresse IP de l'attaquant. HOSTNAME_LOOKUP=YES
# Ajouter le mail de l'administrateur pour réceptionner les alertes. ADMIN_EMAIL = mail@domaine.ext
# Activer la date pour le mail. SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
# Activer la journalisation dans le fichier syslog. SYSLOG_REPORT=YES
# Définir le format de la date pour les logs. DAEMON_LOG_TIME_FORMAT = %b %d %H:%M:%S
# Redémarrer Denyhosts sudo /etc/init.d/denyhosts restart
hosts.allow et hosts.deny
Pour restreindre l'accès à votre machine Unix ou Linux, vous devez modifier les fichiers /etc/hosts.allow et /etc/host.deny. Ces fichiers sont utilisés par les programmes tcpd (tcp wrapper) et sshd pour décider d'accepter ou non une connexion provenant d'une autre adresse IP. ITS recommande que, pour commencer, vous restreignez l'accès aux seules adresses de réseau que vous êtes certain devrait avoir accès. Les deux exemples de fichiers suivants permettent les connexions à partir de n'importe quelle adresse dans le domaine de réseau visionduweb.eu, mais pas d'autres.
Installer le paquetdenyhosts
pour autoriser des adresses IP SSH avechosts.allow
. Installer le paquetdenyhosts
pour protéger ssh avechosts.deny
.
/etc/hosts.allow
# hosts.allow This file describes the names of the hosts that are allowed to use the local INET services, as decided by the '/usr/sbin/tcpd' server.
# Tout autoriser. # ALL : ALL ALL: localhost
# Autoriser uniquement le domaine visionduweb.eu à se connecter. # ALL: .visionduweb.eu
# Autoriser une IP. sshd: 127.0.0.1 sshd: 127.0.1.1
# Autoriser plusieurs IP. # sshd : IP-Address1, IP-Address2, IP-Address3
# Autoriser une plage IP. # sshd : 33.*.*.* # sshd : 66.66.*.*
# Autoriser toutes les adresses. # sshd : ALL
/etc/hosts.deny
# Avec cette configuration, l'accès à votre machine par n'importe quel hôte est refusé, sauf ceux spécifiés dans hosts.allow.
# hosts.deny This file describes the names of # the hosts that are *not* allowed # to use the local INET services, as # decided by the '/usr/sbin/tcpd' # server. # # deny all by default, only allowing hosts or # domains listed in hosts.allow. ALL: ALL sshd: ALL
# Une autre possibilité serrait de tout interdire sauf une adresse IP, directement depuis hosts.deny :
sshd : ALL EXCEPT 127.0.0.1 # Bloque toutes les connexions et permet la connexion SSH uniquement pour la machine avec l'adresse IP 192.168.0.15.
# Pas sur de bien saisir puisqu'il s'agit d'autoriser une machine distante à se connecter en local. # Je tente d'autoriser la connexion locale entrante uniquement depuis la machine locale. # Il est possible qu'il faille ajouter l'adresse IP du serveur distant à autoriser. # Pas sur que ce soit nécessaire, si on cherche à se connecter à un serveur distant, ce n'est pas le serveur distant qui se connecte à nous. # A suivre.
Utiliser la commande --purge permet de vider les adresses en mémoire dans hosts.deny.
TCP Wrappers hosts allow deny : https://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/
Tester le paramétrage
tcpdmatch sshd www.visionduweb.eu ou tcpdmatch in.telnetd www.visionduweb.eu
Va retourner :
access: granted ou access: denied
Ressources complémentaires
Faq : http://denyhosts.sourceforge.net/faq.html Informations complémentaires sur le paramétrage du fichier de configuration : https://flexion.org/posts/2012-11-ssh-brute-force-defence/ Informations complémentaires sur le paramétrage du fichier de configuration : http://www.desmoulins.fr/index.php?pg=informatique!linux!denyhosts Informations complémentaires sur le paramétrage du fichier de configuration : https://www.it-connect.fr/proteger-son-acces-ssh-avec-denyhosts%EF%BB%BF/ Informations complémentaires sur le paramétrage du fichier de configuration : https://www.it-connect.fr/proteger-son-acces-ssh-avec-denyhosts%ef%bb%bf/ Informations complémentaires sur le paramétrage du fichier de configuration : https://www.tecmint.com/block-ssh-server-attacks-brute-force-attacks-using-denyhosts/ Informations complémentaires sur le paramétrage du fichier de configuration : https://www.cyberciti.biz/faq/how-to-install-denyhosts-intrusion-prevention-security-for-ssh-on-ubuntu/
Sauvegarder Linux
Sauvegarder et réinstaller Linux
Désactiver les fichiers binaires SUID et SGID indésirables
# Parfois très pratiques, le SUID vous permet de faire fonctionner une application en tant qu'un autre utilisateur. # Tous les fichiers activés avec les bits SUID / SGID peuvent être mal utilisés lorsque l'exécutable SUID / SGID présente un problème de sécurité ou un bogue. # Imaginez que quelqu'un ai accès à l'une de ces applications (via un shell, apache), et puisse lire votre /etc/shadow, toute la sécurité de votre serveur serait compromise.
# Pour trouver tous les binaires qui utilisent un SUID, tapez la ligne suivante : sudo find / -ignore_readdir_race -perm -4000 sudo find / \( -perm -4000 -o -perm -2000 \) -print
# Désactiver le SUID sur ces binaires empêche tout autre utilisateur que le propriétaire de l'exécuter. # Savoir que la plupart de ces services auront besoin d'être exécutés en tant que root pour fonctionner. sudo chmod -s /chemin/du/binaire
# La plupart des administrateurs systèmes recommandent de désactiver les services comme ping ou traceroute lorsque vous n'en avez pas besoin. # Désactiver aussi /usr/bin/chfn, /usr/bin/chsh, /bin/mount, /bin/umount, /usr/bin/gpasswd, /usr/bin/newgrp, /usr/sbin/ping6 et /usr/bin/ping.
Fichiers inscriptibles dans le monde sur un serveur Linux
Tout le monde peut modifier un fichier inscriptible dans le monde, entraînant un problème de sécurité. (World-Writable Files.) Rechercher tous les fichiers inscriptible et collants du monde. Examiner chaque fichier signalé et définir une autorisation d'utilisateur ou de groupe approprié ou le supprimer.
Fichiers de propriétaire
Les fichiers n'appartenant à aucun utilisateur ou groupe peuvent poser un problème de sécurité. Il convient de trouver ceux qui n'appartiennent pas à un utilisateur valide et à un groupe valide.
Compresser des fichiers
Quelques paquets à installer pour pouvoir compresser
xarchiver unrar p7zip p7zip-full
Comparer les différents formats de compression
Source : http://rlwpx.free.fr/WPFF/comploc.htm
Compresser en .zip en ligne de commande
# Installer : sudo apt-get install zip
# Compresser : zip archive.zip fichiers
# Décompresser : unzip archive.zip
Ajouter un mot de passe à une archive zip n'est pas considéré comme sécurisé. L’algorithme de chiffrement utilisé par la commande zip est PKZIP. L’algorithme PKZIP est connu pour être non sécurisé. zip -e <file_name>.zip <list_of_files>
Créer une archive zip avec un mot de passe en utilisant 7z. 7z soutient AES-256 algorithme de chiffrement avec hachage SHA-256. 7z peut produire des archives zip format avec système de cryptage plus sécurisé. 7z a -pMY_SECRET -mem=AES256 secure.zip test.txt Décompresser avec la commande 7za e secure.zip
Compresser en .tar en ligne de commande
Tar est généralement installé par défaut. On peut l'utiliser avec différents algorithmes de compression. C'est le programme d'archivage de fichiers le plus populaire sous GNU/Linux et les systèmes Unix. À l'origine tar était utilisé pour archiver sur bande : Tape archiver en anglais, archiveur pour bande en français. On notera principalement que tar préserve les permissions et les propriétaires des fichiers, ainsi que les liens symboliques.
Pour archiver plusieurs fichiers ou un dossier, la commande est la même : tar cvf mon_archive.tar fichier1 fichier2 tar cvf mon_archive.tar dossier1/
Sauvegarder deux répertoires vers un répertoire distant avec SSH et en compressant en .tar lors du transfert. sudo tar -cf - /mon_dossier_1 /dossier/dossier_2 | ssh -2 user@votre-serveur tar -xf - -C /dossier_de_destination/sur_serveur_distant/
Créer l'archive .tar du dossier. sudo tar cvf archive.tar dossier/
Pour extraire une archive tar : tar xvf mon_archive.tar
Les principales options de tar sont les suivantes : c / x : construit / extrait l'archive. v : mode bavard. f : utilise le fichier donné en paramètre.
Source complémentaire : http://lea-linux.org/documentations/Archivage_tar_pax_zip_rar
Compresser en .tar.gz en ligne de commande
cd /home/user/Documents tar -czvf $(date +\%A)_Documents.tar.gz *
# Corriger le message d'information suivant "tar: Suppression de « / » au début des noms des membres" # Se placer dans le dossier cd /home/user # tar -czvf Documents.tar Documents # tar: /home/user/Documents : fichier modifié pendant sa lecture. # Le script est lancé depuis le dossier à sauvegarder. # Lancer plutôt le script depuis le répertoire utilisateur ou le Bureau.
# La commande Tar conserve les droits utilisateur lors de chaque compression. # Il est donc possible de les réapproprier aux fichiers et dossiers lors d'une décompression. tar xvfz fichier.tgz --preserve --same-owner
# Compresser et ajouter un mot de passe. # L'option avec mot de passe n'existe pas pour tar.gz mais elle existe pour d'autres formats, par exemple zip qui est déprécié ainsi que pour 7z. # La solution de chiffrement suivante est robuste et permet d'ajouter un mot de passe à une archive. Voir également le paragraphe par après pour chiffrer avec 7z. 7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -mhe=on -p'LEPASS' archive.7z save.tar.gz|tar zcvf save.tar.gz dossier/
Exclure un répertoire de la sauvegarde
tar zcvf $JOOMLA_REPERTOIRE_BACKUP_FICHIERS/$JOOMLA_NOM_SAUVEGARDE_MENSUELLE_FICHIERS_EXTENSION_TAR_GZ --exclude="$JOOMLA_REPERTOIRE_A_EXCLURE" $REPERTOIRE_PROGRAMME_JOOMLA_A_SAUVEGARDER
Commandes complémentaires : https://www.computerhope.com/unix/utar.htm
Décompresser des fichiers tar.gz
tar -zxvf fichier.tar.gz
Décompresser des fichiers .gz
gzip -d fichier.*.gz gzip -d fichier.gz gzip -d *.gz
Compresser avec KGB Archiver
Source : https://packages.debian.org/jessie/utils/kgb
Chiffrement
Introduction
# La compression est un travail pour tar et gzip ou bzip2. # Chiffrer un fichier est un travail pour gpg ou openssl. # 7z semble égalent être pertinent comme solution pour le chiffrement.
Chiffrer un fichier avec gpg
# Avec la commande suivante, une passephrase sera demandée dans le terminal, pour chiffrer le fichier. gpg -c fichier
Chiffrer une archive avec openssl et tar.gz
tar cz fichier_ou_dossier|openssl enc -aes-256-cbc -e > out.tar.gz.enc tar cz fichier_ou_dossier|openssl enc -aes-256-cbc -pass pass:LeMotDePasse -e > out.tar.gz.enc # Un mot de passe est demandé.
*** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.
# Déchiffrer un fichier : openssl aes-256-cbc -d -in out.tar.gz.enc|tar xz
# Cette méthode fonctionne bien depuis GNU/Linux Debian, mais, l'archive ne semble pas pouvoir être décompressée depuis GNU/Linux Mint. Chiffrement symétrique avec openSSL : http://www.fil.univ-lille1.fr/~wegrzyno/portail/PAC/Doc/TP2/tp2002.html Chiffrer un fichier avec OpenSSL sous GNU/Linux : https://angristan.fr/chiffrer-fichier-openssl-linux/
Je n'arrive pas à décompresser l'archive chiffrée depuis un système d'exploitation GNU/Linux Mint. L'archive n'est pas corrompue, puisque, si j'utilise une autre machine Debian, j'arrive bien à décompresser l'archive. Pour éviter ce genre de difficultés et permettre la décompression de l'archive, il est sûrement préférable d'utiliser une autre méthode pour chiffrer la sauvegarde.
Chiffrer une archive avec 7z
# Installation de 7-zip sous Linux : apt-get install p7zip-full
# Lors de mon essai sur Debian SID, le mot de passe ne m'est pas redemandé lors de la décompression de l'archive. # Les exemples suivants demandent bien un mot de passe à la création mais ne demandent pas le mot de passe lors de la décompression de l'archive ! # Utilisation de 7z pour protéger une archive : # 7z a /tmp/secure.7z /tmp/test.txt -p # Il n'est jamais conseillé d'indiquer directement un mot de passe dans un script : # 7z a /tmp/secure.7z /tmp/test.txt fichier1 fichier2 -pMonp@ssword
# Cet exemple est fonctionnel et permet de compresser une archive en lui ajoutant un mot de passe : 7z a -pMOTDEPASSE -mx=9 -mhe -t7z test.7z test.txt 7z : Command a : Add -p : Set Password -mx=9 : Ultra compression -mhe : Encrypt file names
AES : Advanced Encryption Standard. Le chiffrage AES 256 est utilisé pour sécuriser les échanges VPN. Le chiffrage AES 256 est une référence dans le domaine de la sécurité. Les applications qui demandent des niveaux de sécurité important l’utilisent. D'après Wikipedia, AES est le seul algorithme répertorié par l’Institut national des normes et de la technologie (NIST) pour la protection des données classifiées.
# Exemple de chiffrement AES 256 : 7z a \ -t7z -m0=lzma2 -mx=9 -mfb=64 \ -md=32m -ms=on -mhe=on -p'eat_my_shorts' \ archive.7z test.txt
Tester si l'archive est bien en AES-256 : 7z l -slt archive.7z Dans les lignes retournées, il faut lire la ligne suivante pour s'assurer que l'archive était bien chiffrée en AES-256 : Method = LZMA2:14 7zAES:19
# Ne pas utiliser le format 7-zip pour sauvegarder des données de production depuis Linux / Unix car 7-zip ne stocke pas le propriétaire ni le groupe du fichier. Source : https://askubuntu.com/questions/928275/7z-command-line-with-highest-encryption-aes-256-encrypting-the-filenames
La protection d'une archive par mot de passe est utile lorsque l'on souhaite faire transiter l'archive par des réseaux qui ne sont pas de confiance ou sur une clé USB pouvant être perdue. Le stockage des sauvegardes peut également faire l'objet d'une protection pour se protéger d'un vol ou d'une modification.
Attention ! Les fichier chiffrés par un mot de passe peuvent toujours être attaqués par [Force].
Le chiffrement ainsi que la force du mot de passe utilisé consomme de la RAM
# Risque d'avoir le message suivant : ERROR: Can't allocate required memory!
# La commande suivante peut soulager la RAM, sans plus si la RAM disponible est déjà limitée. free -h && sudo sysctl vm.drop_caches=3 && free -h
Par contre, on constate alors que la swap est à 0 sur le VPS. Il peut être intéressant de créer une mémoire d'échange, pour permettre au script de chiffrement d'aboutir sans erreur.
Déchiffrer une archive chiffrée avec 7z
7z x fichier.7z 7z x /path/fichier.7z
Cryptsetup
Source : https://doc.ubuntu-fr.org/cryptsetup
Ecryptfs
Ecryptfs est un outil pour créer un dossier privé (~/Private), chiffré et inaccessible aux autres utilisateurs. Il est destiné à contenir tous les fichiers "sensibles" que vous pourriez avoir : vos fichiers contenant des mots de passe, les données confidentielles relatives à vos comptes bancaires, vos mails.Source : https://doc.ubuntu-fr.org/ecryptfs
Mcrypt
Source : https://www.cyberciti.biz/tips/linux-or-unix-password-protecting-files.html
Off-the-Record (OTR) Messaging
OTR permet d'avoir des conversations privées sur de multiples protocoles (XMPP/Jabber, IRC, MSN...)Source : https://doc.ubuntu-fr.org/off-the-record_messaging
Système de chiffrement EncFS
Apprendre à installer et utiliser le système de chiffrement EncFS. Les informations qu'elle contient n'ont pas été vérifiées pour les dernières versions LTS depuis Ubuntu 14.04 LTS.Source : https://doc.ubuntu-fr.org/encfs
Veracrypt
VeraCrypt est un logiciel de chiffrement de fichiers et de partitions qui reprend la suite de TrueCrypt. Ce fork, principalement développé par le Français Mounir Idrassi, a débuté quelques mois avant la fermeture brutale de son prédécesseur.Source : https://doc.ubuntu-fr.org/veracrypt
Zulucrypt
Outil pour créer un dépôt de stockage chiffré de taille variable.
Somme de contrôle
# Contrôler le checksum pour vérifier l'intégrité d'un fichier ou d'un programme.
# Générer le fichier checksum SHA256 : md5sum fichier.sql > lefichieraveclessommes
# D'autres commandes de somme de contrôle : MD5 avec md5sum SHA-1 avec sha1sum SHA-256 avec sha256sum sha224sum sha384sum sha512sum
# Ajouter le fichier a contrôler et le fichier contenant la somme de contrôle dans le même dossier. # Lancer la commande suivante pour vérifier si la somme de contrôle correspond au fichier. md5sum -c lefichieraveclessommes
Comprendre et utiliser systemd
Une alternative à systemd avec /etc/rc.local
# De nombreuses distributions Linux possédaient avant systemd le fichier /etc/rc.local dans lequel on plaçait les commandes à exécuter une fois le système Linux démarré. Source :https://www.linuxtricks.fr/wiki/lancer-des-scripts-personnalises-au-demarrage
Les version les plus récentes de Debian utilisent systemd
La première chose est de savoir quel est le système utilisé pour démarrer la machine : SysVInit ou systemd ? Manuel : http://debian-facile.org/doc:system:systemd
# Désactiver un service au démarrage : sudo systemctl disable apache2.service
# Démarrer un service au démarrage : sudo systemctl enable apache2.service
# Obtenir le statut du service : sudo systemctl status apache2.service
Exemples pour activer ou désactiver le service mysql
<sudo systemctl status> permet d'avoir un aperçu du status des services qui sont démarrés ; <sudo systemctl status mysql.service> permet de savoir quel est le statut du service mysql.service (pour autant qu'il soit installé) ; <sudo systemctl stop mysql.service> permet de l'arrêter ; <sudo systemctl disable mysql.service> permet de le déactiver et évite qu'il ne démarre quand tu bootes ; <sudo systemctl start mysql.service> permet de le démarrer ; <sudo systemctl enable mysql.service> permet de l'activer pour qu'il démarre automatiquement au boot ;
Afficher la liste des services avec la liste des niveaux d'exécution configurés ou désactivés
sudo systemctl list-unit-files --type=service sudo systemctl list-dependencies graphical.target
Firewall Iptables
Configurer le pare-feu Iptables.
Sécurité du serveur physique
# Activer l'authentification pour le mode mono-utilisateur.
# Configurer le BIOS pour désactiver le démarrage à partir de périphériques externes tels que des DVD / CD / clé USB. # Configurer un mot de passe pour accéder au BIOS.
# Désactiver l'édition du menu du Grub (Touche "e" par défaut.) # Définir un mot de passe pour le chargeur de démarrage Grub. (Modifier un mot de passe utilisateur depuis Grub ne sera plus possible.)
# Chiffrer le disque en intégral permet de réduire considérablement les risques liés à l'accès des fichiers de configuration.
Activer l'authentification pour le mode mono-utilisateur
Le mode mono-utilisateur est utilisé pour une récupération du système. Au démarrage de la machine, le choix du Grub propose le démarrage en mode récupération. Debian demande une authentification par défaut si le mode mono-utilisateur est sélectionné. Autoriser l'accès au mode mono-utilisateur sous Linux constitue un risque majeur pour la sécurité. Cette méthode de connexion peut être utilisé pour contourner la sécurité sur la machine et obtenir un accès root. Il est judicieux de configurer le mode mono-utilisateur pour demander un mot de passe root pour éviter un éventuel démarrage en mono-utilisateur.
Si le choix de démarrage en mode récupération n'est pas disponible : Éditer le menu du Grub avec la touche "e". Ajouter le mot clé "single" pour démarrer en mono-utilisateur. CTRL X ou F10 devrait permettre de continuer le chargement du système. Le mode mono-utilisateur peut être contourné avec le mot clé "init=/bin/sh". Le mode mono-utilisateur peut être lancé en urgence avec le mot clé "emergency".
# Pour activer l'authentification par mot de passe root en mode mono-utilisateur, ouvrir le fichier /etc/inittab : # Je ne retrouve pas ce fichier sur GNU / Linux Mint, le principe restant le même, à définir. sudo nano /etc/inittab
# Ajouter la ligne suivante au fichier : ~~:S:wait:/sbin/sulogin
# Enregistrer et fermer le fichier.
Source : https://blog.sleeplessbeastie.eu/2014/05/01/how-to-access-single-user-mode-without-password/
BIOS
A venir.
Grub
Le fichier de configuration : sudo nano /etc/default/grub
Paramétrages manuels : https://doc.ubuntu-fr.org/tutoriel/grub2_parametrage_manuel
Améliorer la vitesse de démarrage
Améliorer la vitesse de démarrage.
Exemple de désinstallation / réinstallation de grub
# Désinstaller grub-pc et grub. # Attention ne pas rebooter avant d'avoir réinstallé grub-pc et le bootloader sur le MBR. sudo apt-get remove grub-pc sudo apt-get purge grub-pc sudo apt-get remove grub sudo apt-get purge grub
# Réinstaller grub-pc. sudo apt-get install grub-pc
# Réinstaller le bootloader sur le MBR. sudo update-grub puis sudo grub-install /dev/sda
# Sinon pour booter sur windows, voir a adapter la méthode manuelle : set prefix=(hd0,6)/boot/grub insmod /boot/grub/linux.mod set root=(hd0,1) chainloader+1 boot
Réinstaller le grub en mode rescue
Démarrer l'installateur en mode rescue. Exécuter un shell à la racine du système installé. Pas de commandes, cela ce fait dans l'installateur.
mount /boot/efi grub-install --removable
Et comme /boot/grub/grub.cfg sera probablement manquant, update-grub
Grub et --removable
# Revoir cette option : # L'option --removable a deux effets :
# Installer GRUB en tant que EFI/boot/bootx64.efi (si EFI PC 64 bits), qui est le chemin de support amovible reconnu par défaut sans enregistrement d'une entrée d'amorçage EFI, donc utilisé notamment par tous les installateurs et systèmes live, au lieu de l'emplacement normal EFI/debian/grubx64.efi ;
# N'appelle pas efibootmgr pour enregistrer une entrée dans les variables d'amorçage du firmware EFI, opération dont l'échec provoque l'erreur d'installation de GRUB.
# Installer systématiquement GRUB avec --removable sur tous les systèmes EFI afin de moins dépendre des caprices des firmwares UEFI et de leur gestion calamiteuse des variables d'amorçage.
Changer de mot de passe utilisateur ou root depuis Grub
En cas de perte du mot de passe il est possible de changer le mot de passe oublié depuis le Grub, si celui ci n'a pas été protégé.
Modifier le mot de passe de l'utilisateur root au démarrage de grub
Changer le mot de passe du compte root avec passwd n'est pas forcément recommandé. Cela peut activer le compte root qui n'était pas initialement autorisé. La bonne pratique est d'utiliser un utilisateur sudoers.
On supposera que vous avez le droit légal de faire la modification du mot de passe administrateur. Relire article 323-1 et suivants du code pénal si ce n'est pas le cas : https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006418316&cidTexte=LEGITEXT000006070719 Le fait d'accéder ou de se maintenir, frauduleusement, dans tout ou partie d'un système de traitement automatisé de données est puni de deux ans d'emprisonnement et de 60 000 € d'amende. Lorsqu'il en résulte une suppression ou modification de données contenues dans le système, ou, une altération du fonctionnement de ce système, la peine est de trois ans d'emprisonnement et de 100 000 € d'amende. Lorsque les infractions prévues aux deux premiers alinéas ont été commises à l'encontre d'un système de traitement automatisé de données à caractère personnel mis en œuvre par l’État, la peine est portée à cinq ans d'emprisonnement et à 150 000 € d'amende.
Grub2 peut permettre de contourner l’authentification Linux afin de changer le mot de passe utilisateur ou le mot de passe root oublié. Récupérer le mot de passe utilisateur ou root depuis Grub : https://memo-linux.com/grub2-contourner-lauthentification-linux-mot-de-passe-utilisateur-ou-root-oublie/
Au démarrage, appuyer sur la touche "e". Une fois dans le fichier du grub, appuyer à nouveau sur e puis ajouter en fin de page : init=/bin/bash ou init=/bin/sh Touche entrée puis touche b pour arriver à un prompt Monter le système en lecture / écriture : mount -n -o remount,rw / Mettre à jour le mot de passe du root, lancer la commande passwd reboot
Changer la résolution de GRUB2 au démarrage
# La résolution par défaut est au maximum et affiche un texte trop petit dans le menu multiboot de GRUB.
# Lors de l'affichage du menu du GRUB, appuyer sur c pour faire apparaître la console. # Lancer la commande videoinfo fonctionnelle avec un EFI GRUB pour connaître les résolutions acceptées par le GRUB. # La commande vbeinfo ne fonctionne pas puisque le GRUB est un EFI GRUB.
# Éditer : sudo nano /etc/default/grub # Ajouter : GRUB_GFXMODE=800x600 # Appliquer les changements : sudo update-grub sudo update-grub2
# Au redémarrage, le GRUB est parfaitement lisible et occupe correctement l'écran.
Changer le thème de GRUB2
Thème Ubuntu Mate
Thème Ubuntu Mate : apt://grub2-themes-ubuntu-mate
Liste de thèmes
Liste de thèmes : https://www.gnome-look.org/search/projectSearchText/grub2+theme/
Thème Alienware
Télécharger le thème : https://www.gnome-look.org/p/1111263/ Créer le dossier themes dans le dossier /boot/grub/ : sudo mkdir /boot/grub/themes Copier le contenu des données du fichier alienware.zip dans le dossier /boot/grub/themes.
Le fichier boot/grub/themes/alienware/theme.txt permet de modifier l'affichage personnalisé, de modifier l'emplacement des images, de changer les textes. Télécharger la version modifiée proposée par Vision du web.
Faire une copie du fichier grub par défaut dans le dossier /etc/default/. sudo cp grub grub.old.bak Aller dans le dossier qui contient les fichiers de alienware.zip et copier le nouveau fichier grub. sudo cp grub /etc/default/grub
En option, ajouter les lignes "Redémarrer le système" et "Éteindre le système". Faire une copie du fichier 40_custom par défaut dans le dossier /etc/grub.d/. sudo cp 40_custom 40_custom.old.bak Aller dans le dossier qui contient les fichiers de alienware.zip et copier le nouveau fichier 40_custom. sudo cp 40_custom /etc/grub.d/40_custom Noter que les droits du fichier sont en 0755 : sudo chmod 0755 /etc/grub.d/40_custom.
Ce fichier 40_custom peut être traduit en français : #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'Arrêter le système' { halt echo 'Le système va être arrêté...' } menuentry 'Redémarer le système' { reboot echo 'Le système va être redémarré...' }
Mettre à jour le grub : sudo update-grub
Changer de boot screen
# Le service qui va lancer le boot screen / splash screen est plymouth. Changer de bootscreen.
Chargement sans bootscreen
Ouvrir le fichier d’édition du grub : sudo xed /etc/default/grub
À la ligne GRUB_CMDLINE_LINUX_DEFAULT, retirez le quiet splash.
Mettre à jour la configuration de Grub : sudo update-grub
Protéger Grub par mot de passe
Par défaut Grub est accessible en pressant ESC ou Shift lors du démarrage et n'importe qui peut alors démarrer en mode récupération. Protéger l'édition des menus Grub (Touche E) et l'accès à certains menus (Y compris ceux de récupération) : Générer un mot de passe grub : grub-mkpasswd-pbkdf2
Entrer deux fois un mot de passe et récupérer le texte : grub.pbkdf2.sha512.10000.E87FA7E3D21…
Ajouter à la fin du fichier /etc/grub.d/40_custom : set superusers="adm" password_pbkdf2 adm grub.pbkdf2.sha512.10000.E87FA7E3D21...
Le login grub sera 'adm' avec le mot de passe défini. Appliquer les modifications : sudo update-grub Pour laisser la première option du menu Grub, le boot par défaut, accessible sans mot de passe, ajouter l'option –unrestricted à la première ligne menuentry : sudo mv /boot/grub/grub.cfg /boot/grub/grub.cfg.old sudo bash -c "sed '0,/--class ubuntu/s//--unrestricted --class ubuntu/' /boot/grub/grub.cfg.old > /boot/grub/grub.cfg" grub.cfg est écrasé par la commande update-grub et donc à chaque mise à jour du paquet grub ou du noyau, il faudra relancer les deux commandes précédentes.
La machine démarre normalement sur la première option de grub (démarrage du système) pour arriver sur l'écran de login utilisateur. Toute autre action (sélection d'une autre option du menu grub ou édition d'une option de menu) exigera le login/mot de passe.
Source complémentaire : Protéger le changement de mot de passe utilisateur ou root depuis Grub: https://www.justegeek.fr/proteger-ledition-du-grub-avec-mot-de-passe/
Depuis le menu de Grub, appuyer sur la touche e permet d'éditer le menu par défaut. Renforcer la sécurité en désactivant cette option.
Problèmes d'hibernation et résolution avec GRUB
Le clavier ne sort pas d'hibernation correctement
# Forcer Grub a réinitialiser le clavier à la sortie de veille :
# Éditer le fichier /etc/default/grub : sudo nano /etc/default/grub
# Ajouter "atkbd.reset" : GRUB_CMDLINE_LINUX_DEFAULT="quiet splash atkbd.reset"
# Actualiser le grub : sudo update-grub sudo update-grub2
Le clavier ne sort pas d'hibernation correctement et ne fonctionne pas immédiatement avec Firefox
# La méthode précédente ne fonctionne pas.
# J'ai tenté de diminuer les paramètres de performances de différentes façons, mais, sans succès : # Préférences / Général / Performances # Désactiver : Utiliser les paramètres de performance recommandés # - Utiliser l’accélération graphique matérielle si disponible. (Je passe à non) # - Nombre maximum de processus de contenu. (Je passe à 1)
Source : https://support.mozilla.org/fr/kb/parametres-performance-firefox
# Alternative : # En sortant de veille, ouvrir un terminal et le fermer. # Le clavier fonctionnera à nouveau immédiatement depuis le navigateur Firefox.
Outil de configuration ou de réparation
Grub customizer
# Comment utiliser grub customize : http://ubuntuhandbook.org/index.php/2016/04/install-grub-customizer-ubuntu-16-04-lts/
deb http://ppa.launchpad.net/danielrichter2007/grub-customizer/ubuntu trusty main
Source : https://blablalinux.wordpress.com/2016/05/17/grub-customizer
Boot info
Créer un rapport de démarrage avec boot-info : https://doc.ubuntu-fr.org/boot-info https://doc.ubuntu-fr.org/tutoriel/boot-info
Boot repair
Source : https://blablalinux.wordpress.com/2016/05/16/boot-repair-reparateur-de-demarrage
Attention boot-repair peut casser votre système de démarrage
Non résolu : écran noir avec des points blancs au démarrage
Suite à une mise à jour de Windows 10 ( 2 mises à jour en simultanée, une pour le système, l'autre pour la sécurité ) windows a redémarré sur le choix de GNU/Linux par défaut. Depuis, au démarrage, je n'ai plus de GRUB, mais, un écran noir avec 3 points blancs qui forment un trait.
J'ai update-grub et update-grub2 sans succès. Installation de grub-repair, sans succès. ( sudo add-apt-repository -y ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair boot-info && sudo boot-repair ) Décendu et supprimé 2 noyau, sans succès. Je suis 2 versions de noyau au dessous de la version courante et l'écran noir avec tiret blanc statique s'affiche toujours. Je relance boot-repair
Finalement, " je casse tout ". Au démarrage par défaut, j'ai une erreur : grub rescue Je dois passer par f12 et lancer le disque dur 3.
Je réinstalle un OS sur le 1er disque dur et le grub sur le 3ème disque dur. Je récupère un grub fonctionnel mais mon temps de chargement passe de 50 secondes à 3 minutes 40.
Je n'ai pas réussi a réparer mon Grub avec boot-repair. Source : http://doc.ubuntu-fr.org/boot-repair Source : https://sourceforge.net/p/boot-repair/home/fr/
Chiffrer le disque en intégral
Permet de réduire considérablement les risques liés à l'accès des fichiers de configuration. Le chiffrement du disque dur peut être sélectionné lors de l'installation. Permet notamment de renforcer les configurations précédentes.
Anticiper tout problème de panne avec une sauvegarde de vos fichiers !
Luks
Source : https://www.cyberciti.biz/hardware/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/
Chiffrer la SWAP
.
Désactiver les périphériques USB / Firewire / Thunderbolt
su echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf
Les utilisateurs ne peuvent plus copier rapidement de données sensibles sur des périphériques USB, installer des logiciels malveillants, des virus ou une porte dérobée sur votre système Linux.
Source complémentaire : https://www.cyberciti.biz/faq/linux-disable-modprobe-loading-of-usb-storage-driver/
Désactiver le Bureau à distance
Désactiver le Bureau à distance :
Le "Bureau à distance" est une fonctionnalité permettant de contrôler graphiquement votre ordinateur de l'extérieur. Avoir cette fonctionnalité activée peut être dangereux, surtout si le mot de passe utilisé n'est pas suffisamment efficace. Un utilisateur malveillant pourrait alors prendre le contrôle de votre ordinateur (avec les droits d'utilisateur normaux) et accéder à vos fichiers. Il est conseillé de le désactiver lorsqu'il ne vous est pas utile. Pour le désactiver, entrez la commande suivante dans un terminal : gsettings set org.gnome.Vino enabled false
.
Désactiver le Bluetooth
# Installer rfkill : apt-get install rfkill # La commande rfkill ne liste que les adaptateur réseau WIFI ou BLUETOOTH externes PCMCIA ou USB. # Les chipsets internes ne sont pas listés.
# Éditer le fichier /etc/rc.local avec les droits d'administrateur pour désactiver en permanence le Bluetooth au démarrage du système Linux, sous Ubuntu. # Ajouter la ligne suivante pour désactiver le Bluetooth au démarrage avant la ligne "exit 0" : rfkill block bluetooth # Enregistrer le fichier. # Lors du prochain démarrage, le module Bluetooth ne sera plus chargé.
# Pour ce périphérique ou tout autres périphériques, en cas de message d'erreur : Operation not possible due to RF-kill Opération impossible du fait de RF-kill # Lister les périphériques bloqués : rfkill list # Débloquer un périphérique donné : rfkill unblock 0 # Débloquer tous les périphériques : rfkill unblock all
# Sous Linux Mint je constate que l'icône Bluetooth est toujours présent dans la barre d'action et activé au démarrage. # Pour désactiver le chargement automatique au démarrage, aller dans le menu, Session et démarrage, Démarrage automatique d'applications, désactiver Applet Blueman et Bluetooth OBEX. # L'icône sera toujours présent mais le Bluetooth sera désactivé au démarrage. Cliquer sur l'icône pour activer le Bluetooth. (Vérifier que le Bluetooth soit bien fonctionnel.) # Une autre option doit restée présente dans le menu, Session et démarrage, Démarrage automatique d'applications, il s'agit de blueberry (Blueberry tray icon) qui doit être chargé au boot pour être fonctionnelle.
Source : https://doc.ubuntu-fr.org/bluetooth
Journalisation et audit des fichiers de logs
Gestion des logs.
Analyser et afficher un visuel des statistiques de fréquentation de votre site
Awstats
Site officiel : https://awstats.sourceforge.io
Port Knocking
Le Port Knocking est une méthode simple pour autoriser un accès distant sur un port qui n'est pas constamment ouvert. Cela permet d'éviter les scans de ports et certaines attaques automatiques. Il permet de modifier le comportement d'un pare-feu en temps réel pour ouvrir un port suite au lancement préalable d'une suite de connexions dans le bon ordre sur des ports distincts.
En savoir plus sur le Port Knocking.
Crontab
Pour automatiser les tâches de sécurité et de maintenance.
La crontab. a1- Une instruction(script) nocturne qui monte un point de montage réseau a2- Une autre (qlq min plus tard) qui arrête le serveur sql, mais ça peut aller jusqu'à présenter une jolie page d'accueil de maintenance avec un sablier. a3- Une autre (qlq min plus tard) qui fait le dump en écrivant sur le point de montage. a4- Une autre (qlq min plus tard) qui redémarre le serveur sql. a5- Éventuellement remet l'application web en service et démonte le point de montage.
Fail2ban
Installer et utiliser Fail2ban.
IPQ BDB filter
Peut être considéré comme un fail2ban allégé.Source : https://savannah.nongnu.org/projects/ipqbdb/
SSHGuard
https://forums.freebsd.org/threads/fail2ban-or-sshguard-and-brute-force-prevention.44255/ https://wiki.archlinux.org/index.php/Sshguard
Antivirus
Beaucoup de personnes disent que les systèmes d’exploitation Linux ne sont pas sensible au virus mais c'est faux ! Les virus peuvent être présent et inactifs car conçus pour attaquer un système Windows. D'autres peuvent fonctionner sous GNU/Linux et réellement infecter votre machine.
ClamAV
Installer ClamAV # apt install clamav
Mettre a jour la base de donnée des antivirus : # freshclam
Lancer l’antivirus avec la commande # clamscan -r --remove /
Créer une tâche CRON pour automatiser la tâche par exemple tout les jours a 2 heures du matin ! # crontab -e 02 1 * * * root clamscan -ri --remove /
Et voila l’antivirus a été installé , mis a jour et planifié ! En complément : blog.avis-planethoster.com/trucs-astuces/installer-clamav-sur-cpanel-centos-3118
LMD avec ClamAV
Site officiel : https://www.rfxn.com/projects/linux-malware-detect/
How to Install and Use Linux Malware Detect (LMD) with ClamAV as Antivirus Engine : https://www.tecmint.com/install-linux-malware-detect-lmd-in-rhel-centos-and-fedora/ Ce tutoriel est écrit pour Fedora. Préférer une ressource disponible pour Debian.
ClamTK
sudo apt-get install clamtk Source : https://packages.debian.org/jessie/utils/clamtk Tutoriel : https://debian-facile.org/doc:systeme:clamav Complément : https://doc.ubuntu-fr.org/antivirus
Antivirus en ligne
Antivirus en ligne de Bitdefender - FR : http://www.bitdefender.fr/scanner/online/analyse-gratuite.html Antivirus en ligne de Bitdefender - Ang : http://www.bitdefender.com/scanner/online/free.html AVG : http://www.avgthreatlabs.com/fr-fr/website-safety-reports/?utm_expid=34410884-76.84_9nwpwSSOAetX0FHOdRQ.1&var=1 Eset scanner antivirus en ligne : http://www.eset.com/fr/home/products/online-scanner/ Safety Scanner Antivirus de Microsoft : http://www.microsoft.com/security/scanner/fr-fr/default.aspx Scanner Antivirus Kaspersky : http://www.kaspersky.com/virus-scanner ScanURL : https://scanurl.net Secuser Antivirus en ligne pour Windows : http://www.secuser.com/antivirus/index.htm Urlvoid : http://www.urlvoid.com/
Antivirus Virus total permet de scanner un fichier spécifique en ligne : https://www.virustotal.com/fr/
Télécharger les antivirus et autres outils de Secuser pour protéger votre ordinateur : http://www.secuser.com/telechargement/index.htm Live CD et Live USB antivirus : http://www.commentcamarche.net/faq/34318-les-live-cd-et-live-usb-antivirus
Anti Rootkits
Source : https://www.cyberciti.biz/faq/howto-check-linux-rootkist-with-detectors-software/
Zeppoo
Zeppoo vous permet de détecter les rootkits sous les architectures i386 et x86_64 sous Linux, en utilisant /dev/kmem et /dev/mem. Il peut également détecter des tâches cachées, des connexions, des symboles corrompus, des appels système et bien d'autres choses encore. Télécharger le code source : https://sourceforge.net/projects/zeppoo/
Chkrootkit
# Installer Chkrootkit : sudo apt-get install chkrootkit
# Démarrer le programme : sudo chkrootkit
# Chercher les chaînes suspectes : sudo chkrootkit -x | less
# Analyse d'un répertoire spécifique : sudo chkrootkit -p /mnt/safe
Rkhunter
Contre les rootkit.
sudo apt-get install rkhunter
Commandes de Rkhunter
# Mettre le programme Rkhunter à jour. sudo rkhunter --update
# Lancer une analyse. sudo rkhunter -c --rwo --sk sudo rkhunter --check
# Analyser un répertoire particulier : sudo rkhunter --check --bindir /mnt/safe
# Les options de l'analyse. # -c : vérifier le système entier # --rwo (report-warnings-only) : n'afficher que les erreurs ou alertes # --sk (skip-keypress) : ne pas attendre d'intervention de la part de l'utilisateur # -l rkhunter.log : insérer un résumé dans un fichier log
Paramétrage de rkhunter
Ouvrir le fichier /etc/rkhunter.conf
# Spécifier une ou plusieurs adresses mails : MAIL-ON-WARNING=root@localhost btg@bobotig.fr
# Envoyer les informations à Syslog-NG : USE_SYSLOG=authpriv.warning # (...) ALLOW_SYSLOG_REMOTE_LOGGING=1
Comprendre et sécuriser les erreurs une à une
/usr/bin/lwp-request [ Warning ] Source : https://unix.stackexchange.com/questions/373718/rkhunter-gives-me-a-warning-for-usr-bin-lwp-request-what-should-i-do-debi
Audit de sécurité
Scanner de vulnérabilité Bastille
Bastille Linux est un outil de renforcement de la sécurité pour GNU/Linux. Il aide à améliorer la sécurité soit en désactivant des services, s'ils ne sont pas indispensables, ou en modifiant leur configuration.
Quand il est utilisé dans le mode interactif (ce qui est recommandé), Bastille aide l'administrateur durant le processus de sécurisation ; à chaque étape du processus, une description détaillée des notions de sécurité impliquées est donnée. Chaque étape est optionnelle. Lorsqu'il est utilisé dans le mode automatique, plus rapide, Bastille sécurise le système selon le profil choisi.
Bastille Linux fonctionne avec plusieurs distributions Linux, mais ce paquet a été spécialement modifié pour Debian GNU/Linux.
Installer Bastille
Installer le paquetbastille
avec la commandeapt install bastille
.
Désinstaller Bastille
Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et, les fichiers de préférence des utilisateurs dans leurs dossiers personnels, sont toujours conservés.
Source : https://doc.ubuntu-fr.org/bastille
Site officiel : http://bastille-linux.sourceforge.net
Définition Wikipédia : https://fr.wikipedia.org/wiki/Bastille_UNIX
Scanner de vulnérabilité Lynis
Site officiel : https://cisofy.com/lynis/ Le Github de Lynis : https://github.com/CISOfy/lynis Détail du paquet Debian de Lynis : https://packages.debian.org/stretch/lynis How to scan Linux for vulnerabilities with lynis : http://xmodulo.com/how-to-scan-linux-for-vulnerabilities.html
Installer Lynis : sudo apt install lynis
Exemple sur une machine virtuelle avec une installation minimaliste de GNU/Linux Mint 18.3
[+] System Tools ------------------------------------ - Scanning available tools... - Checking system binaries...
[+] Plugins (phase 1) ------------------------------------ Note: plugins have more extensive tests, which may take a few minutes to complete - Plugin: debian [ [+] Debian Tests ------------------------------------ - Checking for system binaries that are required by Debian Tests...[-8C - Checking /bin... [ FOUND ] - Checking /sbin... [ FOUND ] - Checking /usr/bin... [ FOUND ] - Checking /usr/sbin... [ FOUND ] - Checking /usr/local/bin... [ FOUND ] - Checking /usr/local/sbin... [ FOUND ] - Authentication: - PAM (Pluggable Authentication Modules): - libpam-tmpdir [ Not Installed ] - libpam-usb [ Not Installed ] - File System Checks: - DM-Crypt, Cryptsetup & Cryptmount: - Checking / on /dev/sda1 [ NOT ENCRYPTED ] - Checking /media/sf_Téléchargements on /home/zencool/Téléchargements�[-18C [ NOT ENCRYPTED ] - Ecryptfs [ INSTALLED ] - Home for zencool [ NO ] - Home for vboxadd [ NO ] - Software: - apt-listbugs [ Not Installed ] - apt-listchanges [ Not Installed ] - checkrestart [ Not Installed ] - debsecan [ Not Installed ] - debsums [ Not Installed ] - fail2ban [ Not Installed ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Boot and services ------------------------------------ - Service Manager [ UNKNOWN ] - Checking presence GRUB2 [ FOUND ] - Checking for password protection [ WARNING ] - Check running services (systemctl) [ DONE ] Result: found 27 running services - Check enabled services at boot (systemctl) [ DONE ] Result: found 50 enabled services - Check startup files (permissions) [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Kernel ------------------------------------ - Checking default run level [ RUNLEVEL 5 ] - Checking CPU support (NX/PAE) CPU support: PAE and/or NoeXecute supported [ FOUND ] - Checking kernel version and release [ DONE ] - Checking kernel type [ DONE ] - Checking loaded kernel modules [ DONE ] Found 58 active modules - Checking Linux kernel configuration file [ FOUND ] - Checking default I/O kernel scheduler [ FOUND ] - Checking for available kernel update [ OK ] - Checking core dumps configuration [ DISABLED ] - Checking setuid core dumps configuration [ DEFAULT ] - Check if reboot is needed [ NO ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Memory and processes ------------------------------------ - Checking /proc/meminfo [ FOUND ] - Searching for dead/zombie processes [ OK ] - Searching for IO waiting processes [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Users, Groups and Authentication ------------------------------------ - Search administrator accounts [ OK ] - Checking for non-unique UIDs [ OK ] - Checking consistency of group files (grpck) [ OK ] - Checking non unique group ID's [ OK ] - Checking non unique group names [ OK ] - Checking password file consistency [ OK ] - Query system users (non daemons) [ DONE ] - Checking NIS+ authentication support [ NOT ENABLED ] - Checking NIS authentication support [ NOT ENABLED ] - Checking sudoers file [ FOUND ] - Check sudoers file permissions [ OK ] - Checking PAM password strength tools [ SUGGESTION ] - Checking PAM configuration files (pam.conf) [ FOUND ] - Checking PAM configuration files (pam.d) [ FOUND ] - Checking PAM modules [ FOUND ] - Checking LDAP module in PAM [ NOT FOUND ] - Checking accounts without expire date [ OK ] - Checking accounts without password [ OK ] - Checking user password aging [ DISABLED ] - Determining default umask - Checking umask (/etc/profile) [ OK ] - Checking umask (/etc/login.defs) [ SUGGESTION ] - Checking umask (/etc/init.d/rc) [ SUGGESTION ] - Checking LDAP authentication support [ NOT ENABLED ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Shells ------------------------------------ - Checking shells from /etc/shells Result: found 5 shells (valid shells: 5). - Session timeout settings/tools [ NONE ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] File systems ------------------------------------ - Checking mount points - Checking /home mount point [ OK ] - Checking /tmp mount point [ SUGGESTION ] - Checking /var mount point [ SUGGESTION ] - Checking LVM volume groups [ NONE ] - Querying FFS/UFS mount points (fstab) [ NONE ] - Query swap partitions (fstab) [ OK ] - Testing swap partitions [ OK ] - Checking for old files in /tmp [ OK ] - Checking /tmp sticky bit [ OK ] - ACL support root file system [ ENABLED ] - Checking Locate database [ FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Storage ------------------------------------ - Checking usb-storage driver (modprobe config) [ NOT DISABLED ] - Checking firewire ohci driver (modprobe config) [ DISABLED ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] NFS ------------------------------------ - Check running NFS daemon [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Name services ------------------------------------ - Checking default DNS search domain [ NONE ] - Checking search domains [ FOUND ] - Checking /etc/resolv.conf options [ NONE ] - Searching DNS domain name [ FOUND ] Domain name: MintTesting - Checking nscd status [ NOT FOUND ] - Checking BIND status [ NOT FOUND ] - Checking PowerDNS status [ NOT FOUND ] - Checking ypbind status [ NOT FOUND ] - Checking /etc/hosts - Checking /etc/hosts (duplicates) [ OK ] - Checking /etc/hosts (hostname) [ OK ] - Checking /etc/hosts (localhost) [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Ports and packages ------------------------------------ - Searching package managers - Searching dpkg package manager [ FOUND ] - Querying package manager - Query unpurged packages [ FOUND ] - Checking security repository in sources.list.d directory [ OK ] W: https://minergate.com/repo/deb/dists/stable/InRelease: Signature by key 33BDA78F1D398B52D01438F603F0D99C2EC4C39D uses weak digest algorithm (SHA1) - Checking vulnerable packages (apt-get only) [ DONE ] - Checking package audit tool [ NONE ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Networking ------------------------------------ - Checking configured nameservers - Testing nameservers Nameserver: 127.0.0.1 [ OK ] - Checking default gateway [ DONE ] - Getting listening ports (TCP/UDP) [ DONE ] * Found 25 ports - Checking promiscuous interfaces [ OK ] - Checking waiting connections [ OK ] - Checking status DHCP client [ RUNNING ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Printers and Spools ------------------------------------ - Checking cups daemon [ RUNNING ] - Checking CUPS configuration file [ OK ] - File permissions [ WARNING ] - Checking CUPS addresses/sockets [ FOUND ] - Checking lp daemon [ NOT RUNNING ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: e-mail and messaging ------------------------------------ - Checking Exim status [ NOT FOUND ] - Checking Postfix status [ NOT FOUND ] - Checking Qmail status [ NOT FOUND ] - Checking Sendmail status [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: firewalls ------------------------------------ - Checking iptables kernel module [ NOT FOUND ] - Checking pflogd status [ NOT FOUND ] - Checking pf [ NOT FOUND ] - Checking host based firewall [ NOT ACTIVE ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: webserver ------------------------------------ - Checking Apache [ NOT FOUND ] - Checking nginx [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ] [+] SSH Support ------------------------------------ - Checking running SSH daemon [ FOUND ] - Searching SSH configuration [ FOUND ] - Checking defined SSH options [ DONE ] - SSH option: PermitRootLogin [ DEFAULT ] - SSH option: Protocol [ OK ] - SSH option: StrictModes [ OK ] - SSH option: AllowUsers [ NOT FOUND ] - SSH option: AllowGroups [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] SNMP Support ------------------------------------ - Checking running SNMP daemon [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Databases ------------------------------------ - MySQL process status [ NOT FOUND ] - PostgreSQL processes status [ NOT FOUND ] - Oracle processes status [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] LDAP Services ------------------------------------ - Checking OpenLDAP instance [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] PHP ------------------------------------ - Checking PHP [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Squid Support ------------------------------------ - Checking running Squid daemon [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Logging and files ------------------------------------ - Checking for a running log daemon [ OK ] - Checking Syslog-NG status [ NOT FOUND ] - Checking systemd journal status [ FOUND ] - Checking Metalog status [ NOT FOUND ] - Checking RSyslog status [ FOUND ] - Checking RFC 3195 daemon status [ NOT FOUND ] - Checking minilogd instances [ NOT FOUND ] - Checking logrotate presence [ OK ] - Checking log directories (static list) [ DONE ] - Checking open log files [ DONE ] - Checking deleted files in use [ FILES FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Insecure services ------------------------------------ - Checking inetd status [ NOT ACTIVE ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Banners and identification ------------------------------------ - /etc/motd [ NOT FOUND ] - /etc/issue [ FOUND ] - /etc/issue contents [ WEAK ] - /etc/issue.net [ FOUND ] - /etc/issue.net contents [ WEAK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Scheduled tasks ------------------------------------ - Checking crontab/cronjob [ DONE ] - Checking atd status [ NOT RUNNING ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Accounting ------------------------------------ - Checking accounting information [ NOT FOUND ] - Checking sysstat accounting data [ NOT FOUND ] - Checking auditd [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Time and Synchronization ------------------------------------ - NTP daemon found: ntpd [ FOUND ] - Checking event based ntpdate (if-up) [ FOUND ] - Checking for a running NTP daemon or client [ OK ] - Checking valid association ID's [ FOUND ] - Checking high stratum ntp peers [ WARNING ] - Checking unreliable ntp peers [ FOUND ] - Checking selected time source [ OK ] - Checking time source candidates [ OK ] - Checking falsetickers [ OK ] - Checking NTP version [ FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Cryptography ------------------------------------ - Checking SSL certificate expiration [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Virtualization ------------------------------------
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Containers ------------------------------------
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Security frameworks ------------------------------------ - Checking presence AppArmor [ NOT FOUND ] - Checking presence SELinux [ NOT FOUND ] - Checking presence grsecurity [ NOT FOUND ] - Checking for implemented MAC framework [ NONE ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: file integrity ------------------------------------ - Checking file integrity tools - Checking presence integrity tool [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: System tooling ------------------------------------ - Checking automation tooling - Automation tooling [ NOT FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Software: Malware scanners ------------------------------------ - Checking Rootkit Hunter [ FOUND ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] File Permissions ------------------------------------ - Starting file permissions check /etc/lilo.conf [ NOT FOUND ] /root/.ssh [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Home directories ------------------------------------ - Checking shell history files [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Kernel Hardening ------------------------------------ - Comparing sysctl key pairs with scan profile - kernel.core_uses_pid (exp: 1) [ DIFFERENT ] - kernel.ctrl-alt-del (exp: 0) [ OK ] - kernel.kptr_restrict (exp: 1) [ OK ] - kernel.sysrq (exp: 0) [ DIFFERENT ] - net.ipv4.conf.all.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.all.accept_source_route (exp: 0) [ OK ] - net.ipv4.conf.all.bootp_relay (exp: 0) [ OK ] - net.ipv4.conf.all.forwarding (exp: 0) [ OK ] - net.ipv4.conf.all.log_martians (exp: 1) [ DIFFERENT ] - net.ipv4.conf.all.mc_forwarding (exp: 0) [ OK ] - net.ipv4.conf.all.proxy_arp (exp: 0) [ OK ] - net.ipv4.conf.all.rp_filter (exp: 1) [ OK ] - net.ipv4.conf.all.send_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.default.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv4.conf.default.accept_source_route (exp: 0) [ DIFFERENT ] - net.ipv4.conf.default.log_martians (exp: 1) [ DIFFERENT ] - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1) [ OK ] - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1) [ OK ] - net.ipv4.tcp_syncookies (exp: 1) [ OK ] - net.ipv4.tcp_timestamps (exp: 0) [ DIFFERENT ] - net.ipv6.conf.all.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv6.conf.all.accept_source_route (exp: 0) [ OK ] - net.ipv6.conf.default.accept_redirects (exp: 0) [ DIFFERENT ] - net.ipv6.conf.default.accept_source_route (exp: 0) [ OK ]
[ Press [ENTER] to continue, or [CTRL]+C to stop ]
[+] Hardening ------------------------------------ - Installed compiler(s) [ FOUND ] - Installed malware scanner [ FOUND ]
Scanner de vulnérabilité OpenVAS
Le résultat du scan fournira : La liste des vulnérabilités par niveaux de criticité. Une description des vulnérabilités. La méthode ou un lien pour corriger le problème.
Source : https://doc.ubuntu-fr.org/openvas
Scanner de vulnérabilité Nikto
Nikto est un scanner de vulnérabilité pour les serveurs web, et est programmé en langage P.E.R.L. Ses fonctionnalités sont d'auditer vos serveurs web à la recherche de failles diverses, de tester potentiellement près de 6000 vulnérabilités CGI et fichiers dangereux, de vérifier l'obsolescence du serveur et ses composants logiciels, de rechercher les dossiers pouvant contenir des informations sensibles.
Source : https://doc.ubuntu-fr.org/nikto
Analyse des serveurs Web et acheminement vers Nikto pour analyse. nmap -p80 192.168.1.2/24 -oG - | /path/to/nikto.pl -h - nmap -p80,443 192.168.1.2/24 -oG - | /path/to/nikto.pl -h -
Scanner de vulnérabilité w3af
.
Scanner de vulnérabilité wapiti
File Handling Errors (Local and remote include/require, fopen, readfile…) Database Injections (PHP/JSP/ASP SQL Injections and XPath Injections) XSS (Cross Site Scripting) Injection LDAP Injection Command Execution detection (eval(), system(), passtru()…) CRLF Injection (HTTP Response Splitting, session fixation…)
Wapiti : http://www.ict-romulus.eu/web/wapiti/home
Secapps
Application en ligne payante en démonstration durant 14 jours. Secapps : https://secapps.com
Détecteur d'intrusion - NIDS
AIDE
Source : https://www.cyberciti.biz/faq/debian-ubuntu-linux-software-integrity-checking-with-aide/
Snort
Snort est un IDS qui vous permettra de détecter d'éventuelles intrusions, de gérer vos logs et sniffer votre réseau.
# Installation aptitude install mysql-server snort-mysql
# Choisir le réseau qui vous convient, ici je choisis par exemple de ne surveiller que la plage d'adresses allant de 192.168.0.0 à 192.168.0.255.
# Il va falloir créer une base de données : root@serveur # mysql -u root -p -h localhost mysql > CREATE DATABASE `snort` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; mysql > CREATE USER `snortu`@`localhost`; mysql > SET PASSWORD FOR `snortu`@`localhost`=PASSWORD('snortp'); mysql > GRANT CREATE, DELETE, INSERT, SELECT, UPDATE on `snort`.* to `snortu`@`localhost`; mysql > quit
Ainsi qu'y créer les tables : # root@serveur # cd /usr/share/doc/snort-mysql/ # root@serveur # zcat create_mysql.gz | mysql -u root -p -h localhost snort
Copier le fichier de configuration de snort tel que : # root@serveur # cp /etc/snort/snort.conf /etc/snort/snort.interface.conf # Note : remplacer interface par votre interface réseau, chez moi eth0.
Configuration # Ouvrir le fichier /etc/snort/snort.eth0.conf. # Modifier le réseau surveillé var HOME_NET 192.168.0.0/24
# Commenter la ligne suivante : output log_tcpdump: tcpdump.log
# Appliquer les règles sur les SellCodes include $RULE_PATH/virus.rules include $RULE_PATH/shellcode.rules
# Optionnel : commenter certaines règles qui, ici, ne sont d'aucune utilité : #include $RULE_PATH/web-cgi.rules #include $RULE_PATH/web-coldfusion.rules #include $RULE_PATH/web-iis.rules #include $RULE_PATH/web-frontpage.rules #include $RULE_PATH/community-web-iis.rules #include $RULE_PATH/x11.rules #include $RULE_PATH/oracle.rules #include $RULE_PATH/community-oracle.rules #include $RULE_PATH/pop2.rules #include $RULE_PATH/nntp.rules #include $RULE_PATH/community-nntp.rules #include $RULE_PATH/community-sip.rules
# Ouvrir le fichier /etc/snort/database.conf et modifer la dernière ligne : output database: alert, mysql, dbname=snort user=snortu password=snortp host=localhost
Lancement # Un fichier a peut-être été automatiquement créé afin de bloquer le démarrage du démon, on va le supprimer. rm /etc/snort/db-pending-config
# Lancer snort. root@serveur # service snort start
# Note : lorsque l'on utilise une autre interface qu'eth0 (par exemple wlan1), il faut lancer snort manuellement. root@serveur # snort -u utilisateur -c /etc/snort/snort.wlan1.conf -i wlan1 -D
https://wiki.monitoring-fr.org/securite/snort/snort-ubuntu-install
https://www.unixmen.com/install-snort-nids-ubuntu-15-04/
La documentation Ubuntu est obsolète : https://doc.ubuntu-fr.org/snort Il est possible d'obtenir de plus amples informations concernant ce logiciel sur Wikipédia.
Acid
ACID est un analyseur de log pour Snort. Il permet de visualiser facilement les log de Snort par l'intermédiaire d'une interface web.
# Installation apt install acidbase
# Configuration Copier le fichier de configuration d'acidbase pour pouvoir se rendre sur l'interface web : root@serveur # cp /etc/acidbase/apache.conf /etc/apache2/sites-available/acidbase
Éditer ce fichier pour donner accès à une machine distante de confiance, ajouter ceci en dessous de allow from 127.0.0.0/255.0.0.0 : allow from 192.168.0.3
Commenter les 3 premières lignes : #<IfModule mod_alias.c> # Alias /acidbase "/usr/share/acidbase" #</IfModule>
Ouvrir le fichier /etc/acidbase/base_conf.php et modifier tel que : $BASE_Language = 'french'; $colored_alerts = 1;
Ouvrir le fichier /etc/acidbase/database.php et modifier tel que : $alert_user='snortu'; $alert_password='snortp'; $basepath=; $alert_dbname='snort'; $alert_host=; $alert_port=; $DBtype='mysql';
Lancement, activer acidbase : root@serveur # a2ensite acidbase
Relancer apache : root@serveur # service apache2 reload
Maintenant, vous pouvez vous rendre à l'adresse www.test.sec/acidbase/ pour terminter l'installation d'ACID(BASE) et décortiquer les alertes.
Portsentry
Bloquer les adresses qui scannent les ports de la machine avec portsentry. Pour qu'une adresse soit bloquée, il faut qu'il y est eu un scann. Cette méthode n'empêche pas le scann.
Source : https://www.it-connect.fr/bloquer-les-individus-qui-scannent-votre-machine-avec-portsentry/ Source : https://fr.ikoula.wiki/fr/Se_prot%C3%A9ger_contre_le_scan_de_ports_avec_portsentry Source : https://zb2oby.fr/installer-portsentry Source : https://wiki.debian-fr.xyz/Portsentry
Tests de montées en charge
Pour Apache2
Consulter Jmeter pour Apache2.
Scann de port
Psad
Bloquer les attaques de balayage de ports en temps réel. sudo apt-get install psad
Source : https://www.cyberciti.biz/faq/linux-detect-port-scan-attacks/
Scanner le réseau
Installer Nmap et scanner le réseau. Installer Wireshark et scanner le réseau. Installer le scanner de vulnérabilité Nessus.
Scanner Angryip
Site officiel : http://angryip.org Télécharger : http://angryip.org/download/
AutoScan-Network
Le développement du logiciel semble arrêté depuis 2010 date de la version 1.5. Vérifier si AutoScan-Network fonctionne toujours.
AutoScan-Network est un scanner de réseau sous licence GNU General Public License (GPL) v2. L’objectif principal d’AutoScan-Network est de scanner votre réseau et d’afficher la liste des équipements connectés.
# Télécharger. wget https://superb-dca2.dl.sourceforge.net/project/autoscan/AutoScan/autoscan-network%201.50/AutoScan-Network-Linux-1.50.bin.tar.gz # Décompresser. tar xzvf AutoScan-Network-Linux-1.50.bin.tar.gz # Démarrer. sudo ./AutoScan-Network-Linux-1.50.sh
Installer AutoScan-Network en 64bits : http://edgargr.com/network/how-to-install-autoscan-network-in-64-bits/
Activer - Désactiver la réponse du ping sur le réseau
# Désactiver $sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
Maintenant, tenter de faire un ping sur la machine. Elle ne devrait plus répondre.
# Activer $sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0
-w permet de passer des options supplémentaires. A vérifier, peut être lié au Kernel.
Prelude
Prelude, ou Prelude-IDS, est un système de détection d'intrusion (IDS) hybride composé de types de détecteurs hétérogènes : un NIDS : NetWork Intrusion Detection System ; un HIDS : Host based Intrusion Detection System un LML : Log Monitoring Lackey.
Site officiel : http://www.prelude-ids.com/index.php/fr/ Source : https://doc.ubuntu-fr.org/prelude
Interdire l'accès à la console
Ne donner l'accès à une console qu'aux seuls utilisateurs qui en ont besoin, root et utilisateurs de travail, en modifiant le fichier /etc/passwd. Par défaut, la console est définie tel quel à la fin de chaque ligne : /bin/sh ou /bin/*sh (En fonction du shell utilisé.) Pour interdire l'accès, modifier en : /bin/false
Protéger les dossiers et les fichiers
umask
// Mes umask sont systématiquement en 077 (En mode parano.) donc quoi que je fasse après un upload les droits sont incorrects, il faut que je les corrige. // Basculer les droits avant l'upload vu qu'il faut de toutes façons que je le fasse après.
// Il y a sûrement moyen d'attribuer un umask 027 à un utilisateur spécifique (dont la seule fonction serait d'uploader sur (S)FTP, et dont le groupe primaire serait www-data). // En fonction de la méthode de login, les réglages viennent de différents fichiers de config.) // C'est trop "ouvert", si cet utilisateur se fait cracker, il a forcément le contrôle sur le contenu du serveur web. // Avec root je suis relativement tranquille : pas d’accès extérieur direct et un mot de passe long.
Source : https://www.debian-fr.org/t/apache-reglage-des-droits/52588/9
Protéger un fichier en écriture même contre root avec chattr
# Protéger en écriture le fichier appelé par exemple data.txt afin qu'aucun autre utilisateur ne puisse le modifier, y compris l'utilisateur root.
# Il est nécessaire de se connecter en tant qu'utilisateur root pour utiliser la commande chattr : sudo chattr +i data.txt
# Revenir à un état normal : sudo chattr -i data.txt
# Protéger les fichiers de configuration, pour commencer, celles de Apache, PHP, et, MySQL : sudo chattr +i /etc/ sudo chattr +i /etc/php/*
# Protéger les fichiers de configuration et les dossiers de son site : sudo chattr +i /var/www/html/ sudo chattr +i /var/www/html/fichier.php
# Empêcher la suppression ou le renommage d'un répertoire : sudo chattr +i -R www/ # Revenir en arrière : sudo chattr -i -R www/
Source : http://www.tux-planet.fr/empecher-la-suppression-dun-fichier-ou-dun-repertoire/
Protéger un dossier avec chroot
Chroot un dossier utilisateur pour interdire la navigation dans le système.
Placer PHP et / ou Apache dans une prison chroot minimise les dommages causés par une intrusion potentielle en isolant le serveur Web dans une petite section du système de fichiers. Chroot Apache2 (Centos) : https://www.cyberciti.biz/tips/chroot-apache-under-rhel-fedora-centos-linux.html
Chroot OpenSSH pour pour restreindre les utilisateurs à leur répertoire home : https://www.techrepublic.com/blog/linux-and-open-source/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/
SFTP only + Chroot : https://www.server-world.info/en/note?os=Debian_9&p=ssh&f=5 OpenSSH SFTP chroot() with ChrootDirectory : https://web.archive.org/web/20190316222106/https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory
Debian/Ubuntu Linux: Restrict an SSH user session to a specific directory by setting chrooted jail : https://www.cyberciti.biz/faq/debian-ubuntu-restricting-ssh-user-session-to-a-directory-chrooted-jail/
Au delà de chroot on peut recommander les jails FreeBSD avec ezjail, la virtualisation XEN, la virtualisation KVM ou la virtualisation OpenVZ qui utilise le concept de conteneurs.
: Source complémentaire : https://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/
: https://www.cyberciti.biz/tips/rhel-centos-xen-virtualization-installation-howto.html
: https://www.cyberciti.biz/faq/centos-rhel-linux-kvm-virtulization-tutorial/
: https://www.cyberciti.biz/faq/openvz-rhel-centos-linux-tutorial/
Appliquer des limitations avec SELinux
Introduction à SELinux
Utiliser SELinux (Security Enhanced Linux) pour appliquer des limitations au réseau et aux autres programmes.
Par défaut, un programme exécuté hérite du domaine de l'utilisateur qui l'a démarré. Pour la plupart des programmes importants, les règles SELinux standards prévoient de les faire fonctionner dans un domaine dédié. Pour cela, ces exécutables sont étiquetés avec un type dédié (par exemple ssh est étiqueté avec ssh_exec_t et lorsque le programme est démarré, il bascule automatiquement dans le domaine ssh_t). Ce mécanisme de changement automatique de domaine permet de ne donner que les droits nécessaires au bon fonctionnement de chaque programme.
Si une erreur d'accès liée à SELinux survient, elle sera retranscrite dans /var/log/messages.
Contexte de sécurité
Connaître le contexte de sécurité actuellement actif dans un terminal de commande avec id -Z. id -Z id: --context (-Z) ne fonctionne qu'avec un noyau avec SELinux activé
Connaître le contexte de sécurité appliqué à un processus avec l'option Z de ps. ps axZ | grep vstfpd
Connaître le type affecté à un fichier avec ls -Z. ls -Z test /usr/bin/ssh
Mise en route de SELinux
14.5.2. La mise en route : https://www.debian.org/doc/manuals/debian-handbook/sect.selinux.fr.html https://www.cyberciti.biz/faq/rhel-fedora-redhat-selinux-protection/ https://linux.goffinet.org/13-gestion-securisee/ https://blog.microlinux.fr/selinux/
Protéger le dossier de sessions PHP avec SELinux
# La commande suivante devrait afficher le contexte de sécurité SELinux tel que le mode de fichier, l'utilisateur, le groupe, le contexte de sécurité et le nom du fichier. # Le retour d'information de cette commande semble pourtant ici très limité sur ce dossier de sessions de PHP que nous devons sécuriser : "/var/lib/php/sessions". # Le "?" est sans doute affiché car SELinux n'est pas installé sur le système. ls -Z /var/lib/php ? modules ? sessions
# Test pour la commande -lZ : ls -lZ /var/lib/php drwxr-xr-x 4 root root ? 4096 juil. 27 19:25 modules drwx-wx-wt 2 root root ? 581632 juil. 28 14:26 sessions
# Test pour la commande -la : ls -la /var/lib/php drwxr-xr-x 4 root root 4096 déc. 1 2018 . drwxr-xr-x 36 root root 4096 mars 31 15:51 .. drwxr-xr-x 4 root root 4096 juil. 27 19:25 modules drwx-wx-wt 2 root root 581632 juil. 28 14:26 sessions
Protéger Apache2 avec SELinux
SELinux fournit diverses stratégies de sécurité pour le noyau Linux et le serveur Web Apache. Répertorier toutes les variables de protection Apache SELinux : # getsebool -a | grep httpd
# Exemple de sortie : allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_memcache --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> off httpd_execmem --> off httpd_read_user_content --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_gpg --> off httpd_use_nfs --> off
Exemple pour désactiver le support Apache cgi : # setsebool -P httpd_enable_cgi off
Appliquer des limitations avec Apparmor
Comparaison entre Apparmor SELinux et Grsecurity : https://www.cyberciti.biz/tips/selinux-vs-apparmor-vs-grsecurity.html
Appliquer des limitations avec Grsecurity
Comparaison entre Apparmor SELinux et Grsecurity : https://www.cyberciti.biz/tips/selinux-vs-apparmor-vs-grsecurity.html
Virtualisation avec XEN
Source : https://howto.biapy.com/fr/debian-gnu-linux/systeme/virtualisation-avec-xen/installer-xen-sur-debian Source : https://blog.debugo.fr/virtualisation-xen-4-4/ Source : https://doc.ubuntu-fr.org/xen
Protéger et chiffrer des scripts Bash en production avec SHc
SHc : https://www.synetis.com/proteger-et-chiffrer-des-scripts-bash-en-production/ UnSHc : https://connect.ed-diamond.com/MISC/MISC-089/UnSHc-dechiffrer-des-scripts-shell-compiles-et-chiffres-par-SHc
Pile TCP/IP
Vérifier chacune des règles suivante car elles ne sont peut être pas à jour. Même si la pile TCP/IP du système d'exploitation GNU/Linux est reconnue comme étant une des plus stables, appliquer ce principe de précaution est bien loin d'être un mal, au contraire !
Ouvrir le fichier /etc/sysctl.conf, puis modifer tel que : # Se protéger de l'IP Spoofing' (vol d'adresse IP) : net.ipv4.conf.all.rp_filter = 1
# Se protéger des attaques 'SYN Flood' : net.ipv4.tcp_syncookies = 1
# Ignorer les messages 'ICMP Redirects' : net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0
# Interdire 'Source Routing' : net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0
Ajouter : # Surveiller 'martians' (adresse source falsifiée ou non routable) : net.ipv4.conf.all.log_martians = 1
# Ignorer les messages 'ICMP Echo Request' : net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_echo_ignore_all = 1
# Ignorer les messages 'ICMP Bogus Responses' : net.ipv4.icmp_ignore_bogus_error_responses = 1
# 1024 connexions non confirmées max, limite le SYN flood net.ipv4.tcp_max_syn_backlog = 1024
Redémarrer le service : sysctl -p /etc/sysctl.conf
Limiter le temps de connexion à internet
Timekpr
Source : https://doc.ubuntu-fr.org/timekpr
Workrave
Workrave est un programme pour lutter contre les troubles musculosquelettiques (TMS). Il signale régulièrement de faire des micro-pauses, de prendre des temps de pause et empêche de dépasser une limite quotidienne. Il inclut une appliquette de barre système fonctionnant avec GNOME et KDE, et peut être utilisé à travers le réseau pour surveiller l'activité d'un utilisateur si celui-ci est amené à travailler sur plusieurs ordinateurs. Workrave propose plus d'options de configuration que d'autres outils similaires. Site : http://www.workrave.org/
Système de contrôle parental
Une rapide recherche sur le critère « système de contrôle parental sous Debian » sur un moteur de recherche donne d’intéressantes pistes. Il en ressort le projet « CTparental » qui pourrait bien répondre à vos interrogations : https://wiki.debian-fr.xyz/Contrôle_parental https://doc.ubuntu-fr.org/tutoriel/comment_mettre_en_place_un_controle_parental
Sécurité du matériel
Effacer les données d'un disque dur
En cas de don, de vente, ou, de la mise au rebus d'un disque dur, ne pas y laisser ses données ! L'outil ddblank permet d'effacer le contenu d'un disque de manière définitive. Source : http://easy.open.and.free.fr/ddblank/index.html
Secure delete
Remplir l'espace vide par des zéros pour empêcher la récupération des fichiers : sudo apt install secure-delete
Surveiller la santé du disque dur
Activer le service smartd : sudo apt install smart-notifier gsmartcontrol
Dans /etc/default/smartmontools, mettre start_smartd=yes
Lancer le service : sudo service smartmontools start
Le programme smart-notifier affichera automatiquement une notification en cas de problème détecté sur le disque dur. Examiner les paramètres du disque dur pour rechercher des signes de défaillances depuis l'onglet Error (Erreurs de lecture, écriture...) log avec la commande : gksu gsmartcontrol
Définir la priorité d'un programme
# Il est conseillé de donner une priorité faible à un programme avec la commande nice ou renice si la machine doit être utilisée pendant ce temps. Manuel : https://linux.die.net/man/1/nice
# Lancer un processus avec la priorité CPU et un accès disque le plus bas possible. nice -n 19 ionice -c3 NomDuProgramme
Processeur
Concernant les processeurs, on peut utiliser « spectre-meltdown-checker » pour vérifier les failles. Ce script vérifie aussi d'autres failles comme « zombieload, foreshadow et ridl ».
« apticron » envoie un courriel quand des mise à jour sont disponibles et les télécharge. Sinon il y a « unattended-upgrades » qui lui installe les mise à jour.
Renforcer la sécurité du noyau
# Le fichier /etc/sysctl.conf est utilisé pour configurer les paramètres du noyau au moment de l'exécution. # Linux applique les paramètres de /etc/sysctl.conf au démarrage.
# Exemple de fichier /etc/sysctl.conf : # Activer execshield kernel.exec-shield = 1 kernel.randomize_va_space = 1 # Activer la protection contre l'usurpation d'adresse IP net.ipv4.conf.all.rp_filter = 1 # Désactiver le routage source IP net.ipv4.conf.all.accept_source_route = 0 # Ignorer la demande d'émissions net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_messages = 1 # Assurez-vous que les paquets falsifiés sont enregistrés net.ipv4.conf.all.log_martians = 1
Supprimer les systèmes X Window - X11
# Les systèmes X Window sur le serveur ne sont pas requis. # Vous pouvez désactiver et supprimer X Windows pour améliorer la sécurité et les performances du serveur. # Il n’y a aucune raison d’exécuter X11 sur votre messagerie Linux dédiée et votre serveur Web Apache / Nginx.
Disques et partitions
Informations sur une partition de démarrage
sudo fdisk -l sudo blkid /dev/sda2 /dev/sda2: UUID="66...0C" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="6bd59e1d-0...9-2bb2e0cceaf0"
Optimiser la swap
# Vérifier si il existe déjà un fichier de swap : ## swapon --show /sbin/swapon --show # Vérifier une nouvelle fois s'il existe un fichier de swap actif et consulter des informations sur la disponibilité de la RAM : free -h
Si il n'existe aucun swap actif sur notre système, nous allons pouvoir en ajouter un.
# Connaître l'espace de swap actuel : more /proc/swaps
# Connaître les informations mémoire du système (CTRL+C pour sortir.) : more /proc/meminfo
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur. df -h
# Connaître l'espace disque disponible des différentes partitions : df -ah
# Activer ou désactiver le fichier d'échange à la volée à l'aide de 2 simples commandes : # Allouer la partition de swap qui s'ajoute à l'existante si elle existe. # La commande « more /proc/swaps » vue plus haut devrait vous montrer le nouvel espace de swap nommé file.swap. sudo swapon /var/tmp/maswap # Désallouer l'espace utilisé par le fichier d'échange qui pourra être effacé en toute sécurité. sudo swapoff /var/tmp/maswap
(OK) Source : https://standartux.fr/astuces-ajout-de-swap-a-la-mano/
Créer un périphérique bloc basé sur la RAM qui agit en tant que swap avec zRam
Le programme zRam est un code dans le noyau qui crée un périphérique bloc basé sur la RAM qui va agir en tant que disque d'échange compressé et stocké en mémoire. Cela permet des entrées et des sorties très rapides et augmente la quantité de mémoire disponible avant que le système ne commence à permuter sur le disque.
Quand le système commence à s'étouffer, le disque dur commence à copier les données au format SWAP, ce qui provoque un ralentissement total. Désormais, après avoir activé zRam, au lieu de se figer après une panne de mémoire vive, le système fonctionne comme si rien ne s'était passé.
Ce programme zRam est utile pour les personnes utilisant des ordinateurs avec 1 Go ou 2 Go de RAM. Étant donné que zRam compresse les données, certaines ressources du processeur sont nécessaires. Si vous avez 4 Go de RAM ou plus, il ne sera probablement pas nécessaire de l'utiliser.
# Pour l'activer sur Ubuntu : sudo apt-get install zram-config
# Pour l'installer sur Debian : sudo apt install zram-tools Informations complémentaires : https://wiki.debian.org/ZRam
# Pour supprimer : sudo dpkg --purge zramswap-enabler sudo dpkg --purge zram-config
# Le service s'activera instantanément lors de l'installation : cat /proc/swaps
# Si le service ne démarre pas immédiatement, redémarrer la machine avec reboot et vérifier que le service démarre. # Si vous ne voyez pas vos périphériques d'échange zram dans la liste, lister zRam en tant que service de démarrage avec la commande suivante : sudo su update-rc.d zramswap defaults
Ajouter de la mémoire SWAP
Allouer un fichier swap pour avoir un serveur plus réactif et le prémunir contre les erreurs out-of-memory des services. Le swap sert a conserver des données temporaires sur le disque dur quand il ne peut plus les stocker dans la RAM. Les informations seront cependant écrites sur le disque beaucoup moins rapidement qu'avec la RAM.
Les VPS utilisent une partition unique qui occupe tout l'espace. Il n'est pas possible de modifier le schéma de partitionnement.
Linux accepte deux types de swap : - Une partition dédiée. - Un fichier d'échange.
# Ici c'est un fichier d'échange qui va être ajouté.
# La commande dd crée et copie des zéros dans le fichier maswap contenant 512000 blocs de 1024 octets chacun, soit un fichier approximatif de 512 Mo (voir 524 Mo). # bs=1024 count=512000 # Pourquoi utiliser des blocs de 1024 octets ? # Ce n'est pas recommandé de rajouter 2048Mo en un bloc, il se peut que la RAM n'ait pas assez d'espace pour créer ce fichier en un seul morceau. # Créer un fichier d'échange de 2 Go : # dd if=/dev/zero of=/var/tmp/maswap bs=1024 count=2048000
# Créer un fichier d'échange de 4Go. dd if=/dev/zero of=/var/tmp/maswap bs=1024 count=4096000
# Forcer la synchronisation des disques (Écrire sur le disque les données présentes dans les tampons en mémoire.) sync
# Ce fichier sera uniquement lisible par l'utilisateur root, pour des raisons de sécurité. chmod 0600 /var/tmp/maswap # Ce fichier appartient à root. chown 0:0 /var/tmp/maswap
# Vérifier les permissions et l'espace réservé : ls -lh /var/tmp/maswap
# Initialiser le fichier d'échange pour le rendre utilisable comme extension de mémoire. # Le fichier qui avait l'étiquette SELinux user_tmp_t va changer d'étiquette pour swapfile_t. sudo /sbin/mkswap -c /var/tmp/maswap
# Activer la nouvelle swap. sudo /sbin/swapon /var/tmp/maswap
# Faire une copie du fichier /etc/fstab sudo cp /etc/fstab /etc/fstab.bak
# Rendre l'utilisation du fichier swap permanent en ajoutant une ligne à la fin du fichier /etc/fstab. # Ouvrir le fichier /etc/fstab : sudo nano /etc/fstab # Éditer le fichier /etc/fstab # C'est la même ligne que pour une partition d'échange, mis à part le chemin absolu du fichier, renseigné avec le chemin absolu du périphérique. /var/tmp/maswap swap swap defaults 0 0
# Cette dernière commande peut aussi être ajoutée ainsi à la fin du /etc/fstab : sudo -s cat >>/etc/fstab<< EOF /var/tmp/maswap swap swap defaults 0 0 EOF # Comment lancer l'opération d'écriture de cette commande ?
(OK) Source : https://www.tartarefr.eu/ajouter-de-la-swap-sur-un-vps/
Optimiser les réglages du swap
# Le swappiness configure la fréquence du système à sortir des données de la RAM pour les mettre dans le swap. # Plus la valeur est proche de zéro, et plus les opérations sont gérées et traitées rapidement par la RAM. # Il faut donc indiquer une valeur assez basse. La valeur par défaut est 60, on la met à 10 sur le VPS : sudo sysctl vm.swappiness=10
Avec la valeur 0 : le swap est désactivé. Avec la valeur 1 : quantité minimale de permutation sans la désactiver complètement. Avec la valeur 10 : valeur recommandée pour améliorer les performances lorsqu'il y a suffisamment de mémoire dans un système. Avec la valeur 100 : échange agressif.
# Le vfs_cache_pressure configure comment le système va supprimer les informations inode et dentry par rapport aux autres données. # La valeur d'origine est 100, on la passe à 50 pour éviter que le système ne supprime les informations relatives aux inodes du cache trop rapidement : sudo sysctl vm.vfs_cache_pressure=50
# Rendre les deux changements permanents : sudo nano /etc/sysctl.conf # Ajouter en fin de fichier : vm.swappiness=10 vm.vfs_cache_pressure=50
Si cela ne suffit pas, il faudra penser à allouer plus de ressources matérielles au serveur.Source : https://www.skyminds.net/linux-creer-fichier-echange-swap-optimiser-vps/
Réduction de l'utilisation de la swap
Le paramètre système vm.swappiness indique la tendance qu'a le système a commencer à swapper en fonction de l'occupation mémoire. Il est par défaut à 60, mais, pour une machine desktop, il est plus judicieux de le descendre à 10. En le mettant à 10%, le système attendra que 90% de la mémoire soit remplie avant de commencer à exploiter la mémoire du disque. Cela réduit donc le swapping.
Pour voir la valeur actuelle : cat /proc/sys/vm/swappiness
Pour changer la valeur dans les paramètres système : sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'
Redémarrer ou faire sudo sysctl -p pour prendre en compte ce paramètre.
Séparer les partitions pour le système de fichiers
# La séparation de partitions pour le système de fichiers améliore et sécurise le système. # Les systèmes de fichiers suivants doivent être montés sur des partitions distinctes : /usr /home /var and /var/tmp /tmp
# Créer des partitions distinctes pour les racines de serveur Apache et FTP. # Éditer le fichier /etc/fstab et s'assurer d’ajouter les options de configuration suivantes : noexec - Empêche l'exécution de fichiers binaires mais autorise les scripts. nodev - Empêche l'utilisation de fichiers de périphérique tels que zéro, sda... nosuid - Ne pas définir d'accès SUID / SGID sur cette partition, empêche le bit setuid.
Exemple : /etc/fstab Limite l'accès utilisateur à la partition /dev/sda5 pour le répertoire du serveur FTP : /dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
Quotas de disque
Assurez-vous que le quota de disque est activé pour tous les utilisateurs. Pour implémenter des quotas de disque, procédez comme suit:
Activer les quotas par système de fichiers en modifiant le fichier /etc/fstab Remonter le (s) système (s) de fichiers. Créer les fichiers de base de données de quotas et générez la table d'utilisation du disque. Attribuer des politiques de quota.
Bibliographie
Documentation Ubuntu sur la sécurité : https://doc.ubuntu-fr.org/securite
Documentation Ubuntu sur la sécurité - Pages complémentaires : https://doc.ubuntu-fr.org/securite#liste_des_pages_sur_la_securite
Liens complémentaires sur la sécurité
http://www.coursinforev.org/doku.php/securite_linux
https://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_des_donn%C3%A9es
Lire depuis Wikipédia : Le risque informatique : https://fr.wikipedia.org/wiki/Risque_(informatique)
Sécurité des systèmes d'information : https://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_des_syst%C3%A8mes_d'information
The /etc/securetty file : tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap5sec41.html
https://unix.stackexchange.com/questions/41840/effect-of-entries-in-etc-securetty
http://man7.org/linux/man-pages/man5/securetty.5.html
How to secure an Ubuntu 16.04 LTS server - Part 1 The Basics : https://www.thefanclub.co.za/how-to/how-secure-ubuntu-1604-lts-server-part-1-basics
Security Debian How To : https://www.debian.org/doc/manuals/securing-debian-howto
Les agences gouvernementales de sécurité informatique
ANSSI : http://www.ssi.gouv.fr
Les conseils de la CNIL pour un bon mot de passe : https://www.cnil.fr/fr/les-conseils-de-la-cnil-pour-un-bon-mot-de-passe
Faire un signalement en ligne : https://www.internet-signalement.gouv.fr/PortailWeb/planets/Accueil!input.action
Liste des alertes de sécurité du CERT : Site gouvernemental français officiel : https://www.cert.ssi.gouv.fr
Fichiers .pdf des bonnes pratiques par ssi.gouv.fr : http://www.ssi.gouv.fr/administration/bonnes-pratiques/
Déposer une plainte auprès de l'IC3 (Internet Crime Complaint Center 3) : https://www.ic3.gov/default.aspx
https://www.ncsc.gov.uk/collection/end-user-device-security?curPage=/collection/end-user-device-security/platform-specific-guidance/ubuntu-18-04-lts
Sites spécialisés
The OWASP Foundation - The free and open software security community : https://www.owasp.org
Spécialiste des malwares, virus, désinfections, type d'attaques : http://www.malekal.com
Exploit BD - Exploits sur les bases de données : https://www.exploit-db.com
Portail Security Focus - En anglais : http://www.securityfocus.com
Les forums sur la sécurité
Zenk Security : https://www.zenk-security.com
Forum de sécurité AntiOnline : http://www.antionline.com
Sites complémentaires
Securitycompass : https://blog.securitycompass.com
Linux Security : https://www.cyberciti.biz/tips/linux-security.html
Informations complémentaires sur la sécurité avec Debian
Liste pour les annonces de sécurité de Debian : https://lists.debian.org/debian-security-announce/ Liste pour les annonces de sécurité de Debian pour 2019 : https://www.debian.org/security/2019/index.fr.html
Informations complémentaires sur la sécurité avec RedHat
Source - Comprendre la sécurité : https://www.redhat.com/en/topics/security?sc_cid=70160000000ldR5AAI Source - Guide de sécurité : https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-overview_of_security_topics Source - Selinux : https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index
Magazines et presse en ligne sur la sécurité
ActuSecu par XMCO : https://www.xmco.fr/actusecu/
La sécurité en vidéo
Youtube permet de trouver de très nombreuses vidéos de sécurité et de hacking : https://www.youtube.com/results?search_query=s%C3%A9curit%C3%A9+informatique
Ressources utilisées sur cette page pour la Sécurité de GNU/Linux
Générer des mots de passe avec GNU/Linux : https://itsfoss.com/password-generators-linux/
Des logs colorés avec ccze : https://blogmotion.fr/systeme/couleurs-logs-ccze-linux-17453
Des logs colorés avec ccze : http://linux-attitude.fr/post/lire-les-logs-en-couleur
NAVIGATION
PARTICIPER ET PARTAGERVous êtes sur le wiki de Vision du Web. Les pages présentées sur le wiki évoluent tous les jours. Certaines recherches sont peu abouties et incluent des erreurs. Pour participer sur le wiki, créer un compte utilisateur en haut à droite. La recherche interne du wiki permet de trouver le contenu qui vous intéresse. Les informations présentes sur ce wiki sont issues d'une recherche personnelle. Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb. Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion. Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique. De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web. D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki. |
VALORISER LE WIKIValoriser le contenu partagé sur le wiki avec un don en monnaie numérique : AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash OBTENIR DE LA MONNAIE NUMERIQUEObtenir gratuitement de la monnaie numérique : Gagner des Altcoins - Miner des Altcoins. |
Consulter le miroir du wiki depuis Planet Hoster : Le miroir du wiki version du 12 Juillet 2019.