GNU/Linux >> Tutoriels Linux >  >> Cent OS

15 étapes de durcissement Linux pour le serveur CentOS 7

Le renforcement du serveur est le processus d'amélioration de la sécurité du serveur par diverses méthodes. Nous avons beaucoup d'étapes pour sécuriser un serveur. Protégez-vous et votre entreprise en protégeant vos systèmes Linux contre les pirates, les pirates et les attaquants ! Vous pouvez transformer une boîte vulnérable en un serveur renforcé en suivant les étapes suivantes. Cela vous aidera à prévenir les attaques extérieures. Ici, je décris le renforcement du serveur de CentOS.

Ce qu'il faut savoir

Ce guide vous guide à travers les étapes nécessaires pour renforcer la sécurité de CentOS 7. Le renforcement d'un système le rendra plus restrictif et vous risquez de rencontrer des problèmes. Je recommande de créer une machine virtuelle en double que vous pouvez utiliser pour le dépannage. Vous trouverez ci-dessous une liste des étapes de base que vous pouvez et devez suivre pour renforcer vos serveurs immédiatement après le provisionnement.

1. Accès à distance sécurisé

Parfois, nous accédons à notre serveur par des méthodes distantes et si ce n'est pas plus sécurisé, nous pouvons exposer notre serveur. Les options OpenSSH sont contrôlées via le /etc/ssh/sshd_config fichier.

un. Désactiver la méthode d'authentification par mot de passe SSH et activer la méthode d'authentification par clé publique

Il est important de désactiver la méthode de connexion à distance par mot de passe et d'activer la clé publique d'authentification

Modifier ChallengeResponseAuthentication et PasswordAuthentication à non pour désactiver la méthode du mot de passe

PasswordAuthentication nonChallengeResponseAuthentication non

Autoriser l'authentification par clé publique

RSAAuthentication yesPubkeyAuthentication yes

maintenant vous pouvez générer une nouvelle paire de clés

# ssh-keygen -t rsa

b. Désactiver la connexion root directe

Il s'agit d'un risque de sécurité pour permettre à root de se connecter directement au serveur. Au lieu de cela, vous devez vous connecter au système avec votre compte, puis faire su - pour vous connecter en tant que root. Vous devez donc modifier PermitRootLogin yes à PermitRootLogin non

No de connexion racine autorisée

c. Changer le port d'écoute SSH par défaut (ex :8500)

Parfois, il n'est pas recommandé d'utiliser le port par défaut car il est connu du monde entier et constitue un risque pour la sécurité. Il est bon de personnaliser le port à utiliser

port 8500

2. Sécuriser le Boot Loader avec le mot de passe grub

En sécurisant le chargeur de démarrage, nous pouvons empêcher l'accès au mode mono-utilisateur qui se connecte automatiquement en tant que root. Cela se fait avec GRUB en définissant un mot de passe qui est stocké en texte brut par défaut.

Pour le système Debian

# grub-mkpasswd-pbkdf2

Pour Centos

# grub2-mkpasswd-pbkdf2

3. Ports réseau d'écoute

Après avoir configuré les services réseau, il est important de prêter attention aux ports qui écoutent réellement sur les interfaces réseau du système. Tout port ouvert peut être la preuve d'une intrusion.

# nmap -sT -O localhostDémarrage de Nmap 6.40 ( http://nmap.org ) au 2017-06-07 23:13 UTCNmap scan report for localhost (127.0.0.1)Host is up (0.000061s latency).Autre adresses pour localhost (non analysées) :127.0.0.1rEnregistrement DNS pour 127.0.0.1 : centos-01Non affiché :995 ports fermésPORT STATE SERVICE22/tcp open ssh25/tcp open smtp80/tcp open http111/tcp open rpcbind2049/tcp open nfs 

Pour lister tous les ports ouverts et les programmes associés, utilisez la commande ci-dessous

# netstat -tulpnConnexions Internet actives (serveurs uniquement)Proto Recv-Q Send-Q Adresse locale Adresse étrangère État PID/Nom du programme tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0 .0.0:20048 0.0.0.0:* ECOUTEZ 

4. Affiner les autorisations

Limitez les autorisations pour les fichiers et dossiers système afin de limiter les risques.

