PROFDINFO.COM

Votre enseignant d'informatique en ligne

Section 3 - xinetd, telnet et ftp

Retour à la page du cours

Cette section nous fera reviser un peu le daemon fort utile xinetd. Nous verrons à quoi il sert, quels sont ses avantages et comment on peut le configurer. Nous aurons également une petite initiation à deux serveurs tout simples qui sont souvent pris en charge par xinetd.

3.1 - xinetd

3.2 - Contrôle d'accès

3.3 - Telnet

3.4 - FTP

3.1 - xinetd

xinetd est un daemon qui écoute sur plusieurs ports à la fois en attendant des requêtes de connexion pour différents services. Lorsqu'il reçoit une demande de connexion sur un des ports qu'il surveille, il démarre le serveur correspondant et lui passe la demande. La connexion est donc établie et xinetd retourne à son état initial.

Les avantages d'utiliser xinetd:

  • Il n'est pas nécessaire que tous les serveurs en attente aient un daemon en exécution. xinetd est le seul qui doit être chargé. Cela libère des ressources.
  • La gestion des ports et des services associés est centralisée
  • Permet d'ajouter à un log toutes sortes d'informations concernant connexions (et les tentatives ratées), peu importe ce que les serveurs auraient normalement logué.
  • Permet de limiter le nombre maximal de serveurs démarrables simultanément, prévenant les attaques de type "Denial of Service".
  • Permet de faire un contrôle d'accès simple et efficace comme le faisait tcpd (TCP wrapper).

Plusieurs serveurs peuvent être configurés aisément de façon à être utilisés avec xinetd, même s'ils ne le sont pas par défaut.

Retour à la table des matières de la section

3.1.1 - Les fichiers de configuration de xinetd

  • /etc/services
       

Notez qu'il est possible de forcer xinetd à relire ses fichiers de configuration sans nécessairement le redémarrer. On peut simplement lui envoyer le signal SIGHUP. Je vous laisse trouver comment...

Notez également en passant qu'une fois que xinetd est installé, la commande chkconfig indique à la fin de sa liste de services tous les services gérés par xinetd et lesquels sont actifs.

Retour à la table des matières de la section

3.2 - Contrôle d'accès

Voyons plus en détails comment fonctionne le contrôle d'accès sur xinetd.

Retour à la table des matières de la section

3.2.1 - Les 3 règles de base

  1. Si un client est inscrit dans /etc/hosts.allow, ce client peut se connecter au serveur et le contrôle est terminé.
  2. Sinon, si un client est inscrit dans /etc/hosts.deny, ce client ne peut pas se connecter au serveur et le contrôle est terminé.
  3. Sinon, le client peut entrer.

Autrement dit, si les fichiers hosts.allow et hosts.deny sont vides (ou inexistants, un fichier inexistant étant traité comme un fichier vide), aucun contrôle d'accès ne sera fait et tout le monde pourra se connecter à tous les serveurs gérés par xinetd.

Retour à la table des matières de la section

3.2.2 - Le fonctionnement des fichiers

À l'intérieur d'un des deux fichiers, on retrouve une liste de règles indiquant un daemon et un client. xinetd tentera de trouver une correspondance dans cette liste avec le client qui tente de se connecter au daemon demandé. Il lira les règles dans l'ordre et s'arrêtera dès qu'une correspondance sera trouvée (donc l'ordre est important).

Retour à la table des matières de la section

3.2.3 - Le format des fichiers

  • Une ligne qui se termine par un backslash (\) se poursuit à la ligne suivante (et le tout sera alors traité comme une seule longue ligne)
  • Une ligne vide ou débutant par un # est ignorée
  • Les autres lignes doivent respecter le format liste_daemons : liste_clients [ : commande ]
    • liste_daemons est une liste d'un ou de plusieurs nom de processus daemons. On n'utilisera donc pas ici le nom du service (comme telnet) mais bien le nom du daemon (comme in.telnetd). On pourra aussi utiliser des jokers (wildcards) - voir plus bas.
    • liste_clients est une liste d'un ou de plusieurs nom d'hôtes, adresses, masques ou jokers (voir plus bas) qui seront comparés avec le nom d'hôte et l'adresse du client.
    • Les éléments d'une liste peuvent être séparés par des virgules, des espaces ou des tabulations.
    • La casse n'est pas importante
    • Notez que la section commande est facultative. Si une commande est présente, elle sera exécutée lorsqu'une correspondance aura été trouvée, avant de démarrer le serveur.
  • Les masques suivants peuvent être utilisés:
    • une chaîne qui commence par un point: indique que tous les noms d'hôte qui finissent par la chaîne donnée correspondent. Par exemple ".clg.qc.ca" correspond à "georges.clg.qc.ca" et "roger.reseaux.clg.qc.ca"
    • une chaîne qui finit par un point: indique que toutes les adresses qui débutent par la chaîne donnée correspondent. Par exemple "192.168.0." correspond à toutes les adresses de 192.168.0.1 à 192.168.0.255.
    • une chaîne de type a.a.a.a/m.m.m.m: est interprétée comme une adresse et un masque de sous-réseau. La correspondance sera faite en conséquence. Par exemple: 192.168.0.0/255.255.0.0
    • on peut également utiliser les caractères génériques * et ?, qui fonctionnent exactement comme dans le système de fichiers. Par contre, on ne peut pas les utiliser conjointement à une des trois méthodes donnés ci-haut.
  • Les jokers suivants peuvent être utilisés pour représenter des groupes de daemons ou de clients:
    • ALL: le joker universel qui correspond toujours.
    • LOCAL: correspond à tout nom d'hôte qui ne contient pas de point (donc juste le nom d'un serveur, nécessairement dans notre réseau local)
  • Il est possible de définir des exceptions à une règle en utilisant le mot clé EXCEPT. Par exemple:
    ALL: .clg.qc.ca EXCEPT georges.clg.qc.ca

Retour à la table des matières de la section

3.2.4 - Quelques exemples

  • Le mode fermé par défaut (de base):
     
     

Retour à la table des matières de la section

3.3 - Telnet

Le protocole telnet permet simplement de se loguer à distance sur une machine et d'y exécuter un interpréteur de commandes. Lorsqu'on fait un telnet vers un serveur quelconque, on obtient un écran de login et on doit pouvoir fournir un compte et un mot de passe existant sur ce serveur. Telnet utilise les mêmes comptes que le login "physique", il n'y a pas de comptes "à part".

Telnet est un moyen simple d'exécuter des commandes sur un hôte distant. Toutefois, il tend à disparaître puisqu'il n'est absolument pas sécuritaire. Toute la communication entre le client et le serveur passe en clair sur le réseau, sans aucune encryption, y compris lors du login (et donc de la divulgation du mot de passe).

De plus, telnet ne permet pas l'échange de fichiers entre deux machines.

Il a été remplacé par ssh, qui est un protocole similaire mais avec une encryption.

Nous essaierons tout de même de configurer et d'installer telnet, question de l'avoir fait au moins une fois et de pouvoir le comparer ensuite avec ssh plus tard dans la session.

Par défaut, telnet utilise xinetd.

Retour à la table des matières de la section

3.4 - FTP

Le protocole FTP est très répandu et encore très utilisé, malgré le fait que lui aussi n'est (par défaut) pas encrypté. Toutefois, beaucoup de serveurs (et donc de clients) supportent l'encryption du protocole FTP (en passant souvent par un tunnel ssh) mais malgré tout cette possibilité reste tout de même peu utilisée.

FTP signifie File Transfer Protocol et est utilisé uniquement pour échanger des fichiers entre deux machines distantes. Lorsque l'on utilise FTP, on doit s'authentifier sur l'hôte distant en utilisant soit un compte "régulier" de la machine (qui pourrait nous servir autant à se loguer physiquement sur la machine ou à travers un telnet) ou encore en utilisant un compte dit virtuel, créé uniquement pour l'accès FTP (comme par exemple le fameux compte anonymous).

On n'obtiendra pas alors un interpréteur de commandes régulier mais plutôt une fenêtre FTP, qui nous permettra de naviguer dans les répertoires distants, de récupérer des fichiers ou encore d'en envoyer. Tout cela dépendra tout de même des permissions qui nous sont accordés au niveau du système de fichiers.

Beaucoup de serveurs FTP peuvent fonctionner indépendamment de xinetd, mais plusieurs peuvent également être reconfigurés aisément pour passer via xinetd (comme ils le faisaient souvent avant).

Un des serveurs les plus populaires et les plus utilisés est vsftpd (Very Secure File Transfer Protocol Daemon). Nous verrons comment le sécuriser convenablement dans une prochaine section.

Retour à la table des matières de la section