User Tools

Site Tools


formationsecurite:reseaulinux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

formationsecurite:reseaulinux [2013/01/30 17:52] (current)
Line 1: Line 1:
 +Le cours est disponible en ligne: ((http://​www.financial-art.be/​linux_netowrk6_files/​v3_document.htm Linux Network))
  
 +
 +== Les bases reseaux ==
 +
 +=== Interfaces ===
 +
 +Il y a 3 manières de monter une interface réseau.
 +
 +Logiciel en ncurses posant les questions pour monter l'​interface:​
 +<​code>​netconfig</​code>​
 +
 +Service réseau:
 +<​code>/​etc/​rc.d/​rc.inet1.conf
 +/​etc/​rc.d/​rc.inet1 stop
 +/​etc/​rc.d/​rc.inet1 start</​code>​
 +
 +En ligne de commande (standard):
 +<​code>​ifconfig eth0 add 192.168.122.14 netmask 255.255.255.0</​code>​
 +
 +22/03/2005
 +
 +
 +=== Connexions ===
 +
 +Pour observer les connexions établies par la machine, on utilise la commande netstat:
 +
 +<​code>​linux@forma312:​~$ netstat -a
 +Active Internet connections (servers and established)
 +Proto Recv-Q Send-Q Local Address ​          ​Foreign Address ​        ​State ​     ​
 +tcp        0      0 *:​time ​                 *:*                     ​LISTEN ​     ​
 +tcp        0      0 *:​sunrpc ​               *:*                     ​LISTEN ​     ​
 +tcp        0      0 *:x11                   ​*:​* ​                    ​LISTEN ​     ​
 +tcp        0      0 *:​auth ​                 *:*                     ​LISTEN ​     ​
 +tcp        0      0 *:ssh                   ​*:​* ​                    ​LISTEN ​     ​
 +tcp        0      0 *:631                   ​*:​* ​                    ​LISTEN ​     ​
 +tcp        0      0 10.10.3.112:​36998 ​      ​www.hellea.be:​5223 ​     ESTABLISHED ​
 +tcp        0      0 10.10.3.112:​45574 ​      ​www.hellea.be:​imaps ​    ​ESTABLISHED ​
 +tcp        0      0 10.10.3.112:​48940 ​      ​www.hellea.be:​imaps ​    ​ESTABLISHED ​
 +udp        0      0 *:​biff ​                 *:*                                 
 +udp        0      0 *:​time ​                 *:*                                 
 +udp    20152      0 *:​bootpc ​               *:*                                 
 +udp        0      0 *:​sunrpc ​               *:*                                 
 +udp        0      0 *:631                   ​*:​* ​                                
 +Active UNIX domain sockets (servers and established)
 +Proto RefCnt Flags       ​Type ​      ​State ​        ​I-Node Path
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​5779 ​  /​tmp/​.X11-unix/​X0
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​6144 ​  /​tmp/​orbit-linux/​linc-84a-0-1bdacd6b31e59
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​5227 ​  /​dev/​gpmctl
 +unix  6      [ ]         ​DGRAM ​                   4002   /​dev/​log
 +unix  2      [ ]         ​DGRAM ​                   872    @udevd
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​5986 ​  /​tmp/​orbit-linux/​linc-81e-0-518e946b501c2
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​5992 ​  /​tmp/​orbit-linux/​linc-818-0-396b5a3c51e8d
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6274 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6273 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6147 ​  /​tmp/​orbit-linux/​linc-84a-0-1bdacd6b31e59
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6146 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6143 ​  /​tmp/​orbit-linux/​linc-81e-0-518e946b501c2
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6142 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6132 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6131 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6056 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​6055 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5996 ​  /​tmp/​orbit-linux/​linc-818-0-396b5a3c51e8d
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5995 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5994 ​  /​tmp/​orbit-linux/​linc-81e-0-518e946b501c2
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5991 ​  
 +unix  2      [ ]         ​DGRAM ​                   5982   
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5962 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5961 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5825 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5824 ​  
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5823 ​  /​tmp/​.X11-unix/​X0
 +unix  3      [ ]         ​STREAM ​    ​CONNECTED ​    ​5781 ​  
 +unix  2      [ ]         ​DGRAM ​                   5226   
 +unix  2      [ ]         ​DGRAM ​                   4034   
 +unix  2      [ ]         ​DGRAM ​                   4005</​code>​
 +
 +
 +=== Tables de routage ===
 +
 +La table de routage permet aux paquets réseaux de savoir où aller.
 +
 +Il y a toujours une route pas défaut.
 +
 +On peut voir la table de routage en tapant:
 +<​code>​route</​code>​
 +ou
 +<​code>​netstat -r</​code>​
 +
 +Pour rajouter une route statique:
 +<​code>​route add ...</​code>​
 +
 +Pour rajouter une route au démarrage, l'​ajouter dans /​etc/​rc.d/​rc.local (propre à /​[[SlackWare]]).
 +
 +Pour activer le routage, il suffit de mettre à 1 le bit /​proc/​sys/​net/​ipv4/​ip_forward:​
 +<​code>​echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward</​code>​
 +
 +Il y a un script pour le faire:
 +<​code>/​etc/​rc.d/​rc.ip_forward start</​code>​
 +Il suffit de le rendre exécutable pour l'​activer au démarrage:
 +<​code>​chmod u+x /​etc/​rc.d/​rc.ip_forward</​code>​
 +
 +/proc est un répertoire virtuel qui contient différents paramètres (par exemple, du noyau), ces paramètres sont chargés au démarrage, certains peuvent être modifiés à la volée (comme le routage ci-dessus).
 +
 +
 +== Les services reseaux ==
 +
 +=== DHCP ===
 +
 +Service permettant de distribuer des adresses IP dynamiquement.
 +
 +==== clients ====
 +
 +Slackware utilise par défaut dhcpcd.
 +Fedora utilise dhclient par défaut.
 +Il en existe d'​autres,​ comme pump.
 +
 +Le client DHCP va ajouter des entrées dans le fichier /​etc/​resolv.conf. C'est le fichier qui indique les serveurs DNS auxquels la machine peut se connecter.
 +
 +==== serveur ====
 +
 +C'est dhcpd.
 +Pour le lancer:
 +<​code>​dhcpd</​code>​
 +Il n'y a pas de script de démarrage dans Slackware.
 +La configuration se fait dans le fichier /​etc/​dhcpd.conf.
 +On y retrouve les ranges qu'il va utiliser et les options (soit par range, soit globales).
 +
 +
 +====== Exercice =====
 +
 +
 +Configurer un serveur DHCP avec dhcpd
 +
 +On édite /​etc/​dhcpd.conf
 +<​code>​ddns-update-style ad-hoc;
 +
 +subnet 192.168.1.0 netmask 255.255.255.0
 +{
 +option routers 192.168.1.1;​
 +range 192.168.1.10 192.168.1.100;​
 +}</​code>​
 +
 +Ensuite, on change son adresse IP pour avoir une adresse dans le range qu'on attribue:
 +<​code>​ifconfig eth0 192.168.1.1 netmask 255.255.255.0</​code>​
 +
 +Finalement, on lance le serveur DHCP:
 +<​code>​dhcpd</​code>​
 +
 +Pour vérifier qu'il tourne:
 +<​code>​ ps ax | grep dhcp
 + 1373 ?        Ss     0:00 /​sbin/​dhcpcd -d -t 10 eth0
 + 2468 ?        Ss     0:00 dhcpd</​code>​
 +
 +Pour voir les leases attribués:
 +<​code>​cat /​var/​state/​dhcp/​dhcpd.leases</​code>​
 +
 +On peut aussi le voir dans la table ARP:
 +<​code>​ arp
 +Address ​                 HWtype ​ HWaddress ​          Flags Mask            Iface
 +192.168.7.99 ​            ​ether ​  ​00:​02:​A5:​CC:​9F:​12 ​  ​C ​                    eth0
 +192.168.7.100 ​           ether   ​00:​02:​A5:​CC:​A6:​32 ​  ​C ​                    ​eth0</​code>​
 +
 +Comme client, pour accrocher un serveur (avec Slackware):
 +<​code>​root@forma312:/​home/​linux#​ /​etc/​rc.d/​rc.inet1 stop
 +root@forma312:/​home/​linux#​ /​etc/​rc.d/​rc.inet1 start
 +dhcpcd: MAC address = 00:​02:​a5:​dd:​3a:​d5
 +dhcpcd: your IP address = 192.168.6.99</​code>​
 +
 +On peut aussi faire:
 +Ceci donne le numéro de processus de dhc
 +<​code>​ifconfig eth0 down
 +ps ax | grep dhcpcd
 + 2852 ?        Ss     0:00 dhcpcd
 +kill 2852
 +  dhcpcd</​code>​
 +
 +
 +====== Exercice: prendre une adresse statique ======
 +
 +
 +<​code>​ifconfig eth0 10.10.21.12 netmask 255.255.255.0
 +route add default gw 10.10.21.250
 +echo "​nameserver 194.7.1.4"​ > /​etc/​resolv.conf</​code>​
 +
 +=== DNS ===
 +Domain name server
 +
 +Sous Linux, on peut résoudre le nom soit avec le DNS (fichier de configuration /​etc/​resolv.conf),​ soit avec le fichier hosts (/​etc/​hosts).
 +
 +Le fichier /etc/hosts:
 +<​code>#​ For loopbacking.
 +127.0.0.1 ​              ​localhost
 +127.0.0.1 ​              ​forma312.tf3.be forma312
 +
 +10.10.3.111 ​          ​forma311.ft3.be format311
 +# End of hosts.</​code>​
 +
 +Nous allons créer un serveur local.
 +
 +Nous verrons uniquement BIND. Cependant, il existe d'​autres serveurs de noms (comme ((http://​cr.yp.to/​djbdns.html djbdns))).
 +
 +Le fichier de configuration est /​etc/​named.conf
 +Les fichiers de configuration de zones se trouve dans /var/named
 +
 +
 +Les fichiers de zones doivent comporter:
 +  * la durée de vie des enregistrement
 +  * SOA start of authority
 +  * noms des nameservers dans domaine
 +  * adresses des serveurs
 +  * ...
 +  * les enregistrements
 +    * NS
 +    * MX
 +    * A: nom de machine - adresse IP
 +    * CNAME: alias - nom de machine
 +    * PTR: pointeur pour l'​adresse reverse
 +
 +==== Exercice ====
 +Faire tourner un DNS local.
 +Pour l'​exercice:​
 +reseau: 192.168.5.0
 +le nom de la zone: titi.local
 +mon IP: 192.168.5.1
 +mon nom de machine: forma312
 +
 +On doit donc d'​abord configurer le fichier /​etc/​named.conf,​ ensuite les fichiers de zone dans /​var/​named/​.
 +
 +On ajoute à /​etc/​named.conf:​
 +<​code>​zone "​titi.local"​ IN {
 +        type master;
 +        file "​caching-example/​titi.local";​
 +        allow-update { none; };
 +};
 +
 +zone "​5.168.192.in-addr.arpa"​ IN {
 +        type master;
 +        file "​caching-example/​revtiti.local";​
 +        allow-update { none; };
 +};</​code>​
 +
 +Changer son IP:
 +<​code>​ifconfig eth0 10.10.3.200 netmask 255.255.255.0</​code>​
 +
 +Ajouter le fichier /​var/​named/​caching-example/​titi.local:​
 +<​code>​$TTL ​   86400
 +@       ​IN ​     SOA     ​forma312.titi.local. root.titi.local. ​ (
 +                                      2005032215 ; Serial
 +                                      28800      ; Refresh
 +                                      14400      ; Retry
 +                                      3600000 ​   ; Expire
 +                                      86400 )    ; Minimum
 +        IN      NS      forma312.titi.local.
 +
 +forma312 ​      ​IN ​     A     ​192.168.5.1</​code>​
 +
 +et le fichier /​var/​named/​caching-example/​revtiti.local:​
 +<​code>​$TTL ​   86400
 +@       ​IN ​     SOA     ​forma312.titi.local. root.titi.local. ​ (
 +                                      2005032215 ; Serial
 +                                      28800      ; Refresh
 +                                      14400      ; Retry
 +                                      3600000 ​   ; Expire
 +                                      86400 )    ; Minimum
 +        IN      NS      forma312.titi.local.
 +
 +1       ​IN ​     PTR     ​forma312.titi.local.</​code>​
 +Le 1 au début de la dernière ligne est la partie host de l'​adresse IP du serveur (192.168.5.1)
 +Changer le hostname:
 +<​code>​hostname forma312</​code>​
 +
 +
 +Vérifier la configuration:​
 +<​code>​root@forma312:/​var/​named/​caching-example#​ named-checkzone titi.local /​var/​named/​caching-example/​titi.local
 +zone titi.local/​IN:​ loaded serial 2005032215
 +OK
 +root@forma312:/​var/​named/​caching-example#​ named-checkzone titi.local /​var/​named/​caching-example/​revtiti.local
 +zone titi.local/​IN:​ loaded serial 2005032215
 +OK
 +root@forma312:/​var/​named/​caching-example#​ named-checkconf /​etc/​named.conf
 +root@forma312:/​var/​named/​caching-example#</​code>​
 +
 +Mettre exécutable le script dans /etc/rc.d/ pour 
 +<​code>​chmod a+x /​etc/​rc.d/​rc.bind</​code>​
 +
 +Changer le nameserver dans /​etc/​resolv.conf:​
 +<​code>​echo "​nameserver 192.168.5.1"​ > /​etc/​resolv.conf</​code>​
 +
 +Démarrer le service:
 +<​code>​root@forma312:/​var/​named/​caching-example#​ /​etc/​rc.d/​rc.bind start
 +Starting BIND:  /​usr/​sbin/​named</​code>​
 +
 +Vérifier qu'il tourne:
 +<​code>​root@forma312:/​var/​named/​caching-example#​ ps ax | grep name
 + 3494 ?        Ss     0:00 /​usr/​sbin/​named</​code>​
 +
 +Faire une résolution de nom:
 +<​code>​root@forma312:/​var/​named/​caching-example#​ nslookup 192.168.5.1
 +Server: ​        ​192.168.5.1
 +Address: ​       192.168.5.1#​53
 +
 +1.5.168.192.in-addr.arpa ​       name = forma312.titi.local.
 +
 +root@forma312:/​var/​named/​caching-example#​ nslookup forma312.titi.local
 +Server: ​        ​192.168.5.1
 +Address: ​       192.168.5.1#​53
 +
 +Name:   ​forma312.titi.local
 +Address: 192.168.5.1</​code>​
 +
 +==== Documentation ====
 +
 +  * http://​langfeldt.net/​DNS-HOWTO/​BIND-9/​
 +
 +
 +== NFS ==
 +
 +Network filesystem
 +
 +Développé par Sun au début des années 1980.
 +
 +Permet de partager des partitions.
 +
 +=== Client ===
 +
 +Sur Slackware, il faut d'​abord lancer le service /​usr/​bin/​rpc.mount qui fait partie de /​etc/​rc.d/​rc.nfsd
 +
 +Ensuite, on peut monter une partition sur une machine distante:
 +
 +<​code>​mount -t nfs 10.10.2.110:/​home/​guest /​home/​toto/​partage</​code>​
 +
 +N.B: il faut que le service portmap tourne.
 +
 +=== Serveur ===
 +
 +Fichier de configuration:​ /​etc/​exports:​
 +
 +<​code>/​home/​serveur 10.10.2.0/​255.255.255.0(rw)
 +/​home/​public *(ro)</​code>​
 +
 +Pour obtenir la liste des clients connectés:
 +<​code>​cat /​var/​lib/​nfs/​rmtab</​code>​
 +
 +=== Exercice ===
 +Créer un répertoire /​home/​public et le partager.
 +Demander à un camarade de le monter chez lui.
 +
 +Créer le répertoire à partager:
 +<​code>​mkdir /​home/​public</​code>​
 +
 +Modifier /​etc/​exports:​
 +<​code>/​home/​public *(ro,​async)</​code>​
 +
 +Démarrer le service nfsd:
 +<​code>​root@forma312:/​usr/​src/​linux#​ /​etc/​rc.d/​rc.nfsd start
 +FATAL: Module nfsd not found.
 +Starting NFS services:
 +  /​usr/​sbin/​exportfs -r
 +  /​usr/​sbin/​rpc.rquotad
 +  /​usr/​sbin/​rpc.nfsd 8
 +  /​usr/​sbin/​rpc.mountd
 +  /​usr/​sbin/​rpc.lockd
 +  /​usr/​sbin/​rpc.statd</​code>​
 +Note: vu que nfsd est en dur dans le noyau, c'est normal qu'il ne soit pas trouvé en module.
 +
 +Eventuellement,​ exporter le(s) répertoire(s):​
 +<​code>​exportfs -a</​code>​
 +
 +Quand le camarade s'est connecté, vérifier les connections:​
 +<​code>​root@forma312:/​usr/​src/​linux#​ cat /​var/​lib/​nfs/​rmtab ​
 +10.10.21.107:/​home/​public:​0x00000002
 +10.10.21.108:/​home/​public:​0x00000001</​code>​
 +
 +<​code>​mount -t nfs 10.10.21.108:/​home/​milieu /mnt/test
 +mount
 +/dev/sda3 on / type ext3 (rw)
 +proc on /proc type proc (rw)
 +sysfs on /sys type sysfs (rw)
 +/dev/sda1 on /boot type ext3 (rw)
 +devpts on /dev/pts type devpts (rw,​gid=5,​mode=620)
 +10.10.21.108:/​home/​milieu on /mnt/test type nfs (rw,​addr=10.10.21.108,​addr=10.10.21.108)
 +root@forma312:​~#​ ls /mnt/test/ -la
 +total 8
 +drwxr-xr-x ​ 2 root root 4096 2005-03-23 11:29 .
 +drwxr-xr-x ​ 6 root root 4096 2005-03-23 11:51 ..
 +-rw-r--r-- ​ 1 root root    0 2005-03-23 11:28 blabla
 +-rw-r--r-- ​ 1 root root    0 2005-03-23 11:29 bloblo
 +-rw-r--r-- ​ 1 root root    0 2005-03-23 11:29 tralalaaaa</​code>​
 +
 +Pour le client, si on reboote, il ne montera pas automatiquement la partition distante.
 +Pour ce faire, il faut rajouter une ligne dans /etc/fstab:
 +<​code>​10.10.21.107:/​home/​fenetre ​     /​mnt/​test ​      ​nfs ​    ​defaults ​       0       ​0</​code>​
 +
 +
 +== NIS ==
 +
 +Centralisation des mots de passe (pour les logins). C'est un système d'​annuaire.
 +
 +C'est un peu compliqué à configurer.
 +
 +=== Client ===
 +<​code>​nisdomainname tagada
 +echo "​tagada"​ > /​etc/​defaultdomain
 +echo "​domain tagada server 10.10.21.1
 +ypserver 10.10.21.1"​ >> /​etc/​yp.conf
 +vi /​etc/​nsswitch.conf</​code>​
 +Ne changer que les lignes suivantes:
 +<​code>#​ passwd: ​      files nis
 +# shadow: ​      files nis
 +# group: ​       files nis
 +passwd: ​        ​compat
 +group: ​         compat</​code>​
 +en:
 +<​code>​passwd: ​        nis files
 +shadow: ​        nis files
 +group: ​         nis files
 +#​passwd: ​        ​compat
 +#​group: ​         compat</​code>​
 +N.B: les 2 dernières lignes indiquent qu'il y a compatibilité entre les versions NIS (les commenter).
 +
 +<​code>​vi /​etc/​rc.d/​rc.yp</​code>​
 +Décommenter (enlever les #) pour les 3 lignes suivantes (17-19):
 +<​code>​if [ -r /​etc/​defaultdomain ]; then
 +  nisdomainname `cat /​etc/​defaultdomain`
 +fi</​code>​
 +ainsi que ces 3 lignes-ci (53-56):
 +<​code>​if [ -d /var/yp ]; then
 +   echo "​Starting NIS services: ​ /​usr/​sbin/​ypbind -broadcast"​
 +   /​usr/​sbin/​ypbind -broadcast
 +fi</​code>​
 +(propre à Slackware)
 +
 +Lancer le service NIS:
 +<​code>/​etc/​rc.d/​rc.yp ​
 +Starting NIS services: ​ /​usr/​sbin/​ypbind -broadcast</​code>​
 +
 +Tester: presser les touches ctrl+alt+F3
 +<​code>​Login:​ salle3
 +Password: salle3</​code>​
 +
 +
 +Si ça ne fonctionne pas, vérifier le domaine NIS:
 +<​code>​nisdomainname ​
 +tagada</​code>​
 +
 +Vérifier le serveur NIS:
 +<​code>​ypwhich ​
 +10.10.21.1</​code>​
 +Vérifier qu'on arrive à joindre le serveur NIS:
 +<​code>​ ping 10.10.21.1 -c 2
 +PING 10.10.21.1 (10.10.21.1) 56(84) bytes of data.
 +64 bytes from 10.10.21.1: icmp_seq=1 ttl=64 time=0.228 ms
 +64 bytes from 10.10.21.1: icmp_seq=2 ttl=64 time=0.209 ms
 +
 +--- 10.10.21.1 ping statistics ---
 +2 packets transmitted,​ 2 received, 0% packet loss, time 1000ms
 +rtt min/​avg/​max/​mdev = 0.209/​0.218/​0.228/​0.017 ms</​code>​
 +
 +Vérifier que le le serveur écoute comme client:
 +<​code>​ ps ax | grep yp
 + 3374 ?        S      0:00 /​usr/​sbin/​ypbind -broadcast
 + 3375 ?        S      0:00 /​usr/​sbin/​ypbind -broadcast
 + 3376 ?        S      0:00 /​usr/​sbin/​ypbind -broadcast
 + 3377 ?        S      0:00 /​usr/​sbin/​ypbind -broadcast</​code>​
 +
 +Vérifier les fichiers de configuration:​ /​etc/​nsswitch.conf,​ /​etc/​yp.conf /​etc/​defaultdomain:​
 +<​code>​cat /​etc/​defaultdomain ​
 +tagada
 +
 +cat /​etc/​yp.conf | grep -v ^#
 +domain tagada server 10.10.21.1
 +ypserver 10.10.21.1
 +
 +cat /​etc/​nsswitch.conf | grep -v ^#
 +
 +passwd: ​        nis files
 +shadow: ​        nis files
 +group: ​         nis files
 +
 +
 +hosts: ​         files dns
 +networks: ​      files
 +
 +services: ​      files
 +protocols: ​     files
 +rpc:            files
 +ethers: ​        files
 +netmasks: ​      files
 +netgroup: ​      files
 +bootparams: ​    files
 +
 +automount: ​     files
 +aliases: ​       files</​code>​
 +
 +Vérifier le fichier de démarrage du serveur NIS:
 +<​code>​cat /​etc/​rc.d/​rc.yp | grep -v ^#
 +
 +if [ -r /​etc/​defaultdomain ]; then
 +  nisdomainname `cat /​etc/​defaultdomain`
 +fi
 +if [ -d /var/yp ]; then
 +   echo "​Starting NIS services: ​ /​usr/​sbin/​ypbind -broadcast"​
 +   /​usr/​sbin/​ypbind -broadcast
 +fi</​code>​
 +
 +Redémarrer le serveur NIS:
 +<​code>/​etc/​rc.d/​rc.yp stop
 +/​etc/​rc.d/​rc.yp start</​code>​
 +
 +=== Serveur ===
 +
 +Mon serveur: domaine titi.
 +<​code>​ypdomainname titi
 +echo "​titi"​ > /​etc/​defaultdomain</​code>​
 +
 +/​var/​yp/​securenets:​ fichier pour configurer les adresses YP qui peuvent se connecter.
 +  ​
 +N.B: Don't forget to allow localhost access to ypserv! Else ypserv will not work correctly.
 +
 +Ici, on ne le change pas (pas très sécurisé...)
 +
 +Générer les maps:
 +<​code>​cd /var/yp
 +make</​code>​
 +
 +<​code>​echo "​*:​passwd.byname:​port:​yes
 +  *:​passwd.byuid:​port:​yes"​ > /​etc/​ypserv.conf</​code>​
 +
 +Explication:​
 +Fichier de configuration sur le serveur: /​etc/​ypserv.conf
 +
 +<​code>​host:​map:​security:​mangle</​code>​
 +host: IP
 +map: MAC ou * pour toutes
 +security:
 +  * none: accès toujours autorisé
 +  * port: le port source (du client) doit être < 1024
 +  * deny: cette MAC n'a pas l'​accès
 +  * des: authentification DES requise
 +mangle: yes | no ...
 +
 +<​code>​vi /​etc/​rc.d/​rc.yp</​code>​
 +
 +Décommenter (enlever les #) les morceaux de scripts pour le serveur:
 +lignes 24-27:
 +<​code>​if [ -x /​usr/​sbin/​ypserv ]; then
 +  echo "​Starting NIS server: ​ /​usr/​sbin/​ypserv"​
 +  /​usr/​sbin/​ypserv
 +fi</​code>​
 +
 +lignes 34-39 (37-38 restent commentées):​
 +<​code>​if [ -x /​usr/​sbin/​rpc.yppasswdd ]; then
 +  echo "​Starting NIS master password server: ​ /​usr/​sbin/​rpc.yppasswdd"​
 +  /​usr/​sbin/​rpc.yppasswdd
 +  # echo "​Starting NIS master password server: ​ /​usr/​sbin/​rpc.yppasswdd -e chsh -e chfn"
 +  # /​usr/​sbin/​rpc.yppasswdd -e chsh -e chfn
 +fi</​code>​
 +
 +Démarrer le service:
 +<​code>/​etc/​rc.d/​rc.yp</​code>​
 +
 +Pour tester, nous allons mettre notre machine cliente d'​elle-même.
 +(cf. partie cliente)
 +
 +Ensuite, nous vérifions que nous utilisons bien NIS pour s'​identifier:​
 +<​code>​ypwhich</​code>​
 +Vérifions les utilisateurs:​
 +<​code>​ypcat passwd.byuid
 +linux:​$1$oiW0jUWC$htMWb82LoCTTbPSqoxcWs1:​1000:​100:​Linux,,,:/​home/​linux:/​bin/​bash</​code>​
 +
 +Pour s'​assurer que nous n'​utilisons pas /etc/passwd et /etc/shadow en local, nous ajoutons * devant le mot de passe encrypté dans /​etc/​shadow:​
 +<​code>​linux:​*$1$oiW0jUWC$htMWb82LoCTTbPSqoxcWs1:​12859:​0:​99999:​7:::</​code>​
 +
 +Ensuite, nous ouvrons une console (ctrl+alt+F5) et nous nous identifions comme //linux//.
 +Si tout se passe bien, on peut s'​identifier :)
 +
 +Je ne sais pas où sont les logs, mais c'est repris comme un login normal dans l'​output de la commande:
 +<​code>​last</​code>​
 +
 +
 +== Samba ==
 +
 +http://​www.samba.org/​
 +
 +Logiciel qui utilise SMB (Server Message Block) (cf. ((http://​samba.anu.edu.au/​cifs/​docs/​what-is-smb.html What is SBM?))).
 +
 +Il permet de partager des répertoires avec des machines [[Windows]],​ de simuler des contrôleurs de domaines (PDC et BDC en NT4).
 +
 +Pour se connecter, c'est mieux de le faire avec les adresses IP que les noms (nécessite un serveur DNS configuré).
 +
 +=== Client ===
 +==== smbclient ====
 +c'est un shell. Commandes:
 +  * cd
 +  * del
 +  * dir
 +  * exit
 +  * get
 +  * mget
 +  * lcd
 +  * put
 +  * mput
 +
 +==== smbmount ====
 +Pour partager des répertoires (comme NIS pour un environnement linux-only).
 +
 +==== smbprint ====
 +Pour utiliser les imprimantes réseaux avec un serveur d'​impression [[Windows]].
 +
 +=== Serveur ===
 +configuration:​ /​etc/​samba/​smb.conf
 +section globale:
 +  * security:
 +    * share:
 +    * user: il faut un compte local pour l'​utiliser (/​etc/​smb.passwd)
 +    * server: un serveur [[Windows]] gère l'​authentification (compliqué)
 +    * domain: un autre serveur Linux gère l'​authentification avec kerberos (compliqué)
 +  * password server: le nom du serveur d'​authentification
 +  * username map: pour faire correspondre des users entre samba et linux
 +  * interfaces: ou samba écoute-t-il?​
 +  * local master: PDC
 +  * domain controller: qui est le PDC
 +  * ...
 +Section répertoire partagé:
 +  * [nom_du_repertoire]
 +  * path: /​path/​to/​repertoire
 +  * writable: r- ou rw
 +  * browsable: --x ou ---
 +  * public: guest a-t-il accès?
 +  * comment: commentaire
 +
 +Pour vérifier la syntaxe du fichier, on peut utiliser la commande:
 +<​code>​testparm</​code>​
 +
 +=== Services ===
 +smbd (TCP) et nmbd (UDP)
 +
 +=== [[Utilisateurs]] ===
 +fichier /​etc/​samba/​smbpasswd
 +
 +pour ajouter un utilisateur:​
 +<​code>​smbpasswd -a user</​code>​
 +
 +
 +=== Pratique ===
 +
 +Pour vérifier que samba est bien installé sur Slackware, on lance KPackage:
 +<​code>​kpackage</​code>​
 +Là, on peut voir que le package samba-3.0.10-i486-1 est installé.
 +
 +Le noyau gère-t-il le filesystem smb?
 +<​code>​ grep SMB /​usr/​src/​linux/​.config
 +# CONFIG_SMB_FS is not set</​code>​
 +Non :(
 +<​code>​cd /​usr/​src/​linux
 +make menuconfig</​code>​
 +Sélectionner SMB en module:
 +<​code>​File Systems -> Network File Systems -> SMB file system support (en module: M)</​code>​
 +
 +Ensuite, on sauve et on compile:
 +<​code>​make
 +make modules_install
 +make install
 +mv /vmlinuz /​boot/​vmlinuz-2.6.11-smb
 +vi /​etc/​lilo.conf
 +lilo</​code>​
 +Et on reboote:
 +<​code>​reboot</​code>​
 +
 +==== Configurer un serveur de fichiers ====
 +
 +Nous allons configurer le /home de l'​utilisateur salle3.
 +
 +copier l'​exemple:​
 +<​code>​cp /​etc/​samba/​smb.conf-sample /​etc/​samba/​smb.conf</​code>​
 +Tester:
 +<​code>​testparm ​
 +Load smb config files from /​etc/​samba/​smb.conf
 +Processing section "​[homes]"​
 +Processing section "​[printers]"​
 +Loaded services file OK.
 +Server role: ROLE_STANDALONE
 +Press enter to see a dump of your service definitions
 +
 +# Global parameters
 +[global]
 +        workgroup = MYGROUP
 +        server string = Samba Server
 +        log file = /​var/​log/​samba.%m
 +        max log size = 50
 +        dns proxy = No
 +
 +[homes]
 +        comment = Home Directories
 +        read only = No
 +        browseable = No
 +
 +[printers]
 +        comment = All Printers
 +        path = /​var/​spool/​samba
 +        printable = Yes
 +        browseable = No</​code>​
 +
 +Lancer les services:
 +<​code>/​etc/​rc.d/​rc.samba start</​code>​
 +Créer l'​utilisateur root dans samba:
 +<​code>​smbpasswd -a salle3</​code>​
 +
 +Pour tester (en temps que client)::
 +Monter /home:
 +<​code>​mount -t smbfs //​10.10.3.1/​homes /mnt/salle3 -o username=salle3</​code>​
 +ou
 +<​code>​smbmount //​10.10.3.1/​homes /mnt/salle3 -o username=salle3</​code>​
 +
 +Ensuite, /​home/​salle3 du serveur est accessible sur le client en /mnt/salle3 (comme pour NFS).
 +
 +==== Monter un share [[Windows]] ====
 +Il ne faut pas faire tourner le service samba (il suffit d'​avoir dans le noyau ou en module smbfs).
 +
 +<​code>​mount -t smbfs -o username=administrator //​10.10.3.104/​c$ /​mnt</​code>​
 +Par défaut sous [[Windows]],​ tous les volumes sont partagés pour le user administrator.
 +
 +==== Se connecter sur une machine [[Windows]] ====
 +<​code>​smbclient //​10.10.3.104/​c$ -U administrator
 +Password: ​
 +Domain=[FORMA304] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]</​code>​
 +
 +=== Samba Web Administration Tool ===
 +
 +Pour le faire tourner, cf. le chapitre sur xinetd.
 +
 +Se connecter en surfant sur http://​localhost:​901/​
 +Il demande un login et un mot de passe: root et le mot de passe dans /etc/shadow (pas l'​utilisateur samba).
 +
 +Une fois identifié, on peut faire l'​administration via le browser.
 +
 +== Super serveur xinetd ==
 +xinetd est une version améliorée de inetd qui permet de lancer des services réseau.
 +
 +L'​avantage est que c'est inetd qui appelle le daemon correspondant au service lorsqu'​on y fait appel.
 +
 +Configuration dans le fichier /​etc/​inetd.conf
 +
 +Pour pouvoir utiliser swat, on décommente (enlever #) la ligne suivante:
 +<​code>#​swat ​          ​stream ​ tcp     ​nowait.400 root /​usr/​sbin/​swat ​ swat</​code>​
 +
 +Arrêter le daemon:
 +<​code>/​etc/​rc.d/​rc.inetd stop</​code>​
 +
 +Pour le démarrer:
 +<​code>/​etc/​rc.d/​rc.inetd start</​code>​
 +
 +Ensuite, on peut se connecter en surfant sur http://​localhost:​901/​
 +
 +
 +== Webmin ==
 +Outil d'​administration système via un browser.
 +
 +Télécharger le package pour la version 10.0:
 +<​code>​wget http://​linuxpackages.inode.at/​Slackware-10.0/​Daemon/​webmin/​webmin-1.160-noarch-1rsa.tgz</​code>​
 +Installation:​
 +<​code>​installpkg webmin-1.160-noarch-1rsa.tgz</​code>​
 +Il pose quelques questions (distribution,​ port, utilisateur,​ etc.).
 +
 +Ensuite, on peut s'y connecter à l'​adresse http://​localhost:​10000/​
 +
 +Pour démarrer ou arrêter le service webmin:
 +<​code>/​usr/​libexec/​webmin/​webmin-init |start|stop|restart</​code>​
formationsecurite/reseaulinux.txt · Last modified: 2013/01/30 17:52 (external edit)