25 0 196KB
Services réseau révision 3 Chaque service réseau est assuré par un programme qui ‘écoute’ sur un port TCP ou UDP et répond à des requêtes. Il existe deux manières sous Linux de lancer un service réseau : en mode ‘standalone’ - le logiciel qui assure le service (httpd par exemple), accepte lui-même les connexions sur le port du service (port 80 TCP dans le cas de httpd) ; par inetd ou xinetd – l'un de ces deux logiciels accepte la connexion réseau en réalisant un contrôle d’accès et puis passe la main à l’application appropriée (in.telnetd par exemple). Pour un serveur assez chargé la première approche est préférable. Pour des services qui ne sont utilisés plus rarement, la deuxième approche est plus adaptée. Elle offre une méthode centralisée de gestion et contrôle d’accès de tous les services. 1.1 Configuration d’inetd Dans le fichier /etc/inetd.conf, nous configurons les services qui seront lancés par le daemon inetd. Chaque ligne de ce fichier contient la configuration d’un service. Le format de chaque ligne est le suivant : service type arguments
protocole
flag
utilisateur/groupe
programme
service - c’est le nom du service que nous pouvons voir dans /etc/services ; type – type du socket (stream pour TCP et dgram pour UDP) ; protocole – tcp, udp, etc. (voir /etc/protocols) ; flag – wait/nowait (lancement de plusieurs instances su service); utilisateur/groupe – l’utilisateur ou le groupe avec lequel l’application sera lancée ; programme – normalement c’est /usr/sbin/tcpd qui ensuite va lancer le service ; arguments – les arguments à passer au programme. Normalement c’est le programme que tcpd va lancer pour réaliser le service. L’exemple suivant configure le service telnet : telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
1.2 Configuration de xinetd Le démon inetd est peu utilisé dorénavant. Son remplaçant xinetd est amélioré et sa Page 1/8
configuration est plus lisible. Le daemon tcpd n’est plus nécessaire car xinetd intègre ces fonctionnalités. Le fichier de configuration principal du daemon xinetd est /etc/xinetd.conf. Chaque service peut être configuré par des fichiers spécifiques qui se trouvent dans /etc/xinet.d/. Pour passer de inetd à xinetd, il suffit de créer de nouveaux fichiers de configuration pour chaque service. Le format de configuration d’un service est le suivant : nom-du-service { type = stream ; le type du socket comme pour inetd protocole = tcp ; voir inetd wait = yes ; soit yes soit no user = root ; l’utilisateur qui lance le service group = root ; le groupe server = in.telnetd ; le programme à lancer }
Les démons inetd et xinetd sont compilés avec la bibliothèque libwrap. Cela permet de configurer de manière centralisée l’accès à ces services dans /etc/hosts.allow et / etc/hosts.deny. Pour plus de détails voir la section 8 - ‘La sécurité’. 1.3 NFS
Client NFS Il faut d‘abord que : le support NFS soit compilé dans le noyau ; le daemon portmap soit lancé. Ensuite, il suffit de monter le partage du serveur NFS. Par exemple, pour monter automatiquement un disque NFS, on ajoute une ligne dans /etc/fstab : adresse-serveur:/home/partage /mnt/partage_nfs defaults 0 0
Serveur NFS Pour démarrer le serveur NFS il faut (comme pour le client NFS) démarrer d’abord le daemon portmap : /etc/init.d/portmap start La configuration du serveur NFS se fait dans le fichier /etc/exports. Dans ce fichier nous configurons les disques partagés que le serveur NFS va mettre à la disposition des Page 2/8
clients : /home/partage *.auf.org(rw, no_root_squash) *(ro) Pour toutes les machines du domaine 'auf.org', le répertoire /home/partage sera partagé en mode lecture/écriture. Pour tous les autres machines, la lecture seule sera autorisée. A propos de l’option no_root_squash, elle remplace l’option par défaut root_squash. Si l’option root_squash est utilisée, l’utilisateur root de la machine client n'aura aucun pouvoir sur l'arborescence de la machine serveur (par exemple, il se connectera en tant que nobody). Dans le cas contraire, il a tous les pouvoirs, et par conséquent il ne faut le permettre qu'aux machine sous contrôle. Une fois le fichier /etc/exports modifié, il faut le notifier au serveur NFS en utilisant l’outil exportfs. exportfs –a # lancer tous les partages de /etc/exports exportfs –ua # arrêter tous les partages
1.4 Samba Le serveur Samba permet de partager des répertoires pour des clients SMB, et donc en particulier des machines Windows. Le paquetage Samba contient différentes applications : smbd – le daemon réalisant le protocole de partage de fichiers SMB (Server Message Block) ; nmbd – réalise le service NMB (NetBIOS Message Block) ; smbclient – le client samba etc.
Client Samba Cet outil nous permet de nous connecter à un serveur Samba. Il nous offre une interface identique à celle du client ftp classique. Avec l’option –L de smbclient nous donne la liste des ressources partagées. L’outil peut être utilisé aussi pour envoyer un message popup à une machine Windows. On utilise pour cela l’option –M. Les répertoires partagés sont montés par la commande smbmount ou avec mount –t smbfs. Exemples : smbclient –L 10.1.1.8 smbclient –M pcWindows1 Page 3/8
smbmount //srvWin/commun /mnt/srvWin/commun
Serveur Samba Le fichier de configuration du serveur Samba est /etc/samba/smb.conf. Pour démarrer ou arrêter Samba nous utilisons classiquement le script /etc/init.d/samba (ou / etc/rc.d/init.d/smb). Le fichier de configuration et le script de démarrage sont communs pour les services smbd et nmbd. Voici quelques options etc/samba/smb.conf) :
de
configuration
de
samba
(extrait
du
fichier
/
[global] workgroup = AUFLPI os level = 2 security = user encrypt passwords = Yes guest account = nobody [homes] comment = Dossiers personnels read only = No create mask = 0640 directory mask = 0750 browseable = No [printers] comment = Nos Imprimantes path = /var/tmp create mask = 0600 printable = Yes browseable = No
1.5 DNS
Client DNS Toutes les machines Linux utilise de(s) mécanisme(s) de résolutions de noms (par exemple des noms de machines vers des adresses IP, nom d’utilisateur vers UID, etc…). Pour réaliser ces services de résolution, il existe plusieurs possibilités – par exemple l'utilisation de simples fichiers système, des base LDAP, des bases NIS et pour al résolution de nom de machine, le DNS. Les méthodes à utiliser, ainsi que l'ordre d'utilisation, sont décrits dans le fichier '/etc/nsswitch.conf'. En voici un exemple : Page 4/8
hosts: networks:
files dns nis files
La première ligne indique que pour la résolutions des noms de machines le système va consulter le fichier /etc/hosts, puis – le services DNS et enfin (si les deux premières méthodes échouent) – le système NIS. Le fichier /etc/hosts décrit la correspondance entre les adresses IP et les noms de machines de la manière suivante : IP
nom_machine
nom_machine.nom_domaine
alias
Voici un exemple réel : 212.52.17.82 212.52.17.83
ns www
ns.domaine.com www.domaine.com
Si le système doit utiliser le service DNS pour la résolution de noms le resolver DNS sera utilisé. La configuration de ce logiciel se trouve dans le fichier /etc/resolv.conf. L'information la plus importante contenue dans ce fichier est la liste des serveurs DNS à interroger.
Serveurs DNS D’après le mode fonctionnement des serveurs DNS, ils peuvent être primaire/maître (master, primary DNS) ou secondaire/esclave (slave, secondary DNS) pour une ou plusieurs zones DNS. Un serveur DNS a autorité ('authoritative') pour une zone si au niveau de la zone supérieure la compétence lui a été déléguée sur la zone. Par exemple si le serveur en question gère la zone .exemple.fr il faut que le serveur en charge de la zone .fr lui délègue cette zone. Le serveur DNS le plus utilisé est le serveur bind. Les versions précédent la version 8 du serveur bind utilisaient le fichier de configuration /etc/named.boot (ou / etc/bind/named.conf). A partir des versions 8 et 9 de 'bind', le fichier de configuration se trouve dans '/etc/named.conf'. Exemple de fichier /etc/named.boot : directory cache primary primary
/var/named named.ca exemple.fr .0.127.in-addr.arp
named.exemple.fr named.local
Page 5/8
primary
.168.192.in-addr.arp
named.rev
Exemple de fichier /etc/named.conf : options
{ directory “/var/named”;
}; zone
“.” { type hint; file “named.ca”;
}; zone “exemple.fr” { type master; file “named.exemple.fr”; }; zone “1.168.192.in-addr.arp” { type master; file “named.rev”; }; zone
“0.0.127.in-addr.arpa” { type master; file “named.local”;
}; Nous avons configuré le serveur pour diffuser l'information de la zone exemple.fr. Nous avons aussi configuré le fichier named.exemple.fr comme fichier de zone pour cette zone. Cela veut dire que ce fichier contiendra les enregistrements/informations pour cette zone. L’exemple suivant montre un simple fichier descriptif de cette zone : @
ns
IN SOA ns.exemple.fr. root.ns.exemple.fr. ( 2005062401 ; Serial - Numéro de série de la zone 28800 ; Refresh - Le temps en secondes entre deux mises ; à jour du serveur esclave 14400 ; Retry - Temps en secondes avant que l’esclave ; réessaye de transférer la zone 3600000 ; Expire 86400 ) ; Minimum IN IN
NS A
ns 213.52.17.82
Page 6/8
Le sign ‘@’ est un variable qui désigne le nom de la zone indiqué dans le fichier / etc/named.conf. Dans cet exemple, la machine ns.exemple.fr est le serveur de noms pour cette zone et que son adresse IP est 213.52.17.82. Voici les types d'enregistrements que nous pouvons utiliser pour configurer une zone : NS A PTR MX CNAME
Spécifie un serveur de noms pour la zone Donne la correspondance entre un nom DNS et une adresse IP Donne la correspondance entre une adresse IP et un nom DNS (résolution inverse) Spécifie le serveur de courrier pour la zone Alias
1.6 Sendmail Pour démarrer ou arrêter le serveur sendmail nous utilisons le script /etc/init.d/sendmail (ou /etc/rc.d/init.d/sendmail). La configuration principale du serveur se fait dans le fichier /etc/sendmail.cf (ou '/etc/mail/sendmail.cf') qui est assez complexe : on utilise généralement un utilitaire pour générer ce fichier. Dans notre cas et à titre d'exemple, nous pouvons indiquer simplement le nom du serveur de courrier ainsi que la liste des adresses pour lesquelles le serveur accepte des message à retransmettre. Si nous voulons que le serveur accepte des courriers pour le domaine 'exemple.fr' (par exemple pour [email protected]) il nous faut d’abord ajouter exemple.fr dans le fichier '/etc/mail/local-host-names', puis configurer le serveur DNS autorité pour la zone exemple.fr en ajoutant l’enregistrement MX (Mail eXchanger) suivant : exemple.fr.
IN
MX
10
mail.exemple.fr.
Ici mail.exemple.fr est le nom de notre serveur sendmail. Sendmail nous permet d’avoir plusieurs noms pour la même boîte aux lettres (des aliases). Nous configurons cela dans le fichier /etc/aliases : nicolas.larrousse: nicolas Dans cet exemple nicolas représente le nom d’utilisateur réel et nicolas.larrousse est un alias pour ce nom d’utilisateur. Après avoir modifié le fichier /etc/aliases il faut lancer la commande newaliases pour mettre à jour la base d’aliases de sendmail. Cette commande génère le fichier Page 7/8
'/etc/aliases.db' qui est un fichier binaire indexé. Les courriers reçus sont enregistrés dans des boîtes aux lettres qui sont de simples fichiers. Ils se trouvent dans le répertoire /var/spool/mail/. Les courriers en attente d’envoi sont stockés dans /var/spool/mqueue. Pour consulter la liste de ces courriers nous utilisons la commande mailq ou sendmail –bp. Pour forcer l’envoi des courriers de la queue l’administrateur peut utiliser la commande sendmail –q.
1.7 Apache La configuration du serveur web/httpd '/etc/apache/httpd.conf' (ou /etc/httpd.conf).
Apache
se
fait
dans
le
fichier
Voici quelques options extraites du fichier de configuration d’Apache : httpd.conf ; Comment démarrer le serveur (stadalone ou inetd) ServerType standalone ; Le répertoire de configuration ServerRoot "/etc/apache” ; La racine de notre serveur Web DocumentRoot "/var/www" ; Options spécifique pour le dossier /var/www/cgi-bin
AllowOverride None Options ExecCGI Order allow,deny Allow from all
; Configuration d'un hôte virtuel
DocumentRoot "/var/www/serveur1" ServerName www.exemple.fr
Le script qui permet de démarrer/arrêter apache est classiquement /etc/init.d/apache (ou /etc/rc.d/init.d/httpd). Une alternative à ce script est l'outil qui est livré avec apache apachectl. L'option graceful de cet outil nous permet d'arrêter le serveur « élégamment » en attendant qu'il termine les connexions en cours.
Page 8/8