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

La bonne pratique est d'utiliser un utilisateur sudoers pour effectuer les tâches d'administration.
##########################################################################
# Faut t'il activer initialement le compte root sur sa machine, ou non ? #
##########################################################################
Changer le mot de passe du compte root avec passwd n'est pas forcément recommandé, car cela peut activer le compte root qui n'était pas initialement autorisé.
Est contradictoire avec l'information suivante :
Il est conseillé de donner un mot de passe à l'utilisateur root, car, si le mode de récupération est chargé, la saisie du mot de passe du super-utilisateur sera demandé.

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

Autodétruire ses données en cas de vol avec BusKill

BusKill : ce câble USB permet d'initier une procédure d'auto-destruction d'un laptop Linux s'il est volé en public.
https://securite.developpez.com/actu/289512/BusKill-ce-cable-USB-permet-d-initier-une-procedure-d-auto-destruction-d-un-laptop-Linux-s-il-est-vole-en-public-chacun-peut-le-mettre-au-point-pour-une-somme-allant-de-20-a-45/

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 le fichier /etc/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

# 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 :
# Prérequis : Avoir installé le paquet openssh-server.
sudo apt install denyhosts
# Si le paquet n'est pas présent dans la distribution, installer denyhosts depuis le paquet .deb pour le système 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 :
# Les options de wget : -c permet de reprendre le chargement en cas d'arrêt et -O permet de définir la destination.
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
# Installer le .deb :
dpkg -i denyhosts_2.10-2_all.deb
# Supprimer le .deb :
sudo rm denyhosts_2.10-2_all.deb

Configurer Denyhosts

# Éditer le fichier de configuration de Denyhosts :
sudo nano /etc/denyhosts.conf
# SECURE_LOG: the log file that contains sshd logging info
# if you are not sure, grep "sshd:" /var/log/*
# Debian and Ubuntu
SECURE_LOG = /var/log/auth.log
# HOSTS_DENY: the file which contains restricted host access information
HOSTS_DENY = /etc/hosts.deny
# Ne jamais purger :
# PURGE_DENY =
# Purger toutes les 12 semaines :
PURGE_DENY = 12w
# 'm' = minutes
# 'h' = hours
# 'd' = days
# 'w' = weeks
# 'y' = years
# Nombre maximum de purge pour un hôte :
PURGE_THRESHOLD = 2
# Purge illimitée :
# PURGE_THRESHOLD = 0
# Bloquer les tentatives d'intrusion avec l'option ALL fait que le serveur ne répondra plus aux adresses IP attaquantes.
BLOCK_SERVICE = ALL
# To block only sshd:
# BLOCK_SERVICE  = sshd
# DENY_THRESHOLD_INVALID: block each host after the number of failed login 
# attempts has exceeded this value. This value applies to invalid
# user login attempts (eg. non-existent user accounts)
DENY_THRESHOLD_INVALID = 2
# DENY_THRESHOLD_VALID: block each host after the number of failed 
# login attempts has exceeded this value. This value applies to valid
# user login attempts (eg. user accounts that exist in /etc/passwd) except
# for the "root" user
DENY_THRESHOLD_VALID = 5
# DENY_THRESHOLD_ROOT: block each host after the number of failed 
# login attempts has exceeded this value. This value applies to 
# "root" user login attempts only.
DENY_THRESHOLD_ROOT = 1
# DENY_THRESHOLD_RESTRICTED: block each host after the number of failed 
# login attempts has exceeded this value. This value applies to 
# usernames that appear in the WORK_DIR/restricted-usernames file only.
DENY_THRESHOLD_RESTRICTED = 1
# WORK_DIR: the path that DenyHosts will use for writing data to
# (it will be created if it does not already exist).  
# Note: it is recommended that you use an absolute pathname
# for this value (eg. /home/foo/denyhost/data)
WORK_DIR = /var/lib/denyhosts
# ETC_DIR: the path that DenyHosts will use for reading data when
# we need configuration information.
# Note: it is recommended that you use an absolute pathname
# for this value (eg. /etc or /usr/local/etc)
ETC_DIR = /etc
# SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES|NO
# If set to YES, if a suspicious login attempt results from an allowed-host
# then it is considered suspicious. If this is NO, then suspicious logins 
# from allowed-hosts will not be reported. All suspicious logins from 
# ip addresses that are not in allowed-hosts will always be reported.
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
# HOSTNAME_LOOKUP=YES|NO
# Permet un reverse pour trouver et bloquer le nom de domaine correspondant à l'adresse IP de l'attaquant.
# If set to YES, for each IP address that is reported by Denyhosts,
# the corresponding hostname will be looked up and reported as well
# (if available).
HOSTNAME_LOOKUP=YES
# LOCK_FILE=/path/denyhosts
# If this file exists when DenyHosts is run, then DenyHosts will exit
# immediately.  Otherwise, this file will be created upon invocation
# and deleted upon exit. This ensures that only one instance is
# running at a time.
# Debian or Gentoo
LOCK_FILE = /run/denyhosts.pid
# IPTABLES: if you would like DenyHost to block incoming connections
# using the Linux firewall IPTABLES, then set the following variable
# to the path of the iptables executable. Typically this is 
# /sbin/iptables
# If this option is not set or commented out then the iptables
# firewall is not used.
IPTABLES = /sbin/iptables
# Warning: If you are running IPTABLES, please make sure to comment
# out the PFCTL_PATH and the PF_TABLE variables below. PF and
# IPTABLES should not be running together on the same operating system.
# Ajouter le mail de l'administrateur pour réceptionner les alertes.
ADMIN_EMAIL = mail@domaine.ext
SMTP_HOST = localhost
SMTP_PORT = 25
# SMTP_USERNAME and SMTP_PASSWORD: set these parameters if your 
# smtp email server requires authentication
# SMTP_USERNAME=foo
# SMTP_PASSWORD=bar
# SMTP_FROM: you can specify the "From:" address in messages sent
# from DenyHosts when it reports thwarted abuse attempts
SMTP_FROM = DenyHosts <nobody@localhost>
# Activer la date pour le mail.
# SMTP_DATE_FORMAT: specifies the format used for the "Date:" header
# when sending email messages.
# for possible values for this parameter refer to: man strftime
SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
# Activer la journalisation dans le fichier syslog.
# SYSLOG_REPORT=YES|NO
# If set to yes, when denied hosts are recorded the report data
# will be sent to syslog (syslog must be present on your system).
# The default is: NO
SYSLOG_REPORT=YES
# ALLOWED_HOSTS_HOSTNAME_LOOKUP=YES|NO
# If set to YES, for each entry in the WORK_DIR/allowed-hosts file,
# the hostname will be looked up. If your versions of tcp_wrappers
# and sshd sometimes log hostnames in addition to ip addresses
# then you may wish to specify this option.
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
# AGE_RESET_VALID: Specifies the period of time between failed login
# attempts that, when exceeded will result in the failed count for 
# this host to be reset to 0.  This value applies to login attempts 
# to all valid users (those within /etc/passwd) with the 
# exception of root.  If not defined, this count will never
# be reset.
AGE_RESET_VALID=500s
# AGE_RESET_ROOT: Specifies the period of time between failed login
# attempts that, when exceeded will result in the failed count for 
# this host to be reset to 0.  This value applies to all login 
# attempts to the "root" user account.  If not defined,
# this count will never be reset.
AGE_RESET_ROOT=25d
# AGE_RESET_INVALID: Specifies the period of time between failed login
# attempts that, when exceeded will result in the failed count for 
# this host to be reset to 0.  This value applies to login attempts 
# made to any invalid username (those that do not appear 
# in /etc/passwd).  If not defined, count will never be reset.
AGE_RESET_INVALID=10d
# RESET_ON_SUCCESS: If this parameter is set to "yes" then the
# failed count for the respective ip address will be reset to 0
# if the login is successful.  
# The default is RESET_ON_SUCCESS = no
RESET_ON_SUCCESS = yes
# PLUGIN_DENY: If set, this value should point to an executable
# program that will be invoked when a host is added to the
# HOSTS_DENY file.  This executable will be passed the host
# that will be added as its only argument.
#PLUGIN_DENY=/usr/bin/true
# PLUGIN_PURGE: If set, this value should point to an executable
# program that will be invoked when a host is removed from the
# HOSTS_DENY file.  This executable will be passed the host
# that is to be purged as its only argument.
#PLUGIN_PURGE=/usr/bin/true
# USERDEF_FAILED_ENTRY_REGEX: if set, this value should contain
# a regular expression that can be used to identify additional
# hackers for your particular ssh configuration.  This functionality
# extends the built-in regular expressions that DenyHosts uses.
# This parameter can be specified multiple times.
# See this faq entry for more details:
#    http://denyhost.sf.net/faq.html#userdef_regex
#USERDEF_FAILED_ENTRY_REGEX=
# DAEMON_LOG: when DenyHosts is run in daemon mode (--daemon flag)
# this is the logfile that DenyHosts uses to report its status.
# To disable logging, leave blank.  (default is: /var/log/denyhosts)
DAEMON_LOG = /var/log/denyhosts
# disable logging:
#DAEMON_LOG = 
# Définir le format de la date pour les logs.
# DAEMON_LOG_TIME_FORMAT: when DenyHosts is run in daemon mode 
# (--daemon flag) this specifies the timestamp format of 
# the DAEMON_LOG messages (default is the ISO8061 format:
# ie. 2005-07-22 10:38:01,745)
# Jan 1 13:05:59   
DAEMON_LOG_TIME_FORMAT = %b %d %H:%M:%S
# DAEMON_LOG_MESSAGE_FORMAT: when DenyHosts is run in daemon mode 
# (--daemon flag) this specifies the message format of each logged
# entry.  By default the following format is used:
# %(asctime)s - %(name)-12s: %(levelname)-8s %(message)s
# Where the "%(asctime)s" portion is expanded to the format
# defined by DAEMON_LOG_TIME_FORMAT
# This is the default:
#DAEMON_LOG_MESSAGE_FORMAT = %(asctime)s - %(name)-12s: %(levelname)-8s %(messa>
# DAEMON_SLEEP: when DenyHosts is run in daemon mode (--daemon flag)
# this is the amount of time DenyHosts will sleep between polling
# the SECURE_LOG.  See the comments in the PURGE_DENY section (above)
# for details on specifying this value or for complete details
# refer to:    http://denyhost.sourceforge.net/faq.html#timespec
DAEMON_SLEEP = 30s
# DAEMON_PURGE: How often should DenyHosts, when run in daemon mode,
# run the purge mechanism to expire old entries in HOSTS_DENY
# This has no effect if PURGE_DENY is blank.
DAEMON_PURGE = 1h
# SYNC_SERVER: The central server that communicates with DenyHost
# daemons.  
# To enable synchronization, you must uncomment the following line:
#SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
# SYNC_PROXY_SERVER: HTTP proxy to use when connecting to the
# SYNC-SERVER
# To enable an HTTP proxy, you must uncomment and edit the following line:
#SYNC_PROXY_SERVER = http://my.web.proxy:3128
# SYNC_INTERVAL: the interval of time to perform synchronizations if
# SYNC_SERVER has been uncommented.  The default is 1 hour.
#SYNC_INTERVAL = 1h
# SYNC_UPLOAD: allow your DenyHosts daemon to transmit hosts that have
# been denied?  This option only applies if SYNC_SERVER has
# been uncommented.
# The default is SYNC_UPLOAD = yes
SYNC_UPLOAD = no
#SYNC_UPLOAD = yes
# SYNC_DOWNLOAD: allow your DenyHosts daemon to receive hosts that have
# been denied by others?  This option only applies if SYNC_SERVER has
# been uncommented.
# The default is SYNC_DOWNLOAD = yes
SYNC_DOWNLOAD = no
#SYNC_DOWNLOAD = yes
# SYNC_DOWNLOAD_THRESHOLD: If SYNC_DOWNLOAD is enabled this parameter
# filters the returned hosts to those that have been blocked this many
# times by others.  That is, if set to 1, then if a single DenyHosts
# server has denied an ip address then you will receive the denied host.
# See also SYNC_DOWNLOAD_RESILIENCY
#SYNC_DOWNLOAD_THRESHOLD = 10
# The default is SYNC_DOWNLOAD_THRESHOLD = 3 
#SYNC_DOWNLOAD_THRESHOLD = 3
# SYNC_DOWNLOAD_RESILIENCY:  If SYNC_DOWNLOAD is enabled then the
# value specified for this option limits the downloaded data
# to this resiliency period or greater.
# Resiliency is defined as the timespan between a hackers first known 
# attack and its most recent attack.  Example:
# If the centralized  denyhosts.net server records an attack at 2 PM 
# and then again at 5 PM, specifying a SYNC_DOWNLOAD_RESILIENCY = 4h 
# will not download this ip address.
# However, if the attacker is recorded again at 6:15 PM then the 
# ip address will be downloaded by your DenyHosts instance.  
# This value is used in conjunction with the SYNC_DOWNLOAD_THRESHOLD 
# and only hosts that satisfy both values will be downloaded.  
# This value has no effect if SYNC_DOWNLOAD_THRESHOLD = 1 
# The default is SYNC_DOWNLOAD_RESILIENCY = 5h (5 hours)
# Only obtain hackers that have been at it for 2 days or more:
#SYNC_DOWNLOAD_RESILIENCY = 2d
# Only obtain hackers that have been at it for 5 hours or more:
#SYNC_DOWNLOAD_RESILIENCY = 5h

