GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer la sécurité de base

Certaines personnes pensent que ce n'est pas dangereux s'il n'y a pas de services en cours d'exécution sur le serveur, et peu importe que tous les ports soient ouverts. Nous ne sommes pas d'accord. Si les connexions aux ports inutilisés (et populaires) sont bloquées ou abandonnées, la grande majorité des intrus malveillants se déplaceront vers une autre machine où les ports acceptent les connexions. La configuration d'un pare-feu ne prend que quelques minutes. Nous vous recommandons donc vivement de le faire pour protéger votre serveur.

Après avoir créé un nouveau serveur cloud, nous vous recommandons d'effectuer les tâches suivantes pour améliorer la sécurité du serveur.

Remarque : De petites modifications aux commandes suivantes peuvent être nécessaires si vous utilisez une distribution différente. Si nécessaire, reportez-vous à la documentation de votre système d'exploitation.

Se connecter au serveur

Dès que vous disposez de l'adresse IP et du mot de passe de votre serveur, connectez-vous à l'aide de la commande SSH suivante :

ssh [email protected]

Remarque :Si vous vous connectez à un serveur reconstruit, vous verrez peut-être un message indiquant que l'identification de l'hôte distant a changé. Lorsque vous reconstruisez un serveur cloud, la clé de l'hôte distant change, ce qui indique une activité inhabituelle ou suspecte sur votre ordinateur. Pour éviter ce problème, supprimez l'ancienne entrée de l'adresse IP du serveur. Sur votre local ordinateur, modifiez le SSH known_hosts fichier à l'aide de la commande suivante et supprimez toutes les entrées qui pointent vers l'adresse IP de votre serveur cloud :

nano ~/.ssh/known_hosts

Si votre ordinateur local exécute un système d'exploitation autre que Linux ou Mac OS X, l'emplacement des known_hosts fichier sera différent. Reportez-vous à la documentation de votre système d'exploitation pour connaître l'emplacement de ce fichier.

Changer le mot de passe root

Après vous être connecté à votre serveur, modifiez le mot de passe root en exécutant la commande suivante :

passwd

Ajouter un utilisateur administrateur

Remarque  :Si vous configurez des utilisateurs SSH supplémentaires pour un serveur OnMetal, consultez Créer des serveurs cloud OnMetal pour les étapes OnMetal applicables.

  1. Pour ajouter un utilisateur administrateur, exécutez la commande suivante et remplacez demo avec le nom d'utilisateur de votre choix :

    adduser demo
    

    Remarque :Après cette première étape, vous ne devez pas vous connecter en tant qu'utilisateur root pour effectuer des opérations quotidiennes sur votre serveur. Cependant, vous aurez besoin des privilèges de super utilisateur (sudo) pour effectuer ces tâches administratives.

  2. Pour attribuer les privilèges sudo à l'utilisateur admin, lancez la commande suivante, qui appelle l'éditeur nano par défaut sur le système d'exploitation Ubuntu :

    visudo
    
  3. À la fin du fichier, ajoutez votre nom d'utilisateur administrateur (à la place de la démonstration dans l'exemple suivant) et la chaîne de texte suivante :

    demo   ALL=(ALL) ALL
    
  4. Lorsque vous avez terminé d'ajouter cette ligne, quittez, confirmez et enregistrez le fichier comme suit :

    un. Appuyez sur Ctrl-X pour sortir.b. Appuyez sur y pour confirmer les changements.c. Appuyez sur Entrée pour enregistrer le fichier sous /etc/sudoers.tmp .

    Remarque :Lorsque vous travaillez dans l'éditeur nano, la touche de retour arrière/suppression fonctionne de manière inattendue, supprimant les caractères devant le curseur plutôt que derrière lui. Vous pouvez résoudre ce problème en éditant le /etc/nanorc fichier (avec nano par exemple) et soit en décommentant la ligne suivante, soit en l'ajoutant :

        set rebinddelete
    

Le nouveau comportement prend effet une fois que vous avez enregistré le fichier et ouvert à nouveau nano.

Configurer les clés publiques et privées (keygen SSH)

