Ceci est une ancienne révision du document !


Version : 2020.01

Dernière mise-à-jour : 2020/01/30 03:36

SO215 - Gestion des Serveurs de Base

LAB #1 - Installation et Configuration du Serveur DNS bind

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.ittraining.center, tandis que les ordinateurs utilisent des chiffres.

Le DNS ( Domain Name Service ) est né peu 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.ittraining.center, 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 ittraining.center.

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.ittraining.center 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 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

Important - 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        3:56:19 svc:/network/dns/client:default
disabled        3:56:19 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
# cat named.ca

; <<>> DiG 9.6-ESV-R8 <<>> @192.36.148.17 . ns
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46290
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      d.root-servers.net.
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      l.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      m.root-servers.net.
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      e.root-servers.net.
.                       518400  IN      NS      f.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       199.9.14.201
b.root-servers.net.     3600000 IN      AAAA    2001:500:200::b
c.root-servers.net.     3600000 IN      A       192.33.4.12
c.root-servers.net.     3600000 IN      AAAA    2001:500:2::c
d.root-servers.net.     3600000 IN      A       199.7.91.13
d.root-servers.net.     3600000 IN      AAAA    2001:500:2d::d
e.root-servers.net.     3600000 IN      A       192.203.230.10
e.root-servers.net.     3600000 IN      AAAA    2001:500:a8::e
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

;; Query time: 111 msec
;; SERVER: 192.36.148.17#53(192.36.148.17)
;; WHEN: Fri Jan 17 03:58:54 2020
;; MSG SIZE  rcvd: 508

/etc/named.conf

Le fichier de configuration principal du serveur DNS Bind est /etc/named.conf :

# vi /etc/named.conf
# cat /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 sauf la machine 10.0.2.5, ainsi que la machine locale :

     allow-query {
          127/8;
          10.0.2/24;
          !10.0.2.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;};

Dernièrement, nous définissons l'adresse du serveur DNS auquel seront envoyées des requêtes inconnues :

  forwarders { 10.0.2.3; }; 
};

La valeur “type” dans une section de zone 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 deuxième directive dans une section de zone comporte la valeur file. Il indique l'emplacement du fichier 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. 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. 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 des zones

  • /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

Important - Chacun de ses fichiers a besoin d'être créé.

Les fichiers de zone sont composées de lignes d'une forme:

nom TTL classe type donnée

  • 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

Créez le répertoire /var/named/zone :

# mkdir /var/named/zone
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 :

# vi /var/named/zone/db.i2tch.loc.hosts
# cat /var/named/zone/db.i2tch.loc.hosts
$TTL 3D
@       IN      SOA     solaris.i2tch.loc. root.solaris.i2tch.loc. (
               20200117       ; 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.

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 :

zone "i2tch.loc" { 
      type master; 
      file "zone/db.i2tch.loc.hosts"; 
      forwarders { };
};

Important - 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/2019, le premier fichier comportera une ligne Serial avec la valeur 2019120201 tandis que le deuxième changement comportera le numéro de série 2019120202:

       20200117       ; 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.
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 :

# cd /var/named/zone
# /usr/sbin/named-checkzone i2tch.loc db.i2tch.loc.hosts
zone i2tch.loc/IN: loaded serial 20200117
OK
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:

# vi db.2.0.10.hosts
# cat db.2.0.10.hosts
$TTL 3D
@       IN      SOA     solaris.i2tch.loc.        solaris.i2tch.loc. (
                20200117 ; 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 20200117
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 :

# vi db.127.0.0.1
# cat db.127.0.0.1
$TTL 3D
@               IN      SOA     i2tch.loc. root.i2tch.loc. (
                20200117 ; Serial
                28800   ; Refresh
                7200    ; Retry
                604800  ; Expire
                86400)  ; Minimum TTL
                NS      solaris.i2tch.loc.
localhost      IN       A     127.0.0.1

Vérifier la syntaxe de ce fichier :

# /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 20200117
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 :

# vi db.localhost
# cat db.localhost
$TTL 3D
@       IN      SOA     solaris.i2tch.loc. root.solaris.i2tch.loc. (
         20200117  ; Serial
         8H  ; Refresh
         2H  ; Retry
         4W  ; Expire
         1D) ; Minimum TTL
         NS  solaris.i2tch.loc.
1        IN PTR   localhost.

Vérifier la syntaxe de ce fichier :

# /usr/sbin/named-checkzone localhost db.localhost
zone localhost/IN: loaded serial 20200117
OK

Il est maintenant possible de démarrer le serveur DNS :

<coe> # /usr/sbin/svcadm enable svc:/network/dns/server:default </code>

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 :

# vi /etc/resolv.conf
# cat /etc/resolv.conf
nameserver 10.0.2.15
nameserver 10.0.2.3

Testez maintenant votre serveur DNS grâce à les commandes nslookup et dig:

# nslookup www.ittraining.center
Server:         10.0.2.15
Address:        10.0.2.15#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: 19555
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 11

;; QUESTION SECTION:
;www.ittraining.center.         IN      A

;; ANSWER SECTION:
www.ittraining.center.  3587    IN      A       217.160.0.225

;; AUTHORITY SECTION:
.                       7153    IN      NS      m.root-servers.net.
.                       7153    IN      NS      a.root-servers.net.
.                       7153    IN      NS      e.root-servers.net.
.                       7153    IN      NS      i.root-servers.net.
.                       7153    IN      NS      j.root-servers.net.
.                       7153    IN      NS      f.root-servers.net.
.                       7153    IN      NS      k.root-servers.net.
.                       7153    IN      NS      b.root-servers.net.
.                       7153    IN      NS      g.root-servers.net.
.                       7153    IN      NS      d.root-servers.net.
.                       7153    IN      NS      h.root-servers.net.
.                       7153    IN      NS      l.root-servers.net.
.                       7153    IN      NS      c.root-servers.net.

;; ADDITIONAL SECTION:
l.root-servers.net.     604754  IN      A       199.7.83.42
l.root-servers.net.     604754  IN      AAAA    2001:500:3::42
m.root-servers.net.     604754  IN      A       202.12.27.33
m.root-servers.net.     604754  IN      AAAA    2001:dc3::35
k.root-servers.net.     604754  IN      A       193.0.14.129
k.root-servers.net.     604754  IN      AAAA    2001:7fd::1
h.root-servers.net.     604754  IN      A       128.63.2.53
h.root-servers.net.     604754  IN      AAAA    2001:500:1::803f:235
i.root-servers.net.     604754  IN      A       192.36.148.17
i.root-servers.net.     604754  IN      AAAA    2001:7fe::53
j.root-servers.net.     604754  IN      A       192.58.128.30

;; Query time: 0 msec
;; SERVER: 10.0.2.15#53(10.0.2.15)
;; WHEN: Fri Jan 17 11:12:56 2020
;; MSG SIZE  rcvd: 502

LAB #2 - Installation et Configuration du 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..

Pour connaître le fuseau d'horaire local, utilisez la commande date :

# date
Fri Jan 17 11:23:14 CET 2020

Important - Vous pouvez consulter la liste des codes des zones à l'adresse http://www.timeanddate.com/library/abbreviations/timezones/.

Vous pouvez modifier le fuseau d'horaire à l'aide de la commande tzselect :

# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the POSIX TZ format.
#? 

Installation

Sous Solaris, le serveur ntp est installé par défaut mais désactivé :

# svcs -a | grep ntp
disabled        3:56:19 svc:/network/ntp:default
disabled        3:56:20 svc:/network/ntp4:default

Activez ensuite le serveur ntp et vérifiez son fonctionnement :

# svcadm enable network/ntp
# svcadm enable network/ntp4
# svcs -a | grep ntp
maintenance    11:24:51 svc:/network/ntp:default
maintenance    11:25:17 svc:/network/ntp4:default

Important - Ces services sont respectivement NFSv3 et NFSv4. Les services sont mutuellement exclusifs.

A ce stade on peut constater que les services sont en maintenance. Consultez donc chaque service pour connaître la raison :

# svcs -l network/ntp
fmri         svc:/network/ntp:default
name         Network Time Protocol (NTP)
enabled      true
state        maintenance
next_state   none
state_time   Fri Jan 17 11:24:51 2020
logfile      /var/svc/log/network-ntp:default.log
restarter    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)
dependency   optional_all/error svc:/milestone/name-services (online)
dependency   require_all/error svc:/system/filesystem/minimal (online)
# svcs -l network/ntp4
fmri         svc:/network/ntp4:default
name         Network Time Protocol (NTP) Version 4
enabled      true
state        maintenance
next_state   none
state_time   Fri Jan 17 11:25:17 2020
logfile      /var/svc/log/network-ntp4:default.log
restarter    svc:/system/svc/restarter:default
contract_id  
dependency   require_any/error svc:/network/service (online)
dependency   exclude_all/none svc:/network/ntp (maintenance)

Vous pouvez constater que le problème du service /network/ntp ne vient pas des dépendances. Consultez donc les fichiers journaux :

# cat /var/svc/log/network-ntp:default.log
[ Nov 29 13:26:33 Disabled. ]
[ Nov 29 13:26:33 Rereading configuration. ]
[ Jan 17 11:24:51 Enabled. ]
[ Jan 17 11:24:51 Executing start method ("/lib/svc/method/xntp") ]
[ Jan 17 11:24:51 Method "start" exited with status 96 ]
# cat /var/svc/log/network-ntp4:default.log       
[ Nov 29 13:26:33 Disabled. ]
[ Nov 29 13:26:33 Rereading configuration. ]
[ Jan 17 11:25:17 Enabled. ]
[ Jan 17 11:25:17 Executing start method ("/lib/svc/method/ntp start") ]
Error: Configuration file '/etc/inet/ntp.conf' not found.   See ntpd(1M).
[ Jan 17 11:25:17 Method "start" exited with status 96 ]

Important - La sortie nous indique une mauvaise configuration (exited with status 96) du au fait que le fichier /etc/inet/ntp.conf n'a pas été trouvé.

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 :

# cat /etc/inet/ntp.conf
# 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 :

# egrep -v '^(#|$)'  /etc/inet/ntp.conf > /tmp/ntp.conf
# cat /tmp/ntp.conf
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 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

Vous obtiendrez un fichier similaire à celui-ci :

# vi /tmp/ntp.conf
# cat /tmp/ntp.conf
server 192.43.244.18
server 192.203.230.41
server 128.115.14.97
server 128.252.19.1
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

Mettez en place le fichier /etc/inet/ntp.conf :

# cp /etc/inet/ntp.conf /Documents
# cp /tmp/ntp.conf /etc/inet/

Créez ensuite le fichier /var/ntp/ntp.drift :

# touch /var/ntp/ntp.drift

Démarrez ensuite le service network/ntp4 :

# svcadm clear svc:/network/ntp4:default
# svcadm enable svc:/network/ntp4:default

Constatez l'état du service :

# svcs -a | grep ntp
disabled       11:57:03 svc:/network/ntp:default
online         11:57:11 svc:/network/ntp4:default
# svcs -l svc:/network/ntp4:default
fmri         svc:/network/ntp4:default
name         Network Time Protocol (NTP) Version 4
enabled      true
state        online
next_state   none
state_time   Fri Jan 17 11:57:11 2020
logfile      /var/svc/log/network-ntp4:default.log
restarter    svc:/system/svc/restarter:default
contract_id  523 
dependency   require_any/error svc:/network/service (online)
dependency   exclude_all/none svc:/network/ntp (disabled)

Dernièrement, constatez la présence des statistiques :

# cd /var/ntp/ntpstats
# ls               
loopstats           loopstats.20200117  peerstats           peerstats.20200117

Le Serveur FTP

Installation

Sous Solaris, un serveur ftp est installé et activé par défault :

# svcs -a | grep ftp
online          3:56:29 svc:/network/ftp:default
online          3:56:29 svc:/network/tftp/udp6:default

Le serveur FTP de Sun ne peut pas être configuré et n'est pas dans un chroot. Désactivez donc ce serveur afin d'installer le serveur proftpd :

# svcadm disable svc:/network/ftp:default
# svcs -a | grep ftp
disabled       13:37:37 svc:/network/ftp:default
online          3:56:29 svc:/network/tftp/udp6:default

Le paquet proftpd est disponible dans les dépôts de csw :

# /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 /etc/opt/csw/proftpd.conf en /opt/csw/etc/proftpd.conf :

# cp /etc/opt/csw/proftpd.conf /opt/csw/etc/proftpd.conf [Entrée]

/etc/opt/csw/proftpd.conf

Ouvrez le fichier /opt/csw/etc/proftpd.conf avec l'éditeur de votre choix. Vous obtiendrez un résultat similaire à celui-ci :

# cat /opt/csw/etc/proftpd.conf
# 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

# Don't use IPv6 support by default.
UseIPv6                         off

# 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>

# 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
  DisplayChdir                  .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

Dans ce fichier, la directive suivante contient le nom de votre serveur FTP:

ServerName                      "ProFTPD Default Installation"

Important - 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

Important - 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

Important - 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

Important - Cette valeur peut être modifiée, 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 ~

Important - 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éversement 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>

Editez le fichier /opt/csw/etc/proftpd.conf et otez le caractère # devant la directive DefaultRoot ~ :

DefaultRoot ~

Ensuite ajoutez les deux directives AllowRetrieveRestart et AllowStoreRestart avant la section suivante :

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>

AllowRetrieveRestart offre la possibilité aux clients de continuer un téléchargement suite à une coupure de la connexion avec celui-ci sans avoir à tout recommencer :

AllowRetrieveRestart            on

AllowStoreRestart offre la possibilité aux clients de continuer un téléversement suite à une coupure de la connexion avec celui-ci sans avoir à tout recommencer.

AllowStoreRestart               on

Sauvegardez votre fichier et 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.5b 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.00053 seconds (75.31 Kbytes/s)

Important - Lors de votre connexion en utilisant un compte de votre système, vous devez arriver dans le dossier home de cet utilisateur.

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

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

Important - 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>

Vérifiez votre fichier de configuration grâce à l'option -t :

# /opt/csw/sbin/proftpd -t
Checking syntax of configuration file
Syntax check complete.

Redémarrez votre serveur proftpd :

# svcs -a | grep ftp
disabled       13:37:37 svc:/network/ftp:default
disabled       13:39:11 svc:/network/cswproftpd:default
online          3:56:29 svc:/network/tftp/udp6:default
# ps -ef | grep proftp
  nobody  2557     1   0 14:23:57 ?           0:00 /opt/csw/sbin/proftpd
    root  2607   832   0 14:39:39 pts/2       0:00 grep proftp
# kill 2557
# ps -ef | grep proftp
    root  2609   832   0 14:39:59 pts/2       0:00 grep proftp
# svcadm enable svc:/network/cswproftpd:default
# svcs -a | grep ftp
disabled       13:37:37 svc:/network/ftp:default
online          3:56:29 svc:/network/tftp/udp6:default
online         14:40:36 svc:/network/cswproftpd:default

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.

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 ou virtuelle.

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

Modifiez ensuite les permissions sur ce fichier :

# chmod 600 /opt/csw/etc/proftpd-vhosts.conf

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
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:e1:88:45 
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 

Créez un fichier de test:

# touch /ftp/site2/site2.txt 

Editez maintenant le fichier /opt/csw/etc/proftpd-vhosts.conf:

# vi /opt/csw/etc/proftpd-vhosts.conf
# cat /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 :

# svcadm restart svc:/network/cswproftpd:default

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.

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é.


<html> <div align=“center”> Copyright © 2019 Hugh Norris. </html>

Menu