Skip to content

Daklyan/hardening

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Sommaire


Système

SELinux

Security-Enhanced Linux est un LSM qui met en place une politique d'access-control aux éléments d'un système linux

Installer le paquet SELinux si pas déjà fait

# Debian/Ubuntu
sudo apt install selinux-utils

# Arch
git clone https://github.com/archlinuxhardened/selinux.git
cd selinux
./recv_gpg_keys.sh
./build_and_install_all.sh

Vérifier l'état de SELinux

getenforce

Si la commande renvoie Disabled, activer en utilisant cette commande

setenforce 1

Login lock

Pour éviter les attaques de mots de passe en bruteforce ou par dictionnaire, il est possible de setup un lock d'user au bout de n attemps pour x seconds Pour ça on va utiliser faillog

# Tester faillog
sudo faillog

# Si la commande du dessus renvoie 
# faillog: Cannot open /var/log/faillog: No such file or directory
sudo touch /var/log/faillog
sudo chown root:root /var/log/faillog
sudo chmod 600 /var/log/faillog

# Set un nombre d'essaie avant de lock
sudo faillog -m 5

# Set le temps de lock en cas d'échec (en secondes)
sudo faillog -l 1800

# Si besoin d'unlock un user
sudo faillog -r -u user

Gestion des privilèges

sudo

Si besoin d'accéder a de hauts privilèges pour une raison ou une autre toujours passer par sudo Pour qu'un user puisse utiliser sudo il doit être dans le groupe qui correspond

# Debian/Ubuntu
sudo usermod -aG sudo user

# RHEL/Arch
sudo usermod -aG wheel user

# Passer par visudo pour éditer le fichier des sudoers directement
sudo visudo

Empêcher le login sur root

Editer le fichier passwd pour empêcher le login root sur cli

sudo vi /etc/passwd
- root:x:0:0:root:/root:/bin/bash
+ root:x:0:0:root:/root:/usr/sbin/nologin

Empêcher le login root par ssh

sudo vi /etc/ssh/sshd_config
- PermitRootLogin yes
+ PermitRootLogin no
sudo systemctl restart sshd

Restreindre l'accès root via PAM

sudo vi /etc/pam.d/login
+ auth    required       pam_listfile.so onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers
# Créer le fichier des denied users
sudo vi /etc/ssh/deniedusers
+ root
# Mettre à jour les droits du fichier
sudo chmod 600 /etc/ssh/deniedusers

Vérifier les UID suspects

Chaque user à un ID unique et l'ID 0 correspond à root. Si un utilisateur qui n'est pas root possède l'ID 0 il pourrait tromper le système

# La commande ne doit renvoyer qu'une ligne correspondant au root
awk -F: '($3 == "0") {print}' /etc/passwd

Vérifier les users avec un mot de passe vide

Un utilisateur avec un mot de passe vide est une faille évidente. En best practice il faut ne pas en avoir ou lock s'il en existe

# Lister les user avec mot de passe vide
sudo awk -F: '($2 == "") {print}' /etc/shadow

# Lock un user
sudo passwd -l user

Réseau

Désactiver les connexions en IPv6

sudo vi /etc/sysctl.conf
+ net.ipv6.conf.all.disable_ipv6 = 1
+ net.ipv6.conf.default.disable_ipv6 = 1
+ net.ipv6.conf.lo.disable_ipv6 = 1
# Appliquer les modifications
sudo sysctl -p

Fail2Ban

Fail2Ban permet de ban IP les adresses qui font trop d'échecs de connexion évitant les attaques de bots ou d'individus par brute force

# Debian/Ubuntu
sudo apt install fail2ban

# RHEL/Centos
sudo yum install fail2ban

# Arch
sudo pacman -S fail2ban

# Generic
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install
# Démarrer et activer fail2ban
# Ici on va utiliser systemd
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

# Check si le client fonctionne
sudo fail2ban-client version
# Pour changer la conf par défaut
sudo vi /etc/fail2ban/jail.conf

# Pour changer les services à surveiller par fail2ban
sudo vi /etc/fail2ban/jail.d/defaults-<nom de distribution>.conf

#####################################################################

# Aussi possible d'utiliser le client pour effectuer des actions

# Pour afficher les jails actives
sudo fail2ban-client status

# Agir sur une prison précise (stop/start/status)
sudo fail2ban-client stop service

Port SSH

Le port SSH par défaut est le 22 et est connu, ce qui fait qu'il est régulièrement tester automatiquement pour essayer introduire des systèmes mal sécurisés. Le changer empêche ces attaques automatiques et rend difficile la tentative de connexion pour quelqu'un qui ne connaîtrait pas le port utilisé

sudo vi /etc/ssh/sshd_config
- #Port 22
+ Port <port entre 1024 et 65536>
sudo systemctl restart sshd

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published