Un moyen efficace de sécuriser l'accès SSH à votre serveur cloud consiste à utiliser un réseau public/privé clé, ce qui signifie qu'une clé publique est placée sur le serveur et que la clé privée est sur votre ordinateur local. Cela rend impossible pour quelqu'un de se connecter en utilisant simplement un mot de passe; ils doivent avoir la clé privée. Cette configuration comprend les étapes de base suivantes :créez la clé sur votre ordinateur local, copiez la clé publique sur le serveur et définissez les autorisations appropriées pour la clé.

Les instructions suivantes supposent que vous utilisez Linux ou Mac OS X. Pour les instructions Windows, consultez Génération de clé à l'aide de Putty pour Windows.

Étape 1. Créer les clés publique et privée

  1. Sur votre ordinateur local, créez un dossier pour stocker vos clés :

    mkdir ~/.ssh
    
  2. Pour créer les clés SSH, sur votre local ordinateur, saisissez la commande suivante :

    ssh-keygen -t rsa
    
    • L'id_rsa et l'id_rsa.pub sont créés dans le répertoire .ssh. Le fichier rsa.pub contient la clé publique. Vous placerez ce fichier sur votre serveur.

    • Le fichier id_rsa est votre clé privée. Ne jamais montrer, donner ou conserver ce fichier sur un ordinateur public.

Étape 2. Copiez la clé publique

Vous pouvez utiliser le scp commande pour placer la clé publique sur votre serveur.

  1. Toujours sur votre local ordinateur, saisissez la commande suivante, en remplaçant votre utilisateur administrateur par démo, l'adresse IP et le répertoire personnel de l'utilisateur administrateur :

    scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
    
  2. Lorsque vous y êtes invité, entrez le mot de passe de l'utilisateur administrateur.

  3. Créez un répertoire appelé .ssh dans le dossier d'accueil de l'utilisateur administrateur sur votre serveur et déplacez-y la clé pub, comme illustré dans les exemples suivants :

    mkdir /home/demo/.ssh
    
    mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
    

Étape 3. Modifier les autorisations SSH

Définissez les autorisations correctes sur la clé à l'aide des commandes suivantes, en remplaçant l'utilisateur et le groupe "démo" par votre utilisateur et groupe administrateur :

chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys

Vous avez maintenant créé avec succès la clé sur votre ordinateur local, copié la clé publique sur votre serveur et défini les autorisations correctes pour la clé.

Modifier la configuration SSH

Garder le service SSH sur le port par défaut de 22 en fait une cible facile. Nous vous recommandons de modifier la configuration SSH par défaut pour la rendre plus sécurisée.

  1. Exécutez la commande suivante :

    nano /etc/ssh/sshd_config
    
  2. Remplacez le port par défaut de 22 par celui de votre choix, désactivez les connexions root et définissez quels utilisateurs peuvent se connecter :

    Port 22                           <--- change to a port of your choosing
    Protocol 2
    PermitRootLogin no
    PasswordAuthentication no
    UseDNS no
    AllowUsers demo
    

    Remarque :Le numéro de port peut être n'importe quel nombre entier compris entre 1025 et 65536. Assurez-vous de noter le nouveau numéro de port et n'oubliez pas d'éviter les conflits de port si vous configurez ultérieurement des processus d'écoute supplémentaires.