# chmod 700 /racine
# chmod 700 /var/log/audit
# chmod 740 /etc/rc.d/init.d/iptables
# chmod 740 /sbin/iptables
# chmod -R 700 /etc/skel
# chmod 600 /etc/rsyslog.conf
# chmod 640 /etc/security/access.conf
# chmod 600 /etc/sysctl.conf

5. Vérification des comptes pour les mots de passe vides

Tout compte ayant un mot de passe vide signifie qu'il est ouvert pour un accès non autorisé à quiconque sur le Web et cela fait partie de la sécurité au sein d'un serveur Linux. Pour vérifier les comptes avec un mot de passe vide, utilisez la commande ci-dessous

# chat /etc/shadow | awk -F :'($2==""){print $1}'paul

Pour des raisons de sécurité, il est bon de verrouiller tous les comptes de mots de passe vides :

# passwd -l paulVerrouillage du mot de passe pour l'utilisateur paul.passwd :succès

6. Régler les paramètres du noyau

Sysctl est une interface permettant d'examiner et de modifier dynamiquement les paramètres du système d'exploitation Linux. Modifier /etc/sysctl.conf fichier pour optimiser les paramètres du noyau

Sysctl est la commande utilisée pour modifier les paramètres du noyau lors de l'exécution.

# sysctl -a 
# sysctl -A 
# sysctl net.ipv4.conf.all.rp_filter 
To load settings, enter:   
# sysctl -p 

Copiez-collez le contenu suivant dans /etc/sysctl.conf

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Disable ICMP routing redirects
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv6.conf.all.send_redirects=0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1 

7. Désactiver les services indésirables

