23 Centos Server durcissant les conseils de sécurité - partie 2

23 Centos Server durcissant les conseils de sécurité - partie 2

Poursuivant le tutoriel précédent sur la façon de sécuriser et durcir le serveur CentOS, dans cet article, nous discuterons d'autres conseils de sécurité qui seront présentés sur la liste de contrôle ci-dessous.

Exigences

  1. 20 CentOS Server Durning Security Conseils - Partie 1

21. Désactiver les commandes SUID et SGID inutiles

Si la setuid et setgid Les bits sont définis sur des programmes binaires, ces commandes peuvent exécuter des tâches avec d'autres droits d'utilisateur ou de groupe, tels que racine privilèges qui peuvent exposer de sérieux problèmes de sécurité.

Souvent, les attaques de dépassement de tampon peuvent exploiter ces binaires exécutables pour exécuter du code non autorisé avec les droits d'un utilisateur de root.

# find / -path / proc -pune -o -Type f \ (-perm -4000 -o -perm -2000 \) -exec ls -l  \; 

Pour inférieur le setuid bit Exécuter la commande ci-dessous:

# chmod u-s / path / to / binary_file 

Pour un défaut, le bit setgid exécute la commande ci-dessous:

# chmod g-s / path / to / binary_file 

22. Vérifiez les fichiers et les répertoires sans propriété

Les fichiers ou les répertoires n'étant pas appartenant à un compte valide doivent être supprimés ou attribués avec les autorisations d'un utilisateur et d'un groupe.

Émettez la commande ci-dessous Rechercher pour répertorier des fichiers ou des répertoires sans utilisateur ni groupe.

# find / -nouser -o -nogroup -exec ls -l  \; 

23. Liste des fichiers rédacteurs du monde

Garder un fichier de nrabilité du monde sur le système peut être dangereux en raison du fait que n'importe qui peut les modifier. Exécutez la commande ci-dessous afin d'afficher les fichiers réditeurs de mots, sauf Liaisons symboliques, qui sont toujours rédables dans le monde.

# find / -Path / proc -pune -o -perm -2 ! -Tapez L -LS 

24. Créer des mots de passe forts

Créer un mot de passe d'un minimum de huit caractères. Le mot de passe doit contenir des chiffres, des caractères spéciaux et des lettres majuscules. Utiliser pwmake pour générer un mot de passe de 128 bits à partir de / dev / urandom déposer.

# pwmake 128 

25. Appliquer une stratégie de mot de passe solide

Forcer le système à utiliser des mots de passe forts en ajoutant la ligne ci-dessous / etc / pam.d / passwd déposer.

Mot de passe requis PAM_PWquality.Alors réessayez = 3 

Ajout de la ligne ci-dessus, le mot de passe entré ne peut pas contenir plus que 3 personnages d'une séquence monotonique, comme a B c d, et plus de 3 caractères consécutifs identiques, tels que 1111.

Pour forcer les utilisateurs à utiliser un mot de passe avec une longueur minimale de 8 Les personnages, y compris toutes les classes de caractères, la vérification de la force pour les séquences de caractères et les caractères consécutifs ajoutent les lignes suivantes au / etc / sécurité / pwquality.confli déposer.

minlen = 8 minclass = 4 maxSequence = 3 maxrepeat = 3 

26. Utiliser le vieillissement du mot de passe

La commande chage peut être utilisée pour le vieillissement du mot de passe utilisateur. Pour définir le mot de passe d'un utilisateur pour expirer 45 jours, utilisez la commande suivante:

# chage -m 45 nom d'utilisateur 

Pour désactiver le temps d'expiration du mot de passe Utilisez la commande:

# chage -m -1 nom d'utilisateur 

Forcer l'expiration immédiate du mot de passe (l'utilisateur doit modifier le mot de passe lors de la connexion suivante) en exécutant la commande suivante:

# chage -d 0 nom d'utilisateur 

27. Verrouiller les comptes

Les comptes d'utilisateurs peuvent être verrouillés en exécutant le passage ou commande usermod:

# passwd -l nom d'utilisateur # usermod -l nom d'utilisateur 

Pour déverrouiller les comptes utilisez le -u option pour passage commande et -U option pour usermod.

Article associé: Comment verrouiller les comptes d'utilisateurs après échange de tentatives de connexion

28. Empêcher l'accès des comptes Shell

Pour éviter un compte système (compte ordinaire ou compte de service) pour accéder à un coquille bash, modifiez / usr / sbin / nologine ou / bin / false dans le / etc / passwd dossier en émettant la commande ci-dessous:

# usermod -s / bin / faux nom d'utilisateur 

Pour modifier le shell lors de la création d'un nouvel utilisateur Issue la commande suivante:

# userAdd -s / usr / sbin / nologin Nom d'utilisateur 
Article associé: Apprenez 15 exemples de commande «userAdd» dans Linux