Étant donné que vous avez configuré une clé publique/privée, vous pouvez définir le paramètre PasswordAuthentication sur no. Cependant, si vous avez l'intention d'accéder à votre serveur à partir de différents ordinateurs, vous pouvez laisserPasswordAuthentication défini sur oui. N'utilisez la clé privée que si l'ordinateur local est sécurisé (c'est-à-dire ne placez pas la clé privée sur un ordinateur professionnel).

Ces paramètres ne sont pas encore activés. Avant de redémarrer SSH en utilisant le nouveau port, vous devez créer un pare-feu simple en utilisant iptables.

Remarque :Ne redémarrez pas encore SSH.

Configurer un pare-feu privé en utilisant iptables

L'utilitaire appelé iptables est le pare-feu par défaut pour les systèmes Linux. Il fonctionne en refusant les connexions aux ports ou aux services que vous spécifiez.

Remarque : La procédure de cette section ne s'applique pas aux serveurs qui utilisent systemd . Serveurs utilisant systemd utilisez maintenant une autre interface de pare-feu pour iptables appelée FirewallD. La syntaxe et l'implémentation de FirewallD varient considérablement. Pour une configuration correcte du pare-feu sur FirewallDand systemd serveurs, consultez « Introduction to firewalld » sur le portail client Red Hat.

Dans le cadre de cette procédure, vous allez ouvrir trois ports :ssh , http , et https.

Vous allez ensuite créer deux fichiers :

  • /etc/iptables.test.rules

  • /etc/iptables.up.rules

Le premier est un ensemble de règles de test temporaires et le second est l'ensemble permanent de règles qu'iptables utilisera.

Remarque :Vous devez rooter les autorisations de l'utilisateur pour terminer la procédure. Si vous n'êtes pas actuellement connecté en tant que root, utilisez la commande sudo devant les commandes suivantes.

  1. Exécutez la commande suivante pour voir quels processus sont en cours d'exécution :

    iptables -L
    

    Vous verrez quelque chose de similaire à ceci :

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Cela signifie que le serveur accepte n'importe quoi de n'importe qui sur n'importe quel port.

  2. Pour construire le pare-feu, créez le fichier /etc/iptables.test.rules et ajouter quelques règles. Si vous avez déjà suivi ces étapes, ce fichier n'est peut-être pas vide :

    nano /etc/iptables.test.rules
    
  3. Modifiez et ajoutez des ports si nécessaire.

  4. Exécutez la commande suivante pour appliquer les règles à votre serveur :

    iptables-restore < /etc/iptables.test.rules
    
  5. Exécutez la commande suivante pour noter les différences :

    iptables -L
    
  6. S'il n'y a aucun changement dans la sortie, répétez les étapes précédentes et réessayez.

  7. Vérifiez les règles et voyez exactement ce qui est accepté, rejeté et abandonné. Lorsque vous êtes satisfait des règles, enregistrez-les définitivement en exécutant la commande suivante :

    iptables-save > /etc/iptables.up.rules
    

    Remarque  :Si le serveur est redémarré avant que vous ayez enregistré les règles de manière permanente, les modifications sont perdues et le serveur revient aux paramètres précédents.

  8. Ajoutez un script que le système exécute au démarrage de vos interfaces réseau. Créez le fichier en exécutant :

    nano /etc/network/if-pre-up.d/iptables
    
  9. Ajoutez les lignes suivantes au nouveau fichier :

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.up.rules
    
  10. Enregistrez vos modifications, puis rendez le nouveau script exécutable :

    chmod +x /etc/network/if-pre-up.d/iptables
    

Configurer iptables dans Red Hat

Si vous utilisez une distribution Red Hat, iptables fonctionne un peu différemment que sur le système d'exploitation Ubuntu. À l'aide des commandes suivantes, vous pouvez modifier votre ensemble de règles iptables directement à partir de la ligne de commande.

HTTP - port 80

Pour RHEL 7 et CentOS 7, utilisez la commande suivante pour ouvrir le port 80 pour le trafic HTTP (web) dans votre pare-feu iptables :

sudo firewall-cmd --add-service=http --permanent

Pour les versions antérieures du système d'exploitation, utilisez la commande suivante :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT

HTTPS/SSL - port 443

Pour RHEL 7 et CentOS 7, utilisez la commande suivante pour ouvrir le port 443 pour le trafic HTTP sécurisé :

sudo firewall-cmd --add-service=https --permanent

Pour les versions antérieures du système d'exploitation, utilisez la commande suivante :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT

SSH - port 22

Bien que le port 22 soit ouvert par défaut pour vous permettre de vous connecter en SSH à votre serveur après sa création, la commande suivante vous montre comment ouvrir le port 22 dans RHEL 7 et CentOS 7 :

sudo firewall-cmd --add-service=ssh -permanent

Si vous configurez un port personnalisé pour SSH, utilisez la commande suivante pour RHEL7 et CentOS 7 :

sudo firewall-cmd --add-port=<customport>/tcp --permanent

Pour les versions antérieures du système d'exploitation, utilisez la commande suivante pour ouvrir le port 22 :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT

FTP - port 21

FTP est un service commun pour le transfert de fichiers, mais il est largement obsolète car ce n'est pas un protocole sécurisé. Nous vous recommandons vivement d'utiliser à la place un protocole de transfert de fichiers sécurisé tel que SFTP. Si vous devez absolument utiliser FTP, utilisez la commande suivante pour ouvrir le port 21 par défaut dans RHEL 7 et CentOS 7 :

sudo firewall-cmd --add-service=ftp --permanent

Pour les versions antérieures du système d'exploitation, utilisez les commandes suivantes :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT

MySQL - port 3306

Si vous avez besoin d'établir une connexion à distance à votre base de données MySQL à partir d'un autre serveur, vous devez ouvrir le port 3306 dans iptables. Pour RHEL 7 et CentOS 7, utilisez la commande suivante :

sudo firewall-cmd --add-service=mysql --permanent

Pour les versions antérieures du système d'exploitation, utilisez la commande suivante :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT

Enregistrer vos règles

Utilisez la commande suivante pour enregistrer toutes les règles que vous avez créées. S'il n'est pas enregistré avant le redémarrage de votre serveur, l'ensemble de règles iptables reviendra à l'ensemble de règles par défaut, bloquant tout le trafic sauf sur le port 22. Si vous utilisez RHEL 7 ou CentOS 7, cette étape n'est pas nécessaire.

sudo /sbin/service iptables save

Redémarrer iptables

Vos modifications apportées à iptables ne prennent effet qu'après avoir enregistré les règles et redémarré le service iptables. N'oubliez pas que si vous redémarrez iptables avant d'enregistrer vos règles, iptables revient à l'ensemble de règles par défaut.

Pour RHEL 7 et CentOS 7, utilisez la commande suivante :

firewall-cmd --reload

Pour les versions antérieures du système d'exploitation, utilisez la commande suivante :

sudo /sbin/service iptables restart

Vérifier les règles

Pour vérifier les règles après le rechargement du pare-feu dans RHEL 7 et CentOS 7, utilisez les commandes suivantes :

firewall-cmd --get-active-zones

Cela renvoie quelle zone est active (celle dans laquelle vous venez d'enregistrer toutes vos règles).

firewall-cmd --zone=<zone> --list-all

Ceci répertorie les services activés dans une zone spécifiée.

Redémarrer ssh

Vous pouvez maintenant redémarrer le service SSH. Restez connecté pendant que vous redémarrezsh et testez-le avec une nouvelle connexion. De cette façon, si une erreur se produit, vous pouvez la résoudre plus facilement.

Sur la plupart des distributions, le service est sshd, et vous le redémarrez avec la commande :

sudo service sshd restart

Sur le système d'exploitation Ubuntu et certaines autres distributions, le service s'appelle ssh et vous le redémarrez avec une commande similaire :

sudo service ssh restart

Si vous ne parvenez pas à établir une nouvelle connexion après le redémarrage de SSH, vérifiez les symptômes pour déterminer ce qui ne va pas.

  • Si la connexion expire, il se peut qu'il y ait un problème avec la configuration d'iptables.
  • Si vous recevez un avertissement concernant une clé privée, votre clé n'est peut-être pas correctement installée sur le serveur (vérifiez les sauts de ligne supplémentaires ou les caractères manquants lors d'une opération de copier-coller).
  • Si vous avez reconstruit le serveur, vous devrez peut-être supprimer la clé d'hôte de votre fichier known_hosts avant de pouvoir établir une connexion.

Si vous êtes bloqué

La configuration incorrecte de SSH, sudo ou iptables pourrait vous empêcher d'accéder à votre système. Si cela se produit, connectez-vous au panneau de configuration TheRackspace Cloud et utilisez la console d'urgence ou le mode de secours pour réparer les configurations.

Ce sont les bases de la connexion à un serveur cloud Linux et de la configuration de la sécurité. Voir Windows Cloud Server pour effectuer ces étapes sur un serveur Windows.


Linux
  1. Comment installer et configurer OpenVPN Server sur Debian 10

  2. Comment installer et configurer le serveur VNC sur Debian 10

  3. 7 conseils de base pour améliorer la sécurité d'Apache

  4. Comment sécuriser le serveur PostgreSQL

  5. Sécurité NFS de base – NFS, no_root_squash et SUID

Comment configurer NGINX sur un serveur CentOS 7

Comment configurer Postfix en tant que serveur SMTP d'envoi uniquement sur Ubuntu 20.04

Installer et configurer phpMyAdmin

Configurer la liaison réseau dans Ubuntu Server

Ubuntu 19.04 :Configurer le serveur NTP

Centos 7 :Configurer le serveur NTP