Vous devez supprimer tous les services et démons indésirables (services qui s'exécutent en arrière-plan) du démarrage du système qui sont lancés au démarrage en niveau d'exécution 3 .

# chkconfig --list | grep '3:on' 

Pour désactiver le service, saisissez :

# service serviceName stop
# chkconfig serviceName off 

8. Exiger une authentification pour le mode mono-utilisateur

Il est recommandé d'exiger un mot de passe root lors de l'entrée en mode mono-utilisateur. Ouvrez /etc/sysconfig/init fichier et ajoutez la ligne :

SINGLE=/sbin/sulogin 

9. Sécurité améliorée Linux (SELinux)

SELinux est un ensemble de règles de sécurité qui déterminent quel processus peut accéder à quel fichier, répertoires, ports, etc. Chaque fichier, processus, répertoire et port a une étiquette de sécurité spéciale appelée contextes SELinux. Un contexte est simplement un nom utilisé par la politique SELinux pour déterminer si un processus peut ou non accéder à un fichier, un répertoire ou un port. Par défaut, la politique n'autorise aucune interaction, donc des règles explicites accordent l'accès. S'il n'y a pas de règle d'autorisation, aucun accès n'est autorisé.

getenforce La commande nous indique dans quel mode se trouve SELinux.

Nous pouvons changer le mode SELinux en application en modifiant SELINUX=enforcing dans /etc/sysconfig/selinux

Il y a trois directives dans ce fichier comme expliqué ci-dessous.

  • Application : La politique de sécurité SELinux est appliquée.
  • Permissif : SELinux affiche des avertissements au lieu de les appliquer.
  • Désactivé : SELinux est entièrement désactivé.

Vous pouvez vérifier l'état de SELinux avec la commande

# sestatus
SELinux status: disabled 

Vous voyez qu'il est désactivé. Pour l'activer, vous pouvez utiliser

# setenforce enforcing 

10. Configurer le pare-feu avec iptables

iptables est un programme d'application d'espace utilisateur qui permet à un administrateur système de configurer les tables fournies par le pare-feu du noyau Linux et les chaînes et règles qu'il stocke.

un. Fermez tous les ports indésirables

iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP 

b. Bloquer les mauvaises IP

iptables -A INPUT -s IP_ADDRESS -j DROP 

c. Bloquer les connexions à une interface réseau

Pour bloquer les connexions d'une adresse IP spécifique à une interface réseau spécifique, utilisez la commande

# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP 

d. Lister les règles iptables

Vous pouvez voir toutes les règles iptables par la commande

iptables -L -n -v 

11. Vérification du système de fichiers

Tous les fichiers activés par les bits SUID/SGID peuvent être utilisés pour des activités malveillantes, lorsque l'exécutable SUID/SGID a un problème de sécurité. Tout utilisateur local ou distant peut utiliser ce fichier.

un. Identifiez les binaires SUID et SGID indésirables

find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls 

b. Identifiez les fichiers accessibles en écriture par le monde

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print 

c. Identifier les fichiers et dossiers orphelins

find /dir -xdev \( -nouser -o -nogroup \) -print 

12. Conserver /boot en lecture seule

Le noyau Linux et ses fichiers associés se trouvent dans le répertoire /boot qui est par défaut en lecture-écriture. Le changer en lecture seule réduit le risque de modification non autorisée des fichiers de démarrage critiques. Nous devons éditer /etc/fstab fichier et insérez la ligne ci-dessous<

LABEL=/boot     /boot     ext2     defaults,ro     1 2 

13. Refuser tous les wrappers TCP

Les wrappers TCP peuvent fournir une méthode simple et rapide pour contrôler l'accès aux applications qui leur sont liées. Il est donc recommandé de bloquer toutes les applications non utilisées puis d'autoriser uniquement les applications qui seront utilisées.

Par exemple, nous bloquerons toutes les applications mais uniquement ssh autorisé

echo "ALL:ALL" >> /etc/hosts.deny 
echo "sshd:ALL" >> /etc/hosts.allow 

14. Verrouiller les cronjobs pour les utilisateurs non autorisés

Cron est utilisé pour automatiser les tâches à un certain moment. Il est possible de spécifier qui peut et ne peut pas exécuter les travaux. Ceci est contrôlé par l'utilisation de fichiers appelés /etc/cron.allow et /etc/cron.deny . Pour verrouiller un utilisateur utilisant cron, ajoutez simplement des noms d'utilisateur dans cron.deny et autorisez un utilisateur à exécuter cron add dans le fichier cron.allow.

# echo ALL >>/etc/cron.deny 

15. Sécuriser le serveur contre le débordement de buffer

Un débordement de tampon se produit lorsqu'un programme ou un processus tente d'écrire plus de données dans un bloc de mémoire de longueur fixe, ou tampon, que le tampon n'est alloué pour en contenir. Il est important de protéger votre serveur contre cette attaque

un. Activer ExecShield

Cela aide à prévenir l'écrasement de la pile. En règle générale, un exploit de dépassement de mémoire tampon écrase une adresse de retour afin qu'une fonction revienne à une adresse choisie par l'attaquant. Vous devez activer sur le noyau actuel

sysctl -w kernel.exec-shield=1 

Vous pouvez également ajouter la ligne ci-dessous à /etc/sysctl.conf

kernel.exec-shield = 1 

b. Vérifier / Activer ASLR

La randomisation de la disposition de l'espace d'adressage est une fonction de défense qui rend les dépassements de mémoire tampon plus difficiles. L'ASLR rend difficile pour l'attaquant de trouver une adresse vers laquelle sauter. Vous devez activer le placement de région de mémoire virtuelle aléatoire en définissant le temps d'exécution pour kernel.randomize_va_space

sysctl -q -n -w kernel.randomize_va_space=2 

Ajoutez la ligne ci-dessous à /etc/sysctl.conf s'il n'existe pas déjà

kernel.randomize_va_space = 2 

Conclusion

Voici quelques-unes des considérations de base pour les nouveaux utilisateurs essayant d'exécuter leurs propres serveurs. Gardez à l'esprit que les crackers ont toujours une longueur d'avance; ils continuent à chercher des trous pour pirater votre serveur. Il est important de reconnaître que, même s'il vaut mieux tard que jamais, l'efficacité des mesures de sécurité diminue à mesure que vous attendez pour les mettre en œuvre


Cent OS
  1. Comment installer le serveur DNS sur RHEL 8 / CentOS 8 Linux

  2. Comment installer ou mettre à niveau vers PHP 7 sur CentOS 7 Linux Server

  3. Top 7 des conseils de renforcement de la sécurité pour le serveur CentOS 8 / RHEL 8

  4. Installer PHP Server Monitor sur un VPS Linux CentOS 7

  5. Premières étapes après avoir obtenu un VPS CentOS

Durcissement du serveur Linux – Meilleures pratiques

Serveur FreeIPA sur Alma Linux 8/CentOS 8

Comment configurer la réplication FreeIPA sur Rocky Linux/Alma Linux/Centos 8

Étapes pour installer Spotify dans Rocky Linux ou CentOS 8

Comment installer Memcaed sur CentOS 8 Linux

Serveur de surveillance Graylog sur Ubuntu Linux pour la surveillance du serveur/des services