29. Verrouiller la console utilisateur virtuel avec Vlock

vlock est un programme utilisé pour verrouiller une session multiple sur la console Linux. Installez le programme et commencez à verrouiller votre session de terminal en exécutant les commandes ci-dessous:

# yum installer vlock # vlock 

30. Utilisez un système centralisé pour gérer les comptes et l'authentification

L'utilisation d'un système d'authentification centralisé peut considérablement simplifier la gestion et le contrôle des comptes. Les services qui peuvent offrir ce type de gestion des comptes sont IPA Server, LDAP, Kerberos, Microsoft Active Directory, NIS, Samba Ads ou Winbind.

Certains de ces services sont par défaut hautement sécurisés avec les protocoles cryptographiques et la cryptographie à clé symétrique, comme Kerberos.

Article associé: Configuration du serveur NFS avec authentification utilisateur basée sur Kerberos dans Linux

31. Force le montage en lecture seule des médias USB

En utilisant blocage Utilitaire Vous pouvez forcer tous les médias amovibles à monter en lecture seule. Par exemple, créez un nouveau udev Fichier de configuration nommé 80-lecture-USB.règles dans le / etc / udev / règles.d/ Répertoire avec le contenu suivant:

Sous-système == "Block", attrs amovible == "1", run programme = "/ sbin / blockdev --setro% n" 

Ensuite, appliquez la règle avec la commande ci-dessous:

# Udevadm Control -reload 
Article associé: Comment utiliser UDEV pour la détection et la gestion des appareils dans Linux

32. Désactiver l'accès racine via Tty

Pour empêcher le compte racine de effectuer une connexion du système via tous.

# cp / etc / secutty / etc / secutty.BAK # CAT / DEV / NULL> / ETC / SECURETTY 

N'oubliez pas que cette règle ne s'applique pas aux séances de connexion SSH
Pour empêcher la connexion racine via SSH, modifiez le fichier / etc / ssh / sshd_config et ajouter la ligne ci-dessous:

Permutrootlogine no 
Article associé: Comment sécuriser et durcir le serveur OpenSSH

33. Utilisez POSIX ACLS pour étendre les autorisations système

Les listes de contrôle d'accès peuvent définir les droits d'accès pour plus qu'un simple utilisateur ou groupe et peuvent spécifier des droits pour les programmes, les processus, les fichiers et les répertoires. Si vous définissez ACL sur un répertoire, ses descendants hériteront automatiquement les mêmes droits.

Par exemple,

# setfacl -m u: utilisateur: fichier rw # fichier getfacl 
Article associé: Configuration des quotas ACL et disque pour les utilisateurs / groupes dans Linux

34. Configuration de SELINUX EN MODE ENFORCE

Le Selinux L'amélioration du noyau Linux implémente la stratégie de contrôle d'accès obligatoire (Mac), permettant aux utilisateurs de définir une politique de sécurité qui fournit des autorisations granulaires à tous les utilisateurs, programmes, processus, fichiers et appareils.

Les décisions de contrôle d'accès du noyau sont basées sur tout le contexte de la sécurité et non sur l'identité de l'utilisateur authentifié.

Obtenir Selinux La stratégie d'état et d'application exécute les commandes ci-dessous:

# GETENFORCE # setenforce 1 # Sestatus 
Article associé: Configuration de la politique de contrôle d'accès obligatoire avec SELINUX

35. Installer SELINUX Utilitaires supplémentaires

Installer Policycoréutils-python Package qui fournit des utilitaires Python supplémentaires pour le fonctionnement Selinux: Audit2Allow, audit2 pourquoi, chcat, et sémanage.

Pour afficher toutes les valeurs booléennes avec une brève description, utilisez la commande suivante:

# SEMANAGE BOOLEAN -L 

Par exemple, pour afficher et définir la valeur de httpd_enable_ftp_server, Exécutez la commande ci-dessous:

# getsebool httpd_enable_ftp_server 

Pour que la valeur d'un booléen persiste à travers les redémarrages, spécifiez le -P option de Setsebool, comme illustré sur l'exemple suivant:

# setSebool -p httpd_enable_ftp_server sur 

36. Utiliser le serveur de journaux centralisés

Configurer rsyslog Daemon pour envoyer des messages de journal des utilitaires sensibles à un serveur de journal centralisé. Surveillez également les fichiers journaux à l'aide de l'utilitaire LogWatch.

L'envoi de messages de journal à un serveur distant garantit qu'une fois le système compromis, les utilisateurs malveillants ne peuvent pas masquer complètement leur activité, laissant toujours des traces sur les fichiers journaux distants.

Article associé: 4 meilleurs outils de surveillance et de gestion des journaux Linux

37. Activer la comptabilité du processus

