One place for hosting & domains

      commandes

      UFW Essentials : règles et commandes de pare-feu


      Introduction

      UFW est un outil de configuration de pare-feu pour les iptables qui est inclus dans Ubuntu par défaut. Sous forme d’aide-mémo, ce guide vous permettra de trouver rapidement les commandes UFW qui créeront des règles de pare-feu iptables qui sont utiles dans les scénarios classiques du quotidien. Ceci intègre des exemples UFW d’autorisation et de blocage de plusieurs services par port, interface de réseau ou adresse IP source.

      • S’il s’agit de vos premiers pas avec UFW pour la configuration de pare-feu, consultez notre introduction à UFW
      • La plupart des règles décrites ici supposent que vous utilisez le règlement UFW par défaut. En effet, il est configuré pour autoriser le trafic sortant et refuser le trafic entrant, par défaut. Par conséquent, vous pouvez autoriser le trafic de manière sélective par le biais des politiques par défaut.
      • Utilisez les sections suivantes pour réaliser ce que vous tentez de faire. La plupart des sections ne sont prédites sur aucune autre. Vous pouvez donc utiliser les exemples ci-dessous indépendamment
      • Utilisez le menu Contents sur le côté droit de cette page (sur les largeurs de page large) ou la fonction de recherche de votre navigateur pour localiser les sections dont vous avez besoin
      • Copiez et collez les exemples de ligne de commande donnés, en substituant les valeurs en rouge par vos propres valeurs

      N’oubliez pas que vous pouvez vérifier votre règlement UFW actuel avec sudo ufw status ou sudo ufw status verbose.

      Bloquer une adresse IP

      Pour bloquer toutes les connexions réseau qui proviennent d’une adresse IP spécifique, 15.15.15.51 par exemple, exécutez la commande suivante :

      • sudo ufw deny from 15.15.15.51

      Dans cet exemple, from 15.15.15.51 spécifie une adresse IP source de « 15.15.15.51 ». Si vous le souhaitez, vous pouvez spécifier ici un sous-réseau, tel que 15.15.15.0/24 à la place. L’adresse IP source peut être spécifiée dans toute règle de pare-feu, notamment une règle allow.

      Bloquer les connexions à une interface réseau

      Pour bloquer les connexions d’une adresse IP spécifique, par exemple 15.15.15.51 à une interface réseau spécifique, par exemple eth0, utilisez la commande suivante :

      • sudo ufw deny in on eth0 from 15.15.15.51

      C’est la même chose que dans l’exemple précédent, en ajoutant in on eth0. Vous pouvez spécifier l’interface réseau dans n’importe quelle règle de pare-feu. C’est un excellent moyen de limiter la règle à un réseau spécifique.

      Service : SSH

      Si vous utilisez un serveur cloud, vous voudrez probablement autoriser les connexions SSH entrantes (port 22) afin de pouvoir vous connecter à votre serveur et le gérer. Cette section vous montre de quelle manière configurer votre pare-feu avec plusieurs règles liées au SSH.

      Autoriser SSH

      Pour autoriser toutes les connexions SSH entrantes, exécutez la commande suivante :

      Voici une autre syntaxe qui vous permettra de spécifier le numéro de port du service SSH :

      Autoriser un SSH entrant à partir de l'adresse IP ou un sous-réseau spécifique

      Pour autoriser les connexions SSH entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, vous devez spécifier la source. Par exemple, si vous souhaitez autoriser l'intégralité du sous-réseau 15.15.15.0/24, vous devez exécuter la commande suivante :

      • sudo ufw allow from 15.15.15.0/24 to any port 22

      Autoriser un Rsync entrant à partir de l'adresse IP ou un sous-réseau spécifique

      Vous pouvez utiliser Rsync, qui fonctionne sur le port 873, pour transférer des fichiers d'un ordinateur à un autre.

      Pour autoriser les connexions rsync entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, vous devez spécifier l'adresse IP source et le port de destination. Par exemple, si vous souhaitez autoriser que l'intégralité du sous-réseau 15.15.15.0/24 soit en mesure de rsync sur votre serveur, exécutez la commande suivante :

      • sudo ufw allow from 15.15.15.0/24 to any port 873

      Service : serveur web

      Les serveurs Web, comme Apache et Nginx, écoutent généralement les requêtes des connexions HTTP et HTTPS sur le port 80 et 443, respectivement. Si votre politique pour le trafic entrant est configurée sur drop ou deny par défaut, il vous faudra créer des règles qui permettront à votre serveur de répondre à ces requêtes.

      Autoriser tous les HTTP entrants

      Pour autoriser toutes les connexions HTTP entrantes (port 80), exécutez la commande suivante :

      Vous pouvez également utiliser une autre syntaxe en spécifiant le numéro de port du service HTTP :

      Autoriser tous les HTTP entrants

      Exécutez la commande suivante pour autoriser toutes les connexions HTTPS entrantes (port 443) :

      Vous pouvez également utiliser une autre syntaxe en spécifiant le numéro de port du service HTTPS :

      Autoriser tout le trafic HTTP et HTTPS entrant

      Si vous souhaitez autoriser le trafic à la fois HTTP et HTTPS, vous pouvez créer une règle unique qui autorise les deux ports. Pour autoriser toutes les connexions HTTP et HTTPS entrantes (port 443), exécutez la commande suivante :

      • sudo ufw allow proto tcp from any to any port 80,443

      Notez que vous devez indiquer le protocole en utilisant proto tcp lorsque vous spécifiez plusieurs ports.

      Service : MySQL

      MySQL écoute les connexions des clients sur le port 3306. Si un client utilise votre serveur de base de données MySQL sur un serveur distant, vous devez avoir la garantie de bien autoriser ce trafic.

      Autoriser MySQL à partir de l'adresse IP ou un sous-réseau spécifique

      Pour autoriser les connexions MySQL entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, vous devez spécifier la source. Par exemple, si vous souhaitez autoriser l'intégralité du sous-réseau 15.15.15.0/24, vous devez exécuter la commande suivante :

      • sudo ufw allow from 15.15.15.0/24 to any port 3306

      Autoriser MySQL sur l'interface réseau spécifique

      Disons que vous disposez par exemple d'une interface réseau privée eth1, vous devez utiliser la commande suivante pour autoriser les connexions MySQL sur une interface réseau spécifique :

      • sudo ufw allow in on eth1 to any port 3306

      Service : PostgreSQL

      PostgreSQL écoute les connexions des clients sur le port 5432. Si un client utilise votre serveur de base de données PostgreSQL sur un serveur distant, vous devez avoir la garantie de bien autoriser ce trafic.

      PostgreSQL à partir d'une adresse IP ou un sous-réseau spécifique

      Pour autoriser les connexions PostgreSQL entrantes à partir d'une adresse IP ou d'un sous-réseau spécifique, vous devez spécifier la source. Par exemple, si vous souhaitez autoriser l'intégralité du sous-réseau 15.15.15.0/24, vous devez exécuter la commande suivante :

      • sudo ufw allow from 15.15.15.0/24 to any port 5432

      La deuxième commande qui autorise le trafic sortant des connexions PostgreSQL established, n'est nécessaire que si la politique OUTPUT n'est pas défini sur ACCEPT.

      Autoriser PostgreSQL sur une interface réseau spécifique

      Disons que vous disposez par exemple d'une interface réseau privée eth1, vous devez utiliser la commande suivante pour autoriser les connexions PostgreSQL sur une interface réseau spécifique :

      • sudo ufw allow in on eth1 to any port 5432

      La deuxième commande qui autorise le trafic sortant des connexions PostgreSQL established, n'est nécessaire que si la politique OUTPUT n'est pas défini sur ACCEPT.

      Service : Mail

      Les serveurs de courrier électronique, comme Sendmail et Postfix, écoutent sur une variété de ports en fonction des protocoles utilisés pour livrer les courriels. Si vous utilisez un serveur de messagerie, vous devez déterminer les protocoles que vous utilisez et autoriser les types de trafic applicables. Nous allons également vous montrer de quelle manière créer une règle pour bloquer les courriels SMTP sortants.

      Bloquer un courriel SMTP sortant

      Si votre serveur ne doit pas envoyer de courriel sortant, il vous faudra bloquer ce type de trafic. Pour bloquer les courriels SMTP sortants, qui utilise le port 25, exécutez la commande suivante :

      Vous configurez votre pare-feu de sorte qu'il drop tout le trafic sortant sur le port 25. Si vous devez rejeter un autre service en fonction de son numéro de port, vous pouvez l'utiliser à la place du port 25, vous devez simplement le remplacer.

      Autoriser tous les SMTP entrants

      Pour permettre à votre serveur de répondre aux connexions SMTP, port 25, exécutez la commande suivante :

      Remarque : il est courant que les serveurs SMTP utilisent le port 587 pour le courrier sortant.

      Autoriser tous les IMAP entrants

      Pour permettre à votre serveur de répondre aux connexions IMAP, port 143, exécutez la commande suivante :

      Autoriser tous les IMAPS entrants

      Pour permettre à votre serveur de répondre aux connexions IMAPS, port 993, exécutez la commande suivante :

      Autoriser tous les POP3 entrants

      Pour permettre à votre serveur de répondre aux connexions POP3, port 110, exécutez la commande suivante :

      Autoriser tous les POP3S entrants

      Pour permettre à votre serveur de répondre aux connexions POP3S, port 995, exécutez la commande suivante :

      Conclusion

      Ainsi, vous devriez couvrir plusieurs des commandes que l'on utilise couramment pour configurer un pare-feu en utilisant UFW. Bien entendu, UFW est un outil très flexible. N'hésitez pas à combiner les commandes avec différentes options selon vos besoins spécifiques si elles ne sont pas couvertes ici.

      Bonne chance !



      Source link

      Comment utiliser nsh pour exécuter des commandes à distance sécurisées sur Ubuntu 18.04


      Introduction

      Il peut souvent être difficile de gérer plusieurs machines au quotidien. Si Secure Shell (SSH) est un bon choix pour l’accès à distance, le protocole lui-même présente quelques inconvénients en termes de commodité et de sécurité.

      Par exemple, les machines distantes doivent avoir une adresse IP publique et un port de transfert pour pouvoir y accéder, ce qui les expose à Internet, ou du moins à un réseau plus vaste. Cela est particulièrement préoccupant si vous utilisez un mot de passe pour l’authentification au lieu d’une paire de clés publiques et privées. De plus, si vous ne connaissez pas à l’avance la clé publique de la machine distante, vous pourriez être vulnérable à une attaque de type « l’homme du milieu ». Et de nombreuses machines distantes auxquelles vous voulez accéder n’ont pas d’adresse IP publique, ou ont une adresse IP dynamique que vous ne connaissez peut-être pas.

      De plus, le SSH nécessite une connexion par session à distance. Si un utilisateur doit exécuter une seule commande sur des centaines ou même des milliers de machines, il doit d’abord établir une connexion avec chaque machine au moyen d’un handshake (établissement d’une liaison) TCP, ce qui est moins efficace.

      NKN Shell, ou nsh, est une alternative à SSH qui fournit un moyen pratique et sûr d’exécuter des commandes à distance. nsh tire profit du réseau public mondial de NKN, qui fournit une transmission de données sécurisée et décentralisée. L’architecture utilise des adresses uniques qui contiennent une clé publique utilisée à la fois pour le routage et le cryptage de bout en bout sans aucune infrastructure à clé publique (PKI). Le réseau n’exige pas non plus que le serveur distant ait une adresse IP publique. Le serveur distant doit seulement avoir accès à Internet et être capable d’établir des connexions HTTP sortantes et des connexions websocket. Par conséquent, vos machines distantes ne sont pas exposées au réseau ouvert Internet.

      Dans ce tutoriel, vous utiliserez le démon NKN shell et les applications NKN Shell Client Xterm pour exécuter des commandes sur une machine distante. Pour ce faire, vous devez installer et configurer le démon NKN Shell sur une machine distante avec accès à Internet, générer une paire de clés et établir votre connexion à partir d’un client.

      Conditions préalables

      Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

      Étape 1 – Installation du démon NKN Shell sur un serveur distant

      Tout d’abord, installez le démon shell NKN (nsd) sur votre serveur. Cette application appellera nkn-multiclient, qui se connectera au réseau public de NKN et obtiendra une adresse pour le routage. Le démon écoutera alors les commandes shell entrantes des clients authentifiés et en liste blanche, exécutera ces commandes, puis renverra les résultats.

      Commencez par télécharger le dernier binaire nshd pré-construit de GitHub

      • wget https://github.com/nknorg/nkn-shell-daemon/releases/latest/download/linux-amd64.tar.gz

      Décompressez le fichier :

      • tar -zxvf linux-amd64.tar.gz

      Ensuite, déplacez les fichiers dans le répertoire /usr/local/bin pour qu’ils soient disponibles dans tout le système :

      • sudo mv ./linux-amd64/* /usr/local/bin/

      Puis vous configurerez ceci pour qu’il s’exécute comme un processus de démon utilisant Systemd afin qu’il redémarre si le serveur est réinitialisé.

      Créez un fichier appelé nshd.service dans /etc/systemd/system :

      • sudo nano /etc/systemd/system/nshd.service

      Ajoutez la définition de service suivante au fichier pour configurer le service :

      /etc/systemd/system/nshd.service

      [Unit]
      Description=NKN Shell Daemon
      After=network.target
      
      [Service]
      Type=simple
      User=root
      Group=root
      Restart=always
      ExecStart=/usr/local/bin/nshd
      
      [Install]
      WantedBy=multi-user.target
      

      Pour en savoir plus sur les fichiers d’unité Systemd, consultez la rubrique Comprendre les unités Systemd et les fichiers d’unité. 

      Enregistrez le fichier et quittez l’éditeur. Ensuite, activez et démarrez le service nshd avec les commandes suivantes :

      • sudo systemctl enable nshd.service
      • sudo systemctl start nshd.service

      Exécutez la commande suivante pour vous assurer que le service est actif et démarré :

      • sudo systemctl status nshd.service

      Vous verrez que le statut est actif :

      Output

      ● nshd.service - NKN Shell Daemon Loaded: loaded (/etc/systemd/system/nshd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-02-19 19:16:02 UTC; 7s ago Main PID: 3457 (nshd) Tasks: 10 (limit: 1152) CGroup: /system.slice/nshd.service └─3457 /usr/local/bin/nshd Feb 19 19:16:02 your_hostname systemd[1]: Started NKN Shell Daemon. Feb 19 19:16:03 your_hostname nshd[3457]: Create directory /etc/nshd/ Feb 19 19:16:03 your_hostname nshd[3457]: Create password and save to file /etc/nshd/wallet.pswd Feb 19 19:16:03 your_hostname nshd[3457]: Create wallet and save to file /etc/nshd/wallet.json Feb 19 19:16:03 your_hostname nshd[3457]: Create authorized pubkeys file /etc/nshd/authorized_pubkeys Feb 19 19:16:03 your_hostname nshd[3457]: Listening at d46567b883a3070ee3fe879d9fa2d5dc55a95f79ff2797c42df36c6979e5c4Aba

      Pour vous connecter à votre serveur, vous devez obtenir son adresse NKN, que vous pouvez trouver dans la sortie de la commande précédente. Vous pouvez également exécuter la commande suivante pour obtenir l’adresse :

      Vous verrez apparaître votre adresse :

      Output

      e70ca28ede84fc0659f2869255e8a393aef35b4fa5a7e036f29127c7dba75383

      Prenez note de cette adresse, car vous en aurez besoin pour vous connecter à votre serveur.

      Maintenant que le démon fonctionne et écoute, vous pouvez configurer le client web pour qu’il parle au serveur.

      Étape 2 – Configuration des autorisations pour le client NKN Shell

      Vous aurez besoin d’un client compatible qui puisse se connecter à la machine distante. Dans ce tutoriel, vous utiliserez NKN Shell Client Xterm, un client shell NKN basé sur le web. Il existe plusieurs façons de le gérer :

      • Utilisez la version hébergée à l’adresse https://nsh.nkn.org/. Notez que même si cette page web est hébergée sur un serveur, il s’agit en fait d’une application web purement locale qui s’exécute dans votre navigateur.
      • Obtenez le code source et hébergez-le vous-même.
      • Utilisez l’extension nShell Chrome.

      Dans ce tutoriel, vous utiliserez la version hébergée. Sur votre machine locale, ouvrez votre navigateur web et naviguez jusqu’à https://nsh.nkn.org. Vous verrez un écran de bienvenue :

      Le client Shell 

      Cliquez sur Generate New Key Pair (Générer une nouvelle paire de clés). Vos clés seront générées et affichées comme indiqué dans l’image suivante :

      La paire de clés générée

      Remarque: Lorsque vous générez une nouvelle paire de clés, vous voyez apparaître une seed secrète. Gardez cette seed secrète en sécurité, tout comme vous le feriez avec votre clé privée SSH. Toute personne qui possède cette seed secrète peut l’utiliser pour régénérer votre clé publique et ensuite exécuter des commandes sur vos machines à distance. Votre navigateur se souviendra de cette seed, mais vous devriez la copier dans un endroit sûr afin de pouvoir la réutiliser sur une nouvelle machine.

      Sauvegardez la seed secrète dans un endroit sûr. Vous pourrez l’utiliser plus tard pour régénérer votre clé publique, afin de pouvoir vous connecter à partir d’une autre machine cliente.

      Comme il s’agit d’une nouvelle paire de clés, vous devez ajouter la clé publique au fichier /etc/nshd/authorized_pubkeys sur votre serveur.

      /etc/nshd/authorized_pubkeys a un rôle similaire à celui du fichier ~/authorized_keys qui contrôle quelles clés publiques SSH peuvent se connecter. Le fichier authorized_pubkeys peut spécifier quel utilisateur est associé à une clé. Pour des raisons de sécurité, vous devrez vous connecter en utilisant un utilisateur non root dans ce tutoriel. Vous associerez donc la clé publique générée à votre utilisateur sammy que vous avez créé dans le guide de configuration initiale du serveur, dans le pré-requis de cet article.

      Pour associer un utilisateur à la clé publique, vous devez obtenir l’identifiant de l’utilisateur (UID) et l’identifiant du groupe (GID) de cet utilisateur. Exécutez la commande suivante sur votre serveur lorsque vous êtes connecté en tant qu’utilisateur sammy :

      Vous verrez l’UID et le GID de l’utilisateur :

      Output

      uid=1000(sammy) gid=1000(sammy) groups=1000(sammy),27(sudo)

      Ouvrez maintenant le fichier authorized_pubkeys dans votre éditeur :

      • sudo nano /etc/nshd/authorized_pubkeys

      Ajoutez une seule ligne contenant la clé publique, uid, et gid, séparés par des espaces :

      authorized_pubkeys

      5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000
      

      Sauvegardez le fichier.

      Vérifiez que le fichier contient le bon contenu :

      • cat /etc/nshd/authorized_pubkeys

      Vous verrez votre clé apparaître à l’écran :

      Output

      5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000

      Redémarrez ensuite le démon nshd pour appliquer les changements :

      • sudo systemctl restart nshd.service

      Maintenant, testons le tout en nous connectant au serveur et en exécutant une commande.

      Étape 3 – Envoi d’une commande à la machine distante et réception d’une réponse

      Dans NKN Shell Client, entrez votre adresse nshd distante à l’étape 1, ainsi qu’un identifiant client optionnel :

      Le site web de la nsh avec l'adresse à distance complétée

      Cliquez sur Connect (Se connecter) pour lancer la connexion.

      Vous serez connecté à votre machine distante et une invite de terminal s’affichera dans le navigateur. D’ici, vous pouvez l’utiliser tout comme les SSH. Par exemple, exécutez la commande suivante pour passer au répertoire /etc/nshd :

      Ensuite, dressez la liste de son contenu :

      Vous verrez le contenu de l’annuaire :

      Output

      authorized_pubkeys wallet.json wallet.pswd

      Vous pouvez vous déconnecter en tapant exit. Lorsque vous devez vous reconnecter, revisitez l’interface web et entrez vos coordonnées de connexion. Si vous générez une nouvelle paire de clés, vous devrez ajouter la nouvelle clé publique à votre serveur.

      Conclusion

      Dans ce tutoriel, vous avez installé et configuré nsh pour envoyer des commandes à une machine distante de manière sûre et pratique. nsh est un excellent moyen d’accéder à vos machines distantes lorsque vous devez exécuter rapidement une commande pour obtenir le dernier état d’un service ou jeter un coup d’œil à certains paramètres de configuration. L’application est basée sur le réseau public mondial de NKN, et son utilisation est gratuite. Vous pouvez donc l’intégrer dès aujourd’hui à votre propre application ou flux de travail.

      Vous pouvez également explorer nkn-tunnel, qui supporte SSH ou toute autre application basée sur TCP.



      Source link