TP02 : Environnement TCP/IP sous LINUX THEYS Alban MAUSSAND David 3BIRT02 1/25 MEILHAC Alexis Sommaire 1 GENERALITES .................................................................................................................................................. 3 1.1 1.2 2 LES GRANDS PRINCIPES DU MODELE OSI ........................................................................................................... 3 PRESENTATION D’ETHERNET ........................................................................................................................... 3 ETHERNET ET INTERNET ................................................................................................................................. 4 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3 VISUALISATION APRES AVOIR TAPE IFCONFIG : .................................................................................................... 4 VISUALISATION DU FICHIER /ETC/HOSTS ............................................................................................................ 5 SITUATION DU PROTOCOLE IP DANS LE MODELE OSI ........................................................................................... 6 FORMAT DES PAQUETS IP .............................................................................................................................. 6 COMMANDE PING ........................................................................................................................................ 8 LE PROTOCOLE ARP...................................................................................................................................... 8 PROTOCOLE INVERSE AU PROTOCOLE ARP ........................................................................................................ 8 INITIATION A L’UTILISATION DU RESEAU SOUS LINUX ................................................................................. 9 3.1 3.2 3.3 3.4 4 COMMANDE PING ........................................................................................................................................ 9 DIFFERENCE ENTRE TELNET ET RLOGIN .............................................................................................................. 9 CONNEXION A LINUX................................................................................................................................... 10 LANCEMENT D’UN PROGRAMME LINUX A DISTANCE ......................................................................................... 10 TCP ET UDP ................................................................................................................................................... 10 4.1 4.2 4.3 4.4 4.5 4.6 4.7 5 SITUATION DANS LE MODELE OSI .................................................................................................................. 11 PRINCIPALES CARACTERISTIQUES.................................................................................................................... 11 VISUALISATION DU FICHIER /ETC/PROTOCOLS .................................................................................................. 11 VISUALISATION DU FICHIER /ETC/SERVICES ..................................................................................................... 12 LISTE NECESSAIRE ET SUFFISANTE POUR DEFINIR UNE ASSOCIATION ENTRE 2 MACHINES ............................................ 14 COMMANDE LINUX NETSTAT ....................................................................................................................... 14 SCHEMA DE ROUTAGE DU RESEAU DU DEPARTEMENT......................................................................................... 16 RPC ET XDR ................................................................................................................................................... 16 5.1 5.2 6 PRESENTATION .......................................................................................................................................... 17 LA PILE TCP / IP ........................................................................................................................................ 17 NFS ................................................................................................................................................................ 18 6.1 6.2 7 ROLE DE NFS ............................................................................................................................................ 18 VISUALISATION DES FICHIERS /ETC/FSTAB ET /ETC/EXPORTS ................................................................................ 18 NIS ................................................................................................................................................................. 19 7.1 7.2 7.3 7.4 LISTAGE DU FICHIER /ETC/PASSWD................................................................................................................. 20 LOCALISATION DU LIEN LOGIN_NAME PASSWORD ............................................................................................. 21 ROLE DU SERVICE NIS ................................................................................................................................. 22 INTERET D’UNE BASE NIS DANS UN RESEAU ..................................................................................................... 22 8 WIRESHARK .................................................................................................................................................. 23 9 CONCLUSION ................................................................................................................................................ 24 10 BIBLIOGRAPHIE ......................................................................................................................................... 25 THEYS Alban MAUSSAND David 3BIRT02 2/25 MEILHAC Alexis 1 Généralités 1.1 Les grands principes du modèle OSI Chaque constructeur ayant un système propriétaire, une norme a été établit en 1977 par l’ISO, afin de limiter les problèmes d’incompatibilité. Le modèle OSI (Open System Interconnection) a ainsi été mis en place comme standard de communications entre les entités d’un réseau. Il impose des règles qui gèrent les communications entre les entités. Le modèle OSI a sept couches : Couche 7. Application 6. Présentation 5. Session 4. Transport 3. Réseau 2. Liaisons 1. Physique 1.2 Fonction Assure l’interface avec l’utilisateur, géré par les logiciels. Définit le format des données utilisées par la couche application indépendamment du système. Définit l’ouverture et la fermeture des sessions de communications entre deux entités du réseau. Gère le transport des données, leurs découpages et les erreurs de transmission Gère l’acheminement (adressage et routage) des données via un ou plusieurs réseaux. Donne les fonctions et les processus pour le transfert de donnée entre les entités du réseau. Définit les spécifications électrique et physique entre les appareils. Présentation d’Ethernet Ethernet est une technologie de réseau local basé sur le principe suivant : toutes les machines du réseau Ethernet sont connectées à une même ligne de communication, constituée de câbles cylindriques. Ethernet appartient à la couche physique du modèle OSI. On distingue différentes variantes de technologies Ethernet suivant le diamètre des câbles utilisés: Technologie 10Base-2 10Base-5 10Base-T 100Base-TX 1000Base-SX THEYS Alban Type de câble Câble coaxial de faible diamètre Câble coaxial de gros diamètre (0.4 pouce) double paire torsadée double paire torsadée fibre optique MAUSSAND David 3BIRT02 3/25 Vitesse 10Mb/s 10Mb/s 10 Mb/s 100 Mb/s 1000 Mb/s Portée 185m 500m 100m 100m 500m MEILHAC Alexis Tous les ordinateurs d'un réseau Ethernet sont reliés à une même ligne de transmission, et la communication se fait à l'aide d'un protocole appelé CSMA/CD (Carrier Sense Multiple Access with Collision Detect ce qui signifie qu'il s'agit d'un protocole d'accès multiple avec surveillance de porteuse (Carrier Sense) et détection de collision). Avec ce protocole toute machine est autorisée à émettre sur la ligne à n'importe quel moment et sans notion de priorité entre les machines. Cette communication se fait de façon simple: Chaque machine vérifie qu'il n'y a aucune communication sur la ligne avant d'émettre Si deux machines émettent simultanément, alors il y a collision (c'est-à-dire que plusieurs trames de données se trouvent sur la ligne au même moment) Les deux machines interrompent leur communication et attendent un délai aléatoire, puis la première ayant passé ce délai peut alors réémettre. Ce principe est basé sur plusieurs contraintes: Les paquets de données doivent avoir une taille maximale il doit y avoir un temps d'attente entre deux transmissions Le temps d'attente varie selon la fréquence des collisions: Après la première collision une machine attend une unité de temps Après la seconde collision la machine attend deux unités de temps Après la troisième collision la machine attend quatre unités de temps … 2 Ethernet et Internet 2.1 Visualisation après avoir tapé ifconfig : Il y a 2 interfaces : eth0 Link encap:Ethernet HWaddr 80:1c:c4:1a:40:f7 inet adr:192.168.1.208 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: fe80::821c:c4ff:fe1a:40f7/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:80470 erreurs:0 :0 overruns:0 frame:0 TX packets:4975 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:5295445 (5.2 MB) Octets transmis:539250 (539.2 KB) Interruption:17 lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 Packets reçus:20 erreurs:0 :0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:920 (920.0 B) Octets transmis:920 (920.0 B) THEYS Alban MAUSSAND David 3BIRT02 4/25 MEILHAC Alexis 2.2 Visualisation du fichier /etc/hosts /etc/hosts contient une liste d'association nom de machine - adresse IP permettant de bypasser la résolution de nom classique (qui interroge les serveurs DNS) pour quelques serveurs dont on connaît l'adresse. Typiquement utilisé pour renseigner des noms de machines locales, plus facilement accessibles par leur nom qu'en tapant l'adresse complète. Voilà ce qui apparait : 127.0.0.1 127.0.1.1 localhost dst-08 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts En première colonne l'adresse de la machine, ensuite en 2e colonne (séparée par un espace ou une tabulation) le nom correspondant, suivi éventuellement par ses alias (le texte précédé de # est considéré comme du commentaire). Les adresses IP du fichier sont de classe A Les adresse IP codent le numéro de réseau et le numéro de la station sur ce réseau. La longueur de l’adresse dans la version 4 de l’IP (IPv4) est de 4 octets (16octets en IPv6). Il y a une correspondance entre l’adresse IP, l’adresse MAC et la table ARP (expliquée ci-après). Il y a 5 classes d'adresse IP, les trois premières classes (A, B et C) sont utilisées dans les réseaux standards. ▪ Classe A : . 1er octets : pour le réseau (NetID) . 2,3, 4ème octets : pour les ordinateurs (HostID) . 0XXXXXX1 -----> 01111110 L'adressage est de 1.0.0.1 à 127.255.255.254 L'adresse IP de classe A autorise près de 127 réseaux de plus de 16 millions machines par réseau ▪ Classe B : . 1, 2ème octet : pour le réseau . 3, 4ème octet : pour les ordinateurs . 10XXXXXX -----> 10111111 L'adressage est de 128.0.0.1 à 191.255.255.254 127.0.0.1 : l'adresse pour localhost ( La machine locale ) L'adresse IP de classe B autorise près de 16575 réseaux de plus de 6500 machines par réseau ▪ Classe C : . 1, 2, 3ème octet : pour le réseau THEYS Alban MAUSSAND David 3BIRT02 5/25 MEILHAC Alexis . 4ème octet : pour les machines . 110XXXXX -----> 11011111 L'adressage est de 192.0.0.1 à 223.255.255.254 L'adresse IP de classe C autorise près de 2 millions de réseaux de 254 machines par réseau ▪ Classe D : Cette classe d'adresse est réservée pour le multicast : la diffusion vers des machines d'un même groupe. L'adressage est de 224.0.0.0 à 239.255.255.255 Le multicast est plutôt utilisé dans les réseaux de recherche. Il n'est pas utilisé dans le réseau normal. ▪ Classe E : Réservée pour le futur. Elles ne devraient pas être employées sur des réseaux IP. Quelques organisations de recherche utilisent les adresses de la classe E pour des buts expérimentaux. Masque de sous-réseau On peut découper un réseau en sous-réseaux (subnets) : un certain nombre de bits de poids forts contigus sont prélevés sur la partie station de l’adresse IP pour indiquer le numéro de sous-réseau. La configuration du masque de sous-réseau (subnet mask) sert à indiquer à IP combien de bits vont être consacrés aux sous-réseaux. Le masque indique par des 1 les bits de l’adresse IP qui correspondent à a partie routable (réseau + sous-réseau). Exemple : Classe C avec 4 sous-réseaux : Adresse : 192.2.232.107 Masque : 255.255.255.192 En effet, 192 en binaire donne 1100 0000. 2.3 Situation du protocole IP dans le modèle OSI Le protocole IP se situe au niveau de la couche 3 (réseau) du modèle OSI. 2.4 Format des paquets IP Le format de paquet adopté par IP est le datagramme. Un datagramme contient une en-tête de cinq ou six “words” stockant notamment l’adresse de destination d’un paquet. La taille par défaut de l’entête est de cinq words, le sixième étant optionnel. THEYS Alban MAUSSAND David 3BIRT02 6/25 MEILHAC Alexis Le champ Version (4 bits) identifie la version du protocole IP. Elle est fixée actuellement à 4. Un champ Internet Header Length (4 bits) spécifie la longueur de l’en-tête en mots de 32 bits. Cette longueur IHL varie de 5 à 15, 5 étant la longueur normale lorsqu’aucune option n'est utilisée. Le champ "type de service" (8 bits) définit la priorité du paquet et le type de routage souhaité. Cela permet à un logiciel de réclamer différents types de performance pour un datagramme : délai court, haut débit, haute fiabilité ou bas prix. Le champ "longueur totale" (16 bits) définit le nombre d'octets contenus dans le paquet en ce compris l'en-tête IP. Puisque ce champ est codé sur 16 bits, un paquet IP est de maximum 65535 octets. Le champ "Identification" (16 bits) contient une valeur entière utilisée pour identifier les fragments d'un datagramme. Ce champ doit être unique pour chaque nouveau datagramme. "Flags" (3 bits) est utilisé pour contrôler la fragmentation des paquets. Le bit de poids faible à zéro indique le dernier fragment d'un datagramme et est baptisé "more flag" ou MF bit. Le bit du milieu est appelé "do not fragment flag" ou DF bit. Le bit de poids fort n'est pas utilisé. "Offset" (13 bits) sert à indiquer la position qu’occupaient les données de ce fragment dans le message original. Le TTL ou "Time To Live" (8 bits) est l'expression en secondes de la durée maximale de séjour du paquet dans un réseau. La plupart des routeurs se contentent de décrémenter le TTL d'une unité. Si le TTL devient nul, son paquet IP n'est plus relayé : c'est souvent l'indication d'une erreur de paquet qui boucle. La valeur TTL recommandée est comprise entre 40 et 64. Le champ "protocole" (8 bits) identifie la couche de transport propre à ce datagramme : - 17 pour UDP - 6 pour TCP - 1 pour ICMP - 8 pour EGP - 89 pour OSPF Le checksum ou champ de contrôle de l'en-tête (16 bits) contient le "complément à un" du total "en complément à un" de tous les mots de 16 bits de l'en-tête. L'adresse IP source est codée sur 32 bits L'adresse IP de destination est également codée sur 32 bits A la rubrique "Options", sont stockées des demandes spéciales pour requérir un routage particulier pour certains paquets. THEYS Alban MAUSSAND David 3BIRT02 7/25 MEILHAC Alexis 2.5 Commande ping Le ping permet d’évaluer un temps de réponse, et c’est un outil de diagnostic de base permettant, par exemple de savoir si la cible distante est en état de fonctionner. La source (celui qui émet un ping) envoie un petit paquet de données vers la cible, et déclenche un chronomètre. Lorsque la cible reçoit se paquet, elle répond à la source par un autre petit paquet de données. Lorsque la source reçoit la réponse, elle arrête le chronomètre et affiche le temps. Ping utilise un protocole de transport particulier, appelé ICMP (Internet Control Message Protocol). (Protocole de gestion des erreurs de transmission), qui est un protocole au-dessus d’IP, au même niveau que TCP ou UDP. ICMP appartient donc à la couche 4 (transport) du modèle OSI. 2.6 Le protocole ARP Le protocole ARP permet de connaître l'adresse physique d'une carte réseau correspondant à une adresse IP, c'est pour cela qu'il s'appelle Protocole de résolution d'adresse (en anglais ARP signifie Address Resolution Protocol). Chaque machine connectée au réseau possède un numéro d'identification de 48 bits. Ce numéro est unique et est fixé dès la fabrication de la carte en usine. Toutefois la communication sur Internet ne se fait pas directement à partir de ce numéro (car il faudrait modifier l'adressage des ordinateurs à chaque fois que l'on change une carte réseau) mais à partir de l’adresse dite logique attribuée par IP. Ainsi, pour faire correspondre les adresses physiques aux adresses logiques, le protocole ARP interroge les machines du réseau pour connaître leur adresse physique, puis crée une table de correspondance entre les adresses logiques et les adresses physiques dans une mémoire cache. Lorsqu'une machine doit communiquer avec une autre, elle consulte la table de correspondance. Si jamais l'adresse demandée ne se trouve pas dans la table, le protocole ARP émet une requête sur le réseau. L'ensemble des machines du réseau va comparer cette adresse logique à la leur. Si l'une d'entre-elles s'identifie à cette adresse, la machine va répondre à ARP qui va stocker le couple d'adresses dans la table de correspondance et la communication va alors pouvoir avoir lieu... Le protocole ARP est de niveau 3 dans le modèle OSI. La commande tplinux@dst-08:~$ arp nous donne : Address 192.168.1.1 2.7 HWtype HWaddress ether 00:22:3f:41:c1:c3 Flags Mask C Iface eth0 Protocole inverse au protocole ARP THEYS Alban MAUSSAND David 3BIRT02 8/25 MEILHAC Alexis Le protocole RARP (Reverse Address Resolution Protocol) est beaucoup moins utilisé, il signifie Protocole ARP inversé, il s'agit d'une sorte d'annuaire inversé des adresses logiques et physiques. En réalité, le protocole RARP est essentiellement utilisé pour les stations de travail n'ayant pas de disque dur et souhaitant connaître leur adresse physique... Le protocole RARP permet à une station de connaître son adresse IP à partir d'une table de correspondance entre adresse MAC (adresse physique) et adresses IP hébergée par une passerelle (gateway) située sur le même réseau local (LAN). 3 Initiation à l’utilisation du réseau sous LINUX 3.1 Commande Ping Pour l’explication de cette commande, se reporter à la question 5 de l’intituler « Ethernet et Internet ». tplinux@dst-08:~$ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.780 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.838 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.737 ms 64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.787 ms Ping réalisé avec une adresse ou l’on a accès tplinux@dst-08:~$ ping 192.168.1.11 PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data. From 192.168.1.208 icmp_seq=1 Destination Host Unreachable From 192.168.1.208 icmp_seq=2 Destination Host Unreachable From 192.168.1.208 icmp_seq=3 Destination Host Unreachable Ping réalisé avec une adresse ou l’on n’a pas accès 3.2 Différence entre telnet et rlogin Telnet et Rlogin sont deux applications qui permettent à un utilisateur de se connecter à distance sur un ordinateur, pourvu que cet utilisateur y dispose d'un accès autorisé. Ces deux applications permettent toutes les deux de prendre le contrôle (du moins partiellement) d'un ordinateur distant, mais Rlogin ne permet de le faire qu'entre deux machines Unix, tandis qu'il existe des clients Telnet THEYS Alban MAUSSAND David 3BIRT02 9/25 MEILHAC Alexis pour de nombreuses plateformes (Unix, Windows, MacOs, ...). Telnet et Rlogin sont tous les deux bâtis sur TCP. La différence entre telnet et rlogin, c'est que telnet ne vérifie pas les droits dans le fichier .rhosts et qu'il utilise par défaut une émulation terminal, alors que rlogin essaye de récupérer la variable TERM du shell à partir duquel il est lancé. 3.3 Connexion à Linux Dans notre cas nous avons à faire à deux systèmes hétérogènes (de système windows à un système linux) donc nous pouvons utiliser que le protocole telnet. 3.4 Lancement d’un programme LINUX à distance L'export display consiste à se logger à distance en mode graphique, comme on le fait avec un client et un serveur SSH en mode texte. On peut alors exécuter des applications graphiques sur le serveur distant : la fenêtre graphique de l'application et son contenu seront envoyés par le réseau vers la machine cliente ; les données du clavier et de la souris de la machine cliente sont envoyées vers le serveur. L'export display nécessite une bonne connexion réseau entre le client et le serveur puisque le serveur envoie des images de l'écran au client. Export Display=@IP de l’utilisateur :0.0 4 TCP et UDP Nous ne verrons ici que deux protocoles : TCP et UDP : • Le protocole TCP permet aux deux clients de contrôler l'état de la transmission établie (à l'aide d'accusés de réception) : c'est un protocole orienté connexion. Ce protocole assure tout un tas de remaniement des données en provenance du protocole IP. La première chose à savoir est qu'il permet d'assurer des échanges sûrs sans que les routeurs n'aient à contrôler eux-mêmes les données. THEYS Alban MAUSSAND David 3BIRT02 10/25 MEILHAC Alexis La seconde concerne directement notre sujet initial. TCP permet le multiplexage/démultiplexage (concentration des 'canaux' de transmission en un seul et vice-versa; eh oui vous n'avez qu'une seule connexion la plupart du temps). • Le protocole UDP est lui nettement plus simple, les données sont envoyées sans que la communication entre les deux machines soit établie et sans que la bécane réceptrice n'envoie d'accusés de réception. Bref, il n'y a pas de contrôle d'erreur de transmission, le protocole n'est pas orienté connexion. 4.1 Situation dans le modèle OSI TCP et UDP appartiennent à la couche 4 (Transport) du modèle OSI. 4.2 Principales caractéristiques TCP et UDP sont les deux protocoles principaux dans la couche de transport. TCP et UDP utilisent IP comme couche réseau. TCP procure une couche de transport fiable, même si le service qu'il (IP) utilise ne l'est pas. TCP est orienté connexion, c'est-à-dire qu'il réalise une communication complète entre 2 points. Cela permet d'effectuer une communication client/serveur, par exemple, sans se préoccuper du chemin emprunté. UDP émet et reçoit des datagrammes. Cependant, contrairement à TCP, UDP n'est pas fiable et n'est pas orienté connexion. Il est utilisé pour les résolutions DNS et aussi pour TFTP. 4.3 Visualisation du fichier /etc/protocols Cela nous ouvre le fichier suivant : # Internet (IP) protocols # # Updated from http://www.iana.org/assignments/protocol-numbers and other # sources. # New protocols will be added on request if they have been officially # assigned by IANA and are not historical. # If you need a huge list of used numbers please install the nmap package. ip 0 IP # internet protocol, pseudo protocol number #hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 GGP # gateway-gateway protocol ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') st 5 ST # ST datagram mode tcp 6 TCP # transmission control protocol THEYS Alban MAUSSAND David 3BIRT02 11/25 MEILHAC Alexis egp 8 EGP # exterior gateway protocol igp 9 IGP # any private interior gateway (Cisco) pup 12 PUP # PARC universal packet protocol udp 17 UDP # user datagram protocol hmp 20 HMP # host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 [RFC905] xtp 36 XTP # Xpress Transfer Protocol ddp 37 DDP # Datagram Delivery Protocol idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport ipv6 41 IPv6 # Internet Protocol, version 6 ipv6-route 43 IPv6-Route # Routing Header for IPv6 ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6 idrp 45 IDRP # Inter-Domain Routing Protocol rsvp 46 RSVP # Reservation Protocol gre 47 GRE # General Routing Encapsulation esp 50 IPSEC-ESP # Encap Security Payload [RFC2406] ah 51 IPSEC-AH # Authentication Header [RFC2402] skip 57 SKIP # SKIP ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6 ipv6-opts 60 IPv6-Opts # Destination Options for IPv6 rspf 73 RSPF CPHB # Radio Shortest Path First (officially CPHB) vmtp 81 VMTP # Versatile Message Transport eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco) ospf 89 OSPFIGP # Open Shortest Path First IGP ax.25 93 AX.25 # AX.25 frames ipip 94 IPIP # IP-within-IP Encapsulation Protocol etherip 97 ETHERIP # Ethernet-within-IP Encapsulation [RFC3378] encap 98 ENCAP # Yet Another IP encapsulation [RFC1241] # 99 # any private encryption scheme pim 103 PIM # Protocol Independent Multicast ipcomp 108 IPCOMP # IP Payload Compression Protocol vrrp 112 VRRP # Virtual Router Redundancy Protocol l2tp 115 L2TP # Layer Two Tunneling Protocol [RFC2661] "/etc/protocols" [readonly] 59 lines, 2626 characters 4.4 Visualisation du fichier /etc/services La couche transport apporte la notion de port : identification des applications par le numéro de port unique qu’elles utilisent. On appelle socket la combinaison d’une adresse IP et d’un port. Sous UNIX, la liste des services supportés se trouve dans le fichier /etc/services /etc/services : Cela nous ouvre le fichier suivant : # Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known THEYS Alban MAUSSAND David 3BIRT02 12/25 MEILHAC Alexis # port number for both TCP and UDP; hence, officially ports have two entries # even if the protocol doesn't support UDP operations. # # Updated from http://www.iana.org/assignments/port-numbers and other # sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services . # New ports will be added on request if they have been officially assigned # by IANA and used in the real-world or are needed by a debian package. # If you need a huge list of used numbers please install the nmap package. tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname tacacs 49/tcp # Login Host Protocol (TACACS) tacacs 49/udp re-mail-ck 50/tcp # Remote Mail Checking Protocol re-mail-ck 50/udp domain 53/tcp # name-domain server domain 53/udp mtp 57/tcp # deprecated tacacs-ds 65/tcp # TACACS-Database Service tacacs-ds 65/udp bootps 67/tcp # BOOTP server bootps 67/udp bootpc 68/tcp # BOOTP client bootpc 68/udp tftp 69/udp "/etc/services" [readonly] 562 lines, 18449 characters THEYS Alban MAUSSAND David 3BIRT02 13/25 MEILHAC Alexis 4.5 Liste nécessaire et suffisante pour définir une association entre 2 machines De nombreux programmes TCP/IP peuvent être exécutés simultanément sur Internet (vous pouvez par exemple ouvrir plusieurs navigateurs simultanément ou bien naviguer sur des pages HTML tout en téléchargeant un fichier par FTP). Chacun de ces programmes travaille avec un protocole, toutefois l'ordinateur doit pouvoir distinguer les différentes sources de données. Ainsi, pour faciliter ce processus, chacune de ces applications se voit attribuer une adresse unique sur la machine, codée sur 16 bits: un port (la combinaison adresse IP + port est alors une adresse unique au monde, elle est appelée socket). L'adresse IP sert donc à identifier de façon unique un ordinateur sur le réseau tandis que le numéro de port indique l'application à laquelle les données sont destinées. De cette manière, lorsque l'ordinateur reçoit des informations destinées à un port, les données sont envoyées vers l'application correspondante. S'il s'agit d'une requête à destination de l'application, l'application est appelée application serveur. S'il s'agit d'une réponse, on parle alors d'application cliente. 4.6 Commande LINUX netstat Utilisée sans aucun argument, la commande netstat affiche l'ensemble des connexions ouvertes par la machine. La commande netstat possède un certain nombre de paramètres optionnels, sa syntaxe est la suivante : netstat [-a] [-e] [-n] [-o] [-s] [-p PROTO] [-r] [intervalle] Utilisée avec l'argument -a, la commande netstat affiche l'ensemble des connexions et des ports en écoute sur la machine. Utilisée avec l'argument -e, la commande netstat affiche les statistiques Ethernet. Utilisée avec l'argument -n, la commande netstat affiche les adresses et les numéros de port en format numérique, sans résolution de noms. Utilisée avec l'argument -o, la commande netstat détaille le numéro du processus associé à la connexion. Utilisée avec l'argument -p suivi du nom du protocole (TCP, UDP ou IP), la commande netstat affiche les informations demandées concernant le protocole spécifié. Utilisée avec l'argument -r, la commande netstat permet d'afficher la table de routage. Utilisée avec l'argument -s, la commande netstat affiche les statistiques détaillées par protocole. tplinux@dst-08:~$ netstat -i Table d'interfaces noyau Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 87713 0 0 0 5481 0 0 0 BMRU lo 16436 0 27 0 0 0 27 0 0 0 LRU tplinux@dst-08:~$ netstat -s THEYS Alban MAUSSAND David 3BIRT02 14/25 MEILHAC Alexis Ip: 4684 paquets reçus au total 4 avec des adresses invalides 0 réacheminés 0 paquets arrivant rejetés 4680 paquets entrants délivrés 4198 requêtes envoyées 182 dropped because of missing route Icmp: 37 Messages ICMP reçus 0 messages ICMP entrant échoués Histogramme d'entrée ICMP destination injoignable: 7 echo replies: 30 4139 messages ICMP envoyés 0 messages ICMP échoués Histogramme de sortie ICMP destination injoignable: 4101 requête d'écho : 38 IcmpMsg: InType0: 30 InType3: 7 OutType3: 4101 OutType8: 38 Tcp: 10 ouvertures de connexions actives 0 connexions passives ouvertes 10 tentatives de connexion échouées 0 reinitialisation de la connection détéctée 0 connexions établies 20 segments reçus 20 segments envoyés 0 segments retransmis 0 mauvais segments reçus 10 réinitailisations envoyées Udp: 271 packets reçus 4094 paquets reçus sur un port inconnu 0 erreurs de réception de paquet 35 paquets envoyés UdpLite: TcpExt: 0 en-têtes de paquets prédits IpExt: InMcastPkts: 277 OutMcastPkts: 38 InBcastPkts: 252 OutBcastPkts: 1 THEYS Alban MAUSSAND David 3BIRT02 15/25 MEILHAC Alexis tplinux@dst-08:~$ netstat -r Table de routage IP du noyau Destination Passerelle Genmask Indic MSS Fenêtre irtt Iface 192.168.1.0 * 255.255.255.0 U 00 0 eth0 4.7 Schéma de routage du réseau du département Aucun interet. On observe que notre réseau !!! 5 RPC et XDR Le modèle d’appel de procédure à distance (RPC) est similaire à celui de l’appel de procédure local (LPC). Dans le cas du local, l’appelant places des arguments à une procédure dans un lieu bien placé (comme les registres de résultats). Il transferts ensuite le contrôle à la procédure, et éventuellement en reçoit un en retour. De là, les résultats de la procédure sont extraient depuis le lieu bien placé, et celui qui appelle (le client) continue l’exécution. L’appel de procédure à distance est similaire, dans ce fil de contrôle deux traitements tourne logiquement: l’un est le traitement du client et l’autre celui du serveur. Le traitement du client envoie un message d’appel au traitement serveur et attend un message de réponse. Le message d’appel contient des paramètres de procédure, avec d’autres contenus. Le message de réponse contient les résultats de procédure, avec d’autres contenus. Une fois que le message de réponse est reçu, les résultats de la procédure sont extraient, l’exécution du client est recommencé. Du côté du serveur, un traitement est dormant attendant l’arrivé d’un message d’appel. Quand un arrive, le traitement serveur extrait les paramètres de procédure, calcule les résultats, envoie une réponse, et puis attend le prochain message d’appel. Dans ce modèle, seulement un des deux traitements est actif à n’importe quel temps donné. Ce modèle est seulement un exemple. Le protocole RPC ne fait aucune restriction sur le modèle de simultanéité implémenté, et d’autres sont possibles. Par exemple, une implémentation peut choisir d’avoir des appels RPC asynchrones, comme ça le client peut faire du travail utile pendant qu’il attend la réponse du serveur. Une autre possibilité est que le serveur crée une tâche pour traiter une requête entrante, comme ça le serveur est libre de recevoir d’autres requêtes. Le protocole de message RPC est souvent représenté en langage data XDR (External Data Representation). Pour information le langage est très proche du langage C. Un langage RPC existe, servant à étendre les fonctions XDR. THEYS Alban MAUSSAND David 3BIRT02 16/25 MEILHAC Alexis 5.1 Présentation Les RPC (couche session du modèle OSI) permettent l’exécution de procédures sur une machine distante. Autrement dit, elles permettent de concevoir des programmes répartis en fournissant un mécanisme d’appel de procédures distantes. Nombreuses sont les applications ayant recours aux RPC. On trouve notamment NFS, NIS mais également la plupart des r-commandes rusers, rwall, etc. Les procédures (ou fonctions) RPC sont regroupées en programmes et identifiées par des numéros. Les programmes se voient aussi attribuer un numéro ainsi qu’un numéro de version. C’est par le biais de ce triplet qu’un client peut appeler une procédure particulière. XDR (couche présentation du modèle OSI) Conjointement aux RPC et au-dessus (dans le modèle OSI), on utilise le protocole XDR (eXternal Data Representation). XDR gère la mise en forme des données: cryptage, conversion EBCDIC/ASCII. Il définit un standard de représentation des types sur le réseau, afin notamment de palier la multiplicité des représentations utilisées (big endien, little endien, ...). 5.2 La pile TCP / IP TCP/IP est un tandem de protocoles (TCP et IP) utilisé surtout dans les réseaux Internet ou Intranet. Il fait donc la liaison entre des protocoles de couches applicatives particuliers tels que HTTP et des couches basses des réseaux usuels telles que LLC et Ethernet. Principaux protocoles utilisés au-dessus de la couche transport : HTTP : Hyper Text Transfer Protocol N'est autre que le protocole permettant de visualiser des pages Mis en oeuvre par Internet Explorer, par exemple, dans l'ordinateur de l'internaute. FTP : File Transfer Protocol. Pour échanger des fichiers entre ordinateurs par Internet. TFTP : Trivial File Transfer Protocol. Même usage, beaucoup plus simple et rapide ... mais moins fiable. TELNET Pour prendre la main sur une machine à distance : pour sa maintenance par exemple. SMTP : Simple Mail Transfer Protocol. Pour transporter des messages sur le net (e-mail). THEYS Alban MAUSSAND David 3BIRT02 17/25 WEB. MEILHAC Alexis SNMP : Simple Network Management Protocol. Utilitaire de gestion du réseau. DNS : Domain Name Service. Service de traduction de noms de domaines en adresses IP ou l'inverse. NFS : Network File System. Exportation de systèmes de fichiers XDR : External Data Representation. Unification de la représentation des données. RPC : Remote Procedure Call Appels de procédures tournant sur des hôtes distants. 6 NFS 6.1 Rôle de NFS Les réseaux informatiques actuels sont souvent constitués de machines et surtout de systèmes d'exploitation hétérogènes, qu'il s'agisse de Windows 95/98, Windows NT, MacOS, UNIX, ou encore Linux. Pour autant, les utilisateurs veulent pouvoir mettre en place un partage de données entre toutes leurs machines. C'est pour ce faire qu'a été mis au point le système de fichier \textbf{NFS} : une machine peut partager de façon transparente, n'importe quel répertoire de sa propre arborescence, autorisant ainsi toute autre machine a travailler sur ce répertoire via le réseau, comme si ce répertoire se trouvait sur son propre disque dur. C'est Sun qui a commencé le développement de NFS au début des années 80. NFS est un ensemble de logiciels permettant de partager des fichiers dans un réseau de machines hétérogènes. Il permet à un utilisateur situé sur une machine connectée au réseau d’accéder à des fichiers distants comme s’ils étaient sur sa propre machine. NFS est situé au niveau de la couche 7 (Application) du modèle OSI. 6.2 Visualisation des fichiers /etc/fstab et /etc/exports Le fichier fstab contient des informations sur les différents systèmes de fichiers. fstab est uniquement lus par les programmes, jamais écrit. C'est la responsabilité de l'administrateur de créer et de maintenir ce fichier correctement. Chaque système de fichier est décrit sur une ligne indépendante. Les champs contenus sur chaque ligne sont séparés par des espaces ou des tabulations. /etc/fstab …. Le fichier /etc/exports, ce fichier (à créer s'il est absent) contient la liste des exportations. Sur chaque ligne, on précise un répertoire du système de fichiers, suivi par la liste des machines distantes clientes autorisées à les monter. Si cette liste est vide, toutes les stations accessibles sont autorisées. THEYS Alban MAUSSAND David 3BIRT02 18/25 MEILHAC Alexis emacs /etc/exports >> fichier vide sur notre système Donc toutes les stations accessibles sont autorisées. /etc/exports …. Pour valider un changement opéré dans ce fichier de configuration, faire appel à la commande : # exportfs -a 7 NIS Le but des NIS est de permettre une gestion centralisée des utilisateurs leur permettant de se connecter de manière transparente ou ils veulent. Toutes les machines rattachées au même domaine (enseignement dans notre cas) partagent de nombreux fichiers. Les plus importants sont : /etc/passwd : liste des comptes et mots de passes. /etc/group : liste des noms de groupe. /etc/netgroup : liste des noms de groupe réseau. /etc/auto.vol : les directory possibles sous /vol /etc/auto.home : les directory possibles sous /home /etc/services et /etc/rpc contiennent des noms logiques de services. On peut regarder le contenu de ces fichiers en tapant par exemple ypcat passwd ou ypcat -k auto.vol. Pour avoir la liste des comptes aj2 vous pouvez faire: ypcat passwd | fgrep aj2 Le serveur maître des NIS est b710lic, le serveur secondaire de sauvegarde est b710pap Bien que diffusé partout le fichier passwd ne permet pas la connexion de toute personne sur toutes les machines. C'est le /etc/passwd local à la machine qui décide. Comparez par exemple celui d'une machine enseignement et d'une machine recherche. C'est sur la base des groupes réseau que le tri est fait (netgroup) Lorsque les NIS sont utilisées, on ne change plus son mot de passe avec passwd mais avec yppasswd THEYS Alban MAUSSAND David 3BIRT02 19/25 MEILHAC Alexis 7.1 Listage du fichier /etc/passwd C'est lui qui contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...). Seul le super utilisateur doit pouvoir le modifier. Il faut donc modifier les droits de ce fichier de façon à ce qu'il soit en lecture seul pour les autres utilisateurs. Si on regarde de plus près la composition de ce fichier, on s'aperçoit qu'il respecte le format suivant nom_du_compte : mot_de_passe : numero_utilisateur : numero_de_groupe : commentaire : répertoire : programme_de_demarrage Sept champs sont explicités séparés par le caractère ":" : - le nom du compte de l'utilisateur - le mot de passe de l'utilisateur (codé bien sûr) - l'entier qui identifie l'utilisateur pour le système d'exploitation (UID=User ID, identifiant utilisateur) - l'entier qui identifie le groupe de l'utilisateur (GID=Group ID, identifiant de groupe) - le commentaire dans lequel on peut retrouver des informations sur l'utilisateur ou simplement son nom réel - le répertoire de connexion qui est celui dans lequel il se trouve après s'être connecté au système - la commande est celle exécutée après connexion au système (c'est fréquemment un interpréteur de_commandes) Exemple Voici ce qui apparaît lorque l'on tape /etc/passwd : root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh syslog:x:101:102::/home/syslog:/bin/false klog:x:102:103::/home/klog:/bin/false avahi-autoipd:x:103:111:Avahi autoip daemon:/var/lib/avahi-autoipd:/bin/false saned:x:104:114::/home/saned:/bin/false messagebus:x:105:115::/var/run/dbus:/bin/false THEYS Alban MAUSSAND David 3BIRT02 20/25 MEILHAC Alexis avahi:x:106:116:Avahi mDNS daemon:/var/run/avahi-daemon:/bin/false polkituser:x:107:117:PolicyKit:/var/run/PolicyKit:/bin/false haldaemon:x:108:118:Hardware abstraction layer:/var/run/hald:/bin/false hplip:x:109:7:HPLIP system user:/var/run/hplip:/bin/false dst:x:1000:1000:Département Signal et Télécoms:/home/dst:/bin/bash tplinux:x:1001:1001::/home/tplinux:/bin/bash - Il faut savoir que les mots de passe situés dans ce fichier sont chiffrés. Ca sert donc à rien de l'éditer et de remplacer le champ mot_de_passe en tapant directement son mot de passe. Vous n'obtiendriez uniquement que le blocage du compte. - Lorsqu'un utilisateur se connecte, le programme login compare le mot de passe tapé par l'utilisateur (après l'avoir chiffré) à celui qui est dans le fichier passwd. Si ils sont différents, la connexion ne peut se faire. - Pour interdire l'utilisation, il suffit de remplacer le mot de passe chiffré par une étoile : "*". - On peut également ouvrir les accès à un compte en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra le faire. - Pour pouvoir modifier le mot de passe d'un compte grâce à la commande passwd, il faut être soit administrateur systême, soit propriétaire du compte. - UID : identifiant (unique) de chaque compte utilisateur. Les nombres de 0 à 99 sont fréquemment réservés à des comptes propres à la machine. Les valeurs supérieures à 100 sont elles réservées aux comptes utilisateurs. - GID : identifiant de groupe. Le groupe par défaut (nommé group) porte le numéro 50. Cet identifiant est utilisé en relation avec les droits d'accès aux fichiers. Cette question ne vous préoccupera que si votre système comporte plus d'un seul groupe d'utilisateurs. (Il faudra alors se préoccuper du fichier /etc/group. - On peut à partir du Shell, modifier l'interpréteur de commandes. Pour ceci, on utilise la commande chsh ou alors passwd -s. Linux cherche alors dans le fichier /etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur. - Il faut s’assurer que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd - Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de remplacer le nom du compte root par celui désiré. - Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro. 7.2 Localisation du lien login_name password Une méthode pour stocker l'information sur les comptes, est le format de mot de passe caché. Cette méthode stocke l'information sur les comptes dans le fichier /etc/passwd dans un format THEYS Alban MAUSSAND David 3BIRT02 21/25 MEILHAC Alexis compatible. Cependant, le mot de passe est rangé comme un simple caractère “x” (en fait non stocké dans ce fichier). Un second fichier, appelé ``/etc/shadow'', contient le mot de passe codé de même que toute autre information telle que les valeurs relatives à l'expiration du compte ou du mot de passe, etc. Le fichier /etc/shadow file ne peut être lu que par le compte root et cela constitue donc un risque moins grand pour la sécurité 7.3 Rôle du service NIS Voir question précédente 7.4 Intérêt d’une base NIS dans un réseau Admettons que vous disposiez de plusieurs postes linux connectés en réseau, vous êtes obligés de créer autant de comptes sur chaque machine que vous avez d'utilisateurs, le problème est que chaque utilisateur se retrouve avec une home directory différente sur chaque poste, mais aussi un mot de passe distinct, voire éventuellement un uid et gid différent. De même pour les fichiers /etc/hosts, quand vous rajoutez une machine, vous êtes obligés de modifier un à un tous les fichiers /etc/hosts de chaque machine. Avec un ensemble pareil, il est difficile de garder une certaine cohérence entre les machines, et c'est particulièrement déroutant pour les utilisateurs (mots de passe, homedirectory). D'où l'intérêt du domaine NIS, anciennement appelé YP (pour Yellow Page devenu marque déposée), dans un domaine NIS, on dispose d'un serveur NIS qui contient des fichiers de référence (appelés map), comme /etc/passwd ou /etc/hosts, les clients NIS vont consulter ces fichiers de référence. Ainsi si l'on rajoute un utilisateur sur le réseau, c'est uniquement le fichier de référence /etc/passwd du serveur qui sera modifié et distribué aux clients, on dispose donc d'un /etc/passwd identique pour tout le réseau qui se trouve physiquement sur le réseau, seul lui est modifié, le principe est le même pour les autres map disponibles (hosts,group,etc). THEYS Alban MAUSSAND David 3BIRT02 22/25 MEILHAC Alexis 8 Wireshark Pour s'amuser selon notre grand maitre PETIT: (pour créer une connexion internet) tplinux@dst-08:~$ sudo route add default gw 192.168.1.1 [sudo] password for tplinux: tplinux@dst-08:~$ route Table de routage IP du noyau Destination Passerelle 192.168.1.0 * default Genmask Indic Metric Ref Use Iface 255.255.255.0 U 192.168.1.1 0.0.0.0 0 0 0 eth0 UG 0 0 0 eth0 tplinux@dst-08:~$ nslookup > server 192.168.1.1 Default server: 192.168.1.1 Address: 192.168.1.1#53 > www.google.fr Server: Address: 192.168.1.1 192.168.1.1#53 Test avec google : Non-authoritative answer: www.google.fr canonical name = www.google.com. www.google.com canonical name = www.l.google.com. Name: www.l.google.com Address: 216.239.59.147 Name: www.l.google.com Address: 216.239.59.99 THEYS Alban MAUSSAND David 3BIRT02 23/25 MEILHAC Alexis Name: www.l.google.com Address: 216.239.59.103 Name: www.l.google.com Address: 216.239.59.104 > exit 9 Conclusion Nous avons vu grâce à ces différentes parties que, Linux a été optimisé pour le réseau aussi bien au niveau de ses applications que de sa structure interne. Malgré des années noires en termes d'incompatibilité, Linux a su s'adapter aux différentes configurations ce qui fait de lui aujourd'hui un des leaders mondiaux en matière de réseaux. Ainsi Linux est en quelque sorte un OS fait pour la mise en réseau aussi bien dans sa capacité à partager des ressources avec un autre Linux qu'avec un autre système tel que Windows. Dans le passé les Unix conventionnels ont fait leurs preuves et leur temps, et sont morts de leur manque d'ouverture vers le monde et les nouvelles technologies. Désormais la politique de l' "open source", contribue largement à ce nouvel engouement envers Linux. THEYS Alban MAUSSAND David 3BIRT02 24/25 MEILHAC Alexis 10 Bibliographie www.kh.refer.org www.netline.be http://robert.cheramy.net/2002/04/cours_sti/ip.pdf (Schéma format IP) www.commentcamarche.net http://www.piaf.asso.fr/article.php3?id_article=181 (Ping) www.info.univ-angers.fr (rlogin/telnet) http://coredump.developpez.com THEYS Alban MAUSSAND David 3BIRT02 25/25 MEILHAC Alexis