admin:index
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
admin:index [2016/03/11 09:08] – [Administration des Réseaux] orel | admin:index [2024/03/18 15:06] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 6: | Line 6: | ||
* [[admin: | * [[admin: | ||
- | * [[admin: | + | * [[admin: |
- | * [[admin: | + | * [[admin: |
+ | * [[admin: | ||
* [[admin: | * [[admin: | ||
- | * [[admin: | + | * [[admin: |
- | * [[admin: | + | * [[admin: |
+ | * [[admin: | ||
* [[admin: | * [[admin: | ||
- | * [[admin: | + | * [[admin: |
* [[admin: | * [[admin: | ||
Pour tester les TPs sur votre machine, c'est [[admin: | Pour tester les TPs sur votre machine, c'est [[admin: | ||
- | ==== TP1 ==== | + | Console Qemu : Ctrl-A + C puis system_reset pour reboot une machine. |
- | Lancez le réseau virtuel avec QEMU. Entrez le login //root//, il n'a pas de // | ||
- | Pour configurer deux machines dans le réseau local 192.168.0.0/ | ||
- | immortal$ ifconfig -a | ||
- | immortal$ ifconfig eth0 192.168.0.1/ | ||
- | immortal$ ifconfig eth0 192.168.0.1 netmask 255.255.255.0 | ||
- | opeth$ ifconfig eth0 192.168.0.2/ | ||
- | opeth$ ping 192.168.0.1 | ||
- | Avec le fichier de configuration / | ||
- | <code bash / | ||
- | # loopback | ||
- | auto lo | ||
- | iface lo inet loopback | ||
- | |||
- | # interface eth0 | ||
- | auto eth0 | ||
- | iface eth0 inet static | ||
- | address 192.168.0.1 | ||
- | netmask 255.255.255.0 | ||
- | </ | ||
- | |||
- | On recharge la configuration : | ||
- | |||
- | $ / | ||
- | |||
- | |||
- | Enjoy ! | ||
- | |||
- | |||
- | ==== TP2 (Routage) ==== | ||
- | |||
- | __Memento__ | ||
- | |||
- | * Activer le routage sur une machine (ip forward) : '' | ||
- | * Afficher la table de routage : '' | ||
- | * Définir une route par défaut : '' | ||
- | * Ajouter une route vers un réseau : '' | ||
- | * Ajouter une route vers une machine particulière : '' | ||
- | * Pour supprimer une règle, il taper la commande '' | ||
- | |||
- | __Routage__ | ||
- | |||
- | Considérons le réseau 147.210.0.0/ | ||
- | |||
- | opeth (eth0,13.1) --- (eth0,13.2) immortal (eth1,12.2) --- | ||
- | | | ||
- | grave (eth1, | ||
- | | | ||
- | nile (eth0,16.2) --- (eth1,16.1) syl (eth0,14.2) --- | ||
- | |||
- | Voici un résumé des commandes à taper sur chaque machine pour que toutes communiquent ! | ||
- | |||
- | < | ||
- | opeth$ ifconfig eth0 147.210.13.1/ | ||
- | opeth$ route add default gw 147.210.13.2 | ||
- | |||
- | nile$ ifconfig eth0 147.210.16.2/ | ||
- | nile$ route add default gw 147.210.16.1 | ||
- | |||
- | immortal$ ifconfig eth0 147.210.13.2/ | ||
- | immortal$ ifconfig eth1 147.210.12.2/ | ||
- | immortal$ route add default gw 147.210.12.1 | ||
- | immortal$ echo 1 > / | ||
- | |||
- | syl$ ifconfig eth0 147.210.14.2/ | ||
- | syl$ ifconfig eth1 147.210.16.1/ | ||
- | syl$ route add default gw 147.210.14.1 | ||
- | syl$ echo 1 > / | ||
- | |||
- | grave$ ifconfig eth0 147.210.12.1/ | ||
- | grave$ ifconfig eth1 147.210.14.1/ | ||
- | grave$ route add -net 147.210.13.0/ | ||
- | grave$ route add -net 147.210.16.0/ | ||
- | grave$ echo 1 > / | ||
- | </ | ||
- | |||
- | En cas de problème, il faut effectuer un diagnostic avec les commandes //ping// et //tcpdump -i any//. Lorsqu' | ||
- | |||
- | __ARP__ | ||
- | |||
- | Pour afficher le cache ARP, il suffit de taper la commande //arp -n//. | ||
- | |||
- | __Wireshark__ | ||
- | |||
- | |||
- | Pour utiliser Wireshark depuis en exportant une capture depuis la machine virtuelle // | ||
- | |||
- | < | ||
- | immortal$ mount /mnt/host -o remount,rw | ||
- | immortal$ tcpdump -i eth0 | ||
- | immortal$ tcpdump -i eth0 -s 1500 -w / | ||
- | immortal$ | ||
- | </ | ||
- | |||
- | Votre fichier //capture// se trouve dans le répertoire UML-TMP/ | ||
- | |||
- | ==== TP3 (Scapy et Divers Trucs) ==== | ||
- | |||
- | |||
- | __Scapy__ | ||
- | |||
- | Un peu de Scapy avec l' | ||
- | |||
- | Voici un exmple pour construire un message de type ICMP/IP Echo-Request (ping). La fonction show() montre le contenu des headers & payloads pour ce message. | ||
- | |||
- | <code python> | ||
- | $ scapy | ||
- | Welcome to Scapy (2.2.0) | ||
- | >>> | ||
- | >>> | ||
- | ###[ IP ]### | ||
- | version= 4 | ||
- | ihl= None | ||
- | tos= 0x0 | ||
- | len= None | ||
- | id= 1 | ||
- | flags= | ||
- | frag= 0 | ||
- | ttl= 64 | ||
- | proto= icmp | ||
- | chksum= None | ||
- | src= 192.168.0.1 | ||
- | dst= 192.168.0.2 | ||
- | \options\ | ||
- | ###[ ICMP ]### | ||
- | type= echo-request | ||
- | code= 0 | ||
- | | ||
- | id= 0x0 | ||
- | seq= 0x0 | ||
- | >>> | ||
- | </ | ||
- | |||
- | Même chose avec un message TCP/IP à destination de 192.168.0.1 (port 80) avec le flag TCP SYN (demande d' | ||
- | |||
- | |||
- | <code python> | ||
- | >>> | ||
- | >>> | ||
- | >>> | ||
- | >>> | ||
- | </ | ||
- | |||
- | Voici un exemple de script //Scapy// pour faire un traceroute. | ||
- | |||
- | <code python traceroute.py> | ||
- | # | ||
- | |||
- | import sys | ||
- | from scapy.all import * | ||
- | |||
- | def mytraceroute(target, | ||
- | for x in range(maxttl): | ||
- | rsp = sr1(IP(dst=target, | ||
- | if rsp.getlayer(ICMP).type==11 and rsp.getlayer(ICMP).code==0: | ||
- | print rsp.src | ||
- | |||
- | mytraceroute(" | ||
- | </ | ||
- | |||
- | |||
- | Un autre script //Scapy// pour faire un Syn Scan. | ||
- | |||
- | <code python synscan.py> | ||
- | # | ||
- | |||
- | import sys | ||
- | from scapy.all import * | ||
- | |||
- | def synscan(host): | ||
- | ports = range(1000) | ||
- | ip = IP(dst=host) | ||
- | tcp = TCP(dport=ports, | ||
- | | ||
- | for sent,rcvd in ans: | ||
- | if rcvd.haslayer(TCP): | ||
- | # if rcvd.getlayer(TCP).flags & 2: | ||
- | if rcvd.sprintf(" | ||
- | print sent.dport | ||
- | | ||
- | synscan(" | ||
- | </ | ||
- | |||
- | Une autre version avec un XMAS scan... | ||
- | |||
- | <code python xmasscan.py> | ||
- | # | ||
- | |||
- | from scapy.all import * | ||
- | |||
- | ports = range(1, | ||
- | ipdst = " | ||
- | |||
- | for i in ports: | ||
- | pkt=IP(dst=ipdst)/ | ||
- | a = sr1(pkt, verbose=False, | ||
- | if a is None: | ||
- | print '{} is open' | ||
- | </ | ||
- | |||
- | Pour finir avec la connexion TCP/IP, c'est ici : https:// | ||
- | |||
- | __Telnet__ | ||
- | |||
- | Ouverture d'une connexion TCP/IP avec Telnet vers un serveur web sur immortal. | ||
- | |||
- | < | ||
- | $ telnet @immortal 80 | ||
- | GET / HTTP/ | ||
- | # enter again | ||
- | |||
- | # la réponse HTTP du serveur web... | ||
- | HTTP/1.1 200 OK | ||
- | ... | ||
- | ... | ||
- | </ | ||
- | |||
- | Pour sortir d'un Telnet, tapez " | ||
- | |||
- | __ HTTP Connect__ | ||
- | |||
- | Considérons une machine A qui souhaite ouvrir une session telnet (port 23) sur une machine C en utilisant une connexion " | ||
- | |||
- | < | ||
- | A$ telnet @B 80 | ||
- | CONNECT @C:23 HTTP/ | ||
- | # enter again | ||
- | C$login: xxxxxx | ||
- | C$password: | ||
- | C$ ... | ||
- | | ||
- | </ | ||
- | |||
- | |||
- | __Attaque Man-in-the-Middle__ | ||
- | |||
- | Dans un LAN, //syl// souhaite intercepter les échanges entre //nile// et // | ||
- | |||
- | < | ||
- | syl$ arpspoof -i eth0 -t @immortal @nile &> /dev/null & | ||
- | syl$ arpspoof -i eth0 -t @nile @immortal &> /dev/null & | ||
- | syl$ echo 1 > / | ||
- | syl$ tcpdump -i eth0 not arp # on ignore l'ARP | ||
- | syl$ pkill -9 arpspoof | ||
- | </ | ||
- | |||
- | |||
- | __ Un peu de nmap__ | ||
- | |||
- | Le principe est relativement simple. Si l'on envoit en paquet TCP/IP avec le flag SYN (demande d' | ||
- | |||
- | En résumé, voici les réponses dans les différents cas de figure : | ||
- | | | **Envoi paquet avec SYN** | **Envoi paquet invalide sans SYN** | | ||
- | | **Service à l' | ||
- | | **Pas de service(*)** | ignoré | RST | | ||
- | (*) Réponse du noyau. | ||
- | |||
- | Quelques exemples de //scan// simples : | ||
- | |||
- | < | ||
- | #ping scan | ||
- | $ nmap -sP 192.168.0.1-10 | ||
- | |||
- | #syn scan | ||
- | $ nmap -sS -p 21,22,80 192.168.0.1 | ||
- | |||
- | #xmas scan | ||
- | $ nmap -sX -p 4000-10000 192.168.0.1 | ||
- | |||
- | #traceroute | ||
- | $ nmap --traceroute 192.168.0.1 | ||
- | $ traceroute -T 192.168.0.1 | ||
- | </ | ||
- | |||
- | |||
- | __Nota Bene__ : Si le nmap est trop lent dans les UML, vous pouvez le rendre plus agressif avec les options "-n -T5". | ||
- | |||
- | ==== TP4 (NAT) ==== | ||
- | |||
- | __Préliminaires__ : | ||
- | |||
- | Pour afficher la table NAT : | ||
- | |||
- | $ iptables -t nat -L | ||
- | |||
- | Pour remettre la table à zéro : | ||
- | |||
- | $ iptables -t nat -F | ||
- | | ||
- | L' | ||
- | |||
- | __NAT Statique__ : association 1 @priv et 1 @pub (action SNAT / DNAT) | ||
- | |||
- | a) Paquet Entrant dans le Réseau Privé | ||
- | |||
- | On modifie l' | ||
- | |||
- | $ iptables -t nat -A PREROUTING -d @pub -i ethin -j DNAT --to-destination @priv | ||
- | |||
- | La translation inverse est implicite lors de la réponse. | ||
- | | ||
- | b) Paquet Sortant vers le Réseau extérieur | ||
- | |||
- | On modifie l' | ||
- | |||
- | $ iptables -t nat -A POSTROUTING -s @priv -o ethout -j SNAT --to-source @pub | ||
- | | ||
- | La translation inverse est implicite lors de la réponse. | ||
- | | ||
- | __NAT Dynamique__ : association N @priv et 1 @pub (action MASQUERADE) avec @priv une adresse de réseau et mask un masque en nb de bits | ||
- | | ||
- | $ iptables -t nat -A POSTROUTING -s @priv/mask -j MASQUERADE | ||
- | |||
- | __En résumé__ : | ||
- | |||
- | |||
- | * Connexion initié depuis l' | ||
- | * Connexion initié depuis l' | ||
- | |||
- | |||
- | __Exemple__ | ||
- | |||
- | Considérons les réseaux privés 192.168.0.0/ | ||
- | |||
- | immortal$ iptables -t nat -A POSTROUTING -s 192.168.0.0/ | ||
- | | ||
- | |||
- | __Port Forwarding__ | ||
- | |||
- | On veut mettre en place du port forwarding entre la passerelle // | ||
- | |||
- | immortal$ iptables -t nat -A PREROUTING -d 147.210.20.1 -p tcp --dport 2222 -j DNAT --to 192.168.0.3: | ||
- | atg$ ssh toto@147.210.20.1 | ||
- | atg$ ssh -p 2222 toto@147.210.20.1 | ||
- | | ||
- | |||
- | ==== TP5 (Firewall)==== | ||
- | |||
- | == Memento == | ||
- | |||
- | Voici quelques notes concernant l' | ||
- | * INPUT : tout ce qui rentre dans la machine ; | ||
- | * OUTPUT : tout ce qui sort dans la machine ; | ||
- | * FORWARD : tout ce qui traverse la machine (i.e. lors du routage). | ||
- | |||
- | Pour afficher les règles de la table filter : | ||
- | $ iptables -t filter -L -v | ||
- | |||
- | Pour effacer toutes les règles ajoutées : | ||
- | $ iptables -t filter -F | ||
- | |||
- | Pour chaque règle que l'on ajoute, trois actions sont possibles (notée < | ||
- | * ACCEPT : on accepte ; | ||
- | * REJECT : on rejette poliment (réponse d' | ||
- | * DROP : on jette à la poubelle (pas de réponse d' | ||
- | |||
- | Pour modifier la politique par défaut du firewall : | ||
- | $ iptables -t filter -P < | ||
- | |||
- | Pour ajouter une nouvelle règle à une chaîne du firewall (attention à l' | ||
- | $ iptables -t filter -A < | ||
- | |||
- | * avec <SRC> des indications sur la provenance des paquets IP, comme par exemple "-i eth0" ou "-s 192.168.0.0/ | ||
- | * avec <DST> des indications sur la destination des paquets IP, comme par exemple : "-o eth1" ou "-d 147.210.0.0/ | ||
- | * avec <...> des infos complémentaires sur par exemple la nature du protocole "-p icmp" ou "-p tcp", avec éventuellement des precisions spécifiques à ces protocoles (" | ||
- | |||
- | Pour plus d' | ||
- | |||
- | |||
- | ==Accepter le traffic partant du réseau interne vers des serveurs web ou SSH== | ||
- | |||
- | Soit 192.168.1.0/ | ||
- | |||
- | <code bash> | ||
- | $ iptables -F | ||
- | $ iptables -P FORWARD DROP | ||
- | $ iptables -P INPUT DROP | ||
- | $ iptables -P OUTPUT DROP | ||
- | |||
- | # traffic sortant | ||
- | $ iptables -A FORWARD -s 192.168.1.0/ | ||
- | |||
- | # traffic retour | ||
- | $ iptables -A FORWARD -d 192.168.1.0/ | ||
- | |||
- | </ | ||
- | |||
- | == Accepter un ping toutes les 10s à destination de nile == | ||
- | |||
- | Soit //nile// la machine 192.168.0.4. On configure le firewall sur // | ||
- | |||
- | <code bash> | ||
- | $ iptables -F | ||
- | $ iptables -P FORWARD DROP | ||
- | $ iptables -A FORWARD -d 192.168.0.4 -p icmp -m limit --limit 6/mn --limit-burst 1 -j ACCEPT | ||
- | $ iptables -A FORWARD -s 192.168.0.4 -p icmp -m state --state ESTABLISHED -j ACCEPT | ||
- | </ | ||
- | |||
- | Pour faire un test depuis une machine extérieure, | ||
- | |||
- | $ ping -i 5 192.168.0.4 | ||
- | |||
- | ==== TP6 (NIS & NFS) ==== | ||
- | |||
- | __Attention__ : Vérifier que le service //rpcbind// est bien démarré, sinon il faut penser à le lancer. | ||
- | |||
- | $/ | ||
- | |||
- | == Configuration du serveur NIS== | ||
- | |||
- | On choisit un nom de domaine // | ||
- | |||
- | root@immortal: | ||
- | |||
- | On positionne également le nom de domaine courant à // | ||
- | |||
- | root@immortal: | ||
- | |||
- | On peut vérifier que le domainne courant est bien positionné en tapant la commande // | ||
- | |||
- | On configure // | ||
- | |||
- | ... | ||
- | # Are we a NIS server and if so what kind (values: false, slave, master)? | ||
- | NISSERVER=master | ||
- | ... | ||
- | |||
- | Puis on construit la base de données, en exportant les comptes courants (définis dans / | ||
- | |||
- | root@immortal: | ||
- | |||
- | Un message d' | ||
- | |||
- | On démarre donc le serveur NIS : | ||
- | |||
- | root@immortal: | ||
- | Starting NIS services: ypserv yppasswdd ypxfrd ypbind. | ||
- | |||
- | OK c'est parti... sinon on vérifie les logs (/ | ||
- | |||
- | On regénère proprement la basse de données NIS. | ||
- | |||
- | root@immortal: | ||
- | root@immortal: | ||
- | root@immortal: | ||
- | |||
- | Updating passwd.byname... | ||
- | Updating passwd.byuid... | ||
- | Updating group.byname... | ||
- | Updating group.bygid... | ||
- | Updating hosts.byname... | ||
- | Updating hosts.byaddr... | ||
- | Updating rpc.byname... | ||
- | Updating rpc.bynumber... | ||
- | Updating services.byname... | ||
- | Updating services.byservicename... | ||
- | Updating netid.byname... | ||
- | Updating protocols.bynumber... | ||
- | Updating protocols.byname... | ||
- | Updating netgroup... | ||
- | Updating netgroup.byhost... | ||
- | Updating netgroup.byuser... | ||
- | Updating shadow.byname... | ||
- | |||
- | Tous les utilisateurs locaux sur le serveur NIS avec un UID > 1000 sont exportés dans la database. | ||
- | |||
- | En lançant la commande | ||
- | |||
- | |||
- | ==Configuration du client== | ||
- | |||
- | On vérifie que le fichier / | ||
- | |||
- | root@grave: | ||
- | root@grave: | ||
- | root@grave: | ||
- | Starting NIS services: ypbind. | ||
- | |||
- | Pour vérifier que l'on trouve bien le serveur NIS depuis le client : | ||
- | |||
- | root@grave: | ||
- | 192.168.0.1 | ||
- | |||
- | Pour afficher la liste des comptes utilisateur NIS : | ||
- | |||
- | root@grave: | ||
- | |||
- | Il faut ensuite éditer le fichier / | ||
- | |||
- | passwd: | ||
- | group: | ||
- | shadow: | ||
- | ... | ||
- | |||
- | Attention, il faut recharger le fichier // | ||
- | |||
- | / | ||
- | |||
- | Avec la séquence //files nis//, on vérifie d' | ||
- | |||
- | |||
- | == Ajouter des nouveaux utilisateurs NIS sur le serveur == | ||
- | |||
- | On commence par désactiver kerberos & ldap | ||
- | |||
- | root@immortal: | ||
- | |||
- | Puis on ajoute les utilisateurs Unix //titi// et //tutu// : | ||
- | |||
- | root@immortal: | ||
- | password titi | ||
- | root@immortal: | ||
- | pasword tutu | ||
- | |||
- | On met à jour la base de données NIS : | ||
- | |||
- | root@immortal: | ||
- | |||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | Maj de la base, pas besoin de restarter le serveur NIS... | ||
- | |||
- | root@grave: | ||
- | tutu: | ||
- | titi: | ||
- | toto: | ||
- | |||
- | Pour tester NIS on passe par un tiers utilisateur plutôt que par root (root ne vérfie pas le password) ! | ||
- | |||
- | root@grave: | ||
- | toto@grave:/ | ||
- | Mot de passe : xxxx | ||
- | titi@grave:/ | ||
- | |||
- | |||
- | ==Configuration de NFS== | ||
- | |||
- | Il ne faut pas oublier de configurer le serveur NFS comme un client NIS ! Pour mettre à jour le cache des utilisateurs NIS sur un client, il est utile de relancer le démon NSCD (NameService Cache Daemon) / | ||
- | |||
- | __Côté serveur NFS__ | ||
- | |||
- | On configure le serveur NFS sur syl ; grave sert de client. | ||
- | |||
- | Sur le serveur, le répertoire NFS sera /pub. | ||
- | |||
- | root@syl$ mkdir /pub | ||
- | |||
- | On indique cela / | ||
- | |||
- | /pub (rw, | ||
- | |||
- | Autres Exemples (man exports) : | ||
- | |||
- | /pub host1(ro) host2(rw, | ||
- | /pub @netgroup(rw) | ||
- | /pub (ro) | ||
- | |||
- | Par defaut, // | ||
- | |||
- | On démarre le common et le serveur NFS (nécessaire après chaque modif de / | ||
- | |||
- | root@grave$ / | ||
- | root@grave$ / | ||
- | |||
- | |||
- | __Côté client NFS__ | ||
- | |||
- | Sur grave, déjà configuré comme un client NIS. | ||
- | |||
- | On démarre le //common// NFS (après chaque modif de / | ||
- | |||
- | root@grave$ / | ||
- | |||
- | On crée le montage NFS dans /mnt/pub : | ||
- | |||
- | root@grave$ mkdir /mnt/pub | ||
- | root@grave$ chmod 777 /mnt/pub | ||
- | root@grave$ mount -t nfs -o nfsvers=3 192.168.0.1:/ | ||
- | |||
- | |||
- | On crée des fichiers vides (commande //touch//) sur la machine client en tant que //tutu// et //titi//. | ||
- | |||
- | root@grave:/ | ||
- | tutu@grave:/ | ||
- | root@grave:/ | ||
- | titi@grave:/ | ||
- | | ||
- | On vérifie les droits... | ||
- | | ||
- | root@grave:/ | ||
- | -rw-r--r-- 1 titi titi 0 2008-03-11 13:28 titi | ||
- | -rw-r--r-- 1 tutu tutu 0 2008-03-11 13:28 tutu | ||
- | |||
- | On peut également configurer le point de montage de manière permanente dans /etc/fstab | ||
- | |||
- | root@grave$ jmacs /etc/fstab | ||
- | |||
- | <file system> | ||
- | 192.168.0.3:/ | ||
- | | ||
- | ==En conclusion== | ||
- | |||
- | Donc on a : | ||
- | |||
- | * immortal : serveur NIS (compte NIS tutu et titi) | ||
- | * syl : serveur NFS (export de /pub) & client NIS | ||
- | * grave : client NIS & NFS (montage dans / | ||
- | |||
- | Pour terminer de tout bien configurer, il faut créer sur le serveur NFS les repertoires /pub/tutu et /pub/titi appartenant respectivement aux utilsateurs tutu et titi, avec les bons droits d' | ||
- | |||
- | |||
- | ==== TP7 LDAP ==== | ||
- | |||
- | NIS c'est un peu démodé... Aujourd' | ||
- | |||
- | |||
- | == 1) Configuration du serveur LDAP== | ||
- | |||
- | On configure le serveur LDAP sur la machine // | ||
- | |||
- | < | ||
- | immortal$ adduser tutu | ||
- | immortal$ adduser titi | ||
- | </ | ||
- | |||
- | Création d'un password pour l' | ||
- | |||
- | < | ||
- | immortal$ slappasswd | ||
- | New password: admin | ||
- | Re-enter new password: admin | ||
- | {SSHA}XSd0QXLAiNz734f/ | ||
- | </ | ||
- | |||
- | Editer le fichier / | ||
- | | ||
- | < | ||
- | # nom du domaine LDAP | ||
- | | ||
- | |||
- | # nom de l' | ||
- | | ||
- | |||
- | # ajout d'un mot de passe admin | ||
- | | ||
- | |||
- | </ | ||
- | |||
- | __Attention__ : Ne pas oublier de corriger le nom de domaine pour les ACLs en fin de fichier ! En gros, il faut remplacer tous les @XXXXXXXXX@ ! | ||
- | |||
- | __Nota Bene__ : dc = domain component | ||
- | |||
- | Dans le fichier / | ||
- | |||
- | < | ||
- | SLAPD_CONF="/ | ||
- | </ | ||
- | |||
- | Démarrage du serveur LDAP : | ||
- | |||
- | < | ||
- | immortal$ / | ||
- | </ | ||
- | |||
- | On vérifie que le démon a démarré ! | ||
- | |||
- | < | ||
- | immortal$ ps aux |grep slapd | ||
- | </ | ||
- | |||
- | ==2) Ajout des comptes dans le serveur LDAP== | ||
- | |||
- | On va utiliser un script pour peupler automatiquement la base LDAP avec les comptes des utilisateurs (et d' | ||
- | |||
- | < | ||
- | # Default DNS domain | ||
- | $DEFAULT_MAIL_DOMAIN = " | ||
- | |||
- | # Default base | ||
- | $DEFAULT_BASE = " | ||
- | </ | ||
- | |||
- | Ensuite, il faut lancer le script : | ||
- | |||
- | < | ||
- | immortal$ cd / | ||
- | immortal$./ | ||
- | |||
- | Enter the X.500 naming context you wish to import into: [dc=mydomain, | ||
- | Enter the hostname of your LDAP server [ldap]: localhost | ||
- | Enter the manager DN: [cn=admin, | ||
- | Enter the credentials to bind with: <-- mot de passe de l' | ||
- | Do you wish to generate a DUAConfigProfile [yes|no]? no | ||
- | |||
- | Importing into dc=mydomain, | ||
- | |||
- | Creating naming context entries... | ||
- | Migrating groups... | ||
- | Migrating hosts... | ||
- | Migrating networks... | ||
- | Migrating users... | ||
- | Migrating netgroups... | ||
- | Migrating netgroups (by user)... | ||
- | Migrating netgroups (by host)... | ||
- | Importing into LDAP... | ||
- | adding new entry " | ||
- | ... | ||
- | adding new entry " | ||
- | ... | ||
- | adding new entry " | ||
- | adding new entry " | ||
- | adding new entry " | ||
- | ... | ||
- | adding new entry " | ||
- | adding new entry " | ||
- | ... | ||
- | adding new entry " | ||
- | adding new entry " | ||
- | adding new entry " | ||
- | </ | ||
- | |||
- | ==En cas d' | ||
- | |||
- | Bon, si ça ne marche pas, on fait le ménage : | ||
- | |||
- | $/ | ||
- | $ rm -rf / | ||
- | |||
- | On vérifie ses configs et on recommence !!! | ||
- | |||
- | $/ | ||
- | |||
- | ==Test client== | ||
- | |||
- | On effectue une recherche sur toutes les entrées " | ||
- | |||
- | immortal$ ldapsearch -x -b " | ||
- | |||
- | ou plus simplement si tout le monde peut consulter le serveur LDAP (cf. ACL) : | ||
- | |||
- | immortal$ ldapsearch -x " | ||
- | |||
- | Comparer le nombre de répondes avec / | ||
- | |||
- | < | ||
- | immortal$ wc -l /etc/passwd | ||
- | </ | ||
- | |||
- | L' | ||
- | |||
- | immortal$ grep tutu /etc/passwd > tutu | ||
- | immortal$ migrate-passwd.pl tutu > tutu.ldif | ||
- | immortal$ ldapadd -x -D " | ||
- | |||
- | |||
- | == 3) Configuration d'un client LDAP== | ||
- | |||
- | __Nota Bene__ : Il n'y a pas de démon côté client! | ||
- | |||
- | Editer le fichier / | ||
- | |||
- | < | ||
- | BASE dc=mydomain, | ||
- | URI | ||
- | </ | ||
- | |||
- | Un petit test sur le client (pas besoin de mettre l' | ||
- | |||
- | $ ldapsearch -x -D " | ||
- | |||
- | |||
- | == 4) Authentification via LDAP == | ||
- | |||
- | Dans le fichier / | ||
- | |||
- | < | ||
- | passwd: | ||
- | group: | ||
- | shadow: | ||
- | </ | ||
- | | ||
- | __Attention__ : Ne pas oublier //files//, sinon mieux vaut que //ldap// fonctionne du premier coup !!! | ||
- | |||
- | $ / | ||
- | |||
- | A partir d'ici, les comptes LDAP sont visibles, mais l' | ||
- | |||
- | On lance la commande suivante et on sélectionne Unix + LDAP. | ||
- | |||
- | $ pam-auth-update | ||
- | |||
- | Ensuite : | ||
- | |||
- | $ dpkg-reconfigure libpam-ldap | ||
- | $ dpkg-reconfigure libnss-ldapd | ||
- | |||
- | Attention, il faut saisir ldap:// | ||
- | |||
- | Pour finir : | ||
- | $ dpkg-reconfigure nslcd | ||
- | |||
- | A vous de jouer... on peut ajouter le serveur NFS ! | ||
- | |||
- | ==== TP8 DNS & DHCP ==== | ||
- | |||
- | |||
- | == Config Serveur DNS == | ||
- | |||
- | domain: metal.fr | ||
- | server: immortal (192.168.0.2) | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | zone " | ||
- | type master; | ||
- | file "/ | ||
- | }; | ||
- | |||
- | zone " | ||
- | type master; | ||
- | file "/ | ||
- | }; | ||
- | </ | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | ; $ORIGIN metal.fr | ||
- | $TTL 86400 | ||
- | @ IN SOA dns1.metal.fr. mailer.metal.fr. ( | ||
- | 1 ; Serial | ||
- | 604800 ; Refresh | ||
- | 86400 ; Retry | ||
- | 2419200 ; | ||
- | 86400 ) ; Negative Cache TTL | ||
- | ; | ||
- | |||
- | @ IN NS immortal | ||
- | @ IN MX 10 nile | ||
- | |||
- | immortal IN A 192.168.0.2 | ||
- | syl IN A 192.168.0.1 | ||
- | nile IN A 192.168.0.3 | ||
- | |||
- | ; alias | ||
- | mailer IN CNAME nile | ||
- | dns1 IN CNAME immortal | ||
- | </ | ||
- | |||
- | __Nota Bene__ : NS = DNS Server, IN = Internet (optionel), mailer.metal.fr => mailer@metal.fr (@email du DNS admin) | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | ; $ORIGIN 0.168.192.in-addr.arpa | ||
- | $TTL 86400 | ||
- | @ IN SOA dns1.metal.fr. mailer.metal.fr. ( | ||
- | 1 ; Serial | ||
- | 604800 ; Refresh | ||
- | 86400 ; Retry | ||
- | 2419200 ; | ||
- | 86400 ) ; Negative Cache TTL | ||
- | ; | ||
- | |||
- | @ IN NS dns1.metal.fr. | ||
- | |||
- | ; reverse | ||
- | 2 IN PTR immortal.metal.fr. | ||
- | 1 IN PTR syl.metal.fr. | ||
- | 3 IN PTR nile.metal.fr. | ||
- | </ | ||
- | |||
- | Vérif Config Serveur : | ||
- | |||
- | < | ||
- | $ named-checkzone 0.168.192.in-addr.arpa db.0.168.192 | ||
- | $ named-checkzone metal.fr db.metal | ||
- | $ named-checkconf | ||
- | </ | ||
- | |||
- | Démarrage du serveur : | ||
- | |||
- | $ / | ||
- | |||
- | Les logs : | ||
- | |||
- | $ tail / | ||
- | |||
- | ==Config Client DNS== | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | search metal.fr | ||
- | nameserver 192.168.0.2 | ||
- | </ | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | ... | ||
- | hosts: | ||
- | ... | ||
- | </ | ||
- | |||
- | Ne pas oublier de redémarrer le daemon //nscd//. | ||
- | |||
- | Test Client, sur syl par exemple : | ||
- | |||
- | < | ||
- | $ nslookup nile | ||
- | Server: | ||
- | Address: | ||
- | Name: | ||
- | Address: 192.168.0.3 | ||
- | |||
- | $ ping nile | ||
- | PING nile.metal.fr (192.168.0.3) 56(84) bytes of data. | ||
- | 64 bytes from nile.metal.fr (192.168.0.3): | ||
- | </ | ||
- | |||
- | |||
- | == Config du serveur DHCP == | ||
- | |||
- | //Serveur DHCP su syl.// | ||
- | |||
- | __Configuration sans DNS__ | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | default-lease-time 600; | ||
- | max-lease-time 7200; | ||
- | |||
- | subnet 192.168.0.0 netmask 255.255.255.0 { | ||
- | range 192.168.0.10 192.168.0.20; | ||
- | option broadcast-address 192.168.0.255; | ||
- | } | ||
- | </ | ||
- | |||
- | On démarre le serveur DHCP : | ||
- | |||
- | | ||
- | |||
- | __Configuration avec DNS__ | ||
- | |||
- | On suppose le serveur DNS bien configuré sur immortal... | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | subnet 192.168.0.0 netmask 255.255.255.0 { | ||
- | range 192.168.0.10 192.168.0.30; | ||
- | option domain-name " | ||
- | option domain-name-servers 192.168.0.2; | ||
- | # option routers 192.168.0.254; | ||
- | option subnet-mask 255.255.255.0; | ||
- | option broadcast-address 192.168.0.255; | ||
- | |||
- | host nile { | ||
- | hardware ethernet A2: | ||
- | fixed-address 192.168.0.9; | ||
- | } | ||
- | |||
- | } | ||
- | </ | ||
- | |||
- | On redémarre le serveur DHCP. | ||
- | |||
- | |||
- | == Configuration du Client DHCP== | ||
- | |||
- | Dans / | ||
- | |||
- | < | ||
- | auto eth0 | ||
- | iface eth0 inet dhcp | ||
- | </ | ||
- | |||
- | Puis on démarre le client... | ||
- | |||
- | $/ | ||
- | |||
- | Ou encore : | ||
- | |||
- | < | ||
- | root@nile:~ #dhclient -v | ||
- | |||
- | Listening on LPF/ | ||
- | Sending on | ||
- | Sending on | ||
- | DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4 | ||
- | DHCPOFFER from 192.168.0.1 | ||
- | DHCPREQUEST on eth0 to 255.255.255.255 port 67 | ||
- | DHCPACK from 192.168.0.1 | ||
- | bound to 192.168.0.10 -- renewal in 265 seconds. | ||
- | </ | ||
- | |||
- | |||
- | On peut vérifier les entrées ajoutées dynamiquement sur le serveur DHCP dans le fichier / | ||
- | |||
- | |||
- | ==Configuration avançée du serveur DHCP== | ||
- | |||
- | On souhaite maintenant faire en sorte que le serveur DHCP collabore avec le serveur DNS pour mettre à jour automatiquement la liste desnouvelles machines reconnues par DNS. | ||
- | |||
- | On utilise le secret définie dans / | ||
- | |||
- | On modifie la config DHCP du serveur dans / | ||
- | |||
- | < | ||
- | ddns-update-style interim; | ||
- | ddns-updates on; | ||
- | deny client-updates; | ||
- | ddns-domainname " | ||
- | ddns-rev-domainname " | ||
- | authoritative; | ||
- | |||
- | key " | ||
- | algorithm hmac-md5; | ||
- | secret " | ||
- | } | ||
- | |||
- | zone metal.fr. { | ||
- | primary 192.168.0.2; | ||
- | key rndc-key; | ||
- | } | ||
- | |||
- | zone 0.168.192.in-addr.arpa. { | ||
- | primary 192.168.0.2; | ||
- | key rndc-key; | ||
- | } | ||
- | | ||
- | subnet 192.168.0.0 netmask 255.255.255.0 { | ||
- | range 192.168.0.10 192.168.0.30; | ||
- | option domain-name " | ||
- | option domain-name-servers 192.168.0.2; | ||
- | option subnet-mask 255.255.255.0; | ||
- | option broadcast-address 192.168.0.255; | ||
- | } | ||
- | </ | ||
- | |||
- | Puis on modifie la config su serveur DNS dans / | ||
- | |||
- | < | ||
- | key " | ||
- | | ||
- | | ||
- | }; | ||
- | |||
- | zone " | ||
- | type master; | ||
- | file "/ | ||
- | allow-update {key " | ||
- | }; | ||
- | |||
- | zone " | ||
- | type master; | ||
- | file "/ | ||
- | allow-update {key " | ||
- | }; | ||
- | </ | ||
- | |||
- | Ne pas oublier chmod g+wx /etc/bind (pour le group " | ||
- | |||
- | Finalement, côté client DHCP (nile), dans / | ||
- | |||
- | < | ||
- | send host-name " | ||
- | </ | ||
- | |||
- | Puis : | ||
- | |||
- | $ dhclient -v | ||
- | |||
- | |||
- | ==== TP9 WINDOWS ==== | ||
- | |||
- | On considère le réseau suivant : une machine Windows 7 (172.16.1.1/ | ||
- | |||
- | ==Configuration des machines Linux== | ||
- | |||
- | <code bash> | ||
- | |||
- | immortal$ ifconfig eth1 172.16.0.1/ | ||
- | immortal$ echo 1 > / | ||
- | immortal$ ifconfig eth0 192.168.0.1/ | ||
- | immortal$ ifconfig eth2 192.168.1.1/ | ||
- | |||
- | syl$ ifconfig eth0 192.168.0.2/ | ||
- | syl$ route add default gw 192.168.0.1 | ||
- | |||
- | nile$ ifconfig eth0 192.168.1.2/ | ||
- | nile$ route add default gw 192.168.1.1 | ||
- | </ | ||
- | |||
- | ==Configuration de la machine Windows== | ||
- | |||
- | Configurez l' | ||
- | |||
- | En ligne de commande, il faut lancer le //Command Prompt// dans le menu Windows. Faire un clic droit, //Run as Administrator// | ||
- | |||
- | La machine Windows et déjà configuré : on vérifie : | ||
- | | ||
- | win$ ipconfig.exe /all | ||
- | win$ route.exe print | ||
- | | ||
- | |||
- | Si tout est OK, on doit pouvoir faire un ping vers notre UML | ||
- | |||
- | win$ ping.exe 172.16.0.1 | ||
- | |||
- | Lancer MMC (Microsoft Management Console), qui va permettre de gérer toute la config... | ||
- | |||
- | win$ mmc.exe | ||
- | |||
- | /* Il faut commencer par ajouter via le menu " | ||
- | |||
- | Attention, il y a plusieurs " | ||
- | |||
- | On peut commencer par inactiver le firewall... puis par faire des tests ICMP vers toutes les machines Linux, en ajoutant par exemple 172.16.0.1 comme default gateway dans Windows (interface graphique). | ||
- | |||
- | Si on active le firewall, le ping de windows vers linux fonctionne (pas de firewall sur immortal), mais en revanche l' | ||
- | |||
- | __Nota Bene__: Windows autorise le Established de base ! | ||
- | |||
- | Il faut rajouter une petite règle ICMP qui va bien via la MMC, pour autoriser le ping. Add "New Inbound Rules" / Custom Rule / et après c'est facile... On peut maintenant, vérifier que le ping fonctionne de manière | ||
- | symétrique. | ||
- | |||
- | Pour définir une route par défaut, il faut utiliser 0.0.0.0 comme réseau cible et 255.255.255.255 comme masque ! | ||
- | |||
- | # route par défaut (gateway immortal) | ||
- | win$ route add 0.0.0.0 mask 0.0.0.0 172.16.0.1 | ||
- | |||
- | |||
- | On va virer la default gateway, pour rajouter à la main... des routes spécifiques vers les réseaux de syl et opeth... | ||
- | |||
- | # vers opeth | ||
- | win$ route add 192.168.0.0 mask 255.255.255.0 172.16.0.1 [if 16] | ||
- | # vers syl | ||
- | win$ route add 192.168.1.0 mask 255.255.255.0 172.16.0.1 [if 16] | ||
- | |||
- | Le numéro d' | ||
- | |||
- | Un peu plus d' | ||
- | |||
- | win$ route.exe /? | ||
- | |||
- | |||
- | Un petit test avec Netcat. On lance le programme en mode serveur //nc.exe//, dans c: | ||
- | |||
- | win$ nc.exe -l -p 5555 | ||
- | |||
- | Windows vous demande si vous souhaitez ajouter une exception dans le firewall pour autoriser les connexions vers le programme nc.exe (all IPs, all ports, TCP & UDP). Si on dit Allow, bah ça marche tout seul ! | ||
- | |||
- | syl$ telnet 172.16.1.1 5555 # connexion au serveur netcat de la machine windows ! | ||
- | | ||
- | Pour sortir de Telne, faire ctrl-], puis taper telnet> quit ;-) | ||
- | |||
- | __Nota Bene__ : Firewall Windows, regarde en premier les règles " | ||
admin/index.txt · Last modified: 2024/03/18 15:06 by 127.0.0.1