Activer la comptabilité du processus en installant l'utilitaire PSACCT et l'utilisation camarade Commande pour afficher des informations sur les commandes précédemment exécutées comme enregistré dans le fichier de comptabilité système et SA Pour résumer des informations sur les commandes précédemment exécutées comme enregistré dans le fichier de comptabilité du système.

38. Durcissement / etc / sysctl.confli

Utilisez les règles de paramètres du noyau suivant pour protéger le système:

Désactivation du routage des sources

filet.ipv4.confli.tous.accepter_source_route = 0 

Désactiver le transfert IPv4

ipv4.confli.tous.transfert = 0 

Désactiver IPv6

filet.ipv6.confli.tous.disable_ipv6 = 1 net.ipv6.confli.défaut.disable_ipv6 = 1 net.ipv6.confli.à.disable_ipv6 = 1 

Désactiver l'acceptation et l'envoi de paquets redirigés ICMP, sauf s'il est spécifiquement requis.

filet.ipv4.confli.tous.accepter_redirects = 0 net.ipv4.confli.tous.Secure_Redirects = 0 Net.ipv4.confli.tous.send_redirects = 0 

Désactiver le transfert de chemin inversé

filet.ipv4.confli.tous.rp_filter = 2 

Ignorez toutes les demandes d'écho ICMP (réglées sur 1 pour activer)

filet.ipv4.icmp_echo_ignore_all = 0 

39. Utilisez des services VPN pour accéder à vos locaux sur des réseaux publics non protégés

Utilisez toujours VPN Services pour les opérateurs pour accéder à distance aux locaux LAN sur Internet. Ces types de services peuvent être configurés à l'aide d'une solution open source gratuite, telle que OpenVPN, ou à l'aide d'une solution propriétaire, telle que Cisco VPN (installer vpnc Utilité de ligne de commande fournie par les référentiels EPEL).

Article associé: Installez le serveur OpenVPN avec les clients Windows dans CentOS

40. Effectuer une analyse du système externe

Évaluez la sécurité de votre système pour les vulnérabilités en scannant le système à partir de points distants sur votre LAN en utilisant des outils spécifiques tels que:

  1. Nmap - Scanner réseau 29 exemples de commande NMAP
  2. Nessus - scanner de sécurité
  3. Ouverts - Utilisé pour rechercher des vulnérabilités et une gestion complète des vulnérabilités.
  4. Nikto - Une excellente interface de passerelle commune (CGI) scanner scanner web vulnérabilité dans Linux

41. Protéger le système en interne

Utilisez la protection des systèmes internes contre les virus, les rootkits, les logiciels malveillants et, en tant que bonne pratique, installer des systèmes de détection d'intrusion qui peuvent détecter l'activité non autorisée (attaques DDOS, analyses de port), telles que:

  1. Aide - Advanced Intrusion Detection Environment - http: // aide.sourceforge.filet/
  2. Clamav - Scanner antivirus https: // www.clamp.filet
  3. Rkhunter - scanner rootkit
  4. Lynis - Outil d'audit et d'analyse de sécurité pour Linux
  5. Trimestre - Sécurité et intégrité des données http: // www.trimestre.com /
  6. Fail2ban - Prévention du réseau d'intrusion
  7. Ossec - (HIDS) Système de détection d'intrusion basé sur l'hôte http: // ossec.github.io /
  8. Mod_security - Protéger la force brute ou les attaques DDOS

42. Modifier les variables de l'environnement utilisateur

Ajouter date et temps format pour stocker les commandes exécution en émettant la commande ci-dessous:

# echo 'HistTimeFormat = "% d /% m /% y% t"' >> .Bashrc ' 

Forcer à enregistrer instantanément Histfile Chaque fois qu'une commande est tapée (au lieu de se déconnecter):

# echo 'inside_command = "History -a"' >> .bashrc 

Limitez la session de connexion du délai. Déchirure automatiquement la coquille lorsqu'aucune activité n'est effectuée pendant une période de temps inactive. Très utile pour déconnecter automatiquement les sessions SSH.

# echo 'tmout = 120' >> .bashrc 

Appliquez toutes les règles en exécutant:

# source .bashrc 
Article associé: Définir les variables d'environnement utilisateur dans Linux

43. Données de sauvegarde

Utilisez des utilitaires de sauvegarde, tels que TAR, CAT, RSYNC, SCP, SNOPSHOTS LVM, etc. afin de stocker une copie de votre système, de préférence hors site, en cas d'échec d'un système.

Si le système est compromis, vous pouvez effectuer une restauration de données à partir des sauvegardes précédentes.

Enfin, n'oubliez pas que peu importe le nombre de mesures de sécurité et de contra-mesures que vous prenez pour assurer la sécurité de votre système, vous ne serez jamais complètement sécurisé à 100% tant que votre machine est branchée et mise sous tension.