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                       eth0
 +192.168.7.100            ether   00:02:A5:CC:A6:32                       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)