Redémarrer Denyhosts

# 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

Comprendre et utiliser systemd

Une alternative à systemd avec /etc/rc.local

# De nombreuses distributions Linux possédaient avant systemd le fichier /etc/rc.local dans lequel on plaçait les commandes à exécuter une fois le système Linux démarré.
Source :https://www.linuxtricks.fr/wiki/lancer-des-scripts-personnalises-au-demarrage

Les version les plus récentes de Debian utilisent systemd

La première chose est de savoir quel est le système utilisé pour démarrer la machine : SysVInit ou systemd ?
Manuel : http://debian-facile.org/doc:system:systemd
# Désactiver un service au démarrage :
sudo systemctl disable apache2.service
# Démarrer un service au démarrage :
sudo systemctl enable apache2.service
# Obtenir le statut du service :
sudo systemctl status apache2.service

Exemples pour activer ou désactiver le service mysql

<sudo systemctl status> permet d'avoir un aperçu du status des services qui sont démarrés ;
<sudo systemctl status mysql.service> permet de savoir quel est le statut du service mysql.service (pour autant qu'il soit installé) ;
<sudo systemctl stop mysql.service> permet de l'arrêter ;
<sudo systemctl disable mysql.service> permet de le déactiver et évite qu'il ne démarre quand tu bootes ;
<sudo systemctl start mysql.service> permet de le démarrer ;
<sudo systemctl enable mysql.service> permet de l'activer pour qu'il démarre automatiquement au boot ;

Afficher la liste des services avec la liste des niveaux d'exécution configurés ou désactivés

sudo systemctl list-unit-files --type=service
sudo systemctl list-dependencies graphical.target

Firewall Iptables

Configurer le pare-feu Iptables.

Sécurité du serveur physique

# Activer l'authentification pour le mode mono-utilisateur.
# 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

Liste des touches pour accéder au BIOS et au BOOT MENU

Accéder au BIOS : https://doc.ubuntu-fr.org/tutoriel/modifier_ordre_amorcage_du_bios

Sécuriser le BIOS par mot de passe

# Accéder au BIOS pour définir un mot de passe administrateur.
# Éventuellement, un mot de passe utilisateur peut également être défini.
# Pour supprimer ce mot de passe, retourner dans le menu BIOS, valider les champs mot de passe sans les remplir, puis enregistrer les changements.
# Le BIOS peut également être configuré pour simplement désactiver le démarrage à partir de périphériques externes tels que des DVD / CD / clé USB.

Ajouter un cadenas à votre serveur

Protéger l'accès physique à l'unité centrale à l'aide d'un cadenas.
Il est facile de réinitialiser les réglages du BIOS et par la même occasion, le mot de passe du BIOS précédemment paramétré en retirant un cavalier ou la pile présente sur la carte mère.
De plus, cela évite que quelqu'un puisse retirer le disque dur de l'ordinateur, outrepassant ainsi les mesures de sécurité prises précédemment.
Chiffrer vos disques durs.
Le chiffrement fera en sorte que dans l'éventualité où un OS est chargé en mode live ou les disques durs sont retirés de la machine et raccordés à une autre machine, le contenu des disques sera illisible sans fournir une phrase pour décrypter et accéder aux données.

Grub

Le fichier de configuration :
sudo nano /etc/default/grub
Paramétrages manuels : https://doc.ubuntu-fr.org/tutoriel/grub2_parametrage_manuel

Améliorer la vitesse de démarrage

Améliorer la vitesse de démarrage.

Exemple de désinstallation / réinstallation de grub

# Désinstaller grub-pc et grub.
# Attention ne pas rebooter avant d'avoir réinstallé grub-pc et le bootloader sur le MBR.
sudo apt-get remove grub-pc
sudo apt-get purge grub-pc
sudo apt-get remove grub
sudo apt-get purge grub
# Réinstaller grub-pc.
sudo apt-get install grub-pc
# Réinstaller le bootloader sur le MBR.
sudo update-grub
puis
sudo grub-install /dev/sda
# Sinon pour booter sur windows, voir a adapter la méthode manuelle :
set prefix=(hd0,6)/boot/grub
insmod /boot/grub/linux.mod
set root=(hd0,1)
chainloader+1
boot
Réinstaller le grub en mode rescue
Démarrer l'installateur en mode rescue.
Exécuter un shell à la racine du système installé.
Pas de commandes, cela ce fait dans l'installateur.
mount /boot/efi
grub-install --removable
Et comme /boot/grub/grub.cfg sera probablement manquant,
update-grub
Grub et --removable
# Revoir cette option :
# L'option --removable a deux effets :
# Installer GRUB en tant que EFI/boot/bootx64.efi (si EFI PC 64 bits), qui est le chemin de support amovible reconnu par défaut sans enregistrement d'une entrée d'amorçage EFI, donc utilisé notamment par tous les installateurs et systèmes live, au lieu de l'emplacement normal EFI/debian/grubx64.efi ;
# N'appelle pas efibootmgr pour enregistrer une entrée dans les variables d'amorçage du firmware EFI, opération dont l'échec provoque l'erreur d'installation de GRUB.
# Installer systématiquement GRUB avec --removable sur tous les systèmes EFI afin de moins dépendre des caprices des firmwares UEFI et de leur gestion calamiteuse des variables d'amorçage.
Erreur affichée sur Debian lors de la mise à jour du grub avec update-grub
# L'errreur affichée sur Debian lors de la mise à jour du Grub avec update-grub :
/dev/sdb: open failed: No medium found
# La commande lsblk ne montre aucune partition sdb.
# La commande "sudo dmesg |grep sdb" affiche :
[3.48717] sd 6:0:0:0 [sdb] Attached SCSI removable disk
# Je suppose donc que c'est le multi-lecteur de carte SD connecté en interne à la machine.
# Si ce lecteur n'est pas utilisé pour des fonctions lvm, l'ajouter au global_filter dans "/etc/lvm/lvm.conf".
sudo nano /etc/lvm/lvm.conf
# Ajouter la ligne suivante permettra de retirer les lignes "/dev/sdb: open failed: No medium found" :
global_filter = ["r|/dev/sdb|"]
# Exemple complémentaire :
# Accepte chaque périphériques de blocs :
# filter = [ "a|.*/|" ]
# Rejeter le lecteur de CD :
# filter = [ "r|/dev/cdrom|" ]

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é.
On supposera que vous avez le droit légal de faire la modification du mot de passe administrateur.
Relire article 323-1 et suivants du code pénal si ce n'est pas le cas : https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006418316&cidTexte=LEGITEXT000006070719
Le fait d'accéder ou de se maintenir, frauduleusement, dans tout ou partie d'un système de traitement automatisé de données est puni de deux ans d'emprisonnement et de 60 000 € d'amende.
Lorsqu'il en résulte une suppression ou modification de données contenues dans le système, ou, une altération du fonctionnement de ce système, la peine est de trois ans d'emprisonnement et de 100 000 € d'amende.
Lorsque les infractions prévues aux deux premiers alinéas ont été commises à l'encontre d'un système de traitement automatisé de données à caractère personnel mis en œuvre par l’État, la peine est portée à cinq ans d'emprisonnement et à 150 000 € d'amende.
Grub2 peut permettre de contourner l’authentification Linux afin de changer le mot de passe utilisateur ou le mot de passe root oublié.
Récupérer le mot de passe utilisateur ou root depuis Grub : https://memo-linux.com/grub2-contourner-lauthentification-linux-mot-de-passe-utilisateur-ou-root-oublie/
Au démarrage, appuyer sur la touche "e".
Une fois dans le fichier du grub, appuyer à nouveau sur e puis ajouter en fin de page : init=/bin/bash ou init=/bin/sh
Touche entrée puis touche b pour arriver à un prompt
Monter le système en lecture / écriture : mount -n -o remount,rw /
Mettre à jour le mot de passe du root, lancer la commande passwd
reboot

Changer la résolution de GRUB2 au démarrage

# La résolution par défaut est au maximum et affiche un texte trop petit dans le menu multiboot de GRUB.
# Lors de l'affichage du menu du GRUB, appuyer sur c pour faire apparaître la console.
# Lancer la commande videoinfo fonctionnelle avec un EFI GRUB pour connaître les résolutions acceptées par le GRUB.
# La commande vbeinfo ne fonctionne pas puisque le GRUB est un EFI GRUB.
# Éditer :
sudo nano /etc/default/grub
# Ajouter :
GRUB_GFXMODE=800x600
# Appliquer les changements :
sudo update-grub
sudo update-grub2
# Au redémarrage, le GRUB est parfaitement lisible et occupe correctement l'écran.

Changer le thème de GRUB2

Thème Ubuntu Mate
Thème Ubuntu Mate : apt://grub2-themes-ubuntu-mate
Liste de thèmes
Liste de thèmes : https://www.gnome-look.org/search/projectSearchText/grub2+theme/
Thème Alienware
Télécharger le thème officiel : https://www.gnome-look.org/p/1111263/
Télécharger la version modifiée proposée par Vision du web : https://1drv.ms/u/s!AKtUsyUfGwC9hEs
# Créer le dossier themes dans le dossier /boot/grub/ :
sudo mkdir /boot/grub/themes
# Copier le contenu des données du thème alienware, après avoir décompressé alienware.zip, vers le dossier "/boot/grub/themes/alienware".
# Pour la version de Vision du web, c'est le contenu du dossier /Thème Alienware personnalisé pour le Grub/boot/grub/themes/alienware/ qui doit être copié dans le dossier "/boot/grub/themes/alienware".
# Modifier l'affichage personnalisé du thème, l'emplacement des images, les textes, depuis le fichier "boot/grub/themes/alienware/theme.txt".
# Faire une sauvegarde du fichier grub par défaut dans le dossier /etc/default/.
sudo cp grub grub.old.bak
# Aller dans le dossier qui contient le nouveau fichier du grub, après avoir décompressé alienware.zip, et copier ce nouveau fichier grub.
# Depuis la version de Vision du web, le fichier ce trouve dans "/Thème Alienware personnalisé pour le Grub/etc/default/".
sudo cp grub /etc/default/grub
# Modifier le Grub en ajoutant 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, après avoir décompressé alienware.zip, et copier le nouveau fichier 40_custom.
# Depuis la version de Vision du web, le fichier ce trouve dans "/Thème Alienware personnalisé pour le Grub/etc/grub.d/".
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
# Le fichier 40_custom a été traduit en français dans la version proposée par Vision du web :
#!/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
sudo update-grub2
# Vérifier que le thème alienware soit bien chargé au démarrage :
cd /etc/default/grub.d
sudo nano 60_mint-theme.cfg
# C'est le thème alienware qui doit être indiqué :
GRUB_THEME="/boot/grub/themes/alienware/theme.txt"
# Protéger éventuellement le fichier grub pour le rendre uniquement accessible en lecture, pour éviter qu'il ne soit modifié suite à une mise à jour.
# Cette action devrait être testé depuis une machine virtuelle pour voir si cela n'affecte pas négativement la mise à jour.
Changer de boot screen
# Le service qui va lancer le boot screen / splash screen est plymouth.
Changer de bootscreen.
Chargement sans bootscreen
Ouvrir le fichier d’édition du grub :
sudo xed /etc/default/grub
À la ligne GRUB_CMDLINE_LINUX_DEFAULT, retirez le quiet splash.
Mettre à jour la configuration de Grub :
sudo update-grub

Protéger le Grub de Linux 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 avec la commande linux "grub-mkpasswd-pbkdf2" dédié à Grub.
# Entrer deux fois un mot de passe et récupérer le hash ainsi obtenu :
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
sudo update-grub2
Attention car la saisie du mot de passe depuis le Grub de Debian ou de Mint se fera en Qwerty
Passer le clavier du Grub de Qwerty vers Azerty
Paramétrer la disposition azerty
# Créer le dossier layouts
sudo mkdir /boot/grub/layouts
# Ajouter le paramètre GRUB_TERMINAL_INPUT=at_keyboard au fichier /etc/default/grub
sudo nano /etc/default/grub
# Ajouter la ligne :
GRUB_TERMINAL_INPUT=at_keyboard
# Ajouter les lignes suivantes au fichier /etc/grub.d/40_custom :
sudo nano /etc/grub.d/40_custom
# Ajouter les 3 lignes :
# Clavier fr
insmod keylayouts
keymap fr
# Générer la disposition du clavier dans un fichier reconnu par Grub :
sudo grub-kbdcomp -o /boot/grub/layouts/fr.gkb fr
# Le message suivant est retourné :
Code de touche 0x54 inconnu
Code de touche 0x65 inconnu
Code de touche 0x7f inconnu
# Au redémarrage, le clavier USB n'est plus fonctionnel.
# Seul les touches Ctrl Alt Suppr me permettent de redémarrer, pour passer sur mon second Grub, puis, de corriger le premier Grub depuis le fichier /boot/grub/grub.cfg
# Cette solution ne fonctionne donc pas dans mon cas.
Grub azerty 2016 : https://forums.archlinux.fr/viewtopic.php?t=17913
Grub azerty 2019 : https://doc.ubuntu-fr.org/tutoriel/grub2_parametrage_manuel
Substitution de caractères
Sauvegarder puis éditer le fichier « menu.lst » si il existe déjà :
sudo nano /boot/grub/menu.lst
# Emulation d'un clavier azerty_FR
setkey less backquote
setkey greater tilde
setkey ampersand 1
setkey 1 exclam
setkey tilde 2
setkey 2 at
setkey doublequote 3
setkey 3 numbersign
setkey quote 4
setkey 4 dollar
setkey parenleft 5
setkey 5 percent
setkey minus 6
setkey 6 caret
setkey backquote 7
setkey 7 ampersand
setkey underscore 8
setkey 8 asterisk
setkey backslash 9
setkey 9 parenleft
setkey at 0
setkey 0 parenright
setkey parenright minus
setkey numbersign underscore
# no change for equal
# no change for plus
setkey a q
setkey A Q
setkey z w
setkey Z W
setkey caret bracketleft
# no equivalent for diaresis => we keep the US braceleft
setkey dollar bracketright
# no equivalent for pound => we keep the US braceright
setkey q a
setkey Q A
setkey m semicolon
setkey M colon
setkey bracketleft quote 
setkey percent doublequote
setkey asterisk backslash
setkey bracketright bar
setkey w z
setkey W Z
setkey comma m
setkey question M
setkey semicolon comma
setkey period less
setkey colon period
setkey slash greater
setkey exclam slash
setkey bar question
Cette substitution devrait indiquer à Grub qu'il doit changer chacune des touches d'un clavier QWERTY par son équivalent en AZERTY.
Au prochain démarrage, le clavier dans Grub devrait être un AZERTY.
Ajouter un menu au fichier « /boot/grub/menu.lst » pour repasser sous clavier QWERTY en ajoutant le code suivant à la fin du fichier :
# Repasser le clavier en qwerty
title Repasser le clavier en qwerty
setkey
Cette méthode ne semble pas fonctionner dans mon cas depuis Linux Mint 19.3.
Grub azerty 2008 : https://melodie.citrotux.org/2008/06/07/grub-clavier-azerty/
Grub azerty 2010 : https://www.mail-archive.com/debian-french@lists.debian.org/msg10579.html
Grub azerty 2016 : https://doc.ubuntu-fr.org/grub_legacy
Recherches complémentaires
Le mappage clavier n’est prévu que pour at_keyboard et pas pour usb_keyboard.
Il est bien précisé :
" If at_keyboard freeze your system, you may have to use use usb_keyboard or console, so you could not use your layout..."
Source : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741464
Source : https://www.debian-fr.org/t/grub-pc-usb-keyboard-keymap-fr/74865/17
Recherches complémentaires : grub-kbdcomp grub-mklayout azerty
Cette proposition ne correspond pas à mon attente, qui est de pouvoir saisir le mot de passe du Grub avec un clavier USB et non pas de rentrer dans la console du Grub pour y travailler en Azerty.
Grub azerty 2018 : https://www.developpez.net/forums/d1883244/systemes/linux/administration-systeme/clavier-azerty-grub/
Cette proposition ne correspond pas à mon attente, qui est de pouvoir saisir le mot de passe du Grub avec un clavier USB et non pas de rentrer dans la console du Grub pour y travailler en Azerty.
Pour passer le clavier en azerty, depuis un terminal en Qwerty, utiliser la commande setxkbmap fr
Depuis un clavier Qwerty, saisir cette commande ainsi : setxkb,qp fr
Tester éventuellement (Sans certitude) :
J'ai lu que pour que les clavier USB soient reconnus il faut changer une ou plusieurs options dans le bios selon les cas, 'usb legacy' ou 'usb legacy support' en 'all device' et sur certains mettre périphériques USB en premier dans l'ordre de démarrage du bios.
Compiler le Grub pourrait permettre de régler ce problème
Pour le moment, je me contenterais du mot de passe en Azerty : https://github.com/mmalecki/grub/blob/master/include/grub/keyboard_layouts.h?fbclid=IwAR2IABpFoflVcZDGzCmf2dzIr7iNStfEQ5tDVgJZ2MxNMx7ENgXs3cN-EZk
Solution retenue pour le mot de passe Grub
À défaut d'arriver à configurer un clavier azerty pour la saisie du mot de passe du Grub, on peut enregistrer le mot de passe en Qwerty, pour le saisir normalement avec un clavier Azerty.
À ce moment la, ne pas ajouter de caractères spéciaux dans le mot de passe.
Définir une option pouvant démarrer sans avoir à saisir un mot de passe
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/
Renforcer la sécurité au démarrage de Windows
1- Protéger le bios pour éviter un démarrage malveillant à l'aide d'un clé USB.
2- Ajouter un mot de passe de chiffrement à Windows, avant la connexion au compte administrateur ou utilisateur.
Le passage au niveau 3 du chiffrement de vos mots de passe va accroître la sécurité des comptes Windows.
Un mot de passe sera demandé avant même que le système devienne disponible aux utilisateurs.
Ce mot de passe viendra en plus du mot de passe de votre session.
Il ne doit absolument pas être perdu !
Cliquer sur le bouton Démarrer puis sur Exécuter sous Windows XP.
Sous Windows 8.1, presser simultanément sur les touches Windows et R.
Saisir la commande syskey et valider par Entrée.
Cliquer sur Oui.
Dans la fenêtre qui s'ouvre, cliquer sur Mettre à jour.
Choisir le type de protection à mettre en place.
Sélectionner l'option "Mot de passe de démarrage" et saisir un nouveau mot de passe pour protéger votre clé de cryptage.
Confirmer le mot de passe et valider avec OK.
Finaliser avec OK.
Dès lors, au démarrage de Windows, un premier mot de passe sera demandé. 
La fenêtre de connexion de session sera alors accessible.
Saisir le mot de passe de session pour l'ouvrir.
Syskey n'est plus pris en charge par Windows 10.
Syskey est une clé de chiffrement racine interne Windows utilisée pour chiffrer d'autres données d'état sensibles du système d'exploitation, telles que les hachages du mot de passe du compte d'utilisateur. L'utilitaire SysKey peut être utilisé pour ajouter une couche de protection supplémentaire en cryptant la clé système pour utiliser un mot de passe externe. Dans cet état, le système d'exploitation bloque le processus de démarrage et invite les utilisateurs à entrer le mot de passe (de manière interactive ou en le lisant sur une disquette).

Malheureusement, la clé de chiffrement syskey et l’utilisation de syskey.exe ne sont plus considérées comme sécurisées. Syskey est basé sur une cryptographie faible qui peut facilement être brisée à notre époque. Les données protégées par syskey sont très limitées et ne couvrent pas tous les fichiers ni toutes les données du volume du système d'exploitation. L'utilitaire syskey.exe a également été utilisé par les pirates dans le cadre des escroqueries par ransomware.
Pour utiliser la sécurité du système d’exploitation au démarrage, utiliser Bitlocker, VeraCrypt, DiskCryptor, Jetico BestCrypt Volume Encryption, ou des technologies similaires au lieu de l'utilitaire syskey.exe.
Source : https://support.microsoft.com/fr-fr/help/4025993/syskey-exe-utility-is-no-longer-supported-in-windows
Les 3 niveaux de syskey
L'utilitaire Syskey va permettre de configurer le chiffrement de vos mots de passe.
3 niveaux de protection sont possibles :
Niveau 1 : Windows utilise une clé aléatoire générée par l'ordinateur en tant que clé système et la stocke sur le système local.
La clé étant stockée sur le système d’exploitation, elle permet un démarrage du système sans assistance.
C'est le niveau activé par défaut dans Windows.
Niveau 2 : Windows utilise une clé aléatoire générée par l'ordinateur en tant que clé système et la stocke sur une disquette.
La disquette doit obligatoirement être insérée pour que Windows puisse démarrer et que vous et les autres utilisateurs puissiez accéder à votre session.
Si la disquette contenant la clé est perdue ou illisible, vous ne pourrez plus démarrer Windows c'est pourquoi ce niveau de protection est peu recommandé.
Les disquettes ne sont presque plus utilisées et sont trop sensibles à l'environnement extérieur pour pouvoir les utiliser pour des données sensibles.
Niveau 3 : Vous définissez un nouveau mot de passe qui vous sera demandé au démarrage de Windows, avant que le système ne devienne disponible aux utilisateurs souhaitant ouvrir une session.
Le mot de passe de session sera bien sûr nécessaire par la suite.
Le mot de passe n'est pas stocké sur l'ordinateur : un hachage MD5 du mot de passe est utilisé comme clé principale pour protéger la clé de cryptage du mot de passe de votre session.
En cas de perte du mot de passe, vous ne pourrez plus démarrer Windows. Ce niveau offre une sécurité accrue à vos données et est fortement recommandé.
Source : https://www.pcastuces.com/pratique/windows/proteger_demarrage_windows/page2.htm

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 la configuration.
# Renforcer la sécurité en désactivant cette option.
# Noter que cette option peut être utile !

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 customizer :
Source : http://tipsonubuntu.com/2018/03/11/install-grub-customizer-ubuntu-18-04-lts/
Source : http://ubuntuhandbook.org/index.php/2016/04/install-grub-customizer-ubuntu-16-04-lts/
Source : https://blablalinux.wordpress.com/2016/05/17/grub-customizer
Source : https://memo-linux.com/personnaliser-le-grub-avec-grub-customizer/
Source : https://doc.ubuntu-fr.org/grub-customizer
# Ajouter le ppa :
deb http://ppa.launchpad.net/danielrichter2007/grub-customizer/ubuntu trusty main
Boot info
# Créer un rapport de démarrage avec boot-info :
Source : https://doc.ubuntu-fr.org/boot-info
Source : https://doc.ubuntu-fr.org/tutoriel/boot-info
Boot repair
Source : https://doc.ubuntu-fr.org/boot-repair
Source : https://blablalinux.wordpress.com/2016/05/16/boot-repair-reparateur-de-demarrage
Attention boot-repair peut casser votre système de démarrage
Non résolu : écran noir avec des points blancs au démarrage
Suite à une mise à jour de Windows 10 ( 2 mises à jour en simultanée, une pour le système, l'autre pour la sécurité ) windows a redémarré sur le choix de GNU/Linux par défaut.
Depuis, au démarrage, je n'ai plus de GRUB, mais, un écran noir avec 3 points blancs qui forment un trait.
J'ai update-grub et update-grub2 sans succès.
Installation de grub-repair, sans succès. ( sudo add-apt-repository -y ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair boot-info && sudo boot-repair )
Décendu et supprimé 2 noyau, sans succès.
Je suis 2 versions de noyau au dessous de la version courante et l'écran noir avec tiret blanc statique s'affiche toujours.
Je relance boot-repair
Finalement, " je casse tout ".
Au démarrage par défaut, j'ai une erreur : grub rescue
Je dois passer par f12 et lancer le disque dur 3.
Je réinstalle un OS sur le 1er disque dur et le grub sur le 3ème disque dur.
Je récupère un grub fonctionnel mais mon temps de chargement passe de 50 secondes à 3 minutes 40.
Je n'ai pas réussi a réparer mon Grub avec boot-repair.
Source : http://doc.ubuntu-fr.org/boot-repair
Source : https://sourceforge.net/p/boot-repair/home/fr/
Réparer la MBR
Source : https://www.easytutoriel.com/comment-reparer-demarrage-mbr-xp-7-windows-ordinateur.html

Supprimer des entrées obsolètes de boot-efi qui apparaissent dans le BIOS EFI

# Deux entrées de Debian présentes dans les choix de périphériques de mon BIOS EFI sont erronées car elles proviennent de l'installation de Debian Buster qui a finie en écran noir, puis, qui a été supprimé.
# Identifier les lignes erronées :
sudo efibootmgr -v
...
Boot0004* linuxmint	HD(1,GPT,2273ee...ab0,0x800,0x82000)/File(\EFI\LINUXMINT\GRUBX64.EFI)
Boot0005* debian	HD(1,GPT,2273ee...ab0,0x800,0x82000)/File(\EFI\DEBIAN\SHIMX64.EFI)
Boot0006* debian	HD(1,GPT,2273ee...ab0,0x800,0x82000)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO
# Supprimer les entrées de boot-efi qui n'ont pas été supprimées lors de la suppression de Debian.
# Ce qui serait supprimé, c'est une entrée dans la table bcd qui se trouverait dans une partition efi.
# Utiliser un live-usb d'installation pour saisir les commandes suivantes.
# Les deux lignes à supprimer correspondent au numéro de Boot Boot0005 et Boot0006.
# D'après le man page, utiliser la commande suivante :
efibootmgr -b 6 -B
efibootmgr -b 5 -B
# Ou
efibootmgr -b 0006 -B
efibootmgr -b 0005 -B
# Attention !
# J'aurais du actualiser la liste, entre deux actions de suppression.
# Il est indispensable de commencer par le chiffre le plus élevé si on souhaite enchaîner les commandes !
# En commençant par le 5, puis, le 6, j'ai l'impression que j'ai fais sauter l'entrée de la distribution Linux Mint qui était sur le disque secondaire SATA.
# Au démarrage, F2, dans le BIOS, je constate que une des deux lignes concernant Debian a bien été supprimée, mais, la seconde est toujours présente.
# L'utilitaire Windows Easy UEFI Trial m'a permis d'ajouter manuellement une ligne "Linuxmint" pour le disque SATA, qui va pointer sur le Grub du SSD.
# Je ne suis pas convaincu que cela soit forcément utile ainsi, mais bon, la ligne du Linux Mint du deuxième disque dur est présente pour signifier que ce système est installé.
# La Mint du deuxième disque dur est également bien présente dans le Grub qui est chargé depuis le disque SSD.
Source : https://doc.ubuntu-fr.org/os-uninstaller
Comment faire réapparaître la ligne du CD-Rom dans le BIOS EFI
Exemple pour un ordinateur asus/8.0 :

Dans l'onglet BOOT
Inhiber Fast Boot et autoriser Launch CSM
Dans Launch CSM autoriser Launch PXE OpROM

Dans l'onglet Security :
Inhiber Secure Boot Control

Dans l'onglet BOOT :
Le Graveur DVD doit apparaître en 3èmè position, le laisser en place

Dans l'onglet Save & Exit :
Sélectionner Lanch EFI from file system device et valider
Rebooter en maintenant ESC appuyé (sélection du Boot device pour un ASUS)
Le Graveur y est maintenant présent, le sélectionner en ayant placé un DVD system en 64 Bits uniquement
Le Boot s'effectue alors à partir du DVD

Si j'en crois la nécessité d'activer le pxe c'est que le cd/dvd rom doit être compris dans les lecteurs réseau et non plus dans les périphériques au lancement.
Fonctionnel avec mon Bios UEFI BIOS Utility :
Désactiver le démarrage rapide
Message ROM en option : Éventuellement le passer en Keep Current

Redémarrer avec un CD bootable, c'est le plus important, voir, essentiel, peut être que les deux étapes précédentes sont facultatives.
Le CD apparaît dans la liste des choix disponibles, via le menu de démarrage appelé avec F8.
Monter la partition EFI depuis Linux pour y supprimer une entrée
# Lister les partitions :
sudo fdisk -l
# Monter la partition EFI :
sudo mount /dev/sdX EFI/
Supprimer alors le dossier debian.
Supprimer alors, depuis un live USB de linux, l'entrée correspondant à debian, comme précédemment, avec la commande efibootmgr.
Monter la partition EFI depuis Windows pour y supprimer une entrée
Étape 1 : Localiser et monter la partition EFI avec cmd.exe
■ Lancer cmd.exe en tant qu'administrateur
■ Saisir "diskpart" --> une nouvelle fenêtre de commande s'ouvre.
■ Saisir list disk --> la liste des disques apparait. Noter le numéro du disque. Par exemple, pour la suite le "1"
■ saisir select disk 1 --> le disque 1 est alors actif
■ Saisir list partition --> pour afficher les numéros de partition. En général l'EFI est la première partition. Pour la retrouver c'est facile, elle fait dans les 200 Mo
■ Saisir select partition 1 --> La partition est alors active.
Sans fermer la fenêtre diskpart, ouvrir l'explorateur Windows et consulter la liste des disques (disque internes, externes, usb...) branchés au PC. Chacun est identifié par une lettre comme C: ...
Dans la fenêtre diskpart:
■ Saisir assign letter= une lettre ; par exemple assign letter=T
 ○ A ce moment là, si toutes les étapes se sont déroulées correctement et que la lettre du disque n'a pas déjà été utilisée, vous pouvez voir la partition EFI montée et accessible depuis l'explorateur sous T :
Voir ces étapes sur la capture:
Étape 2 : Écrire sur la partition
La partition est formatée en FAT32, il n'y a donc pas de problème pour lire/écrire dessus. Sauf que pour une raison étrange, si on passe par l'explorateur de Windows on un des messages d'erreur qui empêchent d'accéder au disque ! On le sait tous, Windows peut parfois être tordu, dans ce cas la solution pour y remédier l'est tout autant.
■ Lancer le gestionnaire de tâche en mode administrateur
■ Cliquer Fichier > Créer une nouvelle tâche
■ Cocher la case "Créer cette tâche avec des privilèges d'administration"
■ Cliquer Parcourir --> Une fenêtre d'explorateur s'ouvre et vous pouvez naviguer sans souci dans la partition EFI montée précédemment.
Supprimer alors, depuis un live USB de Linux, l'entrée correspondant à Debian, comme précédemment, avec la commande efibootmgr.
Source : https://forum.macbidouille.com/index.php?showtopic=396092

Changer l'ordre de démarrage proposé par Grub

sudo gedit /boot/grub/grub.cfg

Changer l'ordre de démarrage EFI

Depuis Linux
https://papy-tux.legtux.org/doc1251/index.html
http://ikewdu.free.fr/quatre-methodes-pour-ajouter-une-entree-nvram-en-uefi/
Depuis Windows
Avec Easy UEFI
https://www.easyuefi.com/index-us.html

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 en sauvegardant régulièrement vos fichiers !
Le chiffrement seul protège contre la divulgation des données en cas de perte ou de vol, mais pas contre une intervention illicite non détectée sur la partie du système qui doit inévitablement rester non chiffrée.
Ne pas oublier qu'une installation standard de Debian avec chiffrement laisse l'intégralité de /boot en clair, ce qui inclut le chargeur d'amorçage, l'image du noyau et l'initramfs.
GRUB et le noyau peuvent être protégés par le secure boot UEFI, mais pas l'initramfs ni la configuration de GRUB. 

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/

Mot de passe sur la session utilisateur

Concept bien connu maintenant, avant de pouvoir utiliser le système d'exploitation, il faudra se connecter à son compte avec son identifiant et son mot de passe utilisateur.
La sécurité de premier niveau sur un ordinateur consiste à définir un nom d'utilisateur (login ou identifiant) et un mot de passe (password) pour votre session.
Si le mot de passe utilisateur n'est pas défini, il est recommandé de définir un mot de passe utilisateur pour exiger le mot de passe à la connexion.
Il n'est donc pas conseillé de désactiver le mot de passe utilisateur pour accéder plus rapidement au système.
Une fois connecté au système en mode graphique, le raccourci clavier pour verrouiller la session utilisateur sous Linux est Ctrl + Alt + L.

Ouvrir une session sécurisée sous Linux ou Windows

Sous Linux et Windows, il existe une combinaison de touches permettant de se protéger des tentatives d'interception des identifiants lors de l'ouverture d'une session.
Cette combinaison de sécurité est appelée en anglais "Secure Attention Key" (SAK) ou "Secure Attention Sequence" (SAS).
Sous Linux : Ctrl + Alt + Break/Pause
Sous Windows : Ctrl + Alt + Suppr
Il faudra appuyer sur ces touches à chaque fois pour ouvrir une session d'ordinateur sécurisée.
Une fois cette combinaison activée, l'accès à un écran sécurisé pour ouvrir une session sécurisée sera proposé.
Obliger la combinaison Ctrl + Alt + Suppr sous Windows
Appuyer sur la touche Windows de votre clavier puis taper Outils dans la zone de recherche du menu Démarrer (Windows 7) ou dans l'écran d’accueil (Windows 8).
Cliquer sur Outils d'administration dans la liste des résultats.
Stratégie de sécurité locale.
Faire défiler la fenêtre suivante jusqu'à trouver "Ouverture de session interactive : ne pas demander la combinaison de touche Ctrl + Alt + Suppr". Double-cliquez dessus.
Ouverture de session interactive, cliquer sur Désactiver puis sur OK.
Autoriser combinaison Ctrl + Alt + Del
Désormais, quand vous voudrez vous connecter ou déverrouiller votre session, Windows vous obligera à appuyer sur cette combinaison de touches.

Désactiver le Bureau à distance

Désactiver le Bureau à distance :
Le "Bureau à distance" est une fonctionnalité permettant de contrôler graphiquement votre ordinateur de l'extérieur. Avoir cette fonctionnalité activée peut être dangereux, surtout si le mot de passe utilisé n'est pas suffisamment efficace. Un utilisateur malveillant pourrait alors prendre le contrôle de votre ordinateur (avec les droits d'utilisateur normaux) et accéder à vos fichiers. Il est conseillé de le désactiver lorsqu'il ne vous est pas utile. Pour le désactiver, entrez la commande suivante dans un terminal : gsettings set org.gnome.Vino enabled false.

Désactiver le Bluetooth

# Installer rfkill :
apt-get install rfkill
# La commande rfkill ne liste que les adaptateur réseau WIFI ou BLUETOOTH externes PCMCIA ou USB.
# Les chipsets internes ne sont pas listés.
# Éditer le fichier /etc/rc.local avec les droits d'administrateur pour désactiver en permanence le Bluetooth au démarrage du système Linux, sous Ubuntu.
# Ajouter la ligne suivante pour désactiver le Bluetooth au démarrage avant la ligne "exit 0" :
rfkill block bluetooth
# Enregistrer le fichier.
# Lors du prochain démarrage, le module Bluetooth ne sera plus chargé.
# Pour ce périphérique ou tout autres périphériques, en cas de message d'erreur :
Operation not possible due to RF-kill
Opération impossible du fait de RF-kill
# Lister les périphériques bloqués :
rfkill list
# Débloquer un périphérique donné :
rfkill unblock 0
# Débloquer tous les périphériques :
rfkill unblock all
# Sous Linux Mint je constate que l'icône Bluetooth est toujours présent dans la barre d'action et activé au démarrage.
# Pour désactiver le chargement automatique au démarrage, aller dans le menu, Session et démarrage, Démarrage automatique d'applications, désactiver Applet Blueman et Bluetooth OBEX.
# L'icône sera toujours présent mais le Bluetooth sera désactivé au démarrage. Cliquer sur l'icône pour activer le Bluetooth. (Vérifier que le Bluetooth soit bien fonctionnel.)
# Une autre option doit restée présente dans le menu, Session et démarrage, Démarrage automatique d'applications, il s'agit de blueberry (Blueberry tray icon) qui doit être chargé au boot pour être fonctionnelle.
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
Ou :
Vérifier dans son fichier de configuration /etc/default/rkhunter que report_email est sur root et cron_daily_run à yes.
# Spécifier une ou plusieurs adresses mails, vous recevrez des mails si des fichiers sensibles sont modifiées.
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
Attention toutefois, car il peut générer des faux positifs.
/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 d'un scan Openvas fournira :
- La liste des vulnérabilités par niveaux critique.
- Une description des vulnérabilités.
- La méthode ou un lien pour corriger le problème.
Source : https://doc.ubuntu-fr.org/openvas
Source complémentaire : https://fr.wikipedia.org/wiki/OpenVAS
Source Github : https://github.com/greenbone/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

umask

// Mes umask sont systématiquement en 077 (En mode parano.) donc quoi que je fasse après un upload les droits sont incorrects, il faut que je les corrige. 
// Basculer les droits avant l'upload vu qu'il faut de toutes façons que je le fasse après.
// Il y a sûrement moyen d'attribuer un umask 027 à un utilisateur spécifique (dont la seule fonction serait d'uploader sur (S)FTP, et dont le groupe primaire serait www-data).
// En fonction de la méthode de login, les réglages viennent de différents fichiers de config.)
// C'est trop "ouvert", si cet utilisateur se fait cracker, il a forcément le contrôle sur le contenu du serveur web.
// Avec root je suis relativement tranquille : pas d’accès extérieur direct et un mot de passe long.
Source : https://www.debian-fr.org/t/apache-reglage-des-droits/52588/9

Protéger un fichier en écriture même contre root avec chattr

# Protéger en écriture le fichier appelé par exemple data.txt afin qu'aucun autre utilisateur ne puisse le modifier, y compris l'utilisateur root.
# Il est nécessaire de se connecter en tant qu'utilisateur root pour utiliser la commande chattr :
sudo chattr +i data.txt
# Revenir à un état normal :
sudo chattr -i data.txt
# Protéger les fichiers de configuration, pour commencer, celles de Apache, PHP, et, MySQL :
sudo chattr +i /etc/
sudo chattr +i /etc/php/*
# Protéger les fichiers de configuration et les dossiers de son site :
sudo chattr +i /var/www/html/
sudo chattr +i /var/www/html/fichier.php
# Empêcher la suppression ou le renommage d'un répertoire :
sudo chattr +i -R www/
# Revenir en arrière :
sudo chattr -i -R www/
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

# Par défaut, un programme exécuté hérite du domaine de l'utilisateur qui l'a démarré.
# Utiliser SELinux (Security Enhanced Linux) pour appliquer des limitations au réseau et à d'autres programmes.
# Pour la plupart des programmes importants, les règles SELinux standards prévoient de les faire fonctionner dans un domaine dédié.
# Ce mécanisme de changement automatique de domaine permet de ne donner que les droits nécessaires au bon fonctionnement de chaque programme.
# Ces exécutables sont étiquetés avec un type dédié. SSH est étiqueté avec ssh_exec_t et quand le programme est démarré, il bascule automatiquement dans le domaine ssh_t.
# SELinux est un module permettant une gestion très fine de la sécurité de votre système d'exploitation.
# Si une erreur d'accès liée à SELinux survient, elle sera retranscrite dans /var/log/messages.
# Sur des configurations poussées ou spécifiques, SELinux peut devenir bloquant.
# C'est un élément de sécurité fiable mais qui n'est pas une nécessité propre au système.
# Il est le plus souvent à activer lorsqu'on le gère totalement ou sur des environnements finaux après l'installation des éléments/services du serveur.
# SELinux et Redhat :
# SELinux est installé et activé par défaut sur les distributions de la famille de RedHat.
# SELinux et Debian :
# SELinux n'est pas présent par défaut sur les systèmes Debian.
# Pour l'utiliser, il faut au minimum installer les paquets selinux-basics et selinux-policy-default

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://debian-handbook.info/browse/fr-FR/stable/sect.selinux.html
https://www.cyberciti.biz/faq/rhel-fedora-redhat-selinux-protection/
https://en.wikipedia.org/wiki/Security-Enhanced_Linux
https://linux.goffinet.org/13-gestion-securisee/
https://www.microlinux.fr/selinux/
Manuel PDF : https://books.google.fr/books?id=xeBjWEy6yL4C&pg=SA5-PA10&lpg=SA5-PA10&dq=debian+selinux+v%C3%A9rifier+si+activ%C3%A9&source=bl&ots=Jv7Tarna9r&sig=ACfU3U3kSjweHX8NOOphL36pDf7eYs90Og&hl=fr&sa=X&ved=2ahUKEwi_yZnLmcrnAhXtzIUKHQByBXUQ6AEwCHoECAkQAQ#v=onepage&q=debian%20selinux%20v%C3%A9rifier%20si%20activ%C3%A9&f=false
Si SELinux est activé
Configurer SELinux puis redémarrer le système pour appliquer les changements
# Éditer /etc/selinux/config pour désactiver SELINUX avec la valeur de variable 'disabled'.
# La valeur enforcing signifie que la politique de sécurité SELinux est appliquée.
SELINUX=enforcing
# La valeur permissive signifie que la politique de sécurité SELinux n'est pas appliquée.
# SELinux se contentera d'écrire dans les logs.
SELINUX=permissive
# Désactiver totalement SELinux :
SELINUX=disabled
# Vérifier le mode opératoire de SELinux via la commande getenforce.
Désactiver temporairement SELinux sans avoir à redémarrer le système
# Désactiver SELinux sans avoir à redémarrer :
setenforce 0
# Ou :
echo "0" > /selinux/enforce
# Réactiver SELinux sans avoir à redémarrer :
setenforce 1
# Ou :
echo "1" > /selinux/enforce
audit2allow - Créer une exception pour un programme présent dans les logs en erreur
grep apache2 /var/log/audit/audit.log | audit2allow -M passenger
# Par défaut, le fichier /var/log/audit/audit.log n'existe pas sous Debian.

Afficher le contexte de sécurité SELinux pour le dossier de sessions PHP

# 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

On peut renforcer ou diminuer la politique d'accès aux fichiers partagés par Apache grâce aux commandes chcon et restorecon fournies par 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

Ressources complémentaires pour SELinux

SELinux : http://tvaira.free.fr/esimed/admin/SELinux.pdf

Appliquer des limitations avec Apparmor

Comparaison entre Apparmor SELinux et Grsecurity : https://www.cyberciti.biz/tips/selinux-vs-apparmor-vs-grsecurity.html

Appliquer des limitations avec Grsecurity

Comparaison entre Apparmor SELinux et Grsecurity : https://www.cyberciti.biz/tips/selinux-vs-apparmor-vs-grsecurity.html

Virtualisation avec XEN

Source : https://howto.biapy.com/fr/debian-gnu-linux/systeme/virtualisation-avec-xen/installer-xen-sur-debian
Source : https://blog.debugo.fr/virtualisation-xen-4-4/
Source : https://doc.ubuntu-fr.org/xen

Protéger et chiffrer des scripts Bash en production avec SHc

SHc : https://www.synetis.com/proteger-et-chiffrer-des-scripts-bash-en-production/
UnSHc : https://connect.ed-diamond.com/MISC/MISC-089/UnSHc-dechiffrer-des-scripts-shell-compiles-et-chiffres-par-SHc

Pile TCP/IP

# La pile TCP/IP du système d'exploitation GNU/Linux est reconnue comme étant une des plus stables.
# Appliquer quelques principes de précaution complémentaires.
# Éditer le fichier /etc/sysctl.conf :
sudo nano /etc/sysctl.conf
# Se protéger de l'IP Spoofing' (Vol d'adresse IP) :
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
# Se protéger des attaques 'SYN Flood' :
net.ipv4.tcp_syncookies = 1
# Limite le SYN flood avec 1024 connexions non confirmées max.
net.ipv4.tcp_max_syn_backlog = 1024
# Uncomment the next line to enable packet forwarding for IPv4
# net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
# net.ipv6.conf.all.forwarding=1
# Ignorer les messages 'ICMP Redirects' :
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
net.ipv4.conf.all.secure_redirects = 1
# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0
# Interdire 'Source Routing' :
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
# 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
# Enable TCP timestamps as SYN cookies utilize this TCP
net.ipv4.tcp_timestamps=1
# Ignorer les messages 'ICMP Bogus Responses' :
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Configuration spécifique en cas d'utilisation de mémoire swap :
vm.swappiness=10
vm.vfs_cache_pressure=50
# Redémarrer le service :
sudo 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

Autoriser les installeurs et compilateurs uniquement pour root

Autoriser les installeurs et compilateurs uniquement pour root.
# Le numéro de version est à adapter selon la fraîcheur de votre installation :
chmod o-x /usr/bin/gcc-4.1
chmod o-x /usr/bin/make
chmod o-x /usr/bin/apt-get
chmod o-x /usr/bin/aptitude
chmod o-x /usr/bin/dpkg

Définir la priorité d'un programme

# Il est conseillé de donner une priorité faible à un programme avec la commande nice ou renice si la machine doit être utilisée pendant ce temps.
Manuel : https://linux.die.net/man/1/nice
# Lancer un processus avec la priorité CPU et un accès disque le plus bas possible.
nice -n 19 ionice -c3 NomDuProgramme

Processeur

Concernant les processeurs, on peut utiliser « spectre-meltdown-checker » pour vérifier les failles.
Ce script vérifie aussi d'autres failles comme « zombieload, foreshadow et ridl ».
« apticron » envoie un courriel quand des mise à jour sont disponibles et les télécharge.
Sinon il y a « unattended-upgrades » qui lui installe les mise à jour.

Renforcer la sécurité du noyau

# Le fichier /etc/sysctl.conf est utilisé pour configurer les paramètres du noyau au moment de l'exécution.
# Linux applique les paramètres de /etc/sysctl.conf au démarrage.
# Exemple de fichier /etc/sysctl.conf :
# Activer execshield
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Activer la protection contre l'usurpation d'adresse IP
net.ipv4.conf.all.rp_filter = 1
# Désactiver le routage source IP
net.ipv4.conf.all.accept_source_route = 0
# Ignorer la demande d'émissions
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_messages = 1
# Assurez-vous que les paquets falsifiés sont enregistrés
net.ipv4.conf.all.log_martians = 1

Supprimer les systèmes X Window - X11

# Les systèmes X Window sur le serveur ne sont pas requis.
# Vous pouvez désactiver et supprimer X Windows pour améliorer la sécurité et les performances du serveur.
# Il n’y a aucune raison d’exécuter X11 sur votre messagerie Linux dédiée et votre serveur Web Apache / Nginx.

Disques et partitions

Informations sur une partition de démarrage

sudo fdisk -l
sudo blkid /dev/sda2
/dev/sda2: UUID="66...0C" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="6bd59e1d-0...9-2bb2e0cceaf0"

Optimiser la swap

# Vérifier si il existe déjà un fichier de swap :
## swapon --show
/sbin/swapon --show
# Vérifier une nouvelle fois s'il existe un fichier de swap actif et consulter des informations sur la disponibilité de la RAM :
free -h
Si il n'existe aucun swap actif sur notre système, nous allons pouvoir en ajouter un.
# Connaître l'espace de swap actuel :
more /proc/swaps
# Connaître les informations mémoire du système (CTRL+C pour sortir.) :
more /proc/meminfo
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur.
df -h
# Connaître l'espace disque disponible des différentes partitions :
df -ah
# Activer ou désactiver le fichier d'échange à la volée à l'aide de 2 simples commandes :
# Allouer la partition de swap qui s'ajoute à l'existante si elle existe.
# La commande « more /proc/swaps » vue plus haut devrait vous montrer le nouvel espace de swap nommé file.swap.
sudo swapon /var/tmp/maswap
# Désallouer l'espace utilisé par le fichier d'échange qui pourra être effacé en toute sécurité.
sudo swapoff /var/tmp/maswap
(OK) Source : https://standartux.fr/astuces-ajout-de-swap-a-la-mano/

Créer un périphérique bloc basé sur la RAM qui agit en tant que swap avec zRam

Le programme zRam est un code dans le noyau qui crée un périphérique bloc basé sur la RAM qui va agir en tant que disque d'échange compressé et stocké en mémoire.
Cela permet des entrées et des sorties très rapides et augmente la quantité de mémoire disponible avant que le système ne commence à permuter sur le disque.
Quand le système commence à s'étouffer, le disque dur commence à copier les données au format SWAP, ce qui provoque un ralentissement total.
Désormais, après avoir activé zRam, au lieu de se figer après une panne de mémoire vive, le système fonctionne comme si rien ne s'était passé.
Ce programme zRam est utile pour les personnes utilisant des ordinateurs avec 1 Go ou 2 Go de RAM.
Étant donné que zRam compresse les données, certaines ressources du processeur sont nécessaires.
Si vous avez 4 Go de RAM ou plus, il ne sera probablement pas nécessaire de l'utiliser. 
# Pour l'activer sur Ubuntu :
sudo apt-get install zram-config
# Pour l'installer sur Debian :
sudo apt install zram-tools
Informations complémentaires : https://wiki.debian.org/ZRam
# Pour supprimer :
sudo dpkg --purge zramswap-enabler sudo dpkg --purge zram-config
# Le service s'activera instantanément lors de l'installation :
cat /proc/swaps
# Si le service ne démarre pas immédiatement, redémarrer la machine avec reboot et vérifier que le service démarre.
# Si vous ne voyez pas vos périphériques d'échange zram dans la liste, lister zRam en tant que service de démarrage avec la commande suivante :
sudo su update-rc.d zramswap defaults

Ajouter de la mémoire SWAP

Allouer un fichier swap pour avoir un serveur plus réactif et le prémunir contre les erreurs out-of-memory des services.
Le swap sert a conserver des données temporaires sur le disque dur quand il ne peut plus les stocker dans la RAM.
Les informations seront cependant écrites sur le disque beaucoup moins rapidement qu'avec la RAM.
Les VPS utilisent une partition unique qui occupe tout l'espace.
Il n'est pas possible de modifier le schéma de partitionnement.
Linux accepte deux types de swap :
- Une partition dédiée.
- Un fichier d'échange.
# Ici c'est un fichier d'échange qui va être ajouté.
# La commande dd crée et copie des zéros dans le fichier maswap contenant 512000 blocs de 1024 octets chacun, soit un fichier approximatif de 512 Mo (voir 524 Mo).
# bs=1024 count=512000
# Pourquoi utiliser des blocs de 1024 octets ?
# Ce n'est pas recommandé de rajouter 2048Mo en un bloc, il se peut que la RAM n'ait pas assez d'espace pour créer ce fichier en un seul morceau.
# Créer un fichier d'échange de 2 Go :
# dd if=/dev/zero of=/var/tmp/maswap bs=1024 count=2048000
# Créer un fichier d'échange de 4Go.
dd if=/dev/zero of=/var/tmp/maswap bs=1024 count=4096000
# Forcer la synchronisation des disques (Écrire sur le disque les données présentes dans les tampons en mémoire.)
sync
# Ce fichier sera uniquement lisible par l'utilisateur root, pour des raisons de sécurité.
chmod 0600 /var/tmp/maswap
# Ce fichier appartient à root.
chown 0:0 /var/tmp/maswap
# Vérifier les permissions et l'espace réservé :
ls -lh /var/tmp/maswap
# Initialiser le fichier d'échange pour le rendre utilisable comme extension de mémoire.
# Le fichier qui avait l'étiquette SELinux user_tmp_t va changer d'étiquette pour swapfile_t.
sudo /sbin/mkswap -c /var/tmp/maswap
# Activer la nouvelle swap.
sudo /sbin/swapon /var/tmp/maswap
# Faire une copie du fichier /etc/fstab
sudo cp /etc/fstab /etc/fstab.bak
# Rendre l'utilisation du fichier swap permanent en ajoutant une ligne à la fin du fichier /etc/fstab.
# Ouvrir le fichier /etc/fstab :
sudo nano /etc/fstab
# Éditer le fichier /etc/fstab
# C'est la même ligne que pour une partition d'échange, mis à part le chemin absolu du fichier, renseigné avec le chemin absolu du périphérique.
/var/tmp/maswap swap swap defaults 0 0
# Cette dernière commande peut aussi être ajoutée ainsi à la fin du /etc/fstab :
sudo -s
cat >>/etc/fstab<< EOF
/var/tmp/maswap swap swap defaults 0 0
EOF
# Comment lancer l'opération d'écriture de cette commande ?
(OK) Source : https://www.tartarefr.eu/ajouter-de-la-swap-sur-un-vps/

Optimiser les réglages du swap

# Le swappiness configure la fréquence du système à sortir des données de la RAM pour les mettre dans le swap.
# Plus la valeur est proche de zéro, et plus les opérations sont gérées et traitées rapidement par la RAM.
# Il faut donc indiquer une valeur assez basse. La valeur par défaut est 60, on la met à 10 sur le VPS :
sudo sysctl vm.swappiness=10
Avec la valeur 0 : le swap est désactivé.
Avec la valeur 1 : quantité minimale de permutation sans la désactiver complètement.
Avec la valeur 10 : valeur recommandée pour améliorer les performances lorsqu'il y a suffisamment de mémoire dans un système.
Avec la valeur 100 : échange agressif.
# Le vfs_cache_pressure configure comment le système va supprimer les informations inode et dentry par rapport aux autres données.
# La valeur d'origine est 100, on la passe à 50 pour éviter que le système ne supprime les informations relatives aux inodes du cache trop rapidement :
sudo sysctl vm.vfs_cache_pressure=50
# Rendre les deux changements permanents :
sudo nano /etc/sysctl.conf
# Ajouter en fin de fichier :
vm.swappiness=10
vm.vfs_cache_pressure=50
Si cela ne suffit pas, il faudra penser à allouer plus de ressources matérielles au serveur.
Ok.png Source : https://www.skyminds.net/linux-creer-fichier-echange-swap-optimiser-vps/

Réduction de l'utilisation de la swap

Le paramètre système vm.swappiness indique la tendance qu'a le système a commencer à swapper en fonction de l'occupation mémoire.
Il est par défaut à 60, mais, pour une machine desktop, il est plus judicieux de le descendre à 10.
En le mettant à 10%, le système attendra que 90% de la mémoire soit remplie avant de commencer à exploiter la mémoire du disque. Cela réduit donc le swapping.
Pour voir la valeur actuelle :
cat /proc/sys/vm/swappiness
Pour changer la valeur dans les paramètres système :
sudo bash -c 'echo "vm.swappiness=10" >> /etc/sysctl.conf'
Redémarrer ou faire sudo sysctl -p pour prendre en compte ce paramètre.

Séparer les partitions pour le système de fichiers

# La séparation de partitions pour le système de fichiers améliore et sécurise le système.
# Les systèmes de fichiers suivants doivent être montés sur des partitions distinctes :
/usr
/home
/var and /var/tmp
/tmp
# Créer des partitions distinctes pour les racines de serveur Apache et FTP.
# Éditer le fichier /etc/fstab et s'assurer d’ajouter les options de configuration suivantes :
noexec - Empêche l'exécution de fichiers binaires mais autorise les scripts.
nodev - Empêche l'utilisation de fichiers de périphérique tels que zéro, sda...
nosuid - Ne pas définir d'accès SUID / SGID sur cette partition, empêche le bit setuid.
Exemple :
/etc/fstab Limite l'accès utilisateur à la partition /dev/sda5 pour le répertoire du serveur FTP :
/dev/sda5  /ftpdata    ext3 defaults,nosuid,nodev,noexec 1 2

Quotas de disque

Assurez-vous que le quota de disque est activé pour tous les utilisateurs. Pour implémenter des quotas de disque, procédez comme suit:
Activer les quotas par système de fichiers en modifiant le fichier /etc/fstab
Remonter le (s) système (s) de fichiers.
Créer les fichiers de base de données de quotas et générez la table d'utilisation du disque.
Attribuer des politiques de quota.

Bibliographie

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
Ok-ko.png Security Debian How To : https://www.debian.org/doc/manuals/securing-debian-howto

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.
De nombreuses pages sont partagées sur ce wiki.
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.
Pour participer sur le forum, créer un compte utilisateur depuis le forum. Aller sur le Forum.

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.