2013
Linux : Réseaux ADMINISTRATION DES RESEAUX LINUX OLIVIER D.
Table des matières 1
Construire le réseau .......................................................................................................................3
2
Installer les services d’infrastructure réseau ..................................................................................8
3
Samba : le service de partage Microsoft...................................................................................... 11
4
Le service DHCP .......................................................................................................................... 14
5
Le service DNS ............................................................................................................................ 15
6
NIS : Centraliser l’authentification Linux ...................................................................................... 17
7
Centraliser l’authentification Windows avec SAMBA ................................................................... 20
8
Sécuriser les accès : NETFILTER .................................................................................................. 22
9
NTP : Le service de temps ........................................................................................................... 26
10
LAMP : Linux, Apache, MySQL, PHP ........................................................................................ 27
D. Olivier – http://www.entraide-info.fr
2
1
Construire le réseau Les commandes sont dynamiques (volatiles), les fichiers restent après le redémarrage (mais demandent le redémarrage du service pour être pris en compte).
1.1
Configurer le réseau ndiswrapper
: outil qui permet d’utiliser les pilotes Windows XP pour les cartes réseau sur Linux.
Service réseau : /etc/init.d/networking restart|start|stop
Configuration des interfaces réseau : ifconfig
affiche les interfaces actives
affiche toutes les interfaces (des)active eth0
-a eth0 down|up
eth1:0 172.16.0.1 netmask 255.255.0.0
ajoute une adresse IP aliasée
$ ifconfig eth1 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.2
modifier la passerelle
route
route add default gw 10.21.255.254 route del –net 192.168.0.0 netmask 255.255.0.0
modif default GW supprimer route
$ route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.21.0.200
informations sur le paramétrage réseau
netstat
1.1.1
affiche la table de routage (=route) affiche les connexions réseau affiche les connexions réseau sans la résolution de nom
-r -a -n
Interrogation de serveurs DNS renvoie l’@IP du serveur DNS
dig
renvoie l’@IP de www.google.fr dig nic.fr MX|SOA renvoie les @IP des serveurs de messagerie (ou les SOA) dig -x 10.0.0.1 renvoie le nom d’hôte de 10.0.0.1 dig @ns1.nic.fr www.mabanque.fr interroge ns1.nic.fr pour l’@IP de www.mabanque.fr dig www.google.fr
host www.google.fr
renvoie l’@IP de www.google.fr
host 10.0.0.1 host -t NS nic.fr
renvoie le nom d’hôte pour 10.0.0.1 renvoie les enregistrements NS pour nic.fr
affiche le cache arp
arp
arp -s @IP @MAC
idem que tracert
traceroute tcpdump >/dev/tty5
moniteur réseau en ligne de commande (≅ wireshark)
Nota : sur Solaris : on utilise snoop au lieu de tcpdump
nmap (network
entrée manuelle dynamique volatile
mapper) scanne les réseaux :
Nota : en mode graphique, il est possible d’utiliser le logiciel zenmap. nmap -sP 10.11.0.50-254 ou nmap -sP 10.11.0.0/16 cibler l’écoute nmap -O 10.11.0.254 système d’exploitation nmap -v 10.11.0.254 scan détaillé
D. Olivier – http://www.entraide-info.fr
3
1.2
Le client DHCP client DHCP
dhclient
activer DHCP sur eth0 (dynamique, volatile) release de eth0 Attention : si on enlève eth0, exécute la commande pour toutes les interfaces dhclient eth0
dhclient -r eth0
/etc/network/interfaces
fichier de configuration statique des interfaces réseau
Attention : l’utilisateur ne peut pas modifier la config dynamique si /etc/network/interfaces n’est pas vide. auto eth0
démarre l’interface eth0 automatiquement
iface eth0 inet dhcp[|static]
configure eth0 en DHCP [|en statique]
/etc/dhcp3/dhclient[-eth0].conf
fichier de configuration de dhclient
…
le serveur DHCP reçoit le nom pour enregistrer DNS
send host-name "poste1" ; …
/var/lib/dhcp3/dhclient.leases
1.3
fichier de log des baux obtenus
Configurer le réseau sur un serveur /etc/init.d/networking restart
ou invoke-rc.d networking restart redémarre le service réseau.
/etc/hostname
nom de machine
/etc/hosts
nom de machine à renseigner aussi
/etc/network/interfaces
fichier de configuration IP statique
auto lo iface lo net loopback auto eth0 iface eth0 inet static adress 10.21.0.1 netmask 255.255.0.0 gateway 10.21.255.254
1.3.1
Nota : l’utilisateur ne peut plus intervenir sur la configuration de eth0
Résolution de noms Résolution des noms de machines : /etc/hosts :
127.0.0.1
localhost
10.0.0.1
contdomain dc001.stagiaires.local
Nota : le fichier est lu séquentiellement : la première occurrence gagne
Résolution des noms de réseaux : /etc/networks : Salle201
10.21.0.0
eni-ecole
172.16.0.0
/etc/nsswitch.conf
méthodes de résolution de noms (dans l’ordre)
hosts: files dns [nis] [ldap] […]
files=résolution locale / dns=résolution DNS
D. Olivier – http://www.entraide-info.fr
4
En cas de service DNS : /etc/resolv.conf : nameserver 10.0.0.1
1.4
nameserver 10.0.0.2
serveurs DNS
search eni-ecole.local stagiaires.local
suffixes DNS
domain betelgeuse.local
suffixe DNS principal (facultatif)
Les ports réseaux TCP : toujours un client, toujours un serveur
Port source et port de destination
0 à 1023 : ports bien connus, listés dans /etc/services trouver le port utilisé par telnet
cat /etc/services | grep telnet
Nota : liste des ports connus : http://www.iana.org/assignments/port-numbers
1.5
Le super serveur xinetd xinetd sert à la gestion des services réseaux à la demande
Fonctionnement global de xinetd
1.6
/etc/xinetd.conf
configuration globale de xinetd
/etc/xinetd.d/vsftp
configuration du service ftp
Les services RPC : Appel de Procédures Distantes Avec RPC, les programmes sont indépendants de la couche IP, RPC fait le lien rpcbind associe les numéro de programmes RPC à des numéro de ports. Cette table est générée lors du boot par rpcbind et est du type : programme#, port#, service Exemple : 100012/1 udp 33001 sprayd
rpcinfo -p /etc/rpc
relève les mappages faits par rpcbind liste de programmes rpc numéros de programmes
Nota : pour lancer un service RPC, il doit être défini dans le fichier /etc/rpc + avoir un n° de port via rpcbind
D. Olivier – http://www.entraide-info.fr
5
Fonctionnement de rpcbind
Nota : rpcinfo -p 10.0.0.1
1.7
affiche rpcinfo -p depuis 10.0.0.1
tcp-wrapper : Filtre d’accès La syntaxe des fichiers /etc/hosts.allow et /etc/hosts.deny est du type : daemon1 daemon2 … : client1 client2 … [ : spawn
]
On peut remplacer client par hotsname ou adresseIP On peut remplacer daemon et client par des mots spéciaux
Mots spéciaux :
: tous les daemons|tous les clients client) : nom d’hôte local (pas DNS) KNOWN (côté client) : nom dont on peut résoudre l’adresseIP UNKNOWN (côté client) : nom dont on ne peut pas résoudre l’adresseIP PARANOID (côté client) : machines dont le nom et l’adresseIP ne correspondent pas (par rapport à la résolution) En plus de ça, on peut rajouter une variable EXCEPT : sauf EXCEPT UNKNOWN) ALL
LOCAL (côté
Deux approches pour le filtrage tcp-wrapper :
sur un pare-feu : restrictif : o ajouter une règle de refus général dans hosts.deny o on utilisera hosts.allow pour filtrer plus précisément dans un LAN : permissif (par défaut pour tcp-wrapper) : o on utilisera hosts.allow pour filtrer plus précisément
Exemple de filtrage restrictif : 1. vi /etc/hosts.deny ALL : ALL
2. vi /etc/hosts.allow vsftpd : .stagiaires.local
vsftpd accepte donc tous les clients qui finissent par .stagiaires.local
telnetd : 10.21.
telnetd accepte tous les clients commençant par 10.21.
popd,smtpd,imapd : 10.21. EXCEPT 10.21.0.254 gssftpd : 172.16.0.0/255.240.0.0
réseau/masque
D. Olivier – http://www.entraide-info.fr
6
Fonctionnement du filtrage restrictif de tcp-wrapper
1.8
Activer le routage statique Rappel : netstat –r afficher la table de routage Activer le routage (dynamique et volatile) : echo 1 > /proc/sys/net/ipv4/ip_forward
Attention : Penser à l’espace avant >
0
= pas de routage (par défaut)
1
= routage activé
Activer le routage statiquement : vi /etc/sysctl.conf net.ipv4.ip_forward = 1
Il faut donc enlever le # qui est présent par défaut (décommenter) Ajouter des routes (dynamique et volatile) : route add -net 10.11.0.0 netmask 255.255.0.0 gw 10.21.0.250
1.9
Ajouter des routes statiquement (debian : Ubuntu) $ vi /etc/network/interfaces
Ajouter une ligne à la fin du fichier : up route add –net 10.11.0.0 netmask 255.255.0.0 gw 10.21.0.250
Attention : sous RedHat, /etc/sysconfig/network-scripts/route-eth0 (pour les routes attachées à eth0) se configure ainsi : 10.11.0.0/16 via 10.21.0.250
D. Olivier – http://www.entraide-info.fr
7
2
Installer les services d’infrastructure réseau
2.1
Proxy
Principe de fonctionnement d’un proxy
Le but d’un proxy est de mettre en cache les sites http/ftp … à mesure que les clients font des demandes. Le proxy doit donc pointer vers des serveurs DNS, la passerelle vers l’extérieur … et doit disposer d’un service proxy. On utilise SQUID comme service de serveur proxy, mais il en existe d’autres. Attention à l’ordre des règles dans squid.conf ! La première règle qui convient gagne !
Configuration du proxy côté serveur : 1. Editer le fichier /etc/squid/squid.conf : visible_hostname proxy
# hostname du proxy
http_port 3128
# port d’écoute par défaut avec squid
cache_mem 20 MB
# taille du cache
cache_log /var/log/squid/cache.log
# emplacement du journal
acl sirius src[|dest] 192.168.0.0/24 192.168.1.0/24 # on définit sirius comme étant le nom des sources 192.168.0.0/24 et 192.168.1.0/24 acl localhost src 127.0.0.1
# même chose : localhost est 127.0.0.1
http_access allow sirius
# sirius est autorisé pour le http
http_access allow localhost
# localhost est autorisé pour le http
nameserver 10.0.0.1
# le proxy doit pointer vers un NS
gateway 10.21.255.254
# le proxy doit avoir une GW
Le NS (serveur de résolution de nom) est défini dans le fichier /etc/resolv.conf La GW (passerelle) est définie dans le fichier /etc/network/interfaces 2. Test de la configuration: squid
si ça démarre c’est super, sinon on résout les erreurs !
Configuration du proxy côté client :
Le client ne fait pas la résolution des URL, donc pas besoin de DNS, ni même de GW Après le login, les scripts (*.sh) contenus dans /etc/profile.d/ sont exécutés.
1. vi /etc/profile.d/proxy.sh export http_proxy http://192.168.0.254:3128/ export ftp_proxy ftp://192.168.0.254:3128/
adresseIP du proxy = port d’écoute 2. Pour prendre en compte les modifs : sudo –i
(passer root)
chmod u+x proxy.sh ./proxy.sh
3. Savoir si les modifs ont été prises en compte : env|grep proxy doit renvoyer les 2 lignes Nota : en interface graphique, on configure le proxy d’internet explorer / firefox … D. Olivier – http://www.entraide-info.fr
8
2.2
La gestion des paquets avec Ubuntu Red-Hat :
*.rpm | rpm | yum
Debian (Ubuntu) :
*.deb | dpkg | apt-get (depots configures dans /etc/apt/sources.list)
vi /etc/apt/sources.list
:
deb xxxxxxxxxxxxxxxxxxxxxxx
(dépots d’autoinstall)
deb-src xxxxxxxxxxxxxxxxxxx
(dépots d’autoinstall des sources)
Il n’y a pas besoin des dépots d’autoinstall des sources, donc, dans vi on exécute la commande :g/^deb-src/s/^/#/
commandes utilisées avec aptitude (oublier apt-get, on est des pros, on utilise aptitude)
2.3
Mise à jour de la base de connaissance des paquets/dépots aptitude full-upgrade Mise à jour de tous les paquets du système aptitude search flash Recherche par mots clés (ici ‘flash’) aptitude show flashplugin_nonfree Infos sur le paquet ‘flashplugin_nonfree’ aptitude install flashplugin_nonfree Installe le paquet ‘flashplugin_nonfree’ aptitude remove|purge flashplugin_nonfree Désinstalle dpkg –L liste des fichiers installés avec ce paquet aptitude update
Administrer les machines à distance On utilise SSH, ainsi les mots de passe ne circulent pas en clair. On peut encapsuler n’importe quel protocole dans un tunnel SSH. 1. Côté serveur : installer openssh-server (par défaut, écoute sur le port tcp22) 2. Côté client : openssh-client (préinstallé) Pour se connecter : $ ssh 192.168.1.1
nota : l’utilisateur doit avoir un compte à son nom sur la machine distance ssh –l administrateur 192.168.1.1 ou ssh [email protected]
Explorateurs de fichiers distants :
Gnome : nautilus ssh://192.168.1.1 Kde : konqueror fish://192.168.1.1 Xfce : thunar Pour windows : putty
Connexion graphique :
Vnc (fonctionne sur tous les OS) existe de base sur Unix/Linux. Il faut juste le paramétrer Rdesktop : rdesktop –k fr 192.168.0.3
Le service serveur nécessite un logiciel client adapté pour communiquer
Nota : Webmin est une interface d’administration du serveur (fonctionne sur le port 10000 en https) mais le produit est buggé
D. Olivier – http://www.entraide-info.fr
9
2.4
NFS : Service de partage de fichiers Unix Sur Windows : A: C: D: Z: système de fichiers (bien différencié avec les lettres de lecteurs) Sur Unix, le FS distant est rattaché à la racine, on ne le différencie pas (exemple : /data)
2.4.1
Installation et paramétrage du serveur NFS 489B
1. Editer /etc/exports : /export/public
*(sync,ro)
/export/admin
192.168.0.2(rw)
Dossier à partager machines_autorisées(options)|machines_autorisées(options) … 2. Recharger le service NFSserveur : En général : nfs-kernel-server reload En dynamique : exportfs –o ro *:/home/dergand/public partage un répertoire Client NFS :
NFS ne fonctionne pas sous Windows (par défaut) sudo showmount -e 192.168.0.1 affiche les partages de 192.168.0.1 sudo showmount affiche les partages utilisés localement
Montage dynamique et volatile : $ mount -t nfs serveur:/chemin/partage /point_de_montage/local
Montage statique :
Editer le fichier /etc/fstab : serveur:/chemin/partage /repertoire/local nfs defaults 0 0
Nota : le chemin local doit avoir été créé avec mkdir -p puis mount -a
D. Olivier – http://www.entraide-info.fr
10
3
Samba : le service de partage Microsoft Samba permet le partage de fichiers et d’imprimantes ainsi que l’intégration à un domaine (NT/AD) existant, intégration à un annuaire LDAP.
Problématique liée à Samba
Rappel NetBios :
Différences NetBIOS Unix et Microsoft
Rappel : les fichiers hosts et lmhosts permettent la résolution de noms NetBIOS
3.1
Installer le serveur Samba smbd et nmbd sont les daemons indispensables au service Samba winbind est à utiliser dans le cas d’un serveur Samba utilisant une authentification distante Commandes côté client :
nmblookup smbpasswd findsmb testparm testparm -v
interroger un serveur wins gestion comptes et mots de passe check du traffic netbios check la configuration de /etc/samba/smb.conf affiche les valeurs par défaut de /etc/samba/smb.conf
smbd et nmbd sont géré par upstart. Il est faut donc utiliser status|stop|start smbd|nmbd
3.2
Configurer Samba Le fichier /etc/samba/smb.conf doit être sauvegardé en .orig pour ensuite créer un nouveau fichier smb.conf vide Nota : après toute modification de smb.conf, il faut relancer les services smbd et nmbd [nom_du_partage] path = /export/distrib [global]
pour mettre les paramètres généraux (ex. : writable = no)
[netlogon]
partage créé pour l’utilisation des scripts d’ouverture de session
[homes]
créé un répertoire d’accueil pour les utilisateurs authentifiés
[printers]
partage toutes les imprimantes Unix
Attention au nom des partages répertoires / imprimantes : il ne faut pas de nom en commun D. Olivier – http://www.entraide-info.fr
11
Exemple : [global] Workgroup = GROUP1 Netbios name = SRV1 Security = user
(par défaut)
Encrypt password = yes
(par défaut)
≤Win95sr2 : non crypté ≥Noyau NT : chiffré NTLM
[distrib] Path = /samba/distrib
3.3
Writeable = yes
@group1 : groupe autorisé à se connecter
Valid users = @group1 admin
&Group1 : groupNIS
Gestion des comptes utilisateurs Ajouter guest | nobody (même compte qui sert pour les utilisateurs anonymes) L’utilisateur toto doit être déclaré sur le serveur dans /etc/passwd ainsi que dans samba pdbedit
gérer les utilisateurs Samba
pdbedit -L
lister les utilisateurs Samba
1. useradd epursan 2. pdbedit -a epursan pdbedit -Lv epursan
3.4
Le client Samba
3.4.1
Sur linux
(pas obligé de faire passwd epursan) (ou smbpasswd pour les vieilles versions de Samba) informations de l’utilisateur
1. Installer smbfs : smbfs ajoute les commandes mount.smb et mount.cifs » mount -t cifs -o user=dergand,domain=stagiaires,iocharset=utf8,uid=olivier //server1/public /mnt
Nota : sur Nautilus et Dolphin on utilise smb://fic44-1/distrib 2. Installer smbclient : findsmb affiche les postes répondant aux requêtes smb nmblookup -M WORKGROUP trouve le master browser de WORKGROUP nmblookup -A 10.21.100.15 trouve le nom NetBIOS
3.4.2
Sur Windows
net use G: \\PC1\partage * /user:PC1\administrateur net user /delete G: net use
D. Olivier – http://www.entraide-info.fr
se connecter à un partage se déconnecter d’un partage voir les partages
12
3.5
AutoFS : service côté client Exemple : $ dd if=/dev/cdrom of=/import/dico.iso $ sudo mount -t iso9600 -o loop /import/dico.iso /dico
3.5.1
Problème : il ne faut pas surcharger la fstab, et l’utilisateur doit pouvoir se simplifier la vie ls /dico créé un automontage grace à autofs (le fait de lister monte le partage)
Tables d’automontage Nota : on met les options en fin de ligne Editer le fichier /etc/auto.master (table maître : indique le chemin des tables d’automontage) :
3.5.2
/toto
/etc/auto.indirect --ghost
ghost créé des répertoires virtuels, les rend visible
/-
/etc/auto.direct --timeout
/- indique une table directe
Tables directes Les points de montages sont entièrement définis dans le fichier de table directe. Editer le fichier /etc/auto.direct : /import/partage1
192.168.15.15:/export/partage
Point de montage
3.5.3
FS à monter
Tables indirectes Les points de montages sont relatifs au chemin défini dans auto.master Editer le fichier /etc/auto.indirect : partage2
192.168.10.10:/export/compta
/toto/partage2
FS à monter
partage3
-fstype=nfs,rw 192.168.10.10:/export/compta
/toto/partage3
Options et FS à monter
Si on multiplie les partages à créer par le nombre d’utilisateurs, ça peut vite devenir le bordel
On utilise donc * et &, qui permettent de faire des raccourcis : Editer le fichier /etc/auto.master : /home
/etc/auto.home
Editer le fichier /etc/auto.home :
toto
192.168.0.1/export/home/toto
*
192.168.0.1/export/home/&
Ainsi, /home/xyz pointe donc vers 192.168.0.1/export/home/xyz D. Olivier – http://www.entraide-info.fr
13
4
Le service DHCP Paquet à installer : dhcp3-server Daemon : dhcpd3 Configuration : /etc/dhcp3/dhcpd.conf Baux accordés : /var/lib/dhcp3/dhcpd.leases /usr/sbin/dhcpd3 –d
4.1
tous les messages s’affichent à l’écran (mode debug)
Le fichier de configuration Editer le fichier /etc/dhcp3/dhcpd.conf : ddns-update-style none|interim;
interim : DNS mis à jour par DCHP ; none : non DNS
default-lease-time 604800;
durée de bail = 1semaine
max-lease-time 2592000;
durée max de bail = 1mois
option domain-name-server 10.10.0.1,10.0.0.2;
adresse des serveurs DNS attribués aux clients
option domain-name "eni.local betelgeuse.fr";
nom de domaines DNS (pour les clients)
subnet 192.168.1.0 netmask 255.255.255.0 {}
déclaré mais non configuré, autorise l’interface
subnet
étendue de réseau
192.168.0.0 netmask 255.255.255.0 { range 192.168.0.50 192.168.0.80; range 192.168.0.90 192.168.0.100; option routers 192.168.0.254[,…];
passerelles attribuées aux clients
} réservation d’une @ pour imp_01
host imp_01 { hardware ethernet 00:11:22:33:44:55; fixed-adress 192.168.0.22; option routers 192.168.0.254; }
4.2
Le client dhcp dhclient Editer le fichier /etc/network/interfaces : auto eth0 iface eth0 inet dhcp
On peut laisser toute la configuration réseau dessous, il n’en tiendra plus compte Baux obtenus : /var/lib/dhcp3/dhclient[.eth0].leases
Editer le fichier /etc/dhcp3/dhclient.conf : send hostname “poste01”;
4.3
Le relais DHCP dhcp3-relay Daemon : dhrelay3 dhrelay3 –d –i eth0 –i eth1 –d 192.168.0.1 Editer le fichier /etc/default/dhcp3-relay : SERVERS = "192.168.1.1"
serveurs DHCP
INTERFACES = "eth0 eth1"
interfaces à l’écoute (côté clients + côté serveur)
OPTION = ""
D. Olivier – http://www.entraide-info.fr
14
5
Le service DNS DNS est :
dynamique : enregistrements ajoutés uniques + rapidement disponibles pour tous répliqué : les infos existent en plusieurs exemplaires hiérarchisé : arborescence racine TLD domaines hôtes distribué : plusieurs zones contenant chacune des enregistrements
Rôles :
Paramétrage du serveur DNS Paquet à installer : bind Daemon : named
options { directory “/var/named”; }; zone “.” { type hint; file “root.cache”; }; zone “0.0.127.in-addr.arpa” { type master; file “127.0.0.inv”; }; option { …; forward first; forwarders {66.55.44.33;[…;] }; }; …
Serveur primaire
Serveur de redirection
Serveur de cache
Editer le fichier /etc/bind/named.conf :
zone type file }; zone type file };
Serveur secondaire
5.1
Serveur cache : tout serveur DNS fait serveur cache diminue la bande passante Redirections : vers DNS FAI Serveur primaire sur une seule zone (celle de son réseau) autorité + RW Serveur secondaire sur plusieurs zones autorité + RO
“mondomaine.com” { master; “mondomaine.com“;
zone “autredomaine.com” { type slave; file “mondomaine.com“; masters {11.0.0.1; }; }; zone “0.11.in-addr.arpa” { type slave; file “11.0.inv“; masters {11.0.0.1; }; };
emplacement des fichiers de zone
emplacement des serveurs racine ftp://ftp.rc.internic.net/domain/named.root zone inversée localhost OBLIGATOIRE
adresse IP des redirecteurs
SOA
“2.10.in-addr.arpa” { master; “10.2.inv“;
ne pas créer le fichier ( ! bind = rw) emplacement du NS maitre
D. Olivier – http://www.entraide-info.fr
15
5.2
Les fichiers de zones
pour stocker une partie des autres fichiers de zones pour attacher le suffixe aux enregistrements durée de vie des enregistrements. A mettre pour éviter les
$INCLUDE $ORIGIN eni.local $TTL 86400
avertissements @ IN 1 21600 3600 604800 86400 ) IN IN ns1 IN ns2 IN www IN IN
5.2.1.1
NS NS A A CNAME MX
ns1.mondomaine.com. admin.mondomaine.com. ( ; n° de série. Penser à l’incrémenter à chaque modif. ; fréquence de demande de MàJ des slaves ; temps d’attente avant re-tentative de connexion ; temps d’expiration ; temps de validité des informations négatives ns1.mondomaine.com. ns2.mondomaine.com. 10.2.0.1 10.2.0.2 ns1.mondomaine.com. 10 mail.mondomaine.com. priorité < préférée
Fichiers de zones inverses : 74B
@
IN
SOA
ns1.mondomaine.com.
1
21600
3600
604800 86400 )
IN
NS
ns1.mondomaine.com.
IN
NS
ns2.mondomaine.com.
IN
PTR
ns1.mondomaine.com
1.0
5.3
SOA
admin.mondomaine.com. (
1.0 hote x.y.0.1/16
Créer une zone déléguée Editer le fichier /etc/bind/named.conf : zone "eni.fr" { type master; forwarders{ } ; … }; ecole
IN
NS
ns.ecole.fr
ns.ecole
IN
A
10.0.2.5
délégation de la zone ecole.eni.fr
D. Olivier – http://www.entraide-info.fr
16
6
NIS : Centraliser l’authentification Linux
NIS centralise les fichiers
6.1
Introduction Dans /etc, sur le serveur NIS, il y a passwd – shadow – group : cela permet l’authentification distante Domaine NIS non hiérarchisé, pas de (.) dans le nom. Exemple : betelgeuse_nis Un client est sur un domaine et un seul ! Le fichier nsswitch.conf définit le comportement du client NIS
6.1.1
Les tables NIS se trouvent dans /var/yp/
Configurer le serveur maître NIS 50B
Client NIS
Serveur maitre NIS
Serveur esclave NIS
Service NIS Daemon ypbind
ypserv
ypserv
rcp.yppasswdd (mot de passe) rpc.ypxfrd (transfers serveurs)
domainname betelgeuse_nis
3. installer NIS 4. domainname renvoit le nom du domaine NIS 5. maitre NIS : /etc/default/nis : NISSERVER=master
6. client NIS : /etc/yp.conf : domain betelgeuse_nis server srv-lan
7. 8. 9. 10.
sécuriser maitre NIS : /usr/lib/yp/ypinit –m génère les tables NIS maitre NIS : relancer de daemon ypserv yptest – ypcat – ypmatch – ypwhich
D. Olivier – http://www.entraide-info.fr
17
6.2
Configurer le serveur maître NIS 1. Rajouter les utilisateurs : $ useradd –m dergand 2. Modifier le fichier /etc/passwd : Changer /home/dergand en /users/dergand 3. Editer le fichier /etc/auto.master : /users
/etc/auto.home
4. Editer le fichier /etc/auto.home : *
ys:/home/&
5. Editer le fichier /etc/exports : /home
*(rw,sync)
6. Editer le fichier /var/yp/Makefile : ALL += auto.master auto.home
7. $ make –C /var/yp met à jour les tables NIS 8. Relancer les services autofs et nis
6.3
Configurer les clients 1. Vérifier que les fichiers hosts sont renseignés, tester la résolution non d’hôte en adresseIP $ domainname betelgeuse-nis
2. Editer le fichier /etc/defaultdomain : betelgeuse-nis
3. Installer NIS 4. Editer le fichier /etc/nsswitch.conf : passwd:
compat nis
group:
compat nis
shadow:
compat nis
automount: nis hosts:
files nis dns
5. Editer le fichier /etc/yp.conf : domain betelgeuse-nis server srv-lan
6.4
Tester $ su -
6.5
Interroger un serveur NIS yptest
1 test fail
ypwhich
nom du serveur NIS
ypcat –x
nom des tables NIS
ypcat group
affiche la table group
yppasswd
modifier le mot de passe (rpc.yppasswdd fait les mises à jours serveurs)
D. Olivier – http://www.entraide-info.fr
18
6.6
Configurer un esclave NIS Sur le serveur maitre :
ajouter les noms des esclaves NIS Vérifier la résolution du nom d’hôte esclave Editer le fichier /etc/yp.conf : /usr/lib/yp/ypinit –m
domain betelgeuse-nis server srv-dmz
(pour ajouter l’esclave)
Editer le fichier /var/yp/Makefile : active la poussée des données vers slaves
NOPUSH=false
Sur le serveur esclave :
Installer NIS Configurer domainname + /etc/defaultdomain Editer le fichier /etc/yp.conf : domain betelgeuse-nis server srv-lan domain betelgeuse-nis server srv-dmz
Editer le fichier /etc/default/nis : NISSERVER=slave
6.7
/usr/lib/yp/ypinit –s
récupère les tables NIS
Mises à jour des serveurs sudo make –C /var/yp
met à jour les tables NIS
Mise à jour des esclaves NIS :
via la crontab, ajouter la planification pour /usr/lib/yp/ypxfr_xxxx
D. Olivier – http://www.entraide-info.fr
19
7
Centraliser l’authentification Windows avec SAMBA
Utilisation du service SAMBA
Editer le fichier /etc/samba/smb.conf : [global] active l’authentification centralisée
security = user
obligatoire dans ce cas là
workgroup = DOM1
nom du domaine
time server = yes
pour Windows seulement
wins support = yes
active serveur WINS
7.1
domain logons = yes
Intégrer les postes de travail au domaine Sur le serveur :
sudo useradd poste1$ sudo pdbedit –a –m –u poste1$ sudo pdbedit –a root
ajouter l’ordi client ajouter l’ordi client dans la base Samba compte administrateur sur samba (pour intégrer)
Sur le client Windows :
7.1.1
Intégrer le poste au domaine
Gérer les profils itinérants 503B
Activer
[global] logon path = \\%N\%U\profile
emplacement du profil itinérant
[homes] writable = yes
Désactiver
browseable = no
7.2
[global] logon path =
Utiliser les scripts d’ouverture de session [global] Logon script = logon.cmd [netlogon] path = /toto/mes-scripts browseable = no writeable = yes
D. Olivier – http://www.entraide-info.fr
20
7.3
Création d’un fichier de script $ vi logon.bat net use g: \\srv1\distrib net use lpt2 \\srv1\lexmark net time \\samba /set /yes
Attention : les fichiers créés sous Unix/Linux ne sont pas compatibles avec MS-DOS donc :se ff=dos $ vi od.txt bonjour tout le monde $ od –c od.txt b o n j o u r \ n t o u t vi od.txt
l e
m o n d e \ n
puis exécuter :se ff=dos puis :wq
$ od –c od.txt b o n j o u r \ r \ n t o u t
l e
m o n d e \ r \ n
D. Olivier – http://www.entraide-info.fr
21
8
Sécuriser les accès : NETFILTER Paquet : iptables Nota : certaines règles ont été conçues pour ipchains et fonctionnent différemment iptables permet :
filtrage de paquets (IP) et de trames (MAC) routage NAT marquage de trames
Configuration du noyau avec SYSCTL (logiciel de personnal firewall) :
Fonctionnement de sysctl pour filtrer les flux réseaux
Editer le fichier /etc/sysctl.conf : net.ipv4.ip_forward=1
activer le routage
net.ipv4.conf.all.rc_filter=1
protection spoofing
net.ipv4.tcp.syncookies=1
protection syn-flood
net.ipv4.tcp_max_syn_backlog=1024
8.1.1
Principe de fonctionnement (points d’accroche / hook) : 504B
Vocabulaire des points d’accroche
3 tables :
filter (FORWARD / INPUT / OUTPUT) nat (PREROUTING / POSTROUTING / OUTPUT ) mangle ( FORWARD / INPUT / OUTPUT / PREROUTING / POSTROUTING )
D. Olivier – http://www.entraide-info.fr
filtrage routage marquage
22
8.1.2
La table NAT
NAT source, pour aller vers l’extérieur
Nat dest, pour aller vers l’intérieur : publication de services
Nat source : on change l’adresse source. Pour aller vers l’extérieur. ( + Pat : on change le n° de port) Nat Dest : on change l’adresse de dest. pour aller vers l’intérieur (publication de services) Penser à rajouter dans DNS : www.monsite.fr A 99.9.9.9
Les cibles
table = filter pt d’accrochage = INPUT cible = … … action= DROP
ACCEPT
Filtrage
iptables –t filter –A INPUT … … -j DROP
MASQUERADE
Nat
8.2
: accepté : refusé, pas d’explication REJECT : refusé, explication pour l’émetteur LOG : pour logger DROP
: pour du source Nat, plus simple à mettre en place (POSTROUTING) : pour du source Nat (POSTROUTING) DNAT : pour du dest. Nat (PREROUTING) SNAT
D. Olivier – http://www.entraide-info.fr
23
Comportement par défaut : Si une trame arrive et n’est concernée par aucune règle, elle suit la « policy » (comportement par défaut). Nota : par défaut, les trames sont acceptées : POLICY ACCEPT. Nous on fait POLICY DROP : seuls les flux clairement autorisés passent
8.3
Comment utiliser iptables ? Créer les scripts Exécuter les scripts jusqu’à obtention de la configuration souhaitée service iptables save
écrit dans le fichier /etc/sysconfig/iptables
Vérifier chkconfig --list iptables emplacement des scripts de tables iptables
/etc/network/if-pre-up.d/*
8.4
Les tables sont lancées avant la config. réseau Attention : les fichiers ne doivent pas comporter de . Penser au droit x pour l’exécution des scripts
Premières règles iptables –A … écrit
8.4.1
la règle dans le(s) fichier(s). -A ajoute une règle
Exemples de règles par défaut Vidage des règles : $ iptables –F
Création des POLICY : mode restrictif pour la table filter [-t filter] : $ iptables –P OUTPUT DROP $ iptables –P INPUT DROP $ iptables –P FORWARD DROP
Autoriser l’interface de loopback (sinon besoin de doubler chaque règle pour lo) : $ iptables –A INPUT –i lo –j ACCEPT $ iptables –A OUTPUT –o lo –j ACCEPT
Autoriser depuis eth0 les trames vers ssh : $ iptables –A INPUT –i eth0 –p tcp --dport 22 –j ACCEPT $ iptables –A OUTPUT –o eth0 –p tcp --sport 22 –j ACCEPT
Autoriser depuis eth0 les trames icmp (ping) : $ iptables –A INPUT –i eth0 –p icmp –j ACCEPT $ iptables –A OUTPUT –o eth0 –p icmp –j ACCEPT
Autoriser les trames en provenance d’eth0 vers eth2 à destination de tcp:80 : $ iptables-A FORWARD –i eth0 –o eth2 –p tcp --dport 80 –j ACCEPT $ iptables-A FORWARD –i eth2 –o eth0 –p tcp --sport 80 –j ACCEPT
Autoriser les trames en provenance de eth0 vers eth2 à destination de NetBIOS : $ iptables-A FORWARD –i eth0 –o eth2 –p tcp –m multiport --dport 137:139,445 –j ACCEPT $ iptables-A FORWARD –i eth2 –o eth0 –p tcp –m multiport --sport 137:139,445 –j ACCEPT
Autoriser les trames en provenance de 192.168.10.0/24 vers 172.16.0.2 à destination de SQL : $ iptables-A FORWARD –s 192.168.10.0/24 –d 172.16.0.2 –p tcp --dport 1433 –j ACCEPT $ iptables-A FORWARD –s 172.16.0.2 –d 192.168.10.0/24 –p tcp --sport 1433 –j ACCEPT
D. Olivier – http://www.entraide-info.fr
24
8.5
Conntrack : suivi de l’état des connexions
Exemple de connexions
NEW
: SYN
: SYN-ACK : bascule de n° de port (20 21) INVALID : aucun des 3 : trame non conforme ESTABLISHED RELATED
Autoriser les trames en provenance de (et initiées par) eth0 vers eth1 à destination de http/https : $ iptables-A FORWARD –i eth0 –o eth1 –p tcp –m multiport --dport 80,443 -m state --state NEW,ESTABLISHED,RELATED –j ACCEPT $ iptables-A FORWARD –i eth1 –o eth2 –p tcp –m multiport --sport 80,443 -m state --state ESTABLISHED,RELATED –j ACCEPT
8.6
Le Nat Nota : par défaut : -t nat –P … ACCEPT Vidage des règles : $ iptables –t nat –F
Source Nat vers eth1 : $ iptables –t nat –A POSTROUTING –o eth1 –j MASQUERADE
Nota : avec Nat, il n’y a pas besoin de faire la règle réciproque
iptables –L
liste les tables iptables
iptables-save
liste les tables iptables à l’écran (mieux)
-h
à n’importe quel niveau
apporte de l’aide sur l’option attendue
D. Olivier – http://www.entraide-info.fr
25
9 9.1.1
NTP : Le service de temps Organisation 510B
En entreprise on ne trouve que des NTP de niveaux 3 et supérieurs.
Attention : chaque NTP doit être synchronisé sur un serveur de niveau supérieur
9.2
Configuration NTP côté serveur Service à installer : ntp Démon : ntpd Editer le fichier /etc/defaut/rcS : il faut que le serveur soit réglé en UTC
UTC=yes
Editer le fichier /etc/ntp.conf : liste des serveur de niveau sup.
server 0.fr.pool.ntp.org [...] restrict 127.0.0.1
9.3
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
peuvent se mettre à jour
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
mais pas modifier
Configuration NTP côté client Editer le fichier /etc/ntp.conf : [...] serveur faisant autorité
server ntp.eni-ecole.net [...]
9.4
Commandes utiles ntptrace
renvoie les infos sur la machine (stratum = niveau)
ntptrace ntp.odehecq.fr
renvoie le niveau de strate du serveur. 1-15 : synchro / 16 : no
D. Olivier – http://www.entraide-info.fr
26
10
LAMP : Linux, Apache, MySQL, PHP tasksel
liste un ensemble cohérent de paquets, pour les installer ensuite
daemon : apache2
10.1
Les modules Apache est un serveur modulaire : il fonctionne sur la base de modules qu’on ajoute. apache2 –l
liste des modules compilés avec le noyau
apache2 mod_so.c
rechargement dynamique des modules SO
apache2 –m
liste des modules qui peuvent être chargés statiquement|dynamiquement
Editer le fichier /etc/profile.d/apache2.sh : export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data
apache2 s’installe dans /etc/apache2/ ./mods-available/(emplacement des modules stockés) ./mods-enabled/(emplacement des modules actifs, liens vers mods-available) a2enmod imagemap
rend disponible le module imagemap
a2dismod mime-magic
rend indisponible le module mime-magic
Nota : tous les modules apache2 sur Debian commencent par libapache2-mod-
10.2
Les fichiers de configuration httpd.conf
utilisé par Apache1, vide pour Apache2
ports.conf
ports TCP pour lesquels Apache sera à l’écoute par défaut
apache2.conf
fichier principal de configuration
(contient des INCLUDE)
./sites-available/(sites stockés) ./sites-enabled/(lien vers les sites actifs)
10.3
Les conteneurs ServerRoot "/etc/apache2" … … … …
10.4
exemple d’instruction, ici la racine apache2
Les instructions exécutées sous conditions IfModule : … …
que si le module mpm_prefork_module est chargé
IfDefine : … …
que si le daemon est lance avec le paramètre httpd –D Maintenance
D. Olivier – http://www.entraide-info.fr
27
IfVersion : =2.1> … …
10.5
que si la version du serveur qui s’exécute est ≥ 2.1
Les instructions exécutées pour une arborescence Directory : … …
en fonction de l’arborescence réelle
Files : … …
tous les fichiers “privé.html” quelle que soit l’arborescence
Location : … …
s’applique pour le repertoire virtuel “/private”
Les sites :
/etc/apache2/sites-available/ /etc/apache2/sites-enabled/ a2ensite fichier a2dissite
(sites stockés) (sites actifs) activer un site désactiver un site
Attention : penser à faire un sudo invoke-rc.d apache2 reload
10.6
Méthode d’hébergement des sites 1. ajout des @IP à l’interface (IP Aliasing) 2. On change le numéro de port pour le site exemple : 81-83 site1-site3) 3. On crée des noms d’hôtes virtuel exemple : www.site1.com site1 www.site2.com site2)
10.6.1
Créer un site par Adresses IP : sudo ifconfig eth0:site1 192.168.1.2
ip aliasing
/etc/apache2/sites-available/site1 DocumentRoot /var/www/site1
10.6.2
chemin du site
Créer un site par numéro de port : /etc/apache2/site-available/site2 DocumentRoot /var/www/site2
port choisi dans l’URL chemin du site
D. Olivier – http://www.entraide-info.fr
28
10.6.3
Créer un site par nom d’hôte virtuel : /etc/apache2/site-available/sites3-4 NameVirtualHost *:801 DocumentRoot /var/www/site3 ServerName site3.sirius.com DocumentRoot /var/www/site4 ServerName site4.sirius.com ServerAlias toto www.siteY.com
10.7
n’importe quelle adresse du port 801 chemin du site nom du site3 (URL) chemin du site nom du site4 (URL)
Instructions complémentaires Listen80 [Listen 800] … DirectoryIndex index.html […] … ServerAlias titi.fr […] …
indique sur quels ports Apache est à l’écoute indique quel fichier ouvrir lors de l’accès au site permet de joindre un site à plusieurs URL
D. Olivier – http://www.entraide-info.fr
29