Sommaire Sécurité

De Analyse Développement Hacking
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

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

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é.
Source : 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

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

Ok.png 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
Ok.png 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 paquet denyhosts pour autoriser des adresses IP SSH avec hosts.allow.
Installer le paquet denyhosts pour protéger ssh avec hosts.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.
Ko.png 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

Ok.png 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

Ok-ko.png 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.
Ok-ko.png 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...)
Ok-ko.png 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.
Ok-ko.png 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. 
Ok-ko.png 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

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.
(OK) 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.

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.
Ok.png Source : https://blog.sleeplessbeastie.eu/2014/05/01/how-to-access-single-user-mode-without-password/

BIOS

...

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 du Boot

Connaître la vitesse de Boot actuelle avec la commande suivante :
systemd-analyze time

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
Revoir cette option : Grub et --removable
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é.
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/

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 # etc/default/grub et ajouter la ligne suivante : GRUB_GFXMODE=800x600
Appliquer les changements : sudo update-grub
Eventuellement : 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 bootscreen
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/

Désactivez la génération des entrées de menu en mode de récupération

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 repair
Source : https://blablalinux.wordpress.com/2016/05/16/boot-repair-reparateur-de-demarrage
Non résolu - boot-repair - é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

Éditer le fichier /etc/rc.local avec les droits d'administrateur pour désactiver en permanence le Bluetooth au démarrage d'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é.
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.
Ok-ko.png 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é.
Ko.png 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 paquet bastille avec la commande apt 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.
Ok-ko.png Source : https://doc.ubuntu-fr.org/bastille
Ok-ko.png Site officiel : http://bastille-linux.sourceforge.net
Ok-ko.png 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 
Ok-ko.png https://wiki.monitoring-fr.org/securite/snort/snort-ubuntu-install
Ok-ko.png https://www.unixmen.com/install-snort-nids-ubuntu-15-04/
Ko.png 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

Autoscan-network.png
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

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/
Ok-ko.png 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.
Ko.png : Source complémentaire : https://www.cyberciti.biz/faq/howto-setup-freebsd-jail-with-ezjail/
Ko.png : https://www.cyberciti.biz/tips/rhel-centos-xen-virtualization-installation-howto.html
Ko.png : https://www.cyberciti.biz/faq/centos-rhel-linux-kvm-virtulization-tutorial/
Ko.png : 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

Auditer les changements de fichiers

# Installer auditd :
apt-get install auditd
https://www.it-connect.fr/surveiller-les-acces-au-fichier-etcpasswd-avec-auditd/
https://www.it-connect.fr/linux-enregistrer-toutes-les-commandes-saisies-avec-auditd/
https://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html

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

Ok-ko.png 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ésactiver les services inutiles

Comprendre et utiliser systemd

Manuel : http://debian-facile.org/doc:system:systemd
La première chose est de savoir quel est le système utilisé pour démarrer la machine : SysVInit ou systemd ?
Les version récentes de Debian utilisent systemd.
# Désactiver un service au démarrage :
sudo systemctl disable service
sudo systemctl disable httpd.service
# Démarrer / arrêter / redémarrer un service :
sudo systemctl disable service
sudo systemctl disable httpd.service
# Obtenir le statut du service :
sudo  systemctl status service
sudo systemctl status httpd.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

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.

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

Ok.png Documentation Ubuntu sur la sécurité : https://doc.ubuntu-fr.org/securite
Ko.png 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é

Ok-ko.png http://www.coursinforev.org/doku.php/securite_linux
Ok-ko.png https://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_des_donn%C3%A9es
Ok-ko.png Lire depuis Wikipédia : Le risque informatique : https://fr.wikipedia.org/wiki/Risque_(informatique)
Ok-ko.png Sécurité des systèmes d'information : https://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_des_syst%C3%A8mes_d'information
Ok-ko.png The /etc/securetty file : tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap5sec41.html
Ko.png https://unix.stackexchange.com/questions/41840/effect-of-entries-in-etc-securetty
Ko.png http://man7.org/linux/man-pages/man5/securetty.5.html
Ko.png 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

Les agences gouvernementales de sécurité informatique

Ok.png ANSSI : http://www.ssi.gouv.fr
Ok.png 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
Ok.png Faire un signalement en ligne : https://www.internet-signalement.gouv.fr/PortailWeb/planets/Accueil!input.action
Ok.png Liste des alertes de sécurité du CERT : Site gouvernemental français officiel : https://www.cert.ssi.gouv.fr
Ok.png Fichiers .pdf des bonnes pratiques par ssi.gouv.fr : http://www.ssi.gouv.fr/administration/bonnes-pratiques/
Ok.png Déposer une plainte auprès de l'IC3 (Internet Crime Complaint Center 3) : https://www.ic3.gov/default.aspx
Ok-ko.pnghttps://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

Ko.png The OWASP Foundation - The free and open software security community : https://www.owasp.org
Ko.png Spécialiste des malwares, virus, désinfections, type d'attaques : http://www.malekal.com
Ko.png Exploit BD - Exploits sur les bases de données : https://www.exploit-db.com
Ko.png Portail Security Focus - En anglais : http://www.securityfocus.com

Les forums sur la sécurité

Ok.png Zenk Security : https://www.zenk-security.com
Ko.png Forum de sécurité AntiOnline : http://www.antionline.com

Sites complémentaires

Ok.png Securitycompass : https://blog.securitycompass.com
Ok.png 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é

Ko.png ActuSecu par XMCO : https://www.xmco.fr/actusecu/

La sécurité en vidéo

Ko.png  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

Ok.png Générer des mots de passe avec GNU/Linux : https://itsfoss.com/password-generators-linux/
Ok.png Des logs colorés avec ccze : https://blogmotion.fr/systeme/couleurs-logs-ccze-linux-17453
Ok.png Des logs colorés avec ccze : http://linux-attitude.fr/post/lire-les-logs-en-couleur

NAVIGATION

PARTICIPER ET PARTAGER

Vous ê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 WIKI

Valoriser 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 NUMERIQUE

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