Visualiser

Transcription

Visualiser
TCP/IP sous Linux
Serveur réseau
Fac-similé contenant la table des matières,
le préambule et quelques pages du chapitre 1.
Auteur
Jean-François Bouchaudy
GUIDE DE FORMATION
La marque © TSOFT est une marque déposée.
La collection des guides de formation © TSOFT est éditée par la société TSOFT.
Toutes les marques citées dans cet ouvrage sont des marques déposées par leurs propriétaires respectifs
Tous les efforts ont été faits par TSOFT pour fournir dans cet ouvrage une information claire et exacte à
la date de parution. TSOFT n’assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons
de brevets ou atteintes de tierces personnes qui pourraient résulter de cette utilisation.
Réf : TS0061
TCP/IP sous Linux
Serveur Réseau
Auteur : Jean François Bouchaudy
septembre 2003
Editeur
Tsoft
10, rue du Colisée
75008 Paris
http://www.tsoft.fr
Tél. : 01 56 88 29 64
Fax : 01 53 76 03 64
©TSOFT, Paris 2003
Toute représentation ou reproduction intégrale ou partielle faite sans le consentement de l’auteur ou de
ses ayants droit ou ayants cause est illicite selon le Code de la propriété intellectuelle (Art L 122-4) et
constitue une contrefaçon réprimée par le Code pénal. Seules sont autorisées (Art 122-5) les copies ou
reproductions strictement réservées à l’usage privé du copiste et non destinées à une utilisation collective,
ainsi que les analyses et courtes citations justifiées par le caractère critique, pédagogique ou d’information
de l’œuvre à laquelle elles sont incorporées, sous réserve, toutefois, du respect des dispositions des
articles L122-10 à L122-12 du même Code relatives à la reproduction par reprographie.
Avant-propos
Le monde des réseaux est complexe, touffu, incompréhensible pour le non-spécialiste.
Dans ce livre, nous nous intéressons à la mise à disposition sur le réseau des
applications depuis un serveur Linux. Un responsable d’applications réseau peut
résoudre beaucoup de problèmes grâce à Internet, encore lui faut-il de solides
connaissances de base et déjà un savoir pratique.
Ce livre essaie de répondre à cet ambitieux programme. Il veut d’abord donner au
lecteur un savoir pratique. Il apprend à administrer, à gérer les applications que l’on
trouve habituellement sur un serveur Linux. Évidemment, les logiciels stratégiques,
comme Apache, Samba ou Postfix sont traités de manière plus détaillée.
Dans l’apprentissage de chaque application on évite les explications destinées aux
néophytes (« pour les nuls »), on va tout de suite à l’essentiel, en privilégiant le mode
texte (commandes et fichiers de configuration textes). Ce mode est le seul utilisé par
l’expert. Il permet aussi une compréhension profonde des logiciels et des mécanismes
réseaux. Les copies d’écran et les « assistants » sont le plus souvent de la poudre aux
yeux qui donnent l’illusion d’un savoir faire en masquant la complexité sous-jacente.
Ce livre veut également donner un panorama très complet des protocoles réseaux
sous-jacents aux applications réseau. Cette vision est encore une fois pragmatique. On
est à l’opposé d’une approche universitaire. Un protocole est vu tel qu’il apparaît dans
les logs ou dans les analyseurs réseau. On ne donne pas de détails inutiles, les RFC
sont là pour çà et ces derniers sont donnés en référence.
On traite des applications réseaux sous Linux, pourquoi ce choix ? C’est tout simple,
Linux est un système gratuit et un des plus utilisés dans le monde des réseaux. Il est
idéal autant pour l’étudiant en informatique, que pour l’autodidacte ou le responsable
d’applications réseau exigeant.
Le lecteur doit-il être déjà un expert en Linux ou en Réseau ? Non, Internet lui a sans
doute déjà permis d’avoir une grande autonomie. Par ailleurs, les deux livres Linux
Administration et TCP/IP sous Linux : Administration réseau, dans la même
collection, donnent de solides bases, respectivement dans l’administration d’un
système Linux et dans les réseaux TCP/IP.
Cher ami des pingouins, bonne lecture !
© Tsoft – TCP/IP sous Linux : Serveur réseau
Table
des matières
MODULE 1 : APPLICATIONS RESEAUX ...........................................................1-1
La gestion d’une application réseau......................................................................................1-2
inetd .......................................................................................................................................1-7
xinetd ...................................................................................................................................1-12
Dépannage d’une application réseau...................................................................................1-17
Atelier 7 : Les applications réseaux.....................................................................................1-23
MODULE 2 : S ERVICES DE BASE ...................................................................2-1
Les services réseaux ..............................................................................................................2-2
FTP ........................................................................................................................................2-7
Les commandes remotes......................................................................................................2-15
LPD, LPRng ........................................................................................................................2-21
CUPS ...................................................................................................................................2-32
X-Window...........................................................................................................................2-39
VNC.....................................................................................................................................2-47
Atelier 13 : Les services de base .........................................................................................2-51
MODULE 3 : S ERVICES D’ANNUAIRES ...........................................................3-1
Les services gérés par l’administrateur .................................................................................3-2
DHCP ....................................................................................................................................3-4
DNS .....................................................................................................................................3-22
LDAP...................................................................................................................................3-42
Whois...................................................................................................................................3-68
Atelier 10 : Les services annuaires ......................................................................................3-71
© Tsoft – TCP/IP sous Linux : Serveur réseau
T-1
Table des matières
MODULE 4 : S ERVICES ONC........................................................................4-1
Les RPC-ONC.......................................................................................................................4-2
NFS......................................................................................................................................4-11
NIS ......................................................................................................................................4-22
Atelier 11 : Les services ONC.............................................................................................4-35
MODULE 5 : APACHE ...................................................................................5-1
Apache, introduction.............................................................................................................5-2
Un site Web en 1/4 d’heure ...................................................................................................5-9
Les protocoles du Web ........................................................................................................5-17
La configuration d’Apache ..................................................................................................5-25
Les sites dynamiques...........................................................................................................5-39
La sécurité du Web..............................................................................................................5-48
Atelier 14 : Apache .............................................................................................................5-55
MODULE 6 : S AMBA.....................................................................................6-1
Samba, introduction ..............................................................................................................6-2
Un serveur Samba en 1/4 d’heure .........................................................................................6-7
Les protocoles Windows .....................................................................................................6-21
La configuration de Samba .................................................................................................6-41
Dépannage ...........................................................................................................................6-52
Quelques configurations ......................................................................................................6-67
Linux comme client SMB ...................................................................................................6-78
Atelier 15 : Samba ...............................................................................................................6-83
MODULE 7 : L’ E-MAIL .................................................................................7-1
L’architecture de l’e-mail TCP/IP.........................................................................................7-2
Les protocoles du email.........................................................................................................7-6
Un serveur de messagerie en 1/4 d’heure............................................................................7-17
POSTFIX.............................................................................................................................7-25
Sendmail..............................................................................................................................7-34
La sécurité de l’e-mail.........................................................................................................7-40
Atelier 16 : L’e- mail............................................................................................................7-48
ANNEXES
Annexe A : Solutions des exercices ..................................................................................... A-3
Annexe B : Références bibliographiques........................................................................... A-17
T-2
© Tsoft – TCP/IP sous Linux : Serveur réseau
Module 2 : Préambule
Ce guide a pour objectif de former des administrateurs d’applications réseaux TCP/IP
en environnement Linux. Une connaissance minimale de Linux et de son
administration est souhaitable. En outre il est fortement conseillé de posséder des
notions concernant TCP/IP. Les livres Linux Administration et TCP/IP sous Linux :
Administration réseau, dans la même collection, donnent de solides bases,
respectivement dans l’administration d’un système Linux et dans les réseaux TCP/IP.
Support de formation
Le support de formation se divise en 7 modules :
Applications réseau (inetd/xinetd, …).
Services de base (Telnet, FTP, R-commands, LPD, …).
Services d’annuaires (DHCP, DNS, LDAP, WHOIS).
Services ONC (RPC, NFS, NIS).
Apache.
Samba.
L’e-mail (Sendmail, Postfix).
Chaque module est suivi d’un atelier composé de plusieurs exercices.
Le support convient à des formations concernant l’administration d’un serveur réseau
Linux, sur une durée de un à cinq jours. Chaque logiciel serveur, Apache, Samba,
Postfix peut faire l’objet d’un cours spécifique sur deux jours.
© Tsoft – TCP/IP sous Linux : Serveur réseau
P-1
Préambule
Progression pédagogique
Erreur ! Liaison incorrecte.
Module 1: Applications réseaux
Ce module traite principalement du démarrage des applications serveurs via les
services inetd et xinetd. Il enseigne également la logique du dépannage d’une
application réseau quelconque.
Module 2 : Services de base
Ce module survole quelques services simples ou peu stratégiques : FTP, les
commandes remote (rlogin, rcp, rsh, ..), les services d’impression LPD et CUPS, XWindow et VNC.
Module 3 : Services d’annuaires
Dans ce module, le lecteur apprend à configurer des services stratégiques de
l’administration d’un réseau : le DNS, le DHCP et les annuaires LDAP.
Normalement, un administrateur d’applications réseaux n’est pas amené à gérer ces
services, qui sont plutôt du ressort de l’administrateur réseau. On a décidé de les
inclure dans ce support. En effet, ils sont importants pour la culture d’un responsable
d’application. D’autre part, ce dernier épaule souvent l’administrateur réseau en gérant
des serveurs d’annuaires secondaires.
Module 4 : Services ONC
Un poste Linux peut être intégré dans un réseau de systèmes Unix/Linux grâce aux
services NFS et NIS. Ce module traite de ce sujet.
Module 5 : Apache
Apache correspond sans doute à l’utilisation principale d’un serveur Linux. Apache
est le logiciel serveur Web le plus répandu dans le monde. Sa robustesse, sa
modularité sont légendaires. Ce module décrit l’installation d’Apache, sa
configuration élémentaire et avancée, par exemple la création de sites virtuels. Il
aborde également la description du protocole http et les paramètres lié s à la
sécurisation d’un site.
Module 6 : Samba
Une autre utilisation très courante d’un serveur Linux est d’abriter un serveur Samba.
Ce logiciel transforme votre ordinateur en serveur Windows. Ce module décrit
l’installation de Samba, quelques configurations élémentaires et quelques
configurations avancées, par exemple, Samba comme PDC ou Samba comme membre
d’un domaine. Il traite également des commandes de diagnostics et des protocoles
Microsoft qu’utilise Samba. Le module se termine en montrant comment transformer
sont poste Linux en client Windows.
Module 7 : L’e-mail
Linux comme serveur de messagerie clôt la liste des principales utilisations d’un
serveur Linux. Le module décrit la structure d’un e-mail, les protocoles SMTP, POP et
P-2
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
IMAP et le paramétrage élémentaire des applications Sendmail, Imap et Fetchmail.
L’accent est mis sur l’étude du serveur SMTP postfix. Ce dernier s’impose à la fois
pour sa simplicité de configuration et ses qualités en terme de sécurité.
Progression pédagogique conseillée
La majorité des applications présentées peuvent être étudiées indépendamment. Nous
conseillons au lecteur de lire le premier module au préalable. Il présente les services
inetd/xinetd et le dépannage d’une application réseau. La connaissance de ces sujets
est utile qu’elle que soit l’application réseau étudiée. Les conventions utilisées dans ce
livre
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-3
Préambule
Les conventions utilisées dans ce livre
Les types et les polices
Les noms de fichiers, de commandes, d’options ou de procédures sont écrits en police
courrier. Par exemple, la commande ifconfig affiche l’adresse IP du système.
Une référence ou un confer (cf.) s’écrivent en italique. Par exemple, la lecture de
l’ouvrage Linux administration est vivement conseillée. La lecture de cet ouvrage
nécessite une connaissance de l’administration Linux (cf. l’ouvrage Linux
Administration).
Les remarques
Les remarques, les conseils ou les notes de mises en garde sont précédés et suivis
d’une ligne de séparation. Le type de note est en gras. Par exemple :
Remarque
Les mises en gardes commencent par le mot attention en majuscule suivi d’un point
d’exclamation : ATTENTION !
Les exemples
Les exemples apparaissent en police courrier sur fond grisé, comme dans l’exemple
ci-dessous. Le texte saisi par l’utilisateur est indiqué en gras.
L’invite d’une commande contient ou se résume au caractère « $ » dans le cas d’une
session activée par un simple utilisateur. Elle est représentée, ou contient le caractère
« # » dans le cas d’une session activée par l’administrateur Linux (root). Si l’invite ne
contient aucun de ces signes, il correspond à une session utilisateur. Une commande
peut être suivie d’un commentaire introduit par le caractère « # ». Par exemple :
jf@bulbizarre:~ > date
mar jui 1 21:26:54 CEST 2003
jf@bulbizarre:~ > uname –n # affiche le nom du système
bulbizarre
jf@bulbizarre:~ > PS1="$ "
$ cal 9 1952
septembre 1952
di lu ma me je ve sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
$ su Password:
bulbizarre:~ # tail -1 /etc/shadow
cathy:4wzavvZ4fJC36:11775:0:99999:7:0::
bulbizarre:~ #
P-4
© Tsoft – TCP/IP sous Linux : Serveur réseau
• /etc/services
• /etc/inetd.conf
• /etc/xinetd.d/telnet
1
Module 1 : Applications
réseaux
Objectifs
Savoir activer une application réseau en utilisant inetd ou xinetd. Connaître les
principales raisons de non-fonctionnement d’une application et en conséquence savoir
dépanner (grossièrement) une application.
Contenu
La gestion d’une application réseau
inetd
xinetd
Le dépannage d’une application réseau
Références
Man
inetd(8), xinetd(8)
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-1
Applications réseau
La gestion d’une application réseau
La gestion d'une application réseau
n
L’activation du serveur
l
par un RC
l
par inetd/xinetd
n
Le port et éventuellement l’adresse d’écoute du serveur
n
L’UID et le GID du serveur
n
L’activation des journaux de bord et le niveau de déboguage
TSOFT - TCP/IP sous Linux
Module 7 : Les applications réseaux - 7.2
Objectif : comprendre quels sont les principaux paramètres de configuration d’une
application réseau.
La configuration d’un client
La configuration d’une application cliente est généralement simple, voire inexistante.
On doit évidemment indiquer l’adresse du serveur et son port. Le plus souvent
l’adresse du serveur est donnée au moment du lancement de l’application par
l’utilisateur. Le port du serveur est normalement implicite. Si l’application cliente est
bien écrite, elle récupère cette information à partir du fichier /etc/services.
Si l’application utilise un proxy, elle doit comporter les références de celui-ci, c’est-àdire son adresse IP et son numéro de port.
Enfin il faut éventuellement paramétrer la sécurité d’accès. Dans le cas le plus simple,
l’utilisateur doit indiquer un nom et un mot de passe dans la phase de connexion au
serveur. Il faut dans d’autres cas mémoriser dans des fichiers les informations
d’authentific ation, par exemple le nom et le mot de passe déjà cités ou bien un couple
de clé publique et secrète. Dans ce dernier cas, il faut protéger le fichier en lecture.
La configuration d’une application serveur
La configuration d’une application serveur est beaucoup plus complexe. Voici les
éléments de configuration les plus importants et communs à toute application serveur :
• L’activation du serveur par un RC ou par inetd/xinetd.
• Le port d’écoute du serveur.
• L’UID et le GID du serveur.
• L’activation des journaux de bord et le niveau de débogage.
1-2
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
L’activation du serveur
Une application serveur est activée grâce à un script de démarrage ou bien grâce aux
serveurs inetd/xinetd.
Si l’on utilise un script de démarrage (ou RC, « Run Command »), une instance au
moins du serveur est présente en permanence même s’il n’y a aucun client. Le script
permet aussi bien d’activer que d’arrêter l’application. On peut faire en sorte qu’il soit
activé automatiquement au démarrage et à l’arrêt du système (cf. le livre Linux
Administration). Voici par exemple l’arrêt/démarrage du serveur de nom :
# /etc/init.d/named
# /etc/init.d/named
start
stop
# démarre le serveur DNS.
# arrêt du serveur DNS.
Si l’on utilise le service inetd ou xinetd, l’application serveur n’est active que s’il
y a des clients. Seule l’application inetd/xinetd est présente en permanence (cf. le
prochain chapitre).
Le port d’écoute du serveur
Comme pour l’application cliente, le port d’écoute du serveur est normalement lu à
partir du fichier /etc/services.
Très fréquemment, le fichier de configuration du serveur ou ses arguments d’appels
permettent de modifier cette valeur. Ceci permet notamment d’avoir plusieurs
instances du serveur en fonction. On peut utiliser cette possibilité pour tester une
nouvelle version du logiciel serveur.
Quand une application serveur s’associe à un port d’écoute, elle peut spécifier le ou
les cartes réseaux sur lesquelles elle attend des demandes de connexion. Le plus
souvent elle se met à l’écoute de l’ensemble des cartes.
L’UID et le GID du serveur
L’UID et le GID de l’application serveur sont des paramètres très importants car ils
fixent ses droits. Le plus souvent un serveur doit être activé sous le compte root, et
dans ce cas il a tous les droits sur le système. Si l’application est boguée ou vérolée,
un pirate peut prendre en main complètement le système à distance.
Les journaux de bords d’une application
La voix royale pour déboguer une application est de lire les journaux de bord générés
par l’application elle -même. Encore faut-il que l’on demande à l’application de les
générer et que l’on fixe correctement le niveau de débogage.
D’autre part, il faut choisir de rediriger les journaux de bord vers le système Syslog.
Ce service peut gérer l’ensemble des journaux de bord du système et des applications
(cf. le livre Linux Administration).
Le fichier /etc/services
Le fichier /etc/services contient une table de correspondance entre le nom
symbolique d’un port réseau UDP ou TPC et son équivalent numérique. Chaque
application cliente ou serveur doit normalement l’utiliser pour en déduire le numéro de
port.
Les noms et les numéros qui sont listés dans ce fichier sont attribués par l’IANA. Son
site Web nous renseigne sur les valeurs que l’on peut ajouter à ce fichier.
Extrait :
# more /etc/services
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-3
Applications réseau
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single
well-known
# port number for both TCP and UDP; hence, most entries here have
two entries
# even if the protocol doesn't support UDP operations.
#
# This list could be found on:
#
http://www.isi.edu/in-notes/iana/assignments/portnumbers
#
#
0/tcp
Reserved
#
0/udp
Reserved
tcpmux
1/tcp
# TCP Port Service
Multiplexer
tcpmux
1/udp
# TCP Port Service
Multiplexer
compressnet
2/tcp
# Management Utility
compressnet
2/udp
# Management Utility
compressnet
3/tcp
# Compression Process
compressnet
3/udp
# Compression Process
rje
5/tcp
# Remote Job Entry
rje
5/udp
# Remote Job Entry
echo
7/tcp
Echo
#
echo
7/udp
Echo
#
discard
9/tcp
Discard sink null
#
discard
9/udp
Discard sink null
#
systat
11/tcp
users
# Active Users
systat
11/udp
users
# Active Users
daytime
13/tcp
Daytime
# (RFC 867)
daytime
13/udp
Daytime
# (RFC 867)
netstat
15/tcp
# Unassigned [was netstat]
qotd
17/tcp
quote
# Quote of the Day
qotd
17/udp
quote
# Quote of the Day
msp
18/tcp
# Message Send Protocol
msp
18/udp
# Message Send Protocol
chargen
19/tcp
ttytst source
# Character
Generator
chargen
19/udp
ttytst source
# Character
Generator
ftp-data
20/tcp
# File Transfer [Default
Data]
ftp-data
20/udp
# File Transfer [Default
Data]
ftp
21/tcp
# File Transfer [Control]
fsp
21/udp
# UDP File Transfer
ssh
22/tcp
# SSH Remote Login Protocol
ssh
22/udp
# SSH Remote Login Protocol
telnet
23/tcp
# Telnet
telnet
23/udp
# Telnet
1-4
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
La surveillance d’une application serveur
La surveillance d’une application se fait essentiellement via les commandes ps,
netstat et lsof. La visualisation des journaux de bord est bien sûr le complément
indispensable.
ps -ef
La commande ps -ef est la technique la plus simple. Elle affiche la totalité des
processus actifs. On l’utilise le plus souvent avec la commande grep pour tester la
présence d’une application particulière.
# ps -ef |more
UID
PID PPID
root
1
0
root
2
1
root
3
1
root
4
0
root
5
0
root
6
0
root
7
0
root
8
1
root
1226
1
root
1227
1
root
1228
1
root
2186
1
root
2502
1
...
# ps -ef | grep sshd
root
2502
1
#
C
0
0
0
0
0
0
0
0
0
0
0
0
0
STIME
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
Nov20
TTY
?
?
?
?
?
?
?
?
?
?
?
?
?
0 Nov20 ?
TIME
00:00:06
00:00:00
00:00:00
00:00:00
00:00:03
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:02
CMD
init [5]
[keventd]
[kapm-idled]
[ksoftirqd_CPU0]
[kswapd]
[bdflush]
[kupdated]
[mdrecoveryd]
[jfsIO]
[jfsCommit]
[jfsSync]
[raid5d]
/usr/sbin/sshd
00:00:02 /usr/sbin/sshd
netstat -a
La commande netstat -a nous donne beaucoup d’informations. En effet elle
affiche l’état des sockets réseaux UDP et TCP. On peut en déduire les applications
TCP serveur car elles sont en attente de connexion (état LISTEN). On voit les sockets
TCP établie et enfin on sait les ports UDP utilisés.
Options :
-n Affiche les valeurs numériques. Par défaut, la commande réalise une résolution
des noms des machines et des noms des ports réseaux.
-p
Affiche le PID de l’application qui a ouvert le port.
Exemples :
# netstat -an | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address
Foreign Address
tcp
0
0 0.0.0.0:1024
0.0.0.0:*
tcp
0
0 0.0.0.0:513
0.0.0.0:*
tcp
0
0 0.0.0.0:515
0.0.0.0:*
tcp
0
0 0.0.0.0:37
0.0.0.0:*
tcp
0
0 0.0.0.0:79
0.0.0.0:*
tcp
0
0 0.0.0.0:111
0.0.0.0:*
tcp
0
0 0.0.0.0:80
0.0.0.0:*
tcp
0
0 0.0.0.0:10000
0.0.0.0:*
tcp
0
0 0.0.0.0:6000
0.0.0.0:*
© Tsoft – TCP/IP sous Linux : Serveur réseau
State
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
1-5
Applications réseau
tcp
0
0 0.0.0.0:23
tcp
0
0 0.0.0.0:7741
tcp
0
2 192.168.218.12:23
ESTABLISHED
tcp
0
0 :::113
tcp
0
0 :::22
udp
0
0 0.0.0.0:517
udp
0
0 0.0.0.0:518
udp
0
0 0.0.0.0:520
udp
0
0 0.0.0.0:10000
udp
0
0 0.0.0.0:37
udp
0
0 0.0.0.0:177
# netstat -a | grep ssh
tcp
0
0 *:ssh
# netstat -ap | grep ssh
tcp
0
0 *:ssh
2502/sshd
#
0.0.0.0:*
0.0.0.0:*
192.168.218.1:1395
LISTEN
LISTEN
:::*
:::*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
LISTEN
LISTEN
*:*
LISTEN
*:*
LISTEN
lsof
La commande lsof liste les fichiers ouverts y compris les sockets.
Références
Man
services(5), netstat(8), lsof(8), ps(1)
Internet
http://www.iana.org/assignments/ports-numbers
Le site officiel qui liste les numéros de ports enregistrés auprès des instances
d’Internet.
Livre
Linux Administration, de A. Berlat, J-F. Bouchaudy et G. Goubet.
1-6
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
inetd
inetd
/etc/services
/etc/inetd.conf
Client
Serveurs
ftp
ftp
inetd
inetd
3245
ftpd
ftpd
21
httpd
httpd
80
Socket associée
au port 3245
TCP/IP
TCP/IP
TCP/IP
TCP/IP
Dialogue réseau
TSOFT - TCP/IP sous Linux
Module 7 : Les applications réseaux - 7.3
Objectifs : savoir activer une application réseau en utilisant inetd. Comprendre la
logique de fonctionnement du wrapper tcpd.
Introduction
Quand on utilise le service inetd, l’application serveur n’est active que s’il y a des
clients. Seul le démon inetd est présent en permanence.
Comment inetd connaît-il les ports réseaux à surveiller et les applications serveur à
activer en conséquence ? Toutes ces informations lui sont communiquées par son
fichier de configuration /etc/inetd.conf.
Le fichier /etc/inetd.conf
Chaque ligne du fichier /etc/inetd.conf décrit une application serveur gérée par
inetd. Les différents champs du fichier sont séparés par des espaces ou des
tabulations. Par ailleurs, il est possible d’ajouter le symbole « # » devant une ligne
pour la mettre en commentaire. Inversement la suppression de ce caractère ouvre le
port réseau.
Voici la description des différents champs :
• 1er champ : le nom du port qui identifie l’application. Inetd lit le fichier
/etc/services pour en déduire le numéro de port équivalent, et se met à
l’écoute de ce port.
• 2ème et 3ème champ : le type de protocole utilisé par le service réseau. Ces
champs ont pour valeur :
-« stream tcp » si elle utilise TCP.
-« dgram udp » si elle utilise UDP.
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-7
Applications réseau
• 4ème champ : le paramètre « nowait » indique qu’il y aura un serveur par client,
c’est le cas de in.telnetd, et le paramètre « wait », qu’il y aura un seul serveur
pour l’ensemble des clients. C’est le cas de in.talkd, le serveur qui dialogue
avec la commande talk.
• 5ème champ : l’identité sous laquelle s’exécute l’application serveur, c’est-à-dire
son « UID ».
• 6ème champ : le chemin de l’exécutable de l’application serveur.
• Les autres champs : les arguments de l’application en n’oubliant pas « l’argument
0 » qui correspond normalement au nom de l’application.
Remarque
Certaines applications, très simples, peuvent être gérées directement par inetd. Dans
ce cas le mot clé « internal » remplace le chemin de l’exécutable.
Extrait du fichier /etc/inetd.conf
# more /etc/inetd.conf
# See "man 8 inetd" for more information.
#
# If you make changes to this file, either reboot your machine or
send the
# inetd a HUP signal with "/sbin/init.d/inetd reload" or by hand:
# Do a "ps x" as root and look up the pid of inetd. Then do a
# "kill -HUP <pid of inetd>".
# The inetd will re-read this file whenever it gets that signal.
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path>
<args>
#
# echo stream tcp
nowait root
internal
# echo dgram
udp
wait
root
internal
# discard
stream tcp
nowait root
internal
# discard
dgram
udp
wait
root
internal
# daytime
stream tcp
nowait root
internal
# daytime
dgram
udp
wait
root
internal
# chargen
stream tcp
nowait root
internal
# chargen
dgram
udp
wait
root
internal
time
stream tcp
nowait root
internal
time
dgram
udp
wait
root
internal
#
# These are standard services.
#
# ftp
stream tcp
nowait root
/usr/sbin/tcpd wu.ftpd -a
# ftp
stream tcp
nowait root
/usr/sbin/tcpd proftpd
ftp
stream tcp
nowait root
/usr/sbin/tcpd in.ftpd
#
# If you want telnetd not to "keep-alives" (e.g. if it runs over a
ISDN
# uplink), add "-n". See 'man telnetd' for more details.
telnet stream tcp
nowait root
/usr/sbin/tcpd in.telnetd
# nntp stream tcp
nowait news
/usr/sbin/tcpd
/usr/sbin/leafnode
# smtp stream tcp
nowait root
/usr/sbin/sendmail
sendmail -bs
1-8
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
# printer
stream tcp
nowait root
/usr/sbin/tcpd
/usr/bin/lpd -i
#
# Shell, login, exec and talk are BSD protocols.
# The option "-h" permits ``.rhosts'' files for the superuser.
Please look at
# man-page of rlogind and rshd to see more configuration
possibilities about
# .rhosts files.
shell
stream tcp
nowait root
/usr/sbin/tcpd in.rshd -L
# shell stream tcp
nowait root
/usr/sbin/tcpd in.rshd -aL
#
# If you want rlogind not to "keep-alives" (e.g. if it runs over a
ISDN
# uplink), add "-n". See 'man rlogind' for more details.
login
stream tcp
nowait root
/usr/sbin/tcpd in.rlogind
# login stream tcp
nowait root
/usr/sbin/tcpd in.rlogind a
exec
stream tcp
nowait root
/usr/sbin/tcpd in.rexecd
talk
dgram
udp
wait
root
/usr/sbin/tcpd in.talkd
ntalk
dgram
udp
wait
root
/usr/sbin/tcpd in.talkd
#
#
# Pop et al
#
# pop2 stream tcp nowait root /usr/sbin/tcpd in.pop2d
pop3
stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper s
#
# Imapd - Interactive Mail Access Protocol server
# Attention: This service is very insecure
# imap stream tcp
nowait root
/usr/sbin/tcpd imapd
#
# Comsat - has to do with mail.
#
# comsat
dgram
udp
wait
root
/usr/sbin/tcpd
in.comsat
#
# The Internet UUCP service.
#
# uucp stream tcp
nowait uucp
/usr/sbin/tcpd
/usr/lib/uucp/uucico -l
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#
# tftp
dgram
udp wait
root /usr/sbin/tcpd in.tftpd -s
/tftpboot
# bootps
dgram
udp wait
root
/usr/sbin/bootpd bootpd -c
/tftpboot
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers." Many sites choose to
disable
# some or all of these services to improve security.
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-9
Applications réseau
# Try "telnet localhost
see that
# information yourself!
#
finger stream tcp
w
# systat
stream
/bin/ps -auwwx
# netstat
stream
/bin/netstat -a
#
systat" and "telnet localhost netstat" to
nowait
nobody
/usr/sbin/tcpd
in.fingerd -
tcp
nowait
nobody
/usr/sbin/tcpd
tcp
nowait
root
/usr/sbin/tcpd
Fonctionnement de inetd
Soit la ligne suivante du fichier /etc/inetd.conf qui décrit le service FTP :
ftp
stream
tcp
nowait
root
/usr/sbin/wu.ftpd
wu.ftpd -a
Quand inetd est activée, il se met à l’écoute du port TCP 21 (inetd déduit le
numéro de port du fichier /etc/services). Quand une demande de connexion
arrive sur ce port, il active l’application /usr/sbin/wu.ftpd et lui transmet les
arguments « wu.ftpd -a ». L’application est activé sous le compte de root. Si une
deuxième demande de connexion survient sur le même port, inetd active une autre
instance d’application serveur en suivant la recommandation « nowait ». Quand une
instance d’application serveur a terminé son travail, elle meurt, et en final inetd se
retrouve le plus souvent seul actif.
Activation/arrêt du service
Le démon inetd est normalement activé au démarrage par un script RC, par exemple
/etc/rc.d/rc2.d/S20inetd.
Il est possible d’arrêter ou de relancer le service de manière interactive :
# /etc/init.d/inetd
# /etc/init.d/inetd
#
stop
start
# arrêt du service
# réactive le service
Si l’on vient de modifier le fichier /etc/inetd.conf, il faut prévenir le démon en
lui envoyant le signal « 1 » (SIGHUP).
# ps -e | grep inetd
309 ?
00:00:00 inetd
# kill -HUP 309
#
Le « wrapper » tcpd
Un « wrapper » offre une couche de protection. Il contrôle l’accès à des services
réseaux grâce à des fichiers contenant des listes de contrôle d’accès ou ACL (Access
Control List).
Lors de l’installation de Linux, la plupart des services réseaux activés à travers le
fichier inetd.conf, le sont via tcpd.
Extrait de inetd.conf :
ftp
1-10
stream
tcp
nowait
root
/usr/sbin/tcpd wu.ftpd
–a
© Tsoft – TCP/IP sous Linux : Serveur réseau
Applications réseau
Chaque fois qu’une requête est adressée au service FTP, le démon principal du réseau,
inetd, active tcpd plutôt que in.ftpd directement.
tcpd met à jour un journal de bord (log) et vérifie que le client est autorisé à utiliser
le service. Dans l’affirmative, tcpd exécute le serveur demandé, wu.ftpd dans
l’exemple.
Les listes de contrôle d’accès sont conservées dans les fichiers :
/etc/hosts.allow
/etc/hosts.deny
Le format de ces fichiers est décrit dans le manuel hosts_access(5). Si les fichiers
n’existent pas ou sont vides, il n’y a pas de contrôle d’accès.
Dans le cas contraire, l’administrateur du système Linux utilise le fichier
hosts.allow ou hosts.deny pour indiquer les clients qui sont autorisés ou
interdits de service.
Le contrôle d’accès est global, pour l’ensemble des services, ou peut être décidé
service par service, pour chaque ordinateur hôte ou pour un domaine.
La structure d’une ligne de l’un des deux fichiers ACL est :
liste_de_démon : liste_de_client [ : commande ]
Les listes sont composées des identificateurs de démons ou de clients, séparés par des
virgules ou des espaces.
Les noms des hôtes ou des clients peuvent être des mots clés pour désigner un
ensemble prédéfini.
Extrait du fichier /etc/hosts.allow :
wu.ftpd : LOCAL, .societe.com
Tous les clients dont le nom ne comporte pas de point (LOCAL) et les clients du
domaine societe.com ont le droit d’utiliser le service FTP de l’hôte.
Références
Man
inetd(8), inetd.conf(5), services(5), tcpd(8), hosts_access(5).
© Tsoft – TCP/IP sous Linux : Serveur réseau
1-11

Documents pareils