Les enveloppeurs TCP sont capables de plus que d'autoriser et de refuser l'accès aux services. Avec l'argument de commande facultatif, ils peuvent envoyer des bannières de connexion, avertir des attaques d'hôtes particuliers et améliorer la journalisation.
Bannière wrapper TCP pour un service
Pour implémenter une bannière wrapper TCP pour un service, utilisez l'option banner. Cet exemple implémente une bannière pour vsftpd. Vous devez créer un fichier bannière n'importe où sur le système, en lui donnant le même nom que le démon. Dans cet exemple, le fichier s'appelle /etc/banners/vsftpd et contient les lignes suivantes :
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use results in access privileges being removed.
Le %c token fournit une variété d'informations sur le client. Le jeton %d (non affiché) se développe au nom du démon auquel le client a tenté de se connecter. Pour que cette bannière s'affiche aux connexions entrantes, ajoutez la ligne suivante au fichier /etc/hosts.allow :
# vi /etc/hosts.allow vsftpd : ALL : banners /etc/banners/
Enveloppes TCP pour avertir des attaques potentielles
Les wrappers TCP peuvent vous avertir des attaques potentielles d'un hôte ou d'un réseau en utilisant la directive spawn. La directive spawn exécute n'importe quelle commande shell. Dans cet exemple, l'accès est tenté à partir du réseau 200.182.68.0/24. Placez la ligne suivante dans le fichier /etc/hosts.deny pour refuser toute tentative de connexion à partir de ce réseau et pour consigner les tentatives dans un fichier spécial :
# vi /etc/hosts.deny ALL : 200.182.68.0 : spawn /bin/echo `date` %c %d >> /var/log/intruder_alert
Pour autoriser la connexion et la consigner, placez la directive spawn dans le fichier /etc/hosts.allow.
Refuser l'accès et consigner la tentative de connexion
L'entrée suivante dans /etc/hosts.deny refuse tout accès client à tous les services (sauf autorisation spécifique dans /etc/hosts.allow) et consigne la tentative de connexion :
# vi /etc/hosts.deny ALL : ALL : spawn /bin/echo “%c tried to connect to %d and was blocked” >> /var/log/tcpwrappers.log
Le niveau de journalisation peut être élevé à l'aide de l'option de gravité. Supposons que quiconque tente de se connecter en ssh à un serveur FTP est un intrus. Pour l'indiquer, placez un indicateur emerg dans les fichiers journaux au lieu de l'indicateur par défaut, info et refusez la connexion. Pour ce faire, placez la ligne suivante dans /etc/hosts.deny :
# vi /etc/hosts.deny sshd : ALL : severity emerg
Cela utilise la fonction de journalisation authpriv par défaut, mais élève la priorité de la valeur par défaut d'info à emerg, qui publie les messages de journal directement sur la console.
Refuser l'accès à partir d'un domaine spécifique
L'exemple suivant indique que si une connexion au démon SSH (sshd) est tentée à partir d'un hôte du domaine example.com, exécutez la commande echo pour ajouter la tentative à un fichier journal spécial et refusez la connexion. Étant donné que la directive facultative deny est utilisée, cette ligne refuse l'accès même si elle apparaît dans le fichier /etc/hosts.allow :
# vi /etc/hosts.allow sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied >> /var/log/sshd.log \ : deny
Chaque champ d'option (spawn et deny) est précédé de la barre oblique inverse (\) pour éviter l'échec de la règle en raison de la longueur.
Comprendre les wrappers TCP (/etc/hosts.allow &/etc/hosts.deny) sous Linux