GNU/Linux >> Tutoriels Linux >  >> Linux

Restreindre l'accès aux serveurs Linux à l'aide d'encapsuleurs TCP

Enveloppe TCP est un système ACL (Access Control List) open source basé sur l'hôte, qui est utilisé pour restreindre les services réseau TCP en fonction du nom d'hôte, de l'adresse IP, de l'adresse réseau, etc. Il décide quel hôte doit être autorisé à accéder à un service réseau spécifique. TCP Wrapper a été développé par un programmeur et physicien néerlandais Wietse Zweitze Venema en 1990 à l'Université de technologie d'Eindhoven. Il l'a maintenu jusqu'en 1995, puis l'a publié sous licence BSD en 2001. Dans ce bref guide, j'expliquerai comment restreindre l'accès aux serveurs Linux à l'aide de TCP Wrappers.

Veuillez noter que TCP Wrapper ne remplace pas complètement un pare-feu correctement configuré . C'est juste un ajout précieux pour améliorer la sécurité de votre serveur Linux. Il est recommandé de l'utiliser conjointement avec un pare-feu entièrement configuré et d'autres mécanismes et outils de sécurité.

Installer les wrappers TCP

TCP Wrappers est disponible dans les dépôts officiels de la plupart des systèmes d'exploitation Linux.

Selon la distribution Linux que vous utilisez, il peut être installé comme indiqué ci-dessous.

Sur les systèmes basés sur Arch :

$ sudo pacman -S tcp_wrappers

Sur les systèmes basés sur YUM :

$ sudo yum install tcp_wrappers

Sur les systèmes basés sur APT :

$ sudo apt-get install tcp_wrappers

Sur les systèmes SUSE/openSUSE :

$ sudo zypper in tcp_wrappers

Restreindre l'accès aux serveurs Linux à l'aide d'encapsuleurs TCP

Configuration

TCP Wrappers implémente le contrôle d'accès à l'aide de deux fichiers de configuration :/etc/hosts.allow et /etc/hosts.deny . Ces deux fichiers de liste de contrôle d'accès décident si les clients spécifiques sont autorisés ou non à accéder à votre serveur Linux.

Le fichier /etc/hosts.allow

Ce fichier contient la liste des hôtes ou réseaux autorisés ou non. Cela signifie que nous pouvons à la fois autoriser ou refuser les connexions aux services réseau en définissant des règles d'accès dans ce fichier.

Le fichier /etc/hosts.deny

Ce fichier contient la liste des hôtes ou des réseaux qui ne sont pas autorisés à accéder à votre serveur Linux. Les règles d'accès dans ce fichier peuvent également être configurées dans /etc/hosts.allow avec un 'deny' option.

La syntaxe typique pour définir une règle d'accès est :

daemon_list : client_list : option : option ...

Où,

  • daemon_list - Le nom d'un service réseau tel que SSH, FTP, Portmap etc.
  • liste_clients - La liste séparée par des virgules des noms d'hôte, adresses IP ou adresses réseau valides.
  • options - Une action facultative qui spécifie quelque chose à faire chaque fois qu'une règle correspond.

La syntaxe est la même pour les deux fichiers.

Règles à retenir

Avant d'utiliser TCP Wrappers, vous devez connaître les règles importantes suivantes. N'oubliez pas que TCP Wrapper ne consulte que ces deux fichiers (hosts.allow et hosts.deny).

  • Les règles d'accès du fichier /etc/hosts.allow sont appliquées en premier. Elles ont priorité sur les règles du fichier /etc/hosts.deny. Par conséquent, si l'accès à un service est autorisé dans /etc/hosts.allow fichier et une règle refusant l'accès à ce même service dans /etc/hosts.deny est ignoré.
  • Une seule règle par service est autorisée dans les deux fichiers (hosts.allow et hosts.deny).
  • L'ordre des règles est très important. Seule la première règle de correspondance pour un service donné sera prise en compte. La même chose s'applique aux deux fichiers.
  • S'il n'y a pas de règles correspondantes pour un service dans l'un ou l'autre des fichiers ou si aucun fichier n'existe, alors l'accès au service sera accordé à tous les hôtes distants.
  • Toute modification apportée à l'un ou l'autre des fichiers entrera en vigueur immédiatement sans redémarrer les services réseau.

L'approche recommandée pour sécuriser votre serveur

Généralement, la meilleure pratique pour sécuriser un serveur Linux consiste à bloquer toutes les connexions entrantes et à n'autoriser que quelques hôtes ou réseaux spécifiques. Pour ce faire, modifiez /etc/hosts.deny fichier :

$ sudo vi /etc/hosts.deny

Ajoutez la ligne suivante. Cette ligne refuse les connexions à TOUS les services et TOUS les réseaux.

ALL: ALL

Ensuite, modifiez /etc/hosts.allow fichier :

$ sudo vi /etc/hosts.allow

et autorisez les hôtes ou réseaux spécifiques de votre choix.

sshd: 192.168.43.192 192.168.43.193

Vous pouvez également spécifier des noms d'hôte valides au lieu de l'adresse IP, comme indiqué ci-dessous.

sshd: server1.ostechnix.lan server2.ostechnx.lan

Alternativement, vous pouvez faire la même chose en définissant toutes les règles (autoriser et refuser) dans le fichier /etc/hosts.allow lui-même.

Modifier /etc/hosts.allow fichier et ajoutez les lignes suivantes.

sshd: 192.168.43.192 192.168.43.193
sshd: ALL: DENY

Vous n'avez pas besoin de spécifier de règle dans /etc/hosts.deny fichier.

Conformément à la règle ci-dessus, toutes les connexions entrantes seront refusées pour tous les hôtes à l'exception des deux hôtes 192.168.43.192, 192.168.43.193.

Maintenant, essayez de vous connecter en SSH à votre serveur Linux à partir de n'importe quel hôte, à l'exception des hôtes ci-dessus, vous obtiendrez l'erreur suivante.

ssh_exchange_identification: read: Connection reset by peer

Vous pouvez le vérifier à partir des fichiers journaux de votre serveur Linux, comme indiqué ci-dessous.

$ cat /var/log/secure

Exemple de résultat :

Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)

De même, vous pouvez définir des règles pour d'autres services, par exemple vsftpd, dans /etc/hosts.allow fichier comme indiqué ci-dessous.

vsftpd: 192.168.43.192 
vsftpd: ALL: DENY

Encore une fois, vous n'avez pas besoin de définir de règles dans /etc/hosts.deny dossier. Conformément à la règle ci-dessus, un hôte distant avec l'adresse IP 192.168.43.192 est autorisé à accéder au serveur Linux via FTP. Tous les autres hôtes seront refusés.

De plus, vous pouvez définir les règles d'accès dans différents formats dans le fichier /etc/hosts.allow comme indiqué ci-dessous.

sshd: 192.168.43.192				#Allow a single host for SSH service
sshd: 192.168.43.0/255.255.255.0		#Allow a /24 prefix for SSH
vsftpd: 192.168.43.192				#Allow a single host for FTP
vsftpd: 192.168.43.0/255.255.255.0	        #Allow a /24 prefix for FTP
vsftpd: server1.ostechnix.lan                   #Allow a single host for FTP

Autoriser tous les hôtes sauf un hôte spécifique

Vous pouvez autoriser les connexions entrantes de tous les hôtes, mais pas d'un hôte spécifique. Par exemple, pour autoriser les connexions entrantes de tous les hôtes dans le 192.168.43 sous-réseau, mais pas depuis l'hôte 192.168.43.192 , ajoutez la ligne suivante dans /etc/hosts.allow fichier.

ALL: 192.168.43. EXCEPT 192.168.43.192

Dans le cas ci-dessus, vous n'avez pas besoin d'ajouter de règles dans le fichier /etc/hosts.deny.

Ou vous pouvez spécifier le nom d'hôte au lieu de l'adresse IP comme indiqué ci-dessous.

ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan

Pour plus de détails, reportez-vous aux pages de manuel.

$ man tcpd

Lire aussi : 

  • Autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux
  • Limiter le nombre de connexions SSH par utilisateur/groupe/système

Encore une fois, n'oublions pas que TCP Wrapper ne remplace pas un pare-feu. Il doit être utilisé conjointement avec des pare-feu et d'autres outils de sécurité.


Linux
  1. Enveloppes TCP

  2. Créer un fichier Hosts spécifique à l'utilisateur pour compléter /etc/hosts ?

  3. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  4. Comment /etc/motd est-il mis à jour ?

  5. Différence entre /etc/hosts et /etc/resolv.conf

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Utilisation d'Ajenti dans la gestion des serveurs Linux

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp

Dans mon fichier /etc/hosts/ sous Linux/OSX, comment créer un sous-domaine générique ?

Utilitaire de ligne de commande Linux pour résoudre les noms d'hôte en utilisant d'abord /etc/hosts

Limite de taille de /etc/hosts (Linux)