Comment sécuriser les services réseau à l'aide de Wrappers TCP dans Linux

Comment sécuriser les services réseau à l'aide de Wrappers TCP dans Linux

Dans cet article, nous expliquerons ce que sont les emballages TCP et comment les configurer pour restreindre l'accès aux services réseau en cours d'exécution sur un serveur Linux. Avant de commencer, cependant, nous devons clarifier que l'utilisation des emballages TCP n'élimine pas la nécessité d'un pare-feu correctement configuré.

À cet égard, vous pouvez considérer cet outil comme une liste de contrôle d'accès basée sur l'hôte, et non comme la mesure de sécurité ultime de votre système. En utilisant un pare-feu et des emballages TCP, au lieu de favoriser l'un par rapport à l'autre, vous vous assurerez que votre serveur ne se retrouve pas avec un seul point d'échec.

Comprendre les hôtes.Autoriser et les hôtes.refuser

Lorsqu'une demande réseau atteint votre serveur, les emballages TCP utilisent hôtes.permettre et hôtes.refuser (dans cet ordre) pour déterminer si le client doit être autorisé à utiliser un service donné.

Par défaut, ces fichiers sont vides, tous commentés ou n'existent pas. Ainsi, tout est autorisé à travers la couche TCP Wrappers et votre système doit compter sur le pare-feu pour une protection complète. Comme cela n'est pas souhaité, pour la raison pour laquelle nous avons indiqué dans l'introduction, assurez-vous que les deux fichiers existent:

# ls -l / etc / hôtes.Autoriser / etc / hôtes.refuser 

La syntaxe des deux fichiers est la même:

 : [:::…] 

où,

  1. prestations de service est une liste de services séparés par des virgules auxquels la règle actuelle doit être appliquée.
  2. clients représentent la liste des noms d'hôtes ou adresses IP séparés par des virgules affectés par la règle. Les caractères génériques suivants sont acceptés:
    1. TOUS correspond à tout. S'applique à la fois aux clients et aux services.
    2. LOCAL correspond aux hôtes sans période dans leur Fqdn, comme localhost.
    3. CONNU Indiquez une situation où le nom d'hôte, l'adresse hôte ou l'utilisateur sont connus.
    4. INCONNU est l'opposé de CONNU.
    5. PARANOÏAQUE fait supprimer une connexion si les recherches DNS inversées (d'abord sur l'adresse IP pour déterminer le nom d'hôte, puis sur le nom d'hôte pour obtenir les adresses IP) renvoie une adresse différente dans chaque cas.
  3. Enfin, une liste facultative des actions séparées par le côlon indique ce qui devrait se produire lorsqu'une règle donnée est déclenchée.

Vous voudrez peut-être garder à l'esprit qu'une règle permettant l'accès à un service donné en / etc / hôtes.permettre prend la priorité sur une règle / etc / hôtes.refuser l'interdire. De plus, si deux règles s'appliquent au même service, seul le premier sera pris en compte.

Malheureusement, tous les services réseau ne soutiennent pas l'utilisation des emballages TCP. Pour déterminer si un service donné les prend en charge, faites:

# LDD / PATH / TO / BINY | grep libwrap 

Si la commande ci-dessus renvoie la sortie, elle peut être enveloppée de TCP. Un exemple de ceci est SSHD et vsftpd, Comme indiqué ici:

Trouver des services pris en charge dans l'emballage TCP

Comment utiliser les emballages TCP pour restreindre l'accès aux services

En modifiant / etc / hôtes.permettre et / etc / hôtes.refuser, Assurez-vous d'ajouter une nouvelle ligne en appuyant Entrer Après la dernière ligne non vide.

Pour permettre à SSH et FTP d'accéder uniquement à 192.168.0.102 et hôte local et nier tous les autres, ajouter ces deux lignes dans / etc / hôtes.refuser:

sshd, vsftpd: tous: tous 

et la ligne suivante dans / etc / hôtes.permettre:

SSHD, VSFTPD: 192.168.0.102, local 
Wrappers TCP - hôtes.refuser le dossier
# # hôtes.Nier ce fichier contient des règles d'accès qui sont utilisées pour refuser les connexions aux services réseau qui utilisent # la bibliothèque TCP_WRAPPERS ou qui ont été # démarrés via une Xinetd compatible TCP_WRAPPERS. # # Les règles de ce fichier peuvent également être configurées dans # / etc / hôtes.Autoriser avec une option «refuser» à la place. # # Voir 'Man 5 HOSTS_OPTIONS' et 'MAN 5 HOSTS_ACCESS' # pour des informations sur la syntaxe des règles. # Voir «Man TCPD» pour plus d'informations sur TCP_WRAPPERS # # sshd, vsftpd: tous: tous 
Wrappers TCP - hôtes.Autoriser le fichier
# # hôtes.Autoriser ce fichier contient des règles d'accès qui sont utilisées pour permettre ou refuser des connexions aux services réseau qui utilisent # soit la bibliothèque TCP_WRAPPERS ou qui ont été # démarrée via une Xinetd compatible TCP_WRAPPERS. # # Voir 'Man 5 HOSTS_OPTIONS' et 'MAN 5 HOSTS_ACCESS' # pour des informations sur la syntaxe des règles. # Voir «Man TCPD» pour plus d'informations sur TCP_WRAPPERS # # SSHD, VSFTPD: 192.168.0.102, local 

Ces changements ont lieu immédiatement sans avoir besoin d'un redémarrage.

Dans l'image suivante, vous pouvez voir l'effet de la suppression du mot LOCAL De la dernière ligne: le serveur FTP deviendra indisponible pour hôte local. Après avoir ajouté le joker, le service redevient disponible.

Vérifiez l'accès FTP

Pour permettre à tous les services d'hôtes où le nom contient exemple.com, Ajouter cette ligne dans hôtes.permettre:

TOUS : .exemple.com 

et refuser l'accès à VSFTPD aux machines dix.0.1.0/24, Ajouter cette ligne dans hôtes.refuser:

VSFTPD: 10.0.1. 

Sur les deux derniers exemples, remarquez le point au début et à la fin de la liste des clients. Il est utilisé pour indiquer «tous les hôtes et / ou clients où le nom ou l'IP contient cette chaîne».

Cet article vous a-t-il été utile? Avez-vous des questions ou des commentaires? N'hésitez pas à nous envoyer une note en utilisant le formulaire de commentaire ci-dessous.