Ceci est une ancienne révision du document !
Table des matières
Dernière mise-à-jour : 2020/01/30 03:36
SO214 - Gestion des Services Réseau TCPv4
Configuration de TCP/IP
La configuration TCP/IP sous Solaris s'effectue en éditant plusieurs fichiers :
Fichier | Description |
---|---|
/etc/resolv.conf | Spécifie les serveurs DNS |
/etc/hosts | Spécifie des binômes nom-adresse IP pour la résolution locale |
/etc/nsswitch.conf | Spécifie l'ordre des services de résolution de noms |
/etc/nodename | Nom de la machine |
/etc/hostname.nic | Nom ou adresse IP associé(e) à la carte nic |
/etc/defaultdomain | Nom du domaine NIS / NIS+ |
/etc/defaultrouter | Spécifie le routeur par défaut |
/etc/inet/netmasks | Spécifie le masque réseau |
Le configuration TCP/IP peut être effectuée en utilisant la commande sys-unconfig. Cette commande redémarre le système et permet de configurer les éléments suivants :
- Nom et adresse de la machine
- L'utilisation de NIS ou pas
- Le service de résolution de noms à utiliser
- Le mot de passe de root
- La date, l'heure et le lieu du système.
Important - Tapez la commande sys-unconfig pour configurer votre système en DHCP puis en adresse fixe. Notez que le FQDN de votre système doit être solaris.i2tch.loc et que l'adresse IP est la 10.0.2.15. L'adresse de la passerelle est la 10.0.2.2 tandis que les DNS sont 8.8.8.8, 8.8.4.4 et 10.0.2.3.
Configuration manuelle de l'adresse IP
DHCP
Pour configurer un poste en DHCP, il convient de :
- supprimer le fichier /etc/nodename s'il existe,
- supprimer le fichier /etc/defaultrouter s'il existe,
- créer le fichier vide /etc/hostname.nic où nic est le nom de la carte réseau obtenu en utilisant la commande netstat - i,
- éditer le fichier /etc/hosts en y inscrivant uniquement l'adresse loopback.
Par exemple :
# rm -f /etc/nodename # rm -f /etc/defaultrouter # netstat -i Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue lo0 8232 loopback localhost 353 0 353 0 0 0 e1000g0 1500 unknown unknown 3157 0 2641 0 0 0 # rm -f /etc/hostname.e1000g0 # touch /etc/hostname.e1000g0 # cat /etc/hostname.e1000g0 # # echo "127.0.0.1 localhost" > /etc/hosts # cat /etc/hosts 127.0.0.1 localhost # reboot
Adresse IP en fixe
Afin d'affecter une adresse IP fixe à votre système, il est nécessaire d'éditer les fichiers suivants :
- /etc/nodename
- ce fichier contient le FQDN du système
- /etc/hostname.nic
- ce fichier contient l'adresse IP fixe de la carte réseau
- /etc/hosts
- ce fichier contient la correspondance adresse IP - FQDN
- /etc/defaultdomain
- ce fichier contient le FQDN du système
- /etc/defaultrouter
- ce fichier contient l'adresse IP de la passerelle par défault
- /etc/resolv.conf
- ce fichier contient les adresses IP des serveurs DNS
- /etc/nsswitch.conf
- ce fichier stipule l'ordre de recherche des services de noms
Par exemple :
# vi /etc/nodename # cat /etc/nodename solaris.i2tch.loc # vi /etc/hostname.e1000g0 # vi /etc/hostname.e1000g0 10.0.2.15 # vi /etc/hosts # cat /etc/hosts 127.0.0.1 localhost unknown unknown. 10.0.2.15 solaris.i2tch.loc # cat /etc/defaultdomain solaris.i2tch.loc # vi /etc/defaultrouter # cat /etc/defaultrouter 10.0.2.2 # cat /etc/resolv.conf nameserver 10.0.2.3 # grep '^hosts:' /etc/nsswitch.conf hosts: files dns # grep '10' /etc/inet/netmasks 10.0.2.0 255.255.255.0 # reboot
Résolution d'adresses IP
La configuration DNS est stockée dans le fichier /etc/resolv.conf :
/etc/resolv.conf
# cat /etc/resolv.conf nameserver 10.0.2.3
L'ordre de recherche des services de noms est stocké dans le fichier /etc/nsswitch.conf. Pour connaître l'ordre, saisissez la commande suivante :
# grep '^hosts:' /etc/nsswitch.conf hosts: files dns # Added by DHCP
Le mot files fait référence au fichier /etc/hosts :
/etc/hosts
Le fichier /etc/hosts est un lien vers le fichier /etc/inet/hosts.
# cat /etc/hosts 127.0.0.1 localhost 10.0.2.15 solaris.i2tch.loc # Added by DHCP
Pour tester le serveur DNS, deux commandes sont possibles :
# nslookup www.ittraining.center Server: 10.0.2.3 Address: 10.0.2.3#53 Non-authoritative answer: Name: www.ittraining.center Address: 217.160.0.225 # dig www.ittraining.center ; <<>> DiG 9.6-ESV-R8 <<>> www.ittraining.center ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50638 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.ittraining.center. IN A ;; ANSWER SECTION: www.ittraining.center. 3564 IN A 217.160.0.225 ;; Query time: 6 msec ;; SERVER: 10.0.2.3#53(10.0.2.3) ;; WHEN: Thu Jan 16 11:11:09 2020 ;; MSG SIZE rcvd: 55
Services réseaux
Quand un client émet une demande de connexion vers une application réseau sur un serveur, il utilise un socket attaché à un port local supérieur à 1023, alloué d'une manière dynamique. La requête contient le port de destination sur le serveur.
inetd
Historiquement les serveurs étaient gérés par le service inetd. Lors de l'utilisation d'inetd, les serveurs gérés ne sont lancés qu'en cas de besoin, c'est-à-dire, lors d'une connexion. Le fichier de configuration d'inetd est /etc/inetd.conf :
# cat /etc/inetd.conf # # Copyright 2004 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "@(#)inetd.conf 1.56 04/10/21 SMI" # # Legacy configuration file for inetd(1M). See inetd.conf(4). # # This file is no longer directly used to configure inetd. # The Solaris services which were formerly configured using this file # are now configured in the Service Management Facility (see smf(5)) # using inetadm(1M). # # Any records remaining in this file after installation or upgrade, # or later created by installing additional software, must be converted # to smf(5) services and imported into the smf repository using # inetconv(1M), otherwise the service will not be available. Once # a service has been converted using inetconv, further changes made to # its entry here are not reflected in the service. # # # CacheFS daemon. Provided only as a basis for conversion by inetconv(1M). # 100235/1 tli rpc/ticotsord wait root /usr/lib/fs/cachefs/cachefsd cachefsd # TFTPD - tftp server (primarily used for booting) #tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
Les lignes de configuration des serveurs ressemblaient à :
#tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
Notez que cette ligne est précédée par le caractère # indiquant que le serveur concerné est désactivé. Pour activer le serveur, il convient d'enlever le caractère #, de sauvegarder le fichier et de relancer le service inetd.
Le premier champs de la ligne identifie le nom du port qui identifie l'application. Inetd lit ensuite le fichier /etc/services pour déduire le numéro de port concerné et se met à l'écoute de celui-ci.
Le deuxième et le troisième champs définissent le type de protocole, à savoir:
- stream tcp pour le tcp
- dgram udp pour l'udp
Le quatrième champs prend un de deux valeurs:
- nowait
- indique qu'il y aura un serveur par client
- wait
- indique qu'il y aura un seul serveur pour l'ensemble des clients
Le cinquième champs indique l'identité sous laquelle sera exécuté le serveur.
Le sixième champs indique l'exécutable. Dans ce cas c'est /usr/sbin/in.tftpd.
Le septième champs indique les arguments de l'application serveur dont l'argument 0 est le nom de l'application.
TCP Wrapper
Lors de l'utilisation d'inetd, TCP Wrapper pouvait être utilisé pour contrôler l'accès à des services réseaux grâce à des ACL. Par exemple la ligne dans le fichier /etc/inetd.conf :
tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
était écrite de la façon suivante pour pouvoir utiliser TCP Wrapper :
tftp dgram udp6 wait root /usr/sbin/tcpd in.tftpd -s /tftpboot
quand une requête arrive pour le serveur tftp, inetd activait le wrapper tcpd au lieu d'activer in.tftpd directement.
tcpd mettait à jour un journal et vérifiait si le client avait le droit d'utiliser le service concerné. Les ACL se trouvent dans deux fichiers:
- /etc/hosts.allow
- /etc/host.deny
Il faut noter que si ces fichiers n'existent pas ou sont vides, il n'y a pas de contrôle d'accès.
Le format d'une ligne dans un de ces deux fichiers est:
démon : liste_de_clients
Par exemple dans le cas de notre serveur tftp, on verrait une ligne dans le fichier /etc/hosts.allow similaire à:
in.tftpd : 192.168.1.10, .fenestros.com
ce qui implique que la machine dont le numéro IP est le 192.168.1.10 ainsi que les machines du domaine fenestros.com sont autorisées à utiliser le service.
Le mot clef ALL pouvait être utilisé pour indiquer tout. Par exemple, ALL:ALL dans le fichier /etc/host.deny bloque effectivement toute tentative de connexion à un service inetd sauf pour les ACL inclus dans le fichier /etc/host.allow.
SMF
Depuis Solaris 10, les fonctionnalités d'inetd sont comprises dans SMF. Par défaut, TCP Wrappers est désactivé :
# svcprop -p defaults inetd defaults/bind_addr astring "" defaults/bind_fail_interval integer -1 defaults/bind_fail_max integer -1 defaults/con_rate_offline integer -1 defaults/connection_backlog integer 10 defaults/failrate_cnt integer 40 defaults/failrate_interval integer 60 defaults/inherit_env boolean true defaults/max_con_rate integer -1 defaults/max_copies integer -1 defaults/stability astring Evolving defaults/tcp_trace boolean false defaults/tcp_wrappers boolean false defaults/value_authorization astring solaris.smf.value.inetd
Pour activer TCP Wrappers, il convient de modifier les propriétés de ce service :
# svccfg -s inetd setprop defaults/tcp_wrappers=true # svcadm refresh inetd # svcprop -p defaults inetd | grep tcp_wrappers defaults/tcp_wrappers boolean true
Vous pouvez maintenant vérifier si les services, tel telnet et ftp, gérés par SMF inetd sont configurés pour utiliser TCP Wrappers :
# inetadm -l telnet | grep tcp_wrappers default tcp_wrappers=TRUE # inetadm -l ftp | grep tcp_wrappers default tcp_wrappers=TRUE
Pour intégrer le serveur tftpd dans inetd/SMF, il convient d'abord de vérifier si le fichier /etc/services contient une ligne tftp :
# cat /etc/services | grep tftp tftp 69/udp
Ensuite, il est nécessaire de créer un fichier au format des lignes inetd classiques et de l'importer dans SMF grâce à la commande inetconv :
# echo "tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot" > /inetd.tftp # cat /inetd.tftp tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot # inetconv -i /inetd.tftp tftp -> /var/svc/manifest/network/tftp-udp6.xml Importation de tftp-udp6.xml ...Terminé
A l'examen du fichier manifest pour tftp, vous constaterez que le service est network/tftp/udp6 et que le service qui le contrôle est svc:/network/inetd:default :
# cat /var/svc/manifest/network/tftp-udp6.xml <?xml version='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <!-- Service manifest for the tftp service. Generated by inetconv(1M) from inetd.conf(4). --> <service_bundle type='manifest' name='inetconv:tftp'> <service name='network/tftp/udp6' type='service' version='1'> <create_default_instance enabled='true'/> <restarter> <service_fmri value='svc:/network/inetd:default' /> </restarter> <!-- Set a timeout of 0 to signify to inetd that we don't want to timeout this service, since the forked process is the one that does the service's work. This is the case for most/all legacy inetd services; for services written to take advantage of SMF capabilities, the start method should fork off a process to handle the request and return a success code. --> <exec_method type='method' name='inetd_start' exec='/usr/sbin/in.tftpd -s /tftpboot' timeout_seconds='0'> <method_context> <method_credential user='root' group='root' /> </method_context> </exec_method> <!-- Use inetd's built-in kill support to disable services. --> <exec_method type='method' name='inetd_disable' exec=':kill' timeout_seconds='0'> </exec_method> <!-- Use inetd's built-in process kill support to offline wait type services. --> <exec_method type='method' name='inetd_offline' exec=':kill_process' timeout_seconds='0'> </exec_method> <!-- This property group is used to record information about how this manifest was created. It is an implementation detail which should not be modified or deleted. --> <property_group name='inetconv' type='framework'> <propval name='converted' type='boolean' value='true' /> <propval name='version' type='integer' value='1' /> <propval name='source_line' type='astring' value= 'tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot' /> </property_group> <property_group name='inetd' type='framework'> <propval name='name' type='astring' value='tftp' /> <propval name='endpoint_type' type='astring' value='dgram' /> <propval name='proto' type='astring' value='udp6' /> <propval name='wait' type='boolean' value='true' /> <propval name='isrpc' type='boolean' value='false' /> </property_group> <stability value='External' /> <template> <common_name> <loctext xml:lang='C'> tftp </loctext> </common_name> </template> </service> </service_bundle>
Activez maintenant le service tftp au sein d'inetd grâce à la commande inetadm :
# inetadm -e svc:/network/tftp/udp6:default
et constatez ses propriétés :
# inetadm -l svc:/network/tftp/udp6;default SCOPE NAME=VALUE name="tftp" endpoint_type="dgram" proto="udp6" isrpc=FALSE wait=TRUE exec="/usr/sbin/in.tftpd -s /tftpboot" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=TRUE default connection_backlog=10 default: not found
Commandes de base
ifconfig
Pour afficher la configuration IP de la machine il faut saisir la commande suivante :
#ifconfig -a [Entrée]
Vous obtiendrez une fenêtre similaire à celle-ci :
# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2 inet 10.0.2.15 netmask ffffff00 broadcast 10.0.2.255 ether 8:0:27:79:12:5b
hostname
Pour afficher la configuration nom d'hôte de la machine, deux commandes peuvent être utilisées :
# hostname solaris.i2tch.loc # uname -a SunOS solaris.i2tch.loc 5.10 Generic_147148-26 i86pc i386 i86pc
ping
Pour tester l'accessibilité d'une machine, vous devez utiliser la commande ping :
# ping www.ittraining.center www.ittraining.center is alive
Pour rendre la commande verbose, utilisez l'option -s :
# ping -s www.ittraining.center PING www.ittraining.center: 56 data bytes 64 bytes from 217-160-0-225.elastic-ssl.ui-r.com (217.160.0.225): icmp_seq=0. time=28.7 ms 64 bytes from 217-160-0-225.elastic-ssl.ui-r.com (217.160.0.225): icmp_seq=1. time=43.1 ms 64 bytes from 217-160-0-225.elastic-ssl.ui-r.com (217.160.0.225): icmp_seq=2. time=35.2 ms 64 bytes from 217-160-0-225.elastic-ssl.ui-r.com (217.160.0.225): icmp_seq=3. time=41.7 ms 64 bytes from 217-160-0-225.elastic-ssl.ui-r.com (217.160.0.225): icmp_seq=4. time=38.5 ms ^C ----www.ittraining.center PING Statistics---- 5 packets transmitted, 5 packets received, 0% packet loss round-trip (ms) min/avg/max/stddev = 28.7/37.4/43.1/5.8
netstat -i
Pour visualiser les statistiques réseaux, vous disposez de la commande netstat :
# netstat -i Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue lo0 8232 loopback localhost 244 0 244 0 0 0 e1000g0 1500 solaris.i2tch.loc solaris 659 0 451 0 0 0
Connexion à Distance
Telnet
La commande telnet est utilisée pour établir une connexion à distance avec un serveur telnet. Le service telnet revient à une redirection des canaux standards d'entrée et de sortie. Notez que la connexion n'est pas sécurisée. Pour fermer la connexion, il faut saisir la commande exit. La commande telnet n'offre pas de services de transfert de fichiers. Pour cela, il convient d'utiliser la command ftp.
Sous Solaris, le serveur telnet est démarré par défaut :
# svcs telnet STATE STIME FMRI online 11:13:42 svc:/network/telnet:default
Vérifiez que votre serveur fonctionne en vous connectant à localhost :
# telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. login: user2 Password: Oracle Corporation SunOS 5.10 Generic Patch January 2005 $ pwd /export/home/user2 $ exit Connection to localhost closed by foreign host.
ssh
La commande ssh est le successeur et la remplaçante de la commande rlogin traitée ci-dessous. Il permet d'établir des connexions sécurisées avec une machine distante :
#ssh -l nom_de_compte numero_ip (nom_de_machine) [Entrée]
En saisissant cette commande, vous obtiendrez une fenêtre similaire à celle-ci :
# ssh -l user2 localhost L'authenticité de l'hôte 'localhost (127.0.0.1)' ne peut pas être démontrée. RSA l'empreinte numérique de la clé est d4:05:28:c8:35:37:1e:45:82:fb:ed:c3:80:05:cc:49. Voulez-vous vraiment continuer (oui/non) ? oui Avertissement : ajout permanent de 'localhost' (RSA) à la liste des hôtes connus. Mot de passe : Last login: Thu Mar 19 22:53:09 2009 from localhost Sun Microsystems Inc. SunOS 5.10 Generic January 2005 $ pwd /export/home/user2
Pour fermer la connexion, utilisez la commande exit :
$ exit Connexion à localhost fermée.
RSA, DSA
ssh peut utiliser une authentification par couple de clefs asymétriques ( clef privée/clef publique ) RSA ou DSA. Dans ce cas, le mot de passe de connexion n'est pas requis si une passphrase ( le mot de passe utilisé pour chiffrer la clef privée ) est vide. Pour mettre en place ce système il convient d'utiliser la commande ssh-keygen :
$ssh-keygen -t rsa [Entrée]
En saisissant cette commande, vous obtiendrez un résultat similaire à celle-ci :
# su user2 $ ssh-keygen -t rsa Génération de la paire de clés publique/privée rsa. Indiquez le fichier dans lequel vous souhaitez sauvegarder la clé (/export/home/user2/.ssh/id_rsa): Le répertoire '/export/home/user2/.ssh' a été créé. Entrez une phrase de passe (vide si pas de phrase de passe) : Entrez la même phrase de passe : Votre identification a été sauvegardée dans /export/home/user2/.ssh/id_rsa. Votre clé publique a été sauvegardée dans /export/home/user2/.ssh/id_rsa.pub. L'empreinte de la clé est : f3:4d:48:cd:95:4d:f4:b3:c0:e6:98:28:d1:95:05:75 user2@solaris.i2tch.loc
Lors de la question concernant la passphrase, notez qu'il faut entrer une passphrase vide.
Il convient ensuite de se connecter sur le serveur en utilisant ssh :
$ssh -l nom_de_compte numero_ip (nom_de_machine) [Entrée]
Par exemple :
$ ssh -l user2 localhost L'authenticité de l'hôte 'localhost (127.0.0.1)' ne peut pas être démontrée. RSA l'empreinte numérique de la clé est d4:05:28:c8:35:37:1e:45:82:fb:ed:c3:80:05:cc:49. Voulez-vous vraiment continuer (oui/non) ? oui Avertissement : ajout permanent de 'localhost' (RSA) à la liste des hôtes connus. Mot de passe : Last login: Thu Mar 19 22:54:41 2009 from localhost Sun Microsystems Inc. SunOS 5.10 Generic January 2005 $ pwd /export/home/user2 $ ls -la | grep .ssh drwx------ 2 user2 groupe2 512 mars 19 22:57 .ssh $ exit Connexion à localhost fermée.
Si le dossier distant .ssh n'existe pas dans le répertoire personnel de l'utilisateur connecté, il faut le créer avec des permissions de 700 :
[serveur]$mkdir .ssh [Entrée]
[serveur]$chmod 700 .ssh [Entrée]
scp
Ensuite, il convient de transférer le fichier local .ssh/id_rsa.pub de la machine cliente vers le serveur en le renommant en authorized_keys :
$ scp /export/home/compte/.ssh/id_rsa.pub compte@adresse_ip:/export/home/compte/.ssh/authorized_keys [Entrée]
Par exemple :
$ exit # su user2 $ scp /export/home/user2/.ssh/id_rsa.pub user2@localhost:/export/home/user2/.ssh/authorized_keys Mot de passe : id_rsa.pub 100% |*****************************| 237 00:00
Lors de la connexion suivante au serveur en tant qu'user1, l'authentification utilise le couple de clefs asymétrique et aucun mot de passe n'est requis :
$ exit # su user2 $ ssh localhost Last login: Thu Mar 19 23:01:15 2009 from localhost Sun Microsystems Inc. SunOS 5.10 Generic January 2005 $ $ exit Connexion à localhost fermée.
Pour une protection supplémentaire du fichier authorized_keys, modifiez les permissions sur ce fichier à 600.
Transfert de Fichiers
wget
Si nécessaire, pour installer wget, utilisez la commande pkgutil :
# /opt/csw/bin/pkgutil --install wget [Entrée]
La commande wget est utilisée pour récupérer un fichier via http ou ftp.
# /opt/csw/bin/wget ftp://ftp2.fenestros.com/fenestros/files/fichier_test [Entrée]
En saisissant cette commande, vous obtiendrez une fenêtre similaire à celle-ci :
# /opt/csw/bin/wget ftp://ftp2.fenestros.com/fenestros/files/fichier_test --2009-03-19 23:07:33-- ftp://ftp2.fenestros.com/fenestros/files/fichier_test => `fichier_test' Résolution de ftp2.fenestros.com... 213.186.33.14 Connexion vers ftp2.fenestros.com|213.186.33.14|:21...connecté. Ouverture de session en anonymous...Session établie! ==> SYST ... complété. ==> PWD ... complété. ==> TYPE I ... complété. ==> CWD /fenestros/files ... complété. ==> SIZE fichier_test ... 57 ==> PASV ... complété. ==> RETR fichier_test ... complété. Longueur: 57 100%[======================================>] 57 --.-K/s in 0s 2009-03-19 23:07:35 (181 KB/s) - « fichier_test » sauvegardé [57]
Tapez la commande et vérifiez que vous obtenez un résultat similaire à celui démontré ci-dessus.
ftp
La commande ftp est utilisée pour le transfert de fichiers:
#ftp numero_ip ou FQDN [Entrée]
En saisissant cette commande, vous obtiendrez un résultat similaire à celle-ci :
# ftp ftp.microsoft.com Connected to ftp.microsoft.com. 220 Microsoft FTP Service Name (ftp.microsoft.com:root): anonymous 331 Anonymous access allowed, send identity (e-mail name) as password. Password: 230-Welcome to FTP.MICROSOFT.COM. Also visit http://www.microsoft.com/downloads. 230 Anonymous user logged in. Remote system type is Windows_NT. ftp>
Une fois connecté, il convient d'utiliser la commande help pour afficher la liste des commandes disponibles :
ftp>help [Entrée]
En saisissant cette commande, vous obtiendrez un résultat similaire à celle-ci :
ftp> help Commands may be abbreviated. Commands are: ! cr mdir protect safe $ delete mechanism proxy send account debug mget put sendport append dir mkdir pwd site ascii disconnect mls quit status bell form mode quote struct binary get mput recv sunique bye glob nlist reget tcpwindow case hash nmap remotehelp tenex ccc help ntrans rename trace cd lcd open reset type cdup ls passive restart user clear macdef private rmdir verbose close mdelete prompt runique ?
Parmi les commandes listées, on peut remarquer les commandes :
ftp>pwd [Entrée]
ftp>ls [Entrée]
ftp>dir [Entrée]
En saisissant ces commandes, vous obtiendrez un résultat similaire à celle-ci :
ftp> pwd 257 "/" is current directory. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for file list. bussys deskapps developr KBHelp MISC MISC1 peropsys Products PSS ResKit Services Softlib 226 Transfer complete. 101 bytes received in 0,00041 seconds (238,08 Kbytes/s) ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. dr-xr-xr-x 1 owner group 0 Feb 1 2006 bussys dr-xr-xr-x 1 owner group 0 Feb 1 2006 deskapps dr-xr-xr-x 1 owner group 0 Feb 1 2006 developr dr-xr-xr-x 1 owner group 0 Feb 1 2006 KBHelp dr-xr-xr-x 1 owner group 0 Feb 1 2006 MISC dr-xr-xr-x 1 owner group 0 Feb 1 2006 MISC1 dr-xr-xr-x 1 owner group 0 Feb 1 2006 peropsys dr-xr-xr-x 1 owner group 0 Jul 18 2006 Products dr-xr-xr-x 1 owner group 0 Feb 1 2006 PSS dr-xr-xr-x 1 owner group 0 Feb 1 2006 ResKit dr-xr-xr-x 1 owner group 0 Feb 1 2006 Services dr-xr-xr-x 1 owner group 0 Feb 1 2006 Softlib 226 Transfer complete. 809 bytes received in 0,0017 seconds (474,66 Kbytes/s)
Une commande ftp très utile est :
ftp>!commande_local [Entrée]
Cette commande permet d'exécuter une commande sur la machine cliente. Dans notre cas, nous saisissons la commande suivante :
ftp>!pwd /Desktop
Pour transférer un fichier vers le serveur, il convient d'utiliser la commande put :
ftp>put nom_fichier_local nom_fichier_distant [Entrée]
Vous pouvez également transférer plusieurs fichiers à la fois grâce à la commande mput. Dans ce cas précis, il convient de saisir la commande suivante:
ftp>mput nom*.* [Entrée]
Notez l'utilisation du joker * dans la ligne de commande ftp. Vous remarquerez aussi que lors de chaque transfert, le serveur vous demande de le valider.
Dans le cas où on ne souhaite pas la demande de confirmation lors des transferts multiples, il convient de saisir la commande prompt :
ftp>prompt [Entrée]
Dans ce cas, aucune confirmation ne vous êtes demandée, y compris pour les fichiers déjà présents sur le serveur.
La navigation distante est obtenue en utilisant la commande cd :
ftp>cd nom_repertoire [Entrée]
Dans le cas de notre exemple, la commande est :
ftp>cd MISC [Entrée]
En saisissant cette commande, vous obtiendrez un résultat similaire à celui-ci :
ftp> cd MISC 250 CWD command successful.
Pour transférer un fichier du serveur, il convient d'utiliser la commande get :
ftp>get nom_fichier [Entrée]
Dans le cas de notre exemple, nous allons télécharger le fichier /MISC/INDEX.TXT :
ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. dr-xr-xr-x 1 owner group 0 Feb 1 2006 beckyk -r-xr-xr-x 1 owner group 15749 Apr 8 1994 CBCP.TXT dr-xr-xr-x 1 owner group 0 Feb 1 2006 csformat dr-xr-xr-x 1 owner group 0 Feb 1 2006 DAILYKB -r-xr-xr-x 1 owner group 710 Apr 12 1993 DISCLAIM.TXT dr-xr-xr-x 1 owner group 0 Feb 1 2006 FDC dr-xr-xr-x 1 owner group 0 Feb 1 2006 friKB dr-xr-xr-x 1 owner group 0 Feb 1 2006 FULLKB dr-xr-xr-x 1 owner group 0 Feb 1 2006 Homenet -r-xr-xr-x 1 owner group 97 Sep 28 1993 INDEX.TXT dr-xr-xr-x 1 owner group 0 Feb 1 2006 Jeffreyf dr-xr-xr-x 1 owner group 0 Feb 1 2006 KB dr-xr-xr-x 1 owner group 0 Feb 1 2006 KBSPV dr-xr-xr-x 1 owner group 0 Feb 1 2006 Markesh dr-xr-xr-x 1 owner group 0 Feb 1 2006 monKB -r-xr-xr-x 1 owner group 30638 Sep 28 1993 NBFCP.TXT -r-xr-xr-x 1 owner group 25423 Nov 16 1993 NBFCP2.TXT -r-xr-xr-x 1 owner group 24059 Nov 16 1993 NBFCP3.TXT -r-xr-xr-x 1 owner group 26294 Dec 21 1993 NBFCP4.TXT -r-xr-xr-x 1 owner group 29097 Feb 14 1994 NBFCP5.TXT dr-xr-xr-x 1 owner group 0 Feb 1 2006 Peach -r-xr-xr-x 1 owner group 8698 Dec 7 1998 PRODUCT.TBL -r-xr-xr-x 1 owner group 2107 Jul 2 2002 ReadMe1.txt dr-xr-xr-x 1 owner group 0 Feb 1 2006 satKB dr-xr-xr-x 1 owner group 0 Feb 1 2006 Store dr-xr-xr-x 1 owner group 0 Feb 1 2006 STORE1 dr-xr-xr-x 1 owner group 0 Feb 1 2006 sunKB dr-xr-xr-x 1 owner group 0 Feb 1 2006 test dr-xr-xr-x 1 owner group 0 Feb 1 2006 thuKB -r-xr-xr-x 1 owner group 6945 Sep 30 1993 TREE.COM dr-xr-xr-x 1 owner group 0 Feb 1 2006 tueKB dr-xr-xr-x 1 owner group 0 Feb 1 2006 wedKB 226 Transfer complete. 2174 bytes received in 0,0045 seconds (474,79 Kbytes/s) ftp> get INDEX.TXT 200 PORT command successful. 150 Opening ASCII mode data connection for INDEX.TXT(97 bytes). 226 Transfer complete. local: INDEX.TXT remote: INDEX.TXT 97 bytes received in 0,0012 seconds (76,04 Kbytes/s) ftp>
Vous pouvez également transférer plusieurs fichiers à la fois grâce à la commande mget ( voir la commande mput ci dessus ).
Pour supprimer un fichier sur le serveur, il convient d'utiliser la commande del :
ftp>del nom_fichier [Entrée]
Pour fermer la session, il convient d'utiliser la commande quit :
ftp> quit 421 Timeout (180 seconds): closing control connection.
Choisissez un serveur ftp public tel ftp.microsoft.com avec un login d'anonymous et votre adresse email en tant que mot de passe. Essayez d'utiliser toutes les commandes ftp en vérifiant que vous obtenez des résultats similaires à ceux démontrés ci-dessus.
scp
La commande scp est le successeur et la remplaçante de la commande rcp de la famille des commandes remote. Il permet de faire des transferts sécurisés à partir d'une machine distante :
#scp compte@numero_ip(nom_de_machine):/chemin_distant/fichier_distant /chemin_local/fichier_local [Entrée]
ou vers une machine distante :
#scp /chemin_local/fichier_local compte@numero_ip(nom_de_machine):/chemin_distant/fichier_distant [Entrée]
Routage
Routage statique
Pour afficher la table de routage de la machine, il convient d'utiliser la commande netstat :
#netstat -nr [Entrée]
En saisissant la commande vous obtiendrez une fenêtre similaire à celle-ci :
# netstat -nr Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- default 10.0.2.2 UG 1 14 e1000g0 10.0.2.0 10.0.2.15 U 1 4 e1000g0 224.0.0.0 10.0.2.15 U 1 0 e1000g0 127.0.0.1 127.0.0.1 UH 6 235 lo0
La table issue de la commande route indique les informations suivantes:
- La destination qui peut être un hôte ou un réseau et est identifiée par le champs Destination,
- La route à prendre identifiée par les champs Gateway et Interface. Dans le cas d'une valeur de default ceci spécifie une route directe. La valeur d'Interface spécifie la carte à utiliser,
- Le champ Flags qui peux prendre un ou plusieurs de svaleurs suivantes:
- U - Up - la route est active
- H - Host - la route conduit à un hôte
- G - Gateways - la route passe par une passerelle
- Le champ Ref indique le nombre de références à cette route. Ce champs est utilisé par le Noyau de Linux,
- Le champ Use indique le nombre de recherches associés à cette route,
La commande traceroute
La commande ping est à la base de la commande traceroute. Cette commande sert à découvrir la route empruntée pour accéder à un site donné :
#traceroute nom_de_machine [Entrée]
# traceroute www.fenestros.org traceroute to www.fenestros.org (195.8.78.1), 30 hops max, 40 byte packets 1 10.0.2.2 (10.0.2.2) 1.025 ms 2.038 ms 1.746 ms 2 192.168.1.1 (192.168.1.1) 3.134 ms 6.387 ms 12.965 ms 3 82.244.75.254 (82.244.75.254) 33.045 ms 35.319 ms 41.337 ms 4 * 213.228.20.254 (213.228.20.254) 55.607 ms 46.965 ms 5 lyon-6k-1-v804.intf.routers.proxad.net (212.27.50.102) 46.386 ms * 38.45 7 ms 6 strasbourg-6k-1-po102.intf.routers.proxad.net (212.27.59.42) 50.949 ms 59 .202 ms 50.651 ms 7 francfort-6k-1-po100.intf.routers.proxad.net (212.27.56.30) 53.488 ms * 57.344 ms 8 amsterdam-6k-1-po100.intf.routers.proxad.net (212.27.56.38) 60.723 ms 63.240 ms 61.370 ms 9 londres-6k-1-po100.intf.routers.proxad.net (212.27.56.41) 67.995 ms 76.876 ms 72.486 ms 10 g1-1-1-t40-br3.router.uk.clara.net (195.66.224.66) 80.107 ms 62.031 ms 78.224 ms 11 ten1-0-0-t40-cr2.router.uk.clara.net (195.8.86.141) 64.412 ms 72.746 ms 74.729 ms 12 ten0-0-0-tcl2-cr1.router.uk.clara.net (195.157.6.22) 215.223 ms 100.513 ms 100.312 ms 13 ten2-0-0-tcl2-cr2.router.uk.clara.net (195.157.6.42) 171.401 ms 97.843 ms 180.765 ms 14 ten0-0-0-gs-cr1.router.uk.clara.net (195.8.68.109) 86.816 ms 67.299 ms 74.779 ms 15 g0-1-gs-ar7.router.uk.clara.net (195.8.90.118) 67.486 ms 76.078 ms 69.944 ms 16 host-vh.amenworld.com (195.8.78.1) 70.264 ms 55.682 ms 75.126 ms
La commande route
La commande route permet de paramétrer le routage indirect. Par exemple :
#route add -net 10.2.0.0 netmask 255.255.0.0 10.3.0.1
ou bien
#route add default 10.1.2.250
La commande route permet aussi de se renseigner sur une route particulière :
# route get default route to: default destination: default mask: default gateway: 10.0.2.2 interface: e1000g0 flags: <UP,GATEWAY,DONE,STATIC> recvpipe sendpipe ssthresh rtt,ms rttvar,ms hopcount mtu expire 0 0 0 0 0 0 1500 0
Ce sont des EXEMPLES. Il ne faut pas taper les lignes de commandes !
Activer/désactiver le routage sur le serveur
Si le fichier /etc/defaultrouter est vide, le démon in.routed utilise RIP pour mettre à jour les tables de routage.
Pour désactiver le routage sur le serveur, il convient de créer le fichier /etc/notrouter.
Routage dynamique
Créez d'abord l'interface nic:1 avec une adresse IP de 192.168.1.1/24.
# echo "192.168.1.1" > /etc/hostname.e1000g0:1 # ifconfig e1000g0:1 plumb # ifconfig e1000g0:1 192.168.1.1 # ifconfig e1000g0:1 netmask 255.255.255.0 # ifconfig e1000g0:1 up # ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2 inet 10.0.2.15 netmask ffffff00 broadcast 10.0.2.255 ether 8:0:27:79:12:5b e1000g0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.1.1 netmask ffffff00 broadcast 192.168.1.255
RouteD
Le démon routed gère le protocole RIP (Routing Information Protocol). Le démon in.routed est désactivé par défaut :
# svcs route STATE STIME FMRI disabled 22:21:56 svc:/network/routing/route:default
Il faut donc démarré le service:
# svcadm enable route # svcs route STATE STIME FMRI online 23:17:58 svc:/network/routing/route:default
Les démons routed présents sur chaque passerelle vont construire la table de routage.
Gestion des Serveurs de Base
DNS
Le principe du DNS est basé sur l'équivalence entre un FQDN ( Fully Qualified Domain Name ) et une adresse IP. Les humains retiennent plus facilement des noms tels www.fenestros.org, tandis que les ordinateurs utilisent des chiffres.
Le DNS ( Domain Name Service ) est né peut après l'introduction des FQDN en 1981.
Lorque un ordinateur souhaite communiquer avec un autre par le biais de son nom, par exemple avec www.fenestros.org, il envoie une requête à un server DNS. Si le serveur DNS a connaissance de la correspondance entre le nom demandé et le numéro IP, il répond directement. Si ce n'est pas le cas, il démarre un processus de Recursive Lookup.
Ce processus tente d'identifier le serveur de domaine responsable pour le SLD ( Second Level Domain ) afin de lui passer la reqûete. Dans notre exemple, il tenterait d'identifier le serveur de domaine responsable de fenestros.org.
Si cette tentative échoue, le serveur DNS cherche le serveur de domaine pour le TLD ( Top Level Domain ) dans son cache afin de lui demander l'adresse du serveur responsable du SLD. Dans notre cas il tenterait trouver l'enregistrement pour le serveur de domaine responsable de .org
Si cette recherche échoue, le serveur s'adresse à un Root Name Server dont il y en a peu. Si le Root Name Server ne peut pas répondre, le serveur DNS renvoie une erreur à la machine ayant formulé la demande.
Le serveur DNS sert à faire la résolution de noms. Autrement dit de traduire une adresse Internet telle www.fenestros.org en numéro IP.
Le serveur DNS peut être configuré de trois façons différentes:
- Serveur DNS Primaire ou Maitre
- Ce type de serveur est dit maitre d'une ou de plusieurs zones et peut répondre aux requêtes des clients.
- Serveur DNS Secondaire
- Ce type de serveur est une copie d'un serveur DNS primaire et peut répondre aux requêtes des clients.
- Serveur DNS Cache
- Ce type de serveur ne peut pas répondre aux requêtes des clients. Le requêtes sont transférés à un autre serveur DNS. Les réponses sont mises en cache pour une utilisation ultérieure.
Le Serveur DNS
Préparation à l'Installation
Le serveur DNS nécessite à ce que la machine sur laquelle il est installé possède un nom FQDN et une adresse IP fixe. Il est également important à noter que le service de bind ne démarrera pas dans le cas où le fichier /etc/hosts comporte une anomalie. Deux étapes préparatoires sont donc nécessaires :
- Modification de l'adresse IP de la machine en adresse IP fixe
- Définition d'un nom FQDN (Fully Qualified Domain Name)
Afin d'étudier ce dernier cas, nous prenons en tant qu'exemple la machine suivante :
- FQDN - solaris.i2tch.loc
- Adresse IP - 10.0.2.15
Il est important de noter que la configuration du serveur DNS dépend du nom de votre machine. Dans le cas où vous changeriez ce nom, vous devez re-configurer votre serveur DNS en éditant les fichiers de configuration directement.
Installation
Les deux paquets nécessaires pour la mise en place d'un serveur DNS sont :
# pkginfo | grep -i SUNWbind system SUNWbind BIND DNS Name server and tools system SUNWbindr BIND Name server Manifest
Par défaut, le service svc:/network/dns/server:default est désactivé.
# svcs -a | grep dns disabled 9:34:53 svc:/network/dns/client:default disabled 9:35:09 svc:/network/dns/server:default
Les fichiers de configuration génériques
- /var/run/named.pid
- /var/named/named.ca
- /etc/named.conf
- /etc/rndc.key
/var/run/named.pid
Ce fichier contiendra le numéro du processus de named.
/var/named/named.ca
Ce fichier se trouve dans /var/named. Il est aussi appelé le fichier root.hints car il contient les adresses des serveurs DNS root de l'Internet.
Pour créer ce fichier, il convient d'utiliser la commande dig :
# mkdir /var/named # cd /var/named # /usr/sbin/dig @192.36.148.17 . ns > named.ca
En saisissant ces commandes, vous obtiendrez un résultat similaire à celui-ci :
; <<>> DiG 9.3.4-P1 <<>> @192.36.148.17 . ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 14 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS C.ROOT-SERVERS.NET. . 518400 IN NS D.ROOT-SERVERS.NET. . 518400 IN NS E.ROOT-SERVERS.NET. . 518400 IN NS F.ROOT-SERVERS.NET. . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS H.ROOT-SERVERS.NET. . 518400 IN NS I.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS M.ROOT-SERVERS.NET. . 518400 IN NS A.ROOT-SERVERS.NET. . 518400 IN NS B.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30 ;; Query time: 258 msec ;; SERVER: 192.36.148.17#53(192.36.148.17) ;; WHEN: Tue Mar 24 09:45:16 2009 ;; MSG SIZE rcvd: 500
/etc/named.conf
Le fichier de configuration principal du serveur DNS Bind est /etc/named.conf :
options { directory "/var/named"; pid-file "/var/named/named.pid"; allow-query { any; }; allow-transfer { any; }; forwarders { 10.0.2.3; }; }; zone "localhost" { type master; file "zone/db.localhost"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/db.127.0.0.1"; }; zone "." { type hint; file "named.ca"; }; zone "2.0.10.in-addr.arpa" { type master; file "zone/db.2.0.10.hosts"; forwarders { }; }; zone "i2tch.loc" { type master; file "zone/db.i2tch.loc.hosts"; forwarders { }; };
Vérifiez le fichier /etc/named.conf :
# /usr/sbin/named-checkconf #
Dans ce fichier on trouve des sections ayant la forme suivante :
section { variable1 valeur1; variable2 valeur2; };
Il existe différentes sections dont une des plus importantes est options. C'est dans cette section que nous définissons les options globales:
options {
D'abord nous définissons le chemin des fichiers des zones:
directory "/var/named";
Ensuite le fichier pid :
pid-file "/var/named/named.pid";
Afin de limiter les machines qui peuvent et qui ne peuvent pas utiliser notre DNS, nous utilisons la valeur “allow-query”. Dans notre cas les requêtes sont permises en provenance de tous les clients:
allow-query { any; };
Dans l'exemple qui suit nous autorisons toutes les machines de notre réseau, ainsi que la machine locale sauf la machine 192.168.0.5.
allow-query { 127/8; 192.168.0/24; !192.168.0.5; };
La valeur allow-transfer autorise les transferts de requête de zones pour tous les clients. La valeur allow-transfer peut également se trouver dans chaque section de zone ( voir ci-dessous ) :
allow-transfer { any;};
Ici nous définissons l'adresse du serveur DNS auquel seront envoyées des requêtes inconnues :
forwarders { 10.0.2.3; }; };
Les Sections de Zone
La Valeur Type
Maintenant, étudions les sections de zones. La valeur “type” peut prendre plusieurs valeurs:
- master
- Ce type définit le serveur DNS comme serveur maître ayant autorité sur la zone concernée.
- slave
- Ce type définit le serveur DNS comme serveur esclave pour la zone concernée. Ceci implique que la zone est une replication d'une zone maître. Un type de zone esclave contiendra aussi une directive masters indiquant les adresses IP des serveurs DNS maîtres.
- stub
- Ce type définit le serveur DNS comme serveur esclave pour la zone concernée mais uniquement pour les enregistrements de type NS.
- forward
- Ce type définit le serveur DNS comme serveur de transit pour la zone concernée. Ceci implique que toute requête est re-transmise vers un autre serveur.
- hint
- Ce type définit la zone concernée comme une zone racine. Ceci implique que lors du démarrage du serveur, cette zone est utilisée pour récupérer les adresses des serveurs DNS racine.
La valeur “notify” est utilisée pour indiquer si non ( no ) ou oui ( yes ) les autres serveurs DNS sont informés de changements dans la zone.
La Valeur File
La deuxième directive dans une section de zone comporte la valeur file. Il indique l'emplacement du fichier de zone.
Exemples de Sections de Zone
Chaque section de zone, à l'exception de la zone “.” est associée avec une section de zone inversée.
zone "." { type hint; file "named.ca"; };
La section de zone fait correspondre un nom avec une adresse IP tandis que la section de zone inversée fait l'inverse. La section inversée a un nom d'un syntaxe spécifique :
adresse_réseau_inversée.in-addr.arpa.
Par exemple :
- La zone suivante correspond à notre domaine, ici appelée “i2tch.loc”. Une valeur de {!*} interdirait tout transfert de requête de zone. Celui-ci fait correspondre le nom de la machine avec son adresse IP:
zone "i2tch.loc" { type master; file "zone/db.i2tch.loc.hosts"; forwarders { }; };
- La zone suivante est également celle de notre machine mais dans le sens inverse. A savoir le fichier zone/db.2.0.10.hosts fait correspondre notre adresse IP avec le nom de la machine.
zone "2.0.10.in-addr.arpa" { type master; file "zone/db.2.0.10.hosts"; forwarders { }; };
- Cette zone est la zone créée pour le réseau loopback :
zone "localhost" { type master; file "zone/db.localhost"; };
- La zone suivante est la zone créée pour le réseau loopback mais dans le sens inverse, à savoir le fichier zone/db.127.0.0.1 fait correspondre l'adresse IP 127.0.0.1 avec le nom localhost:
zone "0.0.127.in-addr.arpa" { type master; file "zone/db.127.0.0.1"; };
Les fichiers de configuration spécifiques
- /var/named/zone/db.127.0.0.1
- /var/named/zone/db.localhost
- /var/named/zone/db.2.0.10.hosts
- /var/named/zone/db.i2tch.loc.hosts
Chacun de ses fichiers a besoin d'être créé. Voici les propriétés:
-rw-r--r-- 1 root root 580 mars 24 09:49 /etc/named.conf
-rw-rw-r-- 1 root root 0 mars 24 09:56 db.127.0.0.1 -rw-rw-r-- 1 root root 0 mars 24 09:56 db.2.0.10.hosts -rw-rw-r-- 1 root root 0 mars 24 09:56 db.i2tch.loc.hosts -rw-rw-r-- 1 root root 0 mars 24 09:57 db.localhost
Les fichiers de zone
La fichiers de zone sont composées de lignes d'une forme:
nom | TTL | classe | type | donnée |
où
- nom
- Le nom DNS.
- TTL
- La durée de vie en cache de cet enregistrement.
- classe
- Le réseau de transport utilisé. Dans notre cas, le réseau est du TCP. La valeur est donc IN.
- type
- Le type d'enregistrement:
- SOA - Start of Authority - se trouve au début du fichier et contient des informations générales
- NS - Name Server - le nom du serveur de nom
- A - Address - indique une résoltuion de nom vers une adresse IP. Ne se trouve que dans les fichiers .hosts
- PTR - PoinTeR - indique une résoltuion d'une adresse IP vers un nom. Ne se trouve que dans les fichiers inversés.
- MX - Mail eXchange - le nom d'un serveur de mail.
- CNAME - Canonical Name - un alias d'une machine.
- HINFO - Hardware Info - fournit des informations sur le matériel de la machine
- donnée
- La donnée de la ressource:
- Une adresse IP pour un enregistrement de type A
- Un nom de machine pour un eregistrement de type PTR
db.i2tch.loc.hosts
Ce fichier se trouve dans /var/named/zone. Il est le fichier qui définit la correspondance du nom de la machine solaris.i2tch.loc avec son numéro IP, à savoir le 10.0.2.15. On définit dans ce fichier les machines qui doivent être appelées par leur nom :
$TTL 3D @ IN SOA solaris.i2tch.loc. root.solaris.i2tch.loc. ( 20090324 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D) ; Minimum TTL IN NS solaris.i2tch.loc. localhost A 127.0.0.1 dnsmaster IN CNAME solaris.i2tch.loc. solaris.i2tch.loc. IN A 10.0.2.15 ftp IN CNAME solaris.i2tch.loc. www IN CNAME solaris.i2tch.loc. mail IN CNAME solaris.i2tch.loc. news IN CNAME solaris.i2tch.loc.
Il est possible de vérifier ce fichier grâce à la commande /usr/sbin/named-checkzone :
# /usr/sbin/named-checkzone i2tch.loc db.i2tch.loc.hosts zone i2tch.loc/IN: loaded serial 20090324 OK
Explications détaillées
La première ligne de ce fichier commence par une ligne semblable à celle-ci:
$TTL 3D
Cette ligne indique aux autres serveurs DNS pendant combien de temps ils doivent garder en cache les enregistrements de cette zone. La durée peut s'exprimer en jours (D), en heures (H) ou en secondes (S).
La deuxième ligne définit une classe INternet, un SOA (Start Of Authority), le nom du serveur primaire et l'adresse de l'administrateur de mail :
@ IN SOA solaris.i2tch.loc. root.solaris.i2tch.loc. (
Le caractère @ corréspond au nom de la zone et est une abréviation pour le nom de la zone décrit par le fichier de la zone, soit dans ce cas db.i2tch.loc.hosts, et présent dans le fichier /etc/named.conf :
<box 95% blue | Extrait de la section de zone du fichier /etc/named.conf>
zone "i2tch.loc" { type master; file "zone/db.i2tch.loc.hosts"; forwarders { }; };
</box>
Notez le point à la fin de chaque nom de domaine. Notez bien le remplacement du caractère @ dans l'adresse email de l'administrateur de mail par le caractère “.”
Le numéro de série doit être modifié chaque fois que le fichier soit changé. Il faut noter que dans le cas de plusieurs changements dans la même journée il est necessaire d'incrémenter les deux derniers chiffres du numéro de série. Par exemple, dans le cas de deux changements en date du 02/12/2006, le premier fichier comportera une ligne Serial avec la valeur 2006120201 tandis que le deuxième changement comportera le numéro de série 2006120202:
20090324 ; Serial
La ligne suivante fixe le temps de rafraichissement, soit 8 heures:
8H ; Refresh
La ligne suivante fixe le temps entre de nouveaux essaies, soit 2 heures:
2H ; Retry
La ligne suivante fixe le temps d'expiration, soit 4 semaines:
4W ; Expire
La ligne suivante fix le temps minimum pour la valeur TTL, soit un jour:
1D) ; Minimum TTL
Cette ligne identifie notre serveur de noms :
IN NS solaris.i2tch.loc.
Dans le cas où notre serveur était également un serveur mail. Nous trouverions aussi une entrée du type SMTP (MX) :
IN MX 10 mail.i2tch.loc.
Ci-dessous on définit avec une entrée du type A, les machines que l'on souhaite appeler par leur nom, à savoir solaris.i2tch.loc et localhost :
localhost A 127.0.0.1 solaris.i2tch.loc. IN A 10.0.2.15
Ci-dessous on définit des Alias avec des entrées du type CNAME. Les alias servent à identifier une machine.
dnsmaster IN CNAME solaris.i2tch.loc.
Nous pourrions aussi trouver ici des entrées telles:
ftp IN CNAME solaris.i2tch.loc. www IN CNAME solaris.i2tch.loc. mail IN CNAME solaris.i2tch.loc. news IN CNAME solaris.i2tch.loc.
db.2.0.10.hosts
Ce fichier se trouve dans /var/named/zone. Il est le fichier qui définit la correspondance de l'adresse IP de la machine, à savoir le 10.0.2.15 avec le nom solaris.i2tch.loc. Le chiffre 15 dans la dernière ligne correspond au 10.0.2.15:
$TTL 3D @ IN SOA solaris.i2tch.loc. solaris.i2tch.loc. ( 20090324 ; Serial 10800 ; Refresh 3600 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS solaris.i2tch.loc. 15 IN PTR solaris.i2tch.loc.
Il est possible de vérifier ce fichier grâce à la commande /usr/sbin/named-checkzone :
# /usr/sbin/named-checkzone 2.0.10.in-addr.arpa db.2.0.10.hosts zone 2.0.10.in-addr.arpa/IN: loaded serial 20090324 OK
db.127.0.0.1
Ce fichier se trouve dans /var/named/zone. Il est le fichier qui définit la correspondance entre l'adresse IP 127.0.0.1 et le nom localhost :
$TTL 3D @ IN SOA i2tch.loc. root.i2tch.loc. ( 20090324 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS solaris.i2tch.loc. localhost IN A 127.0.0.1
Il est possible de vérifier ce fichier grâce à la commande /usr/sbin/named-checkzone :
# /usr/sbin/named-checkzone 0.0.127.in-addr.arpa db.127.0.0.1 zone 0.0.127.in-addr.arpa/IN: loaded serial 20090324 OK
db.localhost
Ce fichier se trouve dans /var/named/zone. Il est le fichier qui définit la correspondance du nom localhost avec l'adresse IP 127.0.0.1 :
$TTL 3D @ IN SOA solaris.i2tch.loc. root.solaris.i2tch.loc. ( 20090324 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D) ; Minimum TTL NS solaris.i2tch.loc. 1 IN PTR localhost.
Il est possible de vérifier ce fichier grâce à la commande /usr/sbin/named-checkzone :
# /usr/sbin/named-checkzone localhost db.localhost zone localhost/IN: loaded serial 20090324 OK
Il est maintenant possible de démarrer le serveur DNS :
# /usr/sbin/svcadm enable svc:/network/dns/server:default [Entrée]
Avant de pouvoir tester votre serveur DNS, vous avez besoin d'indiquer à votre machine qu'elle doit utiliser elle-même pour la résolution des noms.
Pour le faire, il convient d'éditer le fichier /etc/resolv.conf :
nameserver 10.0.2.15
Testez maintenant votre serveur DNS grâce à les commandes nslookup et dig:
# nslookup www.fenestros.org Server: 10.0.2.15 Address: 10.0.2.15#53 Non-authoritative answer: Name: www.fenestros.org Address: 195.8.78.1 # dig www.fenestros.org ; <<>> DiG 9.3.4-P1 <<>> www.fenestros.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1162 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.fenestros.org. IN A ;; ANSWER SECTION: www.fenestros.org. 86364 IN A 195.8.78.1 ;; AUTHORITY SECTION: fenestros.org. 86364 IN NS ns2.amen.fr. fenestros.org. 86364 IN NS ns1.amen.fr. ;; ADDITIONAL SECTION: ns1.amen.fr. 7146 IN A 62.193.206.141 ns2.amen.fr. 7146 IN A 212.43.229.70 ;; Query time: 5 msec ;; SERVER: 10.0.2.15#53(10.0.2.15) ;; WHEN: Tue Mar 24 11:32:54 2009 ;; MSG SIZE rcvd: 126
LAB #1
Créez les fichiers de configurations spécifiques et personnalisez-les à votre système. Testez ensuite votre serveur DNS.
Le Serveur d'Horloge
Introduction
Dans le cas d'un serveur de réseau, il est souvent important de maintenir l'heure de la machine à l'heure exacte pour des raisons de simplification de synchronisation avec des portables ou bien des systèmes de fichiers externes. Pour accomplir cette tâche, nous utilisons les services de serveurs de temps publics disponibles sur Internet sur lesquels nous synchronisons l'horloge de notre serveur. De même, les machines de notre réseau peuvent se synchroniser ensuite avec l'heure de notre serveur.
Le protocole utilisé s'appelle NTP ( Network Time Protocol ) qui utilise le port 123. Celui-ci, permet la synchronisation avec plusieurs serveurs publics. Les serveurs de temps de racine s'appellent des serveurs de Strate 1. En dessous se trouvent des serveurs de Strate 2, Strate 3 etc..
Installation
Sous Solaris, le serveur ntp est installé par défaut mais désactivé :
# svcs -a | grep ntp disabled 9:34:56 svc:/network/ntp:default
Activez ensuite le serveur ntp et vérifiez son fonctionnement :
# svcadm enable network/ntp # svcs -a | grep ntp maintenance 17:55:28 svc:/network/ntp:default
A ce stade on peut constater que le service est en maintenance. Consultez donc le service pour connaître la raison :
# svcs -l network/ntp fmri svc:/network/ntp:default nom Network Time Protocol (NTP) activé vrai état maintenance next_state none state_time 24 mars 2009 17:55:28 CET logfile /var/svc/log/network-ntp:default.log redémarreur svc:/system/svc/restarter:default contract_id dependency require_all/error file://localhost/usr/sbin/ntpq (online) file://localhost/usr/sbin/ntpdate (online) dependency require_any/error svc:/network/service (online)
Vous pouvez constater que le problème ne vient pas des dépendances. Consultez donc le fichier journal :
# cat /var/svc/log/network-ntp:default.log [ févr. 28 11:39:01 Disabled. ] [ févr. 28 11:39:01 Rereading configuration. ] [ mars 24 17:55:27 Enabled. ] [ mars 24 17:55:28 Executing start method ("/lib/svc/method/xntp") ] [ mars 24 17:55:28 Method "start" exited with status 96 ]
Ce fichier nous indique une mauvaise configuration (exited with status 96).
Le fichier ntp.conf
Le service ntp est configuré par le fichier /etc/inet/ntp.conf. Ce fichier n'existe pas sous Solaris. Il est donc necéssaire d'utiliser un fichier modèle fourni :
# cp /etc/inet/ntp.server /etc/inet/ntp.conf
Ouvrez ce fichier afin de consulter son contenu :
# ident "@(#)ntp.server 1.7 03/01/17 SMI" # # Copyright 1996-2003 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # /etc/inet/ntp.server # # An example file that could be copied over to /etc/inet/ntp.conf and # edited; it provides a configuration template for a server that # listens to an external hardware clock, synchronizes the local clock, # and announces itself on the NTP multicast net. # # This is the external clock device. The following devices are # recognized by xntpd 3-5.93e: # # XType Device RefID Description # ------------------------------------------------------- # 1 local LCL Undisciplined Local Clock # 2 trak GPS TRAK 8820 GPS Receiver # 3 pst WWV PSTI/Traconex WWV/WWVH Receiver # 4 wwvb WWVB Spectracom WWVB Receiver # 5 true TRUE TrueTime GPS/GOES Receivers # 6 irig IRIG IRIG Audio Decoder # 7 chu CHU Scratchbuilt CHU Receiver # 8 parse ---- Generic Reference Clock Driver # 9 mx4200 GPS Magnavox MX4200 GPS Receiver # 10 as2201 GPS Austron 2201A GPS Receiver # 11 arbiter GPS Arbiter 1088A/B GPS Receiver # 12 tpro IRIG KSI/Odetics TPRO/S IRIG Interface # 13 leitch ATOM Leitch CSD 5300 Master Clock Controller # 15 * * TrueTime GPS/TM-TMD Receiver # 17 datum DATM Datum Precision Time System # 18 acts ACTS NIST Automated Computer Time Service # 19 heath WWV Heath WWV/WWVH Receiver # 20 nmea GPS Generic NMEA GPS Receiver # 22 atom PPS PPS Clock Discipline # 23 ptb TPTB PTB Automated Computer Time Service # 24 usno USNO USNO Modem Time Service # 25 * * TrueTime generic receivers # 26 hpgps GPS Hewlett Packard 58503A GPS Receiver # 27 arc MSFa Arcron MSF Receiver # # * All TrueTime receivers are now supported by one driver, type 5. # Types 15 and 25 will be retained only for a limited time and may # be reassigned in future. # # Some of the devices benefit from "fudge" factors. See the xntpd # documentation. # Either a peer or server. Replace "XType" with a value from the # table above. server 127.127.XType.0 fudge 127.127.XType.0 stratum 0 broadcast 224.0.1.1 ttl 4 enable auth monitor driftfile /var/ntp/ntp.drift statsdir /var/ntp/ntpstats/ filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable keys /etc/inet/ntp.keys trustedkey 0 requestkey 0 controlkey 0
Les directives actives de ce fichier sont :
server 127.127.XType.0 fudge 127.127.XType.0 stratum 0 broadcast 224.0.1.1 ttl 4 enable auth monitor driftfile /var/ntp/ntp.drift statsdir /var/ntp/ntpstats/ filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable keys /etc/inet/ntp.keys trustedkey 0 requestkey 0 controlkey 0
Afin de mieux comprendre les détails de ce fichier, nous passons en revue ces directives.
Les directives suivantes stipulent que votre serveur doit se synchroniser sur l'horloge locale, une horloge fictive, utilisée lors de l'inaccessibilité des serveurs sur Internet :
server 127.127.XType.0 fudge 127.127.XType.0 stratum 0
La valeur de XType doit être prise du tableau fourni dans le fichier lui-même.
La directive suivante permet le broadcast au client :
broadcast 224.0.1.1 ttl 4
La fonction suivante active le monitoring et fait que le serveur se synchronise avec les clients seulement si ceux-ci se sont bien authentifiés en utilisant une clé d'authenfication valide.
enable auth monitor
La directive suivante identifie le fichier contenant la déviation moyenne:
driftfile /etc/ntp/drift
La directive suivante indique le répertoire qui stocke les clefs symétriques lors d'accès sécurisés éventuels :
keys /etc/inet/ntp.keys trustedkey 0 requestkey 0 controlkey 0
La directive suivante indique le répertoire de statistiques :
statsdir /var/log/ntpstats/
La directive suivante indique les statistiques voulues :
statistics loopstats peerstats clockstats
Les directives suivantes indiquent les statistiques à générer :
filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable
Ce fichier a besoin d'être modifié avant de démarrer le service ntp.
Ajoutez donc la section suivante afin de stipuler quel serveur est utilisé pour la synchronisation. La liste peut aussi comporter des FQDN :
server 192.43.244.18 server 192.203.230.41 server 128.115.14.97 server 128.252.19.1
Modifiez ensuite les lignes suivantes :
server 127.127.XType.1 fudge 127.127.XType.1 stratum 0
Que signifie la valeur XType.1 ?
Vous obtiendrez un fichier similaire à celui-ci :
# ident "@(#)ntp.server 1.7 03/01/17 SMI" # # Copyright 1996-2003 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # /etc/inet/ntp.server # # An example file that could be copied over to /etc/inet/ntp.conf and # edited; it provides a configuration template for a server that # listens to an external hardware clock, synchronizes the local clock, # and announces itself on the NTP multicast net. # # This is the external clock device. The following devices are # recognized by xntpd 3-5.93e: # # XType Device RefID Description # ------------------------------------------------------- # 1 local LCL Undisciplined Local Clock # 2 trak GPS TRAK 8820 GPS Receiver # 3 pst WWV PSTI/Traconex WWV/WWVH Receiver # 4 wwvb WWVB Spectracom WWVB Receiver # 5 true TRUE TrueTime GPS/GOES Receivers # 6 irig IRIG IRIG Audio Decoder # 7 chu CHU Scratchbuilt CHU Receiver # 8 parse ---- Generic Reference Clock Driver # 9 mx4200 GPS Magnavox MX4200 GPS Receiver # 10 as2201 GPS Austron 2201A GPS Receiver # 11 arbiter GPS Arbiter 1088A/B GPS Receiver # 12 tpro IRIG KSI/Odetics TPRO/S IRIG Interface # 13 leitch ATOM Leitch CSD 5300 Master Clock Controller # 15 * * TrueTime GPS/TM-TMD Receiver # 17 datum DATM Datum Precision Time System # 18 acts ACTS NIST Automated Computer Time Service # 19 heath WWV Heath WWV/WWVH Receiver # 20 nmea GPS Generic NMEA GPS Receiver # 22 atom PPS PPS Clock Discipline # 23 ptb TPTB PTB Automated Computer Time Service # 24 usno USNO USNO Modem Time Service # 25 * * TrueTime generic receivers # 26 hpgps GPS Hewlett Packard 58503A GPS Receiver # 27 arc MSFa Arcron MSF Receiver # # * All TrueTime receivers are now supported by one driver, type 5. # Types 15 and 25 will be retained only for a limited time and may # be reassigned in future. # # Some of the devices benefit from "fudge" factors. See the xntpd # documentation. server 192.43.244.18 server 192.203.230.41 server 128.115.14.97 server 128.252.19.1 # Either a peer or server. Replace "XType" with a value from the # table above. server 127.127.XType.1 fudge 127.127.XType.1 stratum 0 broadcast 224.0.1.1 ttl 4 enable auth monitor driftfile /var/ntp/ntp.drift statsdir /var/ntp/ntpstats/ filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable keys /etc/inet/ntp.keys trustedkey 0 requestkey 0 controlkey 0
Créez ensuite le fichier /var/ntp/ntp.drift :
# touch /var/ntp/ntp.drift [Entrée]
Démarrez ensuite le service :
# svcadm clear svc:/network/ntp:default # svcadm enable svc:/network/ntp:default # svcs -l svc:/network/ntp:default fmri svc:/network/ntp:default nom Network Time Protocol (NTP) activé vrai état online next_state none state_time 25 mars 2009 13:33:08 CET logfile /var/svc/log/network-ntp:default.log redémarreur svc:/system/svc/restarter:default contract_id 131 dependency require_all/error file://localhost/usr/sbin/ntpq (online) file://localhost/usr/sbin/ntpdate (online) dependency require_any/error svc:/network/service (online)
Dernièrement, constatez la présence des statistiques :
# cd /var/ntp/ntpstats # ls loopstats loopstats.20090325 peerstats peerstats.20090325
LAB #2
Modifiez votre fichier ntp.conf pour inclure les directives de statistiques. Testez votre serveur ntp.
Le Serveur FTP
Installation
Sous Solaris, un serveur ftp est installé par défault :
# svcs -a | grep ftp disabled 15:11:55 svc:/network/ftp:default
Le paquet proftpd est disponible dans les dépôts de Blastwave :
# /opt/csw/bin/pkgutil --install proftpd ... L'installation de <CSWproftpd> a abouti.
Configuration de base
Le fichier /opt/csw/etc/proftpd.conf n'existe pas. Copiez donc le fichier /opt/csw/etc/proftpd.conf.CSW en /opt/csw/etc/proftpd.conf :
# cp /opt/csw/etc/proftpd.conf.CSW /opt/csw/etc/proftpd.conf [Entrée]
Ouvrez le fichier /opt/csw/etc/proftpd.conf avec l'éditeur de votre choix. Vous obtiendrez un résultat similaire à celui-ci :
# This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "ProFTPD Default Installation" ServerType standalone DefaultServer on # Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). MaxInstances 30 # Set the user and group under which the server will run. User nobody Group nogroup # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. #DefaultRoot ~ # Normally, we want files to be overwriteable. AllowOverwrite on # Bar use of SITE CHMOD by default <Limit SITE_CHMOD> DenyAll </Limit> ...
Dans ce fichier, la directive suivante contient le nom de votre serveur FTP:
ServerName "ProFTPD Default Installation"
Ce nom sera visible au client ftp utilisé pour la connexion. Vous pouvez modifier ce nom.
La directive suivante définit que le processus proftpd ne dépendra pas de xinetd:
ServerType standalone
Cette directive est importante dans la mesure où les directives de sécurité détaillées ci-dessous ne fonctionne pas en mode inetd.
La directive suivante indique que vous utilisez le serveur par défaut:
DefaultServer on
En effet, proftpd est capable de gérer, tout comme apache, des serveurs virtuels.
La directive suivante stipule le port d'écoute du serveur ftp:
Port 21
Cette valeur peut être modifier, par exemple à 2121, si vous le souhaitez. Attention cependant à éviter un des ports assignés se trouvant dans la liste inclus dans le fichier /etc/services. Laissez le numéro de port en 21.
La directive suivante indique que les nouveaux fichiers seront créés avec un mask de 0644 et les nouveaux répertoires avec un mask de 0755:
Umask 022
La directive suivante stipule que chaque utilisateur ayant un compte système valide, sauf les membres du groupe adm, sera emprisonné dans son répertoire personnel:
#DefaultRoot ~
On parle de chrooter l'utilisateur.
La directive suivante ne fonctione qu'en mode standalone. Sa fonction est d'éviter les attaques DoS en limitant le nombre de connexions simultanées au serveur proftpd:
MaxInstances 30
Les directives suivantes indiquent l'utilisateur et le groupe utilisé par le serveur:
User nobody Group nogroup
La directive AllowOverwrite indique qu'un fichier déjà présent peut être écrasé lors du téléchargement vers le serveur d'un fichier du même nom :
AllowOverwrite on
La directive <Limit SITE_CHMOD> interdit le chmod sur toute l'arborescence présentée par le serveur :
# Bar use of SITE CHMOD by default <Limit SITE_CHMOD> DenyAll </Limit>
LAB #3
Editez le fichier /opt/csw/etc/proftpd.conf et otez le caractère # devant la directive DefaultRoot.
Ensuite ajoutez les deux directives suivantes :
AllowRetrieveRestart on
Cette directive offre la possibilité aux clients de continuer un téléchargement du server suite à une coupure de la connexion avec celui-ci sans avoir à tout recommencer.
AllowStoreRestart on
Cette directive offre la possibilité aux clients de continuer un téléchargement vers le server suite à une coupure de la connexion avec celui-ci sans avoir à tout recommencer.
Sauvegardez votre fichier.
Démarrez ensuite le serveur proftpd :
# /opt/csw/sbin/proftpd [Entrée]
Connectez-vous à votre serveur proftpd en tant qu'user2 :
# ftp localhost Connected to localhost. 220 ProFTPD 1.3.0 Server (ProFTPD Default Installation) [127.0.0.1] Name (localhost:root): user2 331 Password required for user2. Password: 230 User user2 logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list local.cshrc local.login local.profile 226 Transfer complete. 41 bytes received in 0,0012 seconds (32,05 Kbytes/s)
Lors de votre connexion en utilisant un compte de votre système, vous devez arriver dans le dossier home de cet utilisateur. Vous constaterez que la fonction chroot, activée par la directive **DefaultRoot~** incluse dans le fichier /opt/csw/etc/proftpd.conf, vous empêche de monter au répertoire supérieur.
Serveur proftpd Anonyme
Créer l'utilisateur ftp du groupe ftp
Créez un groupe ftp dont le GID est, par exemple, 3000 :
# groupadd -g 3000 ftp [Entrée]
Créez ensuite l'utilisateur ftp, dont l'UID est 3000 et le GID est 3000, pour les connexions anonymes :
# useradd -g 3000 -u 3000 -d /var/ftp -s /bin/false -c FTPUser ftp
Notez que le shell de l'utilisateur est /bin/false.
Editez ensuite le fichier /etc/shadow en indiquant qu'un mot de passe pour l'utilisateur ftp n'est pas possible :
ftp:NP:::::::
Dernièrement, créez le répertoire personnel de ftp et placez y les bonnes permissions :
# mkdir /var/ftp # chown ftp:ftp /var/ftp
Configuration
La configuration de votre serveur anonyme se trouve dans la suite du fichier /opt/csw/etc/proftpd.conf :
... # A basic anonymous configuration, no upload directories. If you do not # want anonymous users, simply delete this entire <Anonymous> section. <Anonymous ~ftp> User ftp Group ftp # We want clients to be able to login with "anonymous" as well as "ftp" UserAlias anonymous ftp # Limit the maximum number of anonymous logins MaxClients 10 # We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message # Limit WRITE everywhere in the anonymous chroot <Limit WRITE> DenyAll </Limit> </Anonymous>
Ajoutez maintenant des directives, avant la balise </Anonymous>, afin d'activer un répertoire vers lequel les visiteurs anonymes peuvent transférer des fichiers :
# Upload directory <Directory uploads/*> AllowOverwrite no <Limit READ> DenyAll </Limit> </Directory> </Anonymous>
Créez donc le répertoire uploads en y plaçant les bonnes permissions :
# mkdir /var/ftp/uploads # chown ftp:ftp /var/ftp/uploads
Vérifiez votre fichier d econfiguration grâce à l'option -t :
# /opt/csw/sbin/proftpd -t Checking syntax of configuration file Syntax check complete.
Redémarrez votre serveur proftpd.
Testez ensuite votre serveur ftp anonyme. Lors de votre connexion anonyme, vous pouvez utiliser l'utilisateur anonymous ou ftp. Entrez le mot de passe ftp :
# ftp localhost Connected to localhost. 220 ProFTPD 1.3.0 Server (ProFTPD Default Installation) [127.0.0.1] Name (localhost:root): ftp 331 Anonymous login ok, send your complete email address as your password. Password: 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.
Vérifiez que vous pouvez télécharger vers le dossier uploads.
Serveur proftpd et Hôtes Virtuels
Introduction
Le serveur proftpd peut gérer des hôtes virtuels. Les hôtes virtuels sont des couples adresse IP/site hébergés sur la même machine physique.
Configuration
Pour configurer des hôtes virtuels, il convient de créer un fichier de configuration à part, appelé proftpd-vhosts.conf:
# touch /opt/csw/etc/proftpd-vhosts.conf [Entrée]
Modifiez ensuite les permissions sur ce fichier:
# chmod 600 /opt/csw/etc/proftpd-vhosts.conf [Entrée]
Ensuite il faut ajouter une ligne au fichier /opt/csw/etc/proftpd.conf pour inclure les directives de proftpd-vhosts.conf:
Include /opt/csw/etc/proftpd-vhosts.conf
Le fichier proftpd-vhosts.conf doit contenir des directives VirtualHost:
<VirtualHost x.x.x.x> ... </VirtualHost>
où x.x.x.x représente un numéro IP.
Hôte virtuel par adresse IP
Vous allez maintenant procéder à la création d'un site anonyme sur un hôte virtuel par adresse IP. Normalement, votre serveur serait muni de deux cartes réseaux permettant ainsi d'attribuer un site ou hôte virtuel par numéro IP. Cependant, dans le cas suivant vous allez tout simplement affecter deux numéros IP à la même carte afin de procéder aux tests. Pour faire ceci, vous devez associer une deuxième adresse IP à votre carte réseau e1000g0.
Saisissez donc les commandes suivantes dans une fenêtre de console en tant que root :
# echo "192.168.1.1" > /etc/hostname.e1000g0:1 # ifconfig e1000g0:1 plumb # ifconfig e1000g0:1 192.168.1.1 # ifconfig e1000g0:1 netmask 255.255.255.0 # ifconfig e1000g0:1 up # ifconfig -a
Vous devez obtenir un résultat similaire à celui-ci :
# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2 inet 10.0.2.15 netmask ffffff00 broadcast 10.0.2.255 ether 8:0:27:79:12:5b e1000g0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.1.1 netmask ffffff00 broadcast 192.168.1.255
Créez maintenant le répertoire pour votre site2 :
# mkdir -p /ftp/site2 [Entrée]
Créez un fichier de test:
# touch /ftp/site2/site2.txt [Entrée]
Editez maintenant le fichier /opt/csw/etc/proftpd-vhosts.conf:
<VirtualHost 192.168.1.1> ServerName "Hote Virtuel sur 192.168.1.1" DefaultRoot /ftp/site2 MaxClients 10 <Anonymous /ftp/site2> User ftp Group ftp UserAlias anonymous ftp RequireValidShell off DisplayLogin welcome.msg DisplayFirstChdir .message <Limit LOGIN> AllowAll </Limit> </Anonymous> </VirtualHost>
Redémarrez le serveur proftpd.
Testez votre serveur ftp :
# ftp 192.168.1.1 Connected to 192.168.1.1. 220 ProFTPD 1.3.0 Server (Hote Virtuel sur 192.168.1.99) [192.168.1.1] Name (192.168.1.1:root): ftp 331 Anonymous login ok, send your complete email address as your password. Password: 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list site2.txt 226 Transfer complete. 11 bytes received in 0,00049 seconds (21,73 Kbytes/s)
Hôte virtuel par port
Proftpd gère aussi les hôtes virtuels par port. Cette capacité est possible grâce à la directive port.
Afin de tester ceci, ajoutez la ligne suivante au fichier /opt/csw/etc/proftpd-vhosts.conf:
Port 2121
Votre fichier /opt/csw/etc/proftpd-vhosts.conf devient donc:
<VirtualHost 192.168.1.1> Port 2121 ServerName "Hote Virtuel sur 192.168.1.1" DefaultRoot /ftp/site2 MaxClients 10 <Anonymous /ftp/site2> User ftp Group ftp UserAlias anonymous ftp RequireValidShell off DisplayLogin welcome.msg DisplayFirstChdir .message <Limit LOGIN> AllowAll </Limit> </Anonymous>
Créez un fichier de test:
#touch /ftp/site2/port2121.txt [Entrée]
Redémarrez le serveur proftpd.
Essayez maintenant de vous connecter au hôte virtuel 192.168.1.1 sur le port 21:
# ftp 192.168.1.1 Connected to 192.168.1.1. 220 ProFTPD 1.3.0 Server (ProFTPD Default Installation) [192.168.1.1] Name (192.168.1.1:root): ftp 331 Anonymous login ok, send your complete email address as your password. Password: 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list uploads 226 Transfer complete. 9 bytes received in 0,0013 seconds (6,55 Kbytes/s)
Vous constaterez que le serveur vous retourne le contenu du site par défaut, à savoir le répertoire /var/ftp.
Essayez maintenant de vous connecter au hôte virtuel 192.168.1.99 sur le port 2121:
# ftp 192.168.1.1 2121 Connected to 192.168.1.1. 220 ProFTPD 1.3.0 Server (Hote Virtuel sur 192.168.1.1) [192.168.1.1] Name (192.168.1.1:root): ftp 331 Anonymous login ok, send your complete email address as your password. Password: 230 Anonymous access granted, restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list site2.txt port2121.txt 226 Transfer complete. 25 bytes received in 0,0015 seconds (16,54 Kbytes/s)
Vous constaterez que le serveur vous retourne le contenu de l'hôte virtuel, à savoir le répertoire /ftp/site2.
Importer proftpd dans SMF
Il est nécessaire de créer un fichier au format des lignes inetd classiques et de l'importer dans SMF grâce à la commande inetconv :
# echo "ftp stream tcp nowait root /opt/csw/sbin/in.proftpd in.proftpd" > /inetd.proftpd # cat /inetd.proftpd ftp stream tcp nowait root /opt/csw/sbin/in.proftpd in.proftpd # inetconv -i /inetd.proftpd ftp -> /var/svc/manifest/network/ftp-tcp.xml Importation de ftp-tcp.xml ...Terminé
A l'examen du fichier manifest pour proftp, vous constaterez que le service est network/ftp/tcp et que le service qui le contrôle est svc:/network/inetd:default :
# cat /var/svc/manifest/network/ftp-tcp.xml <?xml version='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <!-- Service manifest for the ftp service. Generated by inetconv(1M) from inetd.conf(4). --> <service_bundle type='manifest' name='inetconv:ftp'> <service name='network/ftp/tcp' type='service' version='1'> <create_default_instance enabled='true'/> <restarter> <service_fmri value='svc:/network/inetd:default' /> </restarter> <!-- Set a timeout of 0 to signify to inetd that we don't want to timeout this service, since the forked process is the one that does the service's work. This is the case for most/all legacy inetd services; for services written to take advantage of SMF capabilities, the start method should fork off a process to handle the request and return a success code. --> <exec_method type='method' name='inetd_start' exec='/opt/csw/sbin/in.proftpd' timeout_seconds='0'> <method_context> <method_credential user='root' group='root' /> </method_context> </exec_method> <!-- Use inetd's built-in kill support to disable services. --> <exec_method type='method' name='inetd_disable' exec=':kill' timeout_seconds='0'> </exec_method> <!-- This property group is used to record information about how this manifest was created. It is an implementation detail which should not be modified or deleted. --> <property_group name='inetconv' type='framework'> <propval name='converted' type='boolean' value='true' /> <propval name='version' type='integer' value='1' /> <propval name='source_line' type='astring' value= 'ftp stream tcp nowait root /opt/csw/sbin/in.proftpd in.proftpd' /> </property_group> <property_group name='inetd' type='framework'> <propval name='name' type='astring' value='ftp' /> <propval name='endpoint_type' type='astring' value='stream' /> <propval name='proto' type='astring' value='tcp' /> <propval name='wait' type='boolean' value='false' /> <propval name='isrpc' type='boolean' value='false' /> </property_group> <stability value='External' /> <template> <common_name> <loctext xml:lang='C'> ftp </loctext> </common_name> </template> </service> </service_bundle>
Activez maintenant le service proftp au sein d'inetd grâce à la commande inetadm :
# inetadm -e svc:network/ftp/tcp:default
et constatez ses propriétés :
# inetadm -l svc:network/ftp/tcp:default SCOPE NAME=VALUE name="ftp" endpoint_type="stream" proto="tcp" isrpc=FALSE wait=FALSE exec="/opt/csw/sbin/in.proftpd" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=TRUE default connection_backlog=10
Réamorcez votre machine virtuel.
LAB #4
Configurez votre serveur ftp anonyme et vos serveurs virtuels.
Le Serveur DHCP
Introduction
Un serveur DHCP (Dynamic Host Configuration Protocol) est un ordinateur exécutant un logiciel serveur DHCP. L’avantage de la présence d’un serveur DHCP sur le réseau local est que celui-ci permet de spécifier à un niveau central les paramètres TCP/IP.
Installation
Sous Solaris le serveur DHCP est installé par défaut mais il n'est pas activé :
# svcs -a | grep dhcp disabled 20:29:49 svc:/network/dhcp-server:default
Il convient donc de l'activer grâce à la commande svcadm :
# svcadm enable svc:/network/dhcp-server:default # svcs -a | grep dhcp offline 12:18:43 svc:/network/dhcp-server:default
Notez que le statut du service passe de disabled à offline. Commençons par cannaître la raison de ce statut :
# svcs -l svc:/network/dhcp-server:default fmri svc:/network/dhcp-server:default nom DHCP server activé vrai état offline next_state none state_time 26 mars 2009 12:18:43 CET redémarreur svc:/system/svc/restarter:default dependency require_all/refresh svc:/milestone/multi-user (online) dependency require_all/restart file:///etc/inet/dhcpsvc.conf (absent)
La sortie nous informe que la raison du statut offline est la non-présence du fichier de configuration /etc/inet/dhcpsvc.conf.
LAB #5
La procédure de configuration du serveur DHCP est démontrée ci-dessous. Expliquez chaque commande ainsi que sa raison d'être.
# /usr/sbin/dhcpconfig -D -r SUNWfiles -p /var/dhcp Le fichier de configuration DHCP a été créé. dhcptab a été créé. La macro "Locale" a été ajoutée à dhcptab. La macro serveur a été ajoutée à dhcptab - solaris. Serveur DHCP démarré.
# cat /etc/inet/dhcpsvc.conf DAEMON_ENABLED=TRUE RESOURCE=SUNWfiles RUN_MODE=server PATH=/var/dhcp CONVER=1
INTERFACES=e1000g0
# /usr/sbin/dhcpconfig -N 10.0.2.0 -t 10.0.2.2 La macro réseau a été ajoutée à dhcptab - 10.0.2.0. La table réseau a été créée.
# pntadm -L 10.0.2.0
# ls /var/dhcp | grep 10 SUNWfiles1_10_0_2_0 # cat /var/dhcp/SUNWfiles1_10_0_2_0 # SUNWfiles1_10_0_2_0 # # Do NOT edit this file by hand -- use pntadm(1M) or dhcpmgr(1M) instead # #
# dhtadm -P Nom Type Valeur ================================================== 10.0.2.0 Macro :Subnet=255.255.255.0:Router=10.0.2.2:Broadcst=10.0.2.255: solaris Macro :Include=Locale:Timeserv=10.0.2.15:LeaseTim=86400:LeaseNeg:DNSdmain="i2tch.loc":DNSserv=10.0.2.3: Locale Macro :UTCoffst=3600:
# pntadm -A 10.0.2.50 -m solaris 10.0.2.0 # pntadm -P 10.0.2.50 ID Client Indicateurs IP du client IP du serveur Expiration du bail Macro Commentaire 00 00 10.0.2.50 10.0.2.15 Zéro solaris
# cat /var/dhcp/SUNWfiles1_10_0_2_0 # SUNWfiles1_10_0_2_0 # # Do NOT edit this file by hand -- use pntadm(1M) or dhcpmgr(1M) instead # 10.0.2.50|00|00|10.0.2.15|0|4338936765994762241|solaris|
# pntadm -A 10.0.2.51 -m solaris 10.0.2.0 # pntadm -A 10.0.2.52 -m solaris 10.0.2.0 # pntadm -A 10.0.2.53 -m solaris 10.0.2.0 # pntadm -A 10.0.2.54 -m solaris 10.0.2.0 # pntadm -A 10.0.2.55 -m solaris 10.0.2.0 # pntadm -A 10.0.2.56 -m solaris 10.0.2.0 # pntadm -A 10.0.2.57 -m solaris 10.0.2.0 # pntadm -A 10.0.2.58 -m solaris 10.0.2.0 # pntadm -A 10.0.2.59 -m solaris 10.0.2.0
# cat /var/dhcp/SUNWfiles1_10_0_2_0 # SUNWfiles1_10_0_2_0 # # Do NOT edit this file by hand -- use pntadm(1M) or dhcpmgr(1M) instead # 10.0.2.50|00|00|10.0.2.15|0|4338936765994762241|solaris| 10.0.2.51|00|00|10.0.2.15|0|8997066155579408385|solaris| 10.0.2.52|00|00|10.0.2.15|0|15856329863041384449|solaris| 10.0.2.53|00|00|10.0.2.15|0|8651977834132144129|solaris| 10.0.2.54|00|00|10.0.2.15|0|5386868104288534529|solaris| 10.0.2.55|00|00|10.0.2.15|0|2835860390359859201|solaris| 10.0.2.56|00|00|10.0.2.15|0|2934376632208588801|solaris| 10.0.2.57|00|00|10.0.2.15|0|8219632269904576513|solaris| 10.0.2.58|00|00|10.0.2.15|0|12797259816149975041|solaris| 10.0.2.59|00|00|10.0.2.15|0|6448873191417839617|solaris|
LAB #6
Testez votre serveur DHCP afin de vous assurer que ce dernier soit bien configuré.
Références
<html> <center> Copyright © 2011-2018 I2TCH LIMITED.<br><br> </center> </html>