Les wrappers TCP fournissent un filtrage de base du trafic réseau entrant. L'accès aux services réseau "encapsulés" exécutés sur un serveur Linux à partir d'autres systèmes peut être autorisé ou refusé. Un service encapsulé TCP est un service qui a été compilé avec la bibliothèque libwrap.a. Utilisez la commande ldd pour déterminer si un service réseau est lié à libwrap.a. L'exemple suivant détermine le nom de chemin absolu du service sshd, puis répertorie les bibliothèques partagées liées au service sshd, en utilisant la commande grep pour rechercher la bibliothèque libwrap :
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)
Fichiers de configuration
Les wrappers TCP s'appuient sur deux fichiers de configuration comme base pour le contrôle d'accès :
- /etc/hosts.allow
- /etc/hosts.deny
Lorsqu'un client tente de se connecter à un service réseau sur un système distant, ces fichiers sont utilisés pour déterminer si l'accès client est autorisé ou refusé. Utilisez /etc/hosts.allow et /etc/hosts.deny pour définir des règles qui autorisent ou refusent de manière sélective l'accès des clients aux démons du serveur sur le système local. Le format des entrées est le suivant pour les deux fichiers :
daemon_list : client_list [: command]
Une description de chaque champ suit :
- daemon_list :Une liste de démons séparés par des virgules, ou le mot-clé ALL pour tous les démons
- client_list :Une liste de clients séparés par des virgules ou le mot-clé ALL pour tous les clients
- commande :Une commande facultative qui est exécutée lorsqu'un client tente d'accéder à un démon de serveur
Pour autoriser l'accès client, ajoutez le nom d'hôte ou l'adresse IP du client dans /etc/hosts.allow. Pour refuser l'accès au client, ajoutez son nom ou son adresse IP dans /etc/hosts.deny.
Le fichier /etc/hosts.allow est lu en premier et est lu de haut en bas. Si une paire démon-client correspond à la première ligne du fichier, l'accès est accordé. Si la ligne ne correspond pas, la ligne suivante est lue et la même vérification est effectuée. Si toutes les lignes sont lues et qu'aucune correspondance ne se produit, le fichier /etc/hosts.deny est lu, en commençant par le haut. Si une correspondance de paire démon-client est trouvée dans le fichier de refus, l'accès est refusé. Si aucune règle pour la paire démon-client n'est trouvée dans l'un ou l'autre fichier, ou si aucun fichier n'existe, l'accès au service est accordé.
Étant donné que les règles d'accès dans hosts.allow sont appliquées en premier, elles ont priorité sur les règles spécifiées dans hosts.deny. Par conséquent, si l'accès à un service est autorisé dans hosts.allow, une règle refusant l'accès à ce même service dans hosts.deny est ignorée. Voici quelques exemples d'entrées dans le fichier /etc/hosts.allow :
1. Pour autoriser les clients du sous-réseau 192.168.2 à accéder au FTP (le démon est vsftpd) :
# vi /etc/hosts.allow vsftpd : 192.168.2.*
2. Pour autoriser tous les clients à accéder à ssh, scp et sftp (le démon est sshd) :
# vi /etc/hosts.allow sshd : ALL
3. Placez l'entrée suivante dans le fichier /etc/hosts.deny pour refuser le service FTP à tous les clients à l'exception du sous-réseau 192.168.2.* (cela suppose que l'entrée précédente de vsftpd:192.168.2.* existe dans /etc/hosts. autoriser):
# vi /etc/hosts.deny vsftpd : ALL
4. Utilisez la syntaxe .domain pour représenter tous les hôtes d'un domaine donné. L'exemple suivant autorise les connexions à vsftpd à partir de n'importe quel hôte du domaine example.com (si l'entrée se trouve dans /etc/hosts.allow) :
# vi /etc/hosts.allow vsftpd : .example.com
Si cette entrée apparaît dans /etc/hosts.deny, la connexion est refusée.
TCP Wrapper (hosts.allow &hosts.deny) Options de commande sous Linux