0158 Formation Administration Reseau Linux PDF
0158 Formation Administration Reseau Linux PDF
0158 Formation Administration Reseau Linux PDF
ifconfig -a
Les sections qui commencent par ethX correspondent aux cartes ethernet, où X est le
numéro de la carte.
Si la carte n'est pas détectée, il faudra charger le module avec la commande
Parmi les modules courants on peut noter : ne2k-pci pour les cartes NE2000, via-rhine,
rtl8139...
Les modules disponibles pour votre noyau se trouvent dans / l i b / m o d u l e s / < n o m d u
n o y a u > / k e r n e l / d r i v e r s / n e t / . La commande suivante affiche les modules réseau
disponibles pour le noyau en cours d'utilisation :
ls /lib/modules/`uname -r`/kernel/drivers/net/
Pour connaître le nom du module en fonction du nom commercial d'une carte, une
recherche sur internet est souvent la meilleure solution.
Le noyau donne parfois des informations utiles sur les cartes réseau. On peut rechercher
les messages contenant "eth0" pour avoir plus d'informations sur la première carte réseau
détectée :
La commande suivante permet d'afficher les cartes réseaux reliées au bus PCI :
Adresse IP
Pour attribuer une adresse IP à une interface réseau, on peut utiliser la commande
ifconfig :
Par exemple :
Pour voir si la carte réseau est bien configurée, on peut utiliser la commande :
ifconfig eth0
Passerelle et routage
Pour ajouter une passerelle, on peut utiliser la commande r o u t e :
route -n
Tester le réseau
Pour tester si la carte réseau fonctionne, on peut essayer de communiquer avec une autre
machine avec la commande
La commande p i n g envoi un paquet à l'adresse IP puis attend que la machine réponde. Elle
affiche ensuite le temps qu'a pris toute l'opération, en millisecondes.
netstat -i
/etc/init.d/hostname.sh
aut o et h 0
ifa c e e t h 0 i n e t s t a t ic
a d d re s s 19 2 . 1 68 . 1 . 2
n e t ma s k 25 5 . 2 55 . 2 5 5.0
g a t ew a y 19 2 . 1 68 . 1 . 1
Administration réseau sous Linux/ Configuration réseau 4
Résolution de noms
Le fichier / e t c / h o s t . c o n f indique comment les noms doivent être résolus (c'est à dire
comment passer d'une adresse IP à un nom, et inversement). Par exemple :
Serveurs DNS
Le fichier / e t c / r e s o l v . c o n f contient les adresses IP des serveurs DNS. Par exemple :
nameserver 208.164.186.1
nameserver 208.164.186.2
search foo
La commande s e a r c h indique que si un nom de domaine n'est pas trouvé, il faudra essayer
en lui ajoutant . f o o .
Fichier hosts
Le fichier / e t c / h o s t s contient une liste de résolutions de noms (adresses IP et noms de
machine). Par exemple:
192.168.105.2 sasa
ps ax | grep nfsd
/etc/init.d/nfs-kernel-server start
/etc/init.d/nfs-user-server start
Configuration
Pour partager (ou exporter) des répertoires, il faut renseigner le fichier /etc/exports. Il
indique la liste des répertoires partagés et le nom des machines qui y ont accès.
Chaque ligne correspond à un répertoire et a la forme :
Par exemple :
/etc/init.d/nfs-kernel-server reload
Par exemple :
Connexion au démarrage
Il est possible de connecter les répertoires partagés au démarrage de la station.
Le plus simple est de renseigner le fichier / e t c / f s t a b qui contient une liste des systèmes
de fichiers connus.
La syntaxe est la suivante :
Les options sont décrites dans la page de man de m o u n t . Certaines sont communes à
d'autres systèmes de fichiers (ext2, vfat...) alors que d'autres sont spécifiques à NFS.
Administration réseau sous Linux/ Samba 7
Exemple
[ g l o b a l]
w o r k g r oup = m ai so n
s e r v e r st ring = S erveur Samba sur %h
e n c r y p t p assw or ds = true
l o g f i le = /v ar /l og/samba/log.%m
Administration réseau sous Linux/ Samba 8
[<nom du partage>]
<option> = <valeur>
...
Exemples
[ c d r om]
c o m m ent = S amba server's CD-ROM
r e a d on ly = yes
l o c k ing = n o
p a t h = /c dr om
g u e s t o k = yes
[ p a r ta ge ]
p a t h = / media /d/partage
a v a i la bl e = y es
b r o w sa bl e = y es
p u b l ic = yes
w r i t ab le = ye s
Administration réseau sous Linux/ Samba 9
[ z e l inu x]
c o m m ent = Site web
p a t h = /myrep/zelinux
r e a d on ly = no
public = no
valid users = <nom des utilisateurs autorisés à accéder aux
répertoires>
Pour chaque nom que vous avez rentré, il faut ajouter l'utilisateur samba avec
Un compte unix du même nom doit exister. Si ce n'est pas le cas, il faut le créer avec la
commande a d d u s e r .
Lancement du service
Lancement :
/etc/init.d/samba start
Pour le stopper :
/etc/init.d/samba stop
Pour le relancer :
/etc/init.d/samba restart
Références
[1] http:/ / us1. samba. org/ samba/ docs/ man/ manpages-3/ smb. conf. 5. html
Fichiers log
Par défaut sous Debian, Apache enregistre les erreurs dans le fichier
/ v a r / l o g / a p a c h e 2 / e r r o r . l o g . Quand quelque chose ne fonctionne pas, ce fichier fournit
souvent des pistes pour trouver la solution.
Il enregistre également toutes les requêtes dans / v a r / l o g / a p a c h e 2 / a c c e s s . l o g .
Configuration de base
Sous Debian, Apache se lance automatiquement lorsqu'on l'installe et à chaque démarrage
du système. Lorsqu'on modifie sa configuration, il faut lui faire prendre connaissance des
changements avec la commande
/etc/init.d/apache2 reload
Configuration du serveur
La configuration [2] du serveur se trouve dans / e t c / a p a c h e 2 / a p a c h e 2 . c o n f . Ce fichier
contient des instructions I n c l u d e [3] qui permettent de déplacer certaines parties de la
configuration dans d'autres fichiers. Debian utilise cette fonctionnalité pour les modules [4]
(comme PHP) et la gestion des serveurs virtuels [5] :
Pour activer ou désactiver un module, on peut manipuler directement les liens ou utiliser
les commandes a 2 e n m o d e t a 2 d i s m o d ( v o i r l e s p a g e s d e m a n ) .
Include /etc/apache2/sites-enabled/
Les directives qui permettent de configurer le serveur lui-même sont généralement placées
dans a p a c h e 2 . c o n f . Celles qui ne concernent qu'un site web sont déportées dans le fichier
de configuration du site (s i t e s - a v a i l a b l e / m o n - s i t e - w e b ).
La directive DocumentRoot [6] fixe la racine du serveur Web, c'est-à-dire le répertoire de
base où se trouvent les documents. Par exemple avec la directive D o c u m e n t R o o t
/var/www/html, si le navigateur demande la page
http://serveur/repertoire/fichier.txt, le serveur cherchera le fichier
/var/www/html/repertoire/fichier.txt.
UserDir [7] permet d'indiquer le répertoire personnel des utilisateurs du système. La
directive U s e r D i r p u b l i c _ h t m l signifie qu'un utilisateur peut publier ses pages web
personnelles dans un sous-répertoire p u b l i c _ h t m l de son répertoire personnel. Pour
l'utilisateur toto, c'est généralement / h o m e / t o t o / p u b l i c _ h t m l . Sa page d'accueil sera alors
accessible par l'URL spéciale h t t p : / / s e r v e u r / ~ t o t o .
DirectoryIndex [8] indique la liste des fichiers qu'Apache cherchera à afficher si l'URL n'en
précise pas. Par exemple si la configuration contient D i r e c t o r y I n d e x i n d e x . h t m l
i n d e x . p h p et qu'on demande l'URL h t t p : / / s e r v e u r / r e p e r t o i r e / , Apache va chercher
dans le répertoire un fichier i n d e x . h t m l ou i n d e x . p h p . Si un de ces fichiers existe, il sera
affiché. Sinon, Apache affichera soit la liste des fichiers, soit une erreur (suivant la
présence de I n d e x e s dans la directive Options [9]).
AccessFileName [10] définit le nom du fichier qu'on peut placer dans un répertoire pour en
modifier sa configuration. Cela permet, par exemple, d'interdire localement l'affichage de la
Administration réseau sous Linux/ Apache 12
liste des fichiers, ou de protéger par mot de passe un répertoire et ses sous répertoires.
Listen [11] indique à Apache sur quel port TCP il doit écouter. Le port par défaut du
protocole HTTP est 80.
ServerName [12] indique à Apache son nom de domaine et éventuellement son port. Il s'en
sert lorsqu'il doit communiquer son adresse au client (le navigateur). C'est le cas par
exemple lorsqu'on demande l'adresse h t t p : / / s e r v e u r / r e p e r t o i r e sans slash (/ ) à la fin.
Comme ce n'est pas une URL valide (l'URL d'un répertoire doit se terminer par un slash),
Apache utilise la directive S e r v e r N a m e pour reconstruire une adresse avec un slash et la
renvoi au client.
Exemple commenté
La partie du fichier de configuration traitant la gestion du nombre de processus et la
suivante:
##
## Server-Pool Size Regulation (MPM specific) ##
# pre f o r k M P M
# Sta r t S e r v e rs ......... nb de processus serveur au demarrage
# Min S p a r e S e rvers ...... nb minimum de processus serveurs '''libres'''
ins t a n c i é s
# Max S p a r e S e rvers ...... nb maximum de processus serveurs '''libres'''
ins t a n c i é s . S'il y en a MaxSpareServers+1 on les tues
# Max C l i e n t s ........... nb maximum de processus serveurs qui peuvent
demar r e r
# Max R e q uestsPerChild .. nb maximum de requètes gérées par processus
serve u r .
# Apres MaxRequestsPerChild requètes, le
proce ssus meurt.
# Si MaxRequestsPerChild=0, alors le processus
n'exp ire jamais.
<If M o d u l e p r ef or k.c>
S t a r t S e r v e rs 5
M i n S p a r e S e rv er s 5
M a x S p a r e S e rv er s 10
M a x C l i e n t s 2 0
M a x R e q u e s t sP er Child 0
Administration réseau sous Linux/ Apache 13
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
M i n S p a r e T h r e a d s 2 5
M a x S p a r e T h r e a d s 7 5
T h r e a d s P e r C h i l d 2 5
M a x R e q u e s t s P e r C hi ld 0
</I f M o d u l e >
<If M o d u l e p e rc hild.c>
N u m S e r v e r s 5
S t a r t T h r e a ds 5
M i n S p a r e T h re a d s 5
M a x S p a r e T h re a d s 10
M a x T h r e a d s Pe r C h ild 20
M a x R e q u e s t sP e r C hild 0
A c c e p t M u t e x f c n tl
</I f M o d u l e >
Administration réseau sous Linux/ Apache 14
# Po u r l a ra cin e du serveur:
<Dir e c to r y / var / www/html>
# Q u el q ues op t ions
Op t i on s In dex e s Includes FollowSymLinks
Les paramètres possibles de la directive Options [13] sont : "None", "All", "Indexes",
"Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews".
Administration réseau sous Linux/ Apache 15
UserDir disabled
UserDir enabled sasa toto
Pour définir les options de ces répertoires, on peut utiliser une clause D i r e c t o r y pour le
répertoire / h o m e / * / p u b l i c _ h t m l :
<Di r e c t or y /home/*/public_html>
O r d e r a l low,deny
A l l o w f r om all
</D i r e c to r y>
UserDir /home/*/public_html
Scripts CGI
#!/bin/bash
# Header
echo "Content-type: text/html"
Administration réseau sous Linux/ Apache 16
# Fin de l'header
echo ""
<Directory /var/www/cgi-bin>
Options ExecCGI
</Directory>
Le module PHP
PHP a normalement été intégré au serveur Apache sous forme d'un module chargeable
situé comme tous les autres modules d'Apache dans / u s r / l i b / a p a c h e 2 / m o d u l e s .
Les fichiers /etc/apache2/mods-availiable/php.load et
/etc/apache2/mods-availiable/php.conf contiennent les directives L o a d M o d u l e et
A d d T y p e qui permettent à Apache d'exécuter du PHP quand on demande un fichier se
terminant par . p h p . Ils doivent être liés dans / e t c / a p a c h e 2 / m o d s - e n a b l e d pour activer
PHP. On peut utiliser pour cela la commande a 2 e n m o d .
En marge de Apache, PHP possède lui aussi son fichier de configuration, souvent
/ e t c / p h p . i n i . Il n'est pas particulièrement conseillé d'y intervenir sauf si on sait ce que
l'on fait. On peut néanmoins y observer que PHP prend bien en compte le module
d'extension MySQL, contenant les fonctions d'accès au "moteur" de base de données
MySQL (qui a dû être installé à part), par la présence de e x t e n s i o n = m y s q l . s o .
Administration réseau sous Linux/ Apache 17
En cas de modification d'un fichier de configuration, comme PHP fonctionne comme module
d'Apache, il faut redémarrer Apache pour qu'il réinitialise PHP par la lecture de php.ini.
/etc/init.d/apache2 restart
.htaccess
Le fichier .htaccess doit se trouver dans le répertoire à protéger. On placera dans ce fichier
la définition des restrictions.
Il est impératif que la modification des paramètres d'authentification soit autorisée dans la
configuration d'Apache. Il faut que la directive AllowOverride [14] d'un répertoire parent
contienne l'option A u t h C o n f i g .
Les directives à placer dans le . h t a c c e s s sont les suivantes :
• A u t h T y p e b a s i c , type d'authentification communément adopté
• A u t h N a m e " M o n m e s s a g e " , affichera le texte comme invite dans la boîte de dialogue
• A u t h U s e r F i l e / e t c / a p a c h e 2 / m y _ p a s s w d , indique où vont se trouver les mots de passe
• R e q u i r e v a l i d - u s e r , précise qu'il faut un compte dans le fichier de mots de passe pour
accéder au répertoire
On peut aussi utiliser R e q u i r e user toto sasa pour n'autoriser que les comptes toto et
sasa.
Le type d'authentification basic fait circuler les mots de passe en clair. Il existe d'autres
types plus sécurisés.
La première requête adressée à ce répertoire protégé provoquera l'affichage d'une boîte de
dialogue par laquelle l'utilisateur devra s'identifier (nom et mot de passe). Si le mot de
passe saisi est invalide, la boite de dialogue s'affichera de nouveau. S'il est valide, le
navigateur l'enregistre et ne le demandera plus. Il faudra relancer le navigateur pour qu'il
le demande de nouveau.
<Vi t r u a l H o s t *>
S r e v e r A d m i n a d m i n @ s i te1.com
D c o u m e n t R o o t / h o m e / s ite1/racine
S r e v e r N a m e si t e 1 . c o m
S r e v e r A l i a s w w w . s i t e 1 . c o m
A c c e s s L o g / ho m e / s i t e 1 / a c cess.log
E r r o r L o g /h om e / s i t e 1 / e r r or.log
< i D r e c t o r y /h o m e / s i t e 1 / r acine>
A l l o w O v er ri d e A l l
</D i r e c t o ry >
</Vir t u a l H o st >
[5]
La documentation d'Apache sur les serveurs virtuels contient des informations détaillées
sur le sujet.
Pour que ce serveur virtuel fonctionne, il est impératif que les noms site1.com et
www.site1.com soient connus par la machine qui tente d'y accéder (celle qui lance le
navigateur). Pour cela il y a plusieurs méthodes :
• acheter le nom de domaine en question et le configurer pour qu'il pointe sur la bonne
adresse IP
• utiliser un serveur DNS qui renverra la bonne IP pour ce domaine
• modifier le fichier h o s t s sur la machine cliente pour faire correspondre ce domaine à la
bonne adresse IP (voir la partie Installation et configuration d'une carte réseau)
Administration réseau sous Linux/ Apache 19
Exemples de configuration
Voici quelques exemples de configuration. L'ensemble des directives possibles peut être
consulté ici : http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ directives. html
Pensez que les directives doivent parfois se trouver dans a p a c h e 2 . c o n f , parfois dans le
contexte V i r t u a l H o s t d'un site donné.
ServerType
ServerType standalone
ServerRoot
ServerRoot /etc/apache2
LockFile
LockFile /var/run/httpd.lock
PidFile
PidFile /var/run/httpd.pid
ScoreBoardFile
ScoreBoardFile /var/run/httpd.scoreboard
Timeout
Timeout 300
KeepAlive
KeepAlive on
Autorise ou non les connexions persistantes (plusieurs requêtes par connexions). En fait
cela permet aux utilisateurs de votre serveur de lancer plusieurs requêtes à la fois, et donc
d'accélérer les réponses du serveur. Laissez cette valeur par défaut la plupart du temps.
Pour de petits serveurs laissez cette option sur on . Pour un serveur très sollicité, dès que
vous vous apercevez que le système ralentit énormément ou devient indisponible assez
souvent, essayez avec la valeur off . Mais avant, essayez de baisser la valeur de l'option
suivante.
MaxKeepAliveRequests
MaxKeepAliveRequests 100
KeepAliveTimeout
KeepAliveTimeout 15
Valeur d'attente en secondes avant la requête suivante d'un même client, sur une même
connexion, avant de renvoyer un timeout. Là aussi laisser la valeur par défaut.
Listen
Listen 3000
Listen 12.34.56.78
Listen 12.34.56.78:3000
Indique au serveur des ports ou des adresses IP (il y en a une par interface réseau du
serveur!), ou les deux, où il doit "écouter" les demandes de connexions, EN PLUS de
l'adresse et port par défaut. Voir la directive V i r t u a l H o s t plus loin.
BindAdress
BindAdress *
Redondant avec L i s t e n , cela permet de spécifier des adresses IP d'interfaces réseau, pour
écouter les requêtes. Cette directive a disparu dans Apache 2.
Port
Port 80
Redondant avec L i s t e n , cela permet de spécifier le port d'écoute (80 par défaut). Cette
directive a disparu dans Apache 2.
ExtendedStatus
ExtendedStatus on
Une fois le serveur démarré, il serait dangereux de lui laisser les droits r o o t pour répondre
aux requêtes. Il est donc possible de modifier l'utiliseur et le groupe du processus pour lui
donner un minimum de droits sur la machine du serveur. (En fait si quelqu'un arrive à
"exploiter" votre serveur, par exemple s'il arrive a faire exécuter du code par le serveur
Apache, il hérite des droits du serveur lui même. Donc si c'est n o b o d y il n'a aucun droit
spécifique. Si c'est r o o t ou un utilisateur réel, il aura alors des droits lui permettant
d'endommager votre système.)
ServerAdmin
ServerAdmin [email protected]
Adresse e-mail de l'administrateur du site. Cette adresse est affichée par le serveur par
exemple en cas d'erreur, pour que les utilisateurs puissent en avertir l'administrateur.
ServerName
ServerName www.domainname
Adresse que le serveur va renvoyer au client web. Il est préférable de mettre une adresse
résolue par DNS au lieu du nom de la machine réelle, pour que les visiteurs ne voient pas le
nom réel de votre machine (utile pour la sécurité aussi).
DocumentRoot
DocumentRoot /var/lib/apache/htdocs
Directory
<Di r e c t ory / v a r /lib/apache/htdocs>
O p t i o ns In d e x es FollowSymlinks Multiviews
A l l o w Overr i d e None
O r d e r allo w , d eny
A l l o w from a l l
</D i r e c tory>
Options
on définit les options pour ce répertoire. Les options possibles sont les suivantes :
Indexes Permet aux utilisateurs d'avoir des indexs généré par le serveur. C'est à dire si
l'index du répertoire (i n d e x . h t m l le + souvent) est manquant, cela autorise le
serveur a lister le contenu du répertoire (dangereux suivant les fichiers contenu dans
ce répertoire).
IncludesNOEXEC Permet mais les includes mais empêche la commande EXEC (qui permet d'executer
du code).
MultiViews Autorise les vue multiples suivant un contexte. Par exemple permet d'afficher les
pages dans un language suivant la configuration du language du client.
SymLinksIfOwnerMatch Autorise a suivre les liens seulement si l'user ID du fichier (ou répertoire) sur lequel
le lien pointe est le même que celui du lien.
AllowOverride
définit comment sont gérés les fichiers .htaccess de ce répertoire :
FileInfo Active les directives contrôlant le type de document (ErrorDocument, LanguagePriority, etc.)
None Ne lit pas le fichier .htaccess et laisse les droits "Linux" de ce répertoire.
Order
Donne l'ordre d'application des règles Allow/Deny :
deny,allow Si le client ne correspond à aucune règle deny , mais correspond à une règle allow , alors on
autorise (allow par défaut).
allow,deny Si le client ne correspond à aucune règle allow , mais correspond à une règle deny , on interdit
(deny par defaut).\hline
Administration réseau sous Linux/ Apache 24
Allow/Deny
Nom d'hôte Autorise/Refuse les hôtes spécifié, les adresses IP, le nom de domaine, etc...
A vous de placer vos règles suivant le contenu de vos répertoire accessibles par le Web. Il
existe les mêmes règles pour les fichiers (<Files> </Files>) et les locations (<Location>
</Location>). Voir un exemple pour les fichiers (file) plus bas.
DirectoryIndex
DirectoryIndex index.html index.htm index.php index.php5
AccessFileName
AccessFileName .htaccess
Nom du fichier des règles d'accès pour les règles AllowOverride. Un conseil: placez comme
vu précédemment une règle file du style:
CacheNegotiatedDocs
#CacheNegotiatedDocs
Autorise ou pas les proxies à mettre en cache les documents (pour autoriser, enlevez le
commentaire # en début de ligne)
UseCanonicalName
UseCanonicalName On
Placé sur on , réécrit l'URL par rapport aux valeurs S e r v e r et P o r t spécifiées plus haut
dans le fichier httpd.conf.
Sur off , l'URL reste celle donnée par le client.
Attention, mettez sur on si vous utilisez des CGI avec des variables SERVER_NAME, car si
l'URL du client n'est pas la même que celle du CGI, votre script CGI ne marchera pas.
Administration réseau sous Linux/ Apache 25
DefaultType
DefaultType text/plain
Type mime par défaut que le serveur renvoie au clients. Convient dans la plupart des cas.
HostNameLookups
HostNameLookups off
Sur on , le serveur le nom du client grâce à une requête DNS inverse. Sinon, il se contente
de l'adresse IP, ce qui génère beaucoup moins de trafic réseau.
ErrorLog
ErrorLog /var/log/error_log
LogLevel
LogLevel warn
Niveau d'enregistrement des erreurs avec comme valeurs possibles, par ordre décroissant
d'importance, donc croissant en bavardage:
warn les erreurs non bloquantes (pages mal codées, scripts comportant des erreurs non blocantes...
ServerSignature
ServerSignature on
on ajoute la signature (version, OS…) du serveur lorsqu'il génère des pages lui-même (index manquant,
erreur de script, etc.)
Alias
Alias faux_nom nom_réel
permet de faire des alias de répertoires (des liens en quelque sorte) (similaire à
ScriptAlias /cgi-bin chemin_complet_des_cgi
AddType
AddType type extensions
AddHandler
AddHandler cgi-script .cgi
Références
[1] http:/ / httpd. apache. org/ docs/ 2. 2/ invoking. html
[2] http:/ / httpd. apache. org/ docs/ 2. 2/ configuring. html
[3] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#include
[4] http:/ / httpd. apache. org/ docs/ 2. 2/ dso. html
[5] http:/ / httpd. apache. org/ docs/ 2. 2/ vhosts/
[6] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#documentroot
[7] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ mod_userdir. html#userdir
[8] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ mod_dir. html#directoryindex
[9] http:/ / httpd. apache. org/ docs/ 1. 3/ mod/ core. html#options
[10] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#accessfilename
[11] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ mpm_common. html#listen
[12] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#servername
[13] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#options
[14] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#allowoverride
[15] http:/ / httpd. apache. org/ docs/ 2. 2/ mod/ core. html#serveralias
Administration réseau sous Linux/ FTP 27
Installation et lancement
Sous Debian, ProFTPD est disponible dans un package et peut s'installer avec la commande
Il est aussi possible de le configurer poour ses propres besoins à partir des sources. Ceci
permet de spécifier les modules à utiliser.
t a r z xvf proftpd-1.x.x.tar.gz
c d pr oftpd-1.x.x
. / con figure --with-modules=mod_ratio:mod_sql
m a ke
m a ke installproftpd
Fichier de configuration
Le principal fichier de configuration est / e t c / p r o f t p d / p r o f t p d . c o n f .
[2]
L'ensemble des directives sont décrites sur le site web de ProFTPD . Les commandes
principales sont les suivantes :
Pour que le serveur prenne en compte le nouveau fichier de configuration, il faut recharger
le démon avec:
/etc/init.d/proftpd restart
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# Set the user and group that the server normally runs at. User nobody
Group nogroup
<Global>
Administration réseau sous Linux/ FTP 29
D e f a u l t R o o t /v ar/ftp
A l l o w O v e r w rite yes
M a x C l i e n t s 3
M a x C l i e n t s PerH ost 1
U s e F t p U s e r s on
A l l o w F o r e i gnAd dress on
S e r v e r I d e n t on "ProFTP DuF<font name="DejaVuSans">’</font>s Server Ready"
A c c e s s G r a n tMsg "Bienvenue sur le serveur, %u"
</G l o b a l >
Client FTP
Il existe de très nombreux clients FTP. Certains sont en mode graphique, d'autres en mode
texte. Les navigateurs internet permettent également de se connecter à un serveur FTP.
ftp
Le client le plus simple et le plus répandu est la commande ftp. Elle existe également sous
Windows en ligne de commande.
Les commandes disponibles sont décrites dans la page de man. Les principales sont : help,
open, ls, get, put...
Navigateur
Pour accéder à un serveur FTP à partir d'un navigateur Internet, il faut utiliser une adresse
particulière. Pour une connexion anonyme, on pourra utiliser f t p : / / s e r v e u r / ou
ftp://serveur/chemin.
Pour se connecter avec un mot de passe, on utilisera
ftp://utilisateur:mot_de_passe@serveur/.
Références
[1] http:/ / www. proftpd. org
[2] http:/ / www. proftpd. org/ docs/
Administration réseau sous Linux/ DHCP 30
Configuration
Le fichier de configuration principal est /etc/dhcpd.conf. Sa syntaxe est décrite dans man
dhcpd.conf.
Il possède des options globales, généralement placées au début, et des sections pour
chaque hôte ou réseau à configurer.
Interfaces
Par défaut, le serveur DHCP est lancé sur toutes les interfaces. Dans ce cas il est impératif
de configurer un réseau par interface dans dhcpd.conf.
Pour choisir les interfaces sur lesquels le serveur est lancé, il faut modifier
/etc/default/dhcp en indiquant par exemple
INTERFACES="eth1 eth2"
Adresse dynamique
Pour configurer une plage d'adresses à attribuer dynamiquement aux adresses MAC
inconnues, on utilise une section subnet dans dhcpd.conf. La section suivante attribuera par
exemple des adresses comprises entre 192.168.1.101 et 192.168.1.199 :
Adresse fixe
Pour donne une adresse fixe à un poste, il faut connaître son adresse MAC et écrire une
section host. Par exemple la section suivante attribue l'adresse 192.168.0.47 au poste
cobalt dont l'adresse MAC est 00:13:d4:bd:b7:9a :
host cobalt {
hardware ethernet 00:13:d4:bd:b7:9a;
fixed-address 192.168.0.47;
}
Options
Le serveur DHCP peut fournir d'autres informations que l'adresse IP. Ces options peuvent
être définies de manière globale en les plaçant en dehors de toute section. Elles
s'appliqueront alors à toutes les sections qui ne les redéfinissent pas. Si elles sont placées
dans une section particulière, elles ne s'appliquent qu'à celle-ci.
L'option domain-name-servers permet par exemple d'indiquer au poste les adresses des
serveurs DNS. L'option routers indique la passerelle.
Toutes les options sont décrites dans la page de man. On peut également consulter cette
documentation sur internet[1].
Références
[1] http:/ / www. linuxmanpages. com/ man5/ dhcpd. conf. 5. php
Fonctionnement
Netfilter intercepte les paquets réseau à différents endroits du système (à la réception,
avant de les transmettre aux processus, avant des les envoyer à la carte réseau, etc.). Les
paquets interceptés passent à travers des chaînes qui vont déterminer ce que le système
doit faire avec le paquet. En modifiant ces chaines on va pouvoir bloquer certains paquets
et en laisser passer d'autres.
Administration réseau sous Linux/ Netfilter 32
Filtrage
Dans son fonctionnement le
plus simple, Netfilter permet
de jeter ou de laisser passer
les paquets qui entrent et qui
sortent.
Il fournit pour cela trois
chaînes principales :
• une chaîne INPUT pour
filtrer les paquets à
destination du système,
• une chaîne OUTPUT pour
filtrer les paquets émis par
les processus du système, Principal cheminement des paquets à travers Netfilter
• et une chaîne FORWARD
pour filtrer les paquets que le système doit transmettre.
En ajoutant des règles dans ces chaînes on pourra laisser passer ou jeter les paquets
suivant certains critères.
Chaînes
Une chaîne est un ensemble de règles qui indiquent ce qu'il faut faire des paquets qui la
traversent.
Lorsqu'un paquet arrive dans une chaîne :
• Netfilter regarde la 1ère règle de la chaîne,
• puis regarde si les critères de la règle correspondent au paquet.
• Si le paquet correspond, la cible est exécutée (jeter le paquet, le laisser passer, etc.).
• Sinon, Netfilter prend la règle suivante et la compare de nouveau au paquet. Et ainsi de
suite jusqu'à la dernière règle.
• Si aucune règle n'a interrompu le parcours de la chaîne, la politique par défaut est
appliquée.
Règles
Une règles est une combinaison de critères et une cible. Lorsque tous les critères
correspondent au paquet, le paquet est envoyé vers la cible.
Les critères disponibles et les actions possibles dépendent de la chaîne manipulée.
Syntaxe
La syntaxe d'i p t a b l e s et toutes les options sont décrites dans la page de man.
Pour chaque paramètre il existe généralement une forme longue avec deux tirets (par
exemple - - a p p e n d ) et une forme courte avec un seul tiret (par exemple - A ). Utiliser l'une
ou l'autre n'a pas d'importance, elles sont équivalentes. Les deux possibilités sont souvent
représentées dans la documentation sous la forme - - a p p e n d | - A .
Les paramètres indiqués entre crochets (par exemple [ - t < t a b l e > ] ) sont facultatifs.
Administration réseau sous Linux/ Netfilter 33
Ce qui se trouve entre inférieur et supérieur (par exemple < t a b l e > ) doit être remplacé par
une valeur.
La forme générale pour utiliser i p t a b l e s est la suivante :
Commandes
Les commandes principales sont les suivantes :
--list|-L [<chaîne>]
Affiche les règles contenues dans les chaînes ou seulement dans la chaîne sélectionnée.
Si le paramètre - v est placé avant cette commande, le nombre de paquets ayant traversé
chaque règle sera également affiché.
Ajoute une règle à la fin de la chaîne <chaine>. Si tous les critères correspondent au
paquet, il est envoyé à la cible. Voir plus bas pour une description des critères et des cibles
possibles.
--flush|-F [<chaîne>]
Efface toutes les règles de la chaîne. Si aucune chaîne n'est indiquée, toutes les chaînes de
la table seront vidées.
Détermine la cible lorsque qu'aucune règle n'a interrompu le parcours et que le paquet
arrive en fin de chaîne.
Critères
Les critères possibles sont nombreux. En voici quelques uns :
Le protocole est <protocole>. Les protocoles possibles sont tcp, udp, icmp, all ou une
valeur numérique. Les valeurs de /etc/protocols sont aussi utilisables. Si un point
d'exclamation se trouve avant le protocole, le critère correspondra au paquet seulement s'il
n'est pas du protocole spécifié.
L'adresse source est <adresse>. Si un masque est précisé, seules les parties actives du
masque seront comparées. Par exemple lorsqu'on écrit - s 1 9 2 . 1 6 8 . 5 . 0 / 2 5 5 . 2 5 5 . 2 5 5 . 0 ,
Administration réseau sous Linux/ Netfilter 34
-i <interface>
L'interface réseau d'où provient le paquet. N'est utilisable que dans la chaîne INPUT.
-o <interface>
L'interface réseau de laquelle va partir le paquet. N'est utilisable que dans les chaînes
OUTPUT et FORWARD.
Cibles
Les cibles principales sont les suivantes :
-j ACCEPT
-j DROP
-j REJECT
Comme DROP mais prévient l'émetteur que le paquet est rejeté. La réponse envoyée à
l'émetteur est également un paquet qui devra satisfaire les règles de sortie pour pouvoir
passer.
Enregistre le paquet dans les logs systèmes. Au <level> par défaut, le paquet est affiché
sur la console principale du système.
Cette cible est utile pour voir certains paquets qui passent (pour débugger ou pour alerter).
Administration réseau sous Linux/ Netfilter 35
Utilisation simple
Le principe est assez simple à comprendre. Un paquet IP arrive sur votre machine, vous
devez alors choisir ce que vous en faites. Vous pouvez l’accepter (ACCEPT), le rejeter
(REJECT) ou le denier (DROP). La différence entre les deux derniers modes, est de prévenir
ou non l’envoyeur, que son paquet a été refusé (avec REJECT on prévient, mais pas avec
DROP).
Trois types de paquets peuvent passer par le firewall. Les paquets sortants (OUTPUT),
entrant (INPUT) ou « passant », c’est-à-dire qui ne font que rebondir sur le routeur qui doit
les rediriger FORWARD).
Pour organiser les règles d’acceptation/rejet, on procède de la façon suivante : – INPUT,
OUTPUT, FORWARD, sont appelés des chaînes – une règle est un ensemble d’attributs
auxquels correspond (ou non) un paquet : IP source, IP destination, port source, port
destination, protocole . . . – quand un paquet passe par le firewall, il est aiguillé vers la
chaîne correspondante – ensuite, les règles de la chaîne sont testées une par une, dans
l’ordre, sur le paquet. Dès que le paquet correspond à une règle, on s’arrête. Si la règle
stipule ACCEPT, le paquet est accepté. Si elle stipule DROP, il est ignoré. Si elle stipule
REJECT, il est refusé avec acquittement. Les règles suivantes ne sont pas testées. – si
aucune règle ne correspond au paquet, la politique par défaut est appliquée. Elle peut être
positionnée à ACCEPT, DROP ou REJECT.
Il est plus sécurisant (mais plus long à mettre en place) d’utiliser une politique par défaut
DROP et de créer des règles ACCEPT.
La syntaxe d’iptables est la suivante :
# !/ b in/sh
# E f facer toutes les règles avant toute chose, afin de partir d<font name="DejaVuSans">’<
b as e
# p r opre et de savoir exactement ce que vous faites
i pt a bles -F
# o n met souvent "DROP" pour l<font name="DejaVuSans">’</font>OUTPUT (on ne donne pas d<f
un
# é v e ntuel pirate) et "REJECT" pour l<font name="DejaVuSans">’</font>INPUT et le FORWARD
ain s i
# r é c u p ér e r d e s i nf o s pour soi) mais iptables n<font name="DejaVuSans">’</font>autorise p
# c o m m e p o l it i q u e p a r défaut
ipt a b l e s - P I N P U T D R O P
ipt a b l e s - P O U T P U T D R OP
ipt a b l e s - P F O R W A RD D ROP
Quelques exemples
Pour vider la chaine INPUT de la table filter (la table par défaut) :
iptables --flush INPUT
La politique par défaut est d'accepter tous les paquets, ce qui est généralement un mauvais
choix pour la sécurité. Pour changer cette règle sur la chaine FORWARD de la table filter :
iptables -P FORWARD DROP
Pour laisser passer les paquets sur le port telnet qui viennent d'un réseau local (forme
longue) :
iptables --append INPUT --protocol tcp --destination-port telnet --source
192.168.13.0/24 --jump ACCEPT
Pour ignorer les autres paquets entrants sur le Port (logiciel)|port telnet (forme courte) :
iptables -A INPUT -p tcp --dport telnet -j DROP
Pour rejeter les paquets entrants sur le port 3128, souvent utilisé par les proxies :
iptables -A INPUT -p tcp --dport 3128 -j REJECT
Pour Autoriser telnet vers votre machine (serveur telnet) en utilisant le script précédent :
$IPTABLES -A INPUT -p tcp --sport ${ports_non_privilegies} --dport telnet
-s $Any -d ${ip_exterieure} -i ${interface_internet} -j ACCEPT -l
$IPTABLES -A OUTPUT -p tcp --sport telnet --dport
${ports_non_privilegies} -s ${ip_exterieure} -d $Any -i
${interface_internet} -j ACCEPT
Cette dernière ligne n’est nécessaire que si vous avez mis DROP pour la chaîne OUTPUT. Si
par contre vous avez utilisé ACCEPT, elle n’est pas nécessaire. Any ouvre la porte telnet à
tout le monde, vous pouvez préciser les machines que vous souhaitez autoriser. Le -l
permet de loguer les paquets entrants.
Pour autoriser telnet depuis votre machine (client telnet) en utilisant le script précédent:
Administration réseau sous Linux/ Netfilter 37
Le principe.
Lorsque vous souhaitez vous connecter sur une machine distante avec la commande telnet
par exemple, le démon inetd intercepte votre demande de connexion et vérifie dans le
fichier inetd.conf si le service telnet est utilisable. Si la réponse est positive, votre demande
est passée à tcpd qui vérifie dans les fichiers hosts.allow et hosts.deny si vous avez le droit
de vous connecter en telnet, si cela est le cas votre demande de connexion sera autorisée,
sinon vous serez rejeté. Dans tous les cas de figure et cela est l'autre fonction de
TCP_wrappers tcpd transmettra à syslogd (démon de log) votre demande (cette demande se
retrouvera logger dans le fichier /var/log/securite).
L'installation
Par défaut il est installé avec la plupart des distributions, mais au cas, le paquet à installer
est : tcp_wrappers-x.....rpm. TCP_wrappers utilise les fichiers suivants : tcpd, inetd,
inetd.conf, hosts.allow, hosts.deny, tcpdchk, tcpdmatch.
# Version: \@(#)/etc/inetd.conf
# Les premières lignes sont utilisées par inetd
#
# echo stream tcp nowait root internal
# echo dgram udp wait root internal
Administration réseau sous Linux/ TCP Wrapper 38
# d i s c a r d s t r e am t cp n o wait r
oot i n rt e nal
# d i s c a r d d g r a m ud p w a i t ro o t
inte r ln a
# d a y t i m e s t r e am t cp n o wait r
oot i n rt e n a l
# d a y t i m e d g r a m ud p w a i t ro o t i en t r n a l
# c h a r g e n s t r e am t cp n o wait r
oot i n t e rnal
# c h a r g e n d g r a m ud p w a i t ro o t inte r n a l
# t i m e stre a m tcp now a i t ro o t inte r n a l
# t i m e dgra m udp wait ro ot int erna l
#
# ftp et telnet sont deux services très utilisés.
# Ils ne sont pas spécialement sécurisés. telnet peut être remplacé par
ssh qui est beaucoup plus sécurisé.
#
# ftp stream tcp nowait root /usr/sbin/tcpd
i n.ftpd telnet stream tcp nowait root /usr/sbin/tcpd
i n.telnetd
#
# Shell , login, exe
c, com sa t e
t talk sont des protocoles BSD.
# Essay e z de ne pas
l es u ti l
er. is
# Ils p r ésenten t sde f il
a le s a
u nive a u de l a s é cu ri t é.
# shel l st r eam
t cp n ow a itr o ot / u s r / s b in /t c pd
i n.rsh d login s tre
am tcp n o wa
it roo t /us r / s b i n /t cp d i n .r logind
# exec s tream cp t now ai t roo t /us r / s b i n /t cp d i n .r execd
# comsa t dgram u dp
wa it root /us r /sbi n / t c p d i n. c om s at
t alk g r am udp wa it n obody.tty / u sr/s b i n / t c pd i n .t a lk d
n talk d gram udp w it
a nobody . tty / u s r / s bi n/ t cp d i n.ntalkd
# dtalk stream tcp wa it n obody.tty / u sr/s b i n / t c pd i n .d t al kd
#
# p op 3 e t i m ap sont les serveurs de messagerie.
# A n ' a c t i v e r que s i vous les utilisez.
# O ub l i e z p o p2
# p o p- 2 s t r e a m t c p nowait root
/ u s r/ s b i n / t c pd ipop 2 d
# p o p- 3 s t r e a m t c p nowait root
/ u s r/ sb i n / t c pd i pop3d
# i m ap s t r e a m tc p nowait root
/ u s r/ sb i n / t c pd i mapd
#
# e L s ervi ce UU CP e st un mo yen d'envoyer des fichiers entre machines.
# e C s ervi ce n' est pr atique ment plus utilisé.
# v E it ez d e l'u tili se r.
# u u cp str eam t cp n owai t uucp
/ s u r/ sbin /tcpd /us r/ lib/uu cp/u ucico -l
# t f p et b ootp sont u tilisé s po ur permettre aux machines
l c ie ntes qui ne d is posent pas
# d e disq ue de boo te r, de rece voir une adresse IP, de charger le
sys tè me.
Administration réseau sous Linux/ TCP Wrapper 39
Le # devant une ligne rend la ligne inactive, donc le service non disponible. Si vous ne
devez pas utiliser un service, rendez le inactif.
Voici un descriptif de quelques options. Considérons la ligne suivante:
Hosts.allow et Hosts.deny
Vous trouverez ces deux fichiers dans le répertoire /etc.
Le premier fichier lu est hosts.allow , puis hosts.deny. Si une requête est autorisée dans le
fichier hosts.allow alors elle est acceptée, quelque soit le contenu du fichier hosts.deny. Si
une requête ne satisfait aucune règle, que ce soit dans hosts.allow ou hosts.deny alors elle
est autorisée. En un mot si vous ne mettez rien dans hosts.deny, alors vous n'avez rien fait.
Voici un petit exemple qui dans des cas simples est suffisant :
Administration réseau sous Linux/ TCP Wrapper 40
fichier hosts.allow
# h os ts .al low
A LL : L OCA L
i n. ft pd : 192.168.0.,10.194.168.0/255.255.255.0, 192.168.1.1
i n. te ln etd : .iut.u-clermont1.fr
On autorise tout les ports depuis un accès local, et on autorise ftp pour les machines venant
du réseau 192.168.0.0, ainsi que les machines du réseau 10.194.168.0 avec une autre
notation et enfin la seule machine qui a pour adresse 192.168.1.1
fichier hosts.deny
#hosts.deny
ALL:ALL
Le fichier hosts.deny est simple à comprendre, il interdit tout par défaut. Le fichier
hosts.allow indique les services que je veux autoriser (Le nom du service doit être identique
au nom qui se trouve dans inetd.conf). la syntaxe est la suivante :
Cette syntaxe est identique dans les deux fichiers, hosts.allow et hosts.deny.
Filtrage
Il est possible de sélectionner les paquets à "écouter" en fonction d'expressions. Ainsi, ne
seront affichées / traitées que les informations pour lesquelles le résultat de l'expression est
vérifié. Une expression est composée de primitives et d'opérateurs logiques.
Une primitive est un identifiant précédé de mots clés qui indiquent le type de l'identifiant.
Par exemple la primitive src port 21 contient les éléments suivants :
• le mot clé src qui indique que l'identifiant ne porte que sur la source du paquet
• le mot clé port qui indique que l'identifiant est le port du paquet
• l'identifiant 21
La primitive correspond donc au port source 21.
De la même manière, la primitive ether src 00:11:22:33:44:55 indique l'adresse ethernet
(ou MAC) source 00:11:22:33:44:55.
Les primitives les plus courantes sont les suivantes :
src <adresse>
l'adresse source est <adresse>
dst <adresse>
l'adresse destination est <adresse>
host <adresse>
l'adresse source ou destination est <adresse>
port <port>
le port source ou destination est <port>
src port <port>
le port source est <port>
dst port <port>
le port destination est <port>
portrange <port1>-<port2>
Administration réseau sous Linux/ Tcpdump 42
le port est compris entre <port1> et <port2>. On peut préciser l'origine avec les mots
clés src ou dst et le protocole avec les mots clés tcp ou udp.
Les primitives peuvent être reliées avec les opérateurs logiques and, or et not. Par exemple
l'expression suivante va trouver tous les paquets en provenance de tiny mais dont le port
n'est pas le port ssh :
Options
Plusieurs options permettent de modifier le comportement de tcpdump :
-i <interface>
sélectionne l'interface réseau sur laquelle tcpdump écoute. Par défaut il prend la
première active (sauf lo).
-x
affiche également les données contenues dans les paquets trouvés, sous forme
hexadécimale
-X
affiche les données des paquets sous forme ASCII
-s <nombre>
par défaut, seuls les 68 premiers octets de données sont affichés. Ce paramètre
permet de modifier ce nombre.
Exemples
tcpdump src 192.168.0.1
Ici, les seuls paquets affichés sont ceux en provenance de 192.168.0.1. Nous pouvons
également préciser nos préférences en ajoutant un critère :
Nous avons demandé l'affichage du contenu des paquets au format hexadécimal et ascii (-x
-X) et ce, quelle que soit leur taille (-s 0). Nous obtenons les informations désirées :
Cryptographie asymétrique
SSH utilise la cryptographie asymétrique RSA ou DSA. En cryptographique asymétrique,
chaque personne dispose d'un couple de clé : une clé publique et une clé privée. La clé
publique peut être librement publiée tandis que chacun doit garder sa clé privée secrète.
La connaissance de la clé publique ne permet pas d'en déduire la clé privée.
Si la personne A veut envoyer un message confidentiel à la personne B, A crypte le message
avec la clé publique de B et l'envoie à B sur un canal qui n'est pas forcément sécurisé. Seul
B pourra décrypter le message en utilisant sa clé privée.
Cryptographie symétrique
SSH utilise également la cryptographie symétrique. Son principe est simple : si A veut
envoyer un message confidentiel à B, A et B doivent d'abord posséder une même clé
secrète. A crypte le message avec la clé sécrète et l'envoie à B sur un canal qui n'est pas
forcément sécurisé. B décrypte le message grâce à la clé secrète.
Toute autre personne en possession de la clé secrète peut décrypter le message.
La cryptographie symétrique est beaucoup moins gourmande en ressources processeur que
la cryptographie asymétrique, mais le gros problème est l'échange de la clé secrète entre A
et B. Dans le protocole SSL, qui est utilisé par les navigateurs Web et par SSH, la
cryptographique asymétrique est utilisée au début de la communication pour que A et B
puissent s'échanger un clé sécrète de manière sécurisée, puis la suite la communication est
sécurisée grâce à la cryptographie symétrique en utilisant la clé secrète échangée.
/etc/init.d/ssh
ssh-keygen -t dsa
Deux clés vont être générées, un clé publique (par défaut ~ / . s s h / i d _ d s a . p u b ) et une clé
privée (par défaut ~ / . s s h / i d _ d s a ). C'est la clé publique qu'il faudra copier sur le serveur.
Les clés générées ont par défaut une longueur de 1024 bits, ce qui est aujourd'hui
considéré comme suffisant pour une bonne protection.
La commande demande un nom de fichier pour sauvegarder la clé privée et un nom de
fichier pour sauvegarder la clé publique. Par défaut, la clé privée est stockée dans le fichier
$HOME/.ssh/id_dsa.
La clé privée est enregistrée avec les permissions 600. La clé publique porte le même nom
de fichier suivi de ".pub", avec les permissions 644.
Administration réseau sous Linux/ SSH 45
Lors de la création de la clé, l'utilitaire demande une pass phrase qui est un mot de passe
pour protéger la clé privée (2eme protection). Cette pass phrase sert à crypter la clé privée.
La pass phrase sera alors demandée à chaque utilisation de la clé privée, c'est à dire à
chaque fois que vous vous connecterez en utilisant cette méthode d'authentification. Un
mécanisme appelé ssh-agent permet de ne pas rentrer le mot de passe à chaque fois (voir
les docs).
Il est possible de changer la pass phrase qui protège la clé privée avec la commande
ssh-keygen -p.
Agent SSH
Un agent SSH est un programme qui garde en mémoire des clés privées. Le principe est le
suivant :
• on lance un agent
• on lui ajoute des clés (si les clés sont cryptées, elles sont décryptées avec la passphrase
avant d'être ajoutées)
• à chaque connexion ssh, les clé de l'agent sont utilisées en priorité
Les avantages principaux sont :
• que la passphrase n'est demandée qu'une seule fois au moment où elle est ajoutée à
l'agent,
• et que l'agent est capable de faire suivre la clé sur plusieurs connexions.
Pour lancer un agent on utilise généralement une commande qui ressemble à :
ssh-agent /bin/bash
L'agent SSH lance un nouveau shell ("/bin/bash") dans lequel il sera actif. Il ne sera
utilisable qu'à partir de ce shell et dans les programmes qui y seront lancés.
Administration réseau sous Linux/ SSH 46
ssh-add [<fichier>]
Si on ne précise aucun fichier, il utilisera la clé par défaut ("~/.ssh/id_dsa" pour SSH 2).
Si la clé est crypté, la passphrase sera demandée et la clé décryptée sera ajoutée à l'agent.
Toutes les connexions SSH (avec ssh, scp...) lancées à partir de ce shell utiliseront l'agent
et ne demanderont donc plus la passphrase.
ou sur HOST2:
alors vous obtenez un tunnel sécurisé dans lequel vous pouvez passer toute connexion,
lesquelles seront automatiquement cryptées.
Sur HOST1, ssh -L p1:HOST2:p2 HOST2 signifie, que lorsqu'on se connecte au port p1, les
paquets sont retransmis vers le port p2 de la machine HOST2 via HOST2.
47
Les TP associés
• Modifiez le site par défaut pour qu'il utilise ce répertoire comme racine
• Vérifiez que ça fonctionne et que vous pouvez accéder à votre fichier
Administration réseau sous Linux/ TP Apache 48
Accès anonyme
• Créez un répertoire sur bigboss et créez un fichier dedans
• Activez l'accès anonyme dans ProFTPD et configurez-le pour que les utilisateurs
anonymes accèdent au répertoire que vous avez créé quand ils se connectent
• Connectez-vous en anonyme à partir de tiny et téléchargez le fichier que vous avez créé
• Connectez-vous avec dillo, toujours à partir de tiny
• Faites en sorte que les utilisateurs anonymes ne puissent pas créer ou modifier les
fichiers ou répertoires
Administration réseau sous Linux/ TP DHCP 50
Adresse fixe
• Configurez le serveur DHCP de bigboss pour qu'il attribue l'adresse 192.168.30.2 à tiny
• Vérifiez que ça fonctionne
Si vous gardez cette configuration, il faudra systèmatiquement démarrer bigboss avant tiny.
Sinon tiny n'obtiendra pas son adresse IP.
LOG
• Ajouter sur bigboss une règle dans la chaîne INPUT qui enverra sur la cible LOG tous les
paquets du protocole icmp.
• Afficher les règles de cette chaîne et vérifier que celle ajoutée apparaît.
• Lancer un ping de tiny vers bigboss
• Vérifier que les paquets sont affichés. S'ils ne le sont pas, ouvrir un terminal sur bigboss
et lancer la commande t a i l - f / v a r / l o g / k e r n . l o g
• Faire un ping de bigboss vers une adresse IP inconnue (par exemple 1.2.3.4) et constater
le résultat.
Administration réseau sous Linux/ TP Netfilter 51
Bloquer tiny
• Ajouter une règle au début de la chaîne INPUT pour jeter tous les paquets qui viennent
de tiny.
• Vérifiez que tiny ne peut plus faire de ping sur bigboss.
• Constater avec i p t a b l e s - v - L I N P U T que des paquets ont bien traversé la règle
ajoutée.
• Supprimer cette règle.
Bloquer HTTP
• Vérifier qu'on peut accéder au serveur HTTP de bigboss à partir de tiny et du poste hôte
(voir TP sur Apache)
• Ajouter sur bigboss une règle qui jette les paquets en entrée qui sont à destination du
port HTTP (80, ou www).
• Vérifier qu'on ne peut plus accéder au serveur HTTP ni à partir du poste hôte, ni à partir
de tiny.
• Ajouter une règle (avant la précédente) qui accepte tous les paquets qui viennent de tiny.
• Vérifier qu'on peut au serveur HTTP à partir de tiny, mais toujours pas à partir du poste
hôte.
Script de firewall
• Créer un script shell qui :
• efface toutes les règles de toutes les chaînes
• accepte en entrée ce qui est à destination du port HTTP
• jette tout ce qui vient de tiny
• Lancer ce script et vérifier que tiny peut accéder au serveur HTTP de bigboss, mais à
rien d'autre (pas de ping, FTP...)
• Placer ce script dans /etc/init.d et faire en sorte qu'il se lance au démarrage avec la
commande u p d a t e - r c . d (voir page de man)
• Redémarrer et vérifier que ça fonctionne
• Retirer le script pour les TP suivants et vider les tables
Administration réseau sous Linux/ TP TCP Wrapper 52
telnet
Vérifiez si dans inetd.conf vous avez accès à telnet. Puis essayez de vous connecter avec
telnet bigboss. Si ça ne fonctionne pas, vous avez loupé quelquechose auparavant...
hosts
Lisez les fichier hosts.allow et hosts.deny. Contiennent-ils des règles ? Autorisez tiny à se
connecter avec telnet sur bigboss avec une règle dans le fichier hosts.allow. Créez une
règle pour tout interdire dans le fichier hosts.deny. Dans ce cas, votre règle sur telnet sera
permise et tout le reste sera refusé. Pour des raisons de facilités par rapport aux prochains
TP, videz les fichiers hosts.allow et hosts.deny.
tcpdchk
Utilisez la commande tcpdchk -av. Que donne et fait cette commande ?
Administration réseau sous Linux/ TP Tcpdump 53
FTP
• lancer tcpdump sur bigboss pour que ce dernier récupère les trames du port 21 (source
ou destination) et affiche le contenu des paquets sous forme ASCII. Rediriger la sortie de
tcpdump vers un fichier nommé trames (avec ">")
• passer sur un autre terminal et initier une connexion ftp à partir de tiny, en entrant un
login et un mot de passe
• une fois la connexion ftp établie, quitter tcpdump (Ctrl+C)
• repérer dans le fichier trames les paquets, leur adresse source, leur adresse destination,
les options, l'entête, le message
• repérer les paquets contenant le login et le mot de passe
Utilisation de wireshark
Wireshark (anciennement Ethereal) est un outil d'analyse de traffic réseau, disponible pour
de nombreux OS et possédant une interface graphique. Lancez Wireshark.
Vous trouverez une barre d'outils et 3 fenêtres:
• Les différents boutons permettent de créer une nouvelle analyse du réseau, d'ouvrir un
fichier d'analyse, d'en fermer un, de l'imprimer, etc etc.
• La première fenêtre répertorie les trames reçues (source, destination, type de trames).
La seconde décrit le contenu d'une trame sélectionnée dans la première fenêtre. Quant à
la troisième fenêtre, elle donne le code hexadécimal de la même trame.
Vous pourrez aussi trouver une liste de menus : les classiques (file, edit...), un menu
capture (pour démarrer et éditer les filtres de capture) et entre autre un menu analyse
(affichage des filtres d'analyse, affichage des protocoles pris en compte). La liste des
protocoles est plutôt longue, jetez y un oeil !
Pour le reste (notamment pour les filtres) la documentation de Wirewhark est disponible à
www.wireshark.org.
A
Commençons par faire une nouvelle analyse.
Lancez wireshark en tache de fond à partir de tiny.
Cliquez sur le premier bouton start a new live capture. Une nouvelle fenêtre, permettant
d'ajouter des options, apparaît. Vous devez commencer par choisir une interface, dans
notre cas la carte Ethernet (eth1). Vous pouvez créer un filtre pour n'analyser que les
Administration réseau sous Linux/ TP Tcpdump 54
trames et paquets IP qui vous intéresse. Pour les autres options voir l'aide !
Ne créer aucun filtre et cliquez sur ok. La capture de trames commence. Connectez vous à
bigboss (par http ou ftp, ou samba ou ssh...) Stoppez la capture après la réception de
quelques trames.
Quelles sont les trames que vous avez reçues ? type, source ? que contiennent t-elles ?
B
Effectuez une nouvelle analyse avec wireshark en créant un filtre de capture :
Ce filtre permet de capturer uniquement les trames provenant de tiny contenant un flux ftp.
Wireshark permet de filtrer sur les adresses MAC, IP sur les ports... (voir l'aide). Connectez
vous sur votre serveur ftp. Récupérez le login et le mot de passe qu'ils ont utilisés.
Récupérez les paquets IP provenant de tiny avec tcpdump et placez les dans le fichier
trames3.
Une fois la commande tcpdump lancée, faites ftp localhost 1234 (sur tiny). Par le port
forwarding, vous aboutissez en fait sur le serveur FTP de bigboss, à travers une connexion
encryptée.
Entrez un login et un mot de passe, puis quittez. Recherchez le mot de passe dans le fichier
trames3 ?
mv vdn-0.1 vdn-0.1.old
Configuration réseau
• donner de manière permanente l'adresse IP 192.168.30.22 à l'interface eth1 de tiny
• faire en sorte qu'un "ping bigboss" de tiny fonctionne
• faire en sorte qu'un "ping tiny" de bigboss fonctionne
Firewall
Créer un script de firewall qui bloque tout sur bigboss sauf :
• tout ce qui passe par eth3 (en entrée et en sortie),
• les connexions SSH
• les accès à son serveur web,
• les connexions telnet venant de tiny
Lancer le script et vérifier qu'il bloque bien ce qu'il faut.
Administration réseau sous Linux/ TP Global 56
Administration réseau sous Linux/ Configuration réseau Source: http://fr.wikibooks.org/w/index.php?oldid=233695 Contributeurs: Geek hippie,
Michael Witrant
Administration réseau sous Linux/ NFS Source: http://fr.wikibooks.org/w/index.php?oldid=227077 Contributeurs: Michael Witrant, Tavernier, 1
modifications anonymes
Administration réseau sous Linux/ Samba Source: http://fr.wikibooks.org/w/index.php?oldid=223888 Contributeurs: Michael Witrant
Administration réseau sous Linux/ Apache Source: http://fr.wikibooks.org/w/index.php?oldid=235469 Contributeurs: Michael Witrant, 1
modifications anonymes
Administration réseau sous Linux/ FTP Source: http://fr.wikibooks.org/w/index.php?oldid=229661 Contributeurs: Michael Witrant, Sasa
Administration réseau sous Linux/ DHCP Source: http://fr.wikibooks.org/w/index.php?oldid=168884 Contributeurs: Michael Witrant
Administration réseau sous Linux/ Netfilter Source: http://fr.wikibooks.org/w/index.php?oldid=224535 Contributeurs: Michael Witrant, Sasa
Administration réseau sous Linux/ TCP Wrapper Source: http://fr.wikibooks.org/w/index.php?oldid=170833 Contributeurs: Michael Witrant
Administration réseau sous Linux/ Tcpdump Source: http://fr.wikibooks.org/w/index.php?oldid=170837 Contributeurs: Michael Witrant
Administration réseau sous Linux/ SSH Source: http://fr.wikibooks.org/w/index.php?oldid=232340 Contributeurs: Michael Witrant, 1 modifications
anonymes
Administration réseau sous Linux/ TP Apache Source: http://fr.wikibooks.org/w/index.php?oldid=171123 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP FTP Source: http://fr.wikibooks.org/w/index.php?oldid=171113 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP DHCP Source: http://fr.wikibooks.org/w/index.php?oldid=168896 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP Netfilter Source: http://fr.wikibooks.org/w/index.php?oldid=171112 Contributeurs: Michael Witrant, 4
modifications anonymes
Administration réseau sous Linux/ TP TCP Wrapper Source: http://fr.wikibooks.org/w/index.php?oldid=170835 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP Tcpdump Source: http://fr.wikibooks.org/w/index.php?oldid=171107 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP SSH Source: http://fr.wikibooks.org/w/index.php?oldid=171133 Contributeurs: Michael Witrant
Administration réseau sous Linux/ TP Global Source: http://fr.wikibooks.org/w/index.php?oldid=233694 Contributeurs: Michael Witrant,
Savant-fou, 1 modifications anonymes
Source des images, licences et contributeurs 58
Licence
Creative Commons Attribution-Share Alike 3.0 Unported
http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/