Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

logiciels:linux:5.reseau
**********
* Réseau *
**********

Port/Ports TCP/IP
Article Table des matières

    * Internet (protocoles)
          o Internet
          o Protocole
          o Adresse IP
          o Le CIDR
          o DNS (Nom de domaine)
          o Port
          o URL
          o Avancé :
                + TCP/IP
                + IP
                + ARP
                + ICMP
                + TCP
                + UDP
                + Routage
                + QoS (Qualité de service)
                + MPLS
                + PPP / SLIP
                + HTTP
                + LDAP
                + DHCP
                + SNMP
                + RTCP
                + IPv6
                + Déclenchement de port (Port triggering)
                + VLAN
                + POP3, SMTP, IMAP
                + FTP
                + Telnet
                + RFC
          o Voir aussi :
                + World Wide Web
                + Courrier électronique
                + RSS
                + Podcast
                + Moteur de recherche
                + Firewall
                + Routeur
                + FAQ réseau
                + Internet

L'utilité des ports
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.
La fonction de multiplexage
Le processus qui consiste à pouvoir faire transiter sur une connexion des informations provenant de diverses applications s'appelle le multiplexage. De la même façon le fait d'arriver à mettre en parallèle (donc répartir sur les diverses applications) le flux de données s'appelle le démultiplexage.


Ces opérations sont réalisées grâce au port, c'est-à-dire un numéro associé à un type d'application, qui, combiné à une adresse IP, permet de déterminer de façon unique une application qui tourne sur une machine donnée.
Assignations par défaut
Il existe des milliers de ports (ceux-ci sont codés sur 16 bits, il y a donc 65536 possibilités), c'est pourquoi une assignation standard a été mise au point par l'IANA (Internet Assigned Numbers Authority), afin d'aider à la configuration des réseaux.

    * Les ports 0 à 1023 sont les «ports reconnus» ou réservés («Well Known Ports»). Ils sont, de manière générale, réservés aux processus système (démons) ou aux programmes exécutés par des utilisateurs privilégiés. Un administrateur réseau peut néanmoins lier des services aux ports de son choix.
    * Les ports 1024 à 49151 sont appelés «ports enregistrés» («Registered Ports»).
    * Les ports 49152 à 65535 sont les «ports dynamiques et/ou privés» («Dynamic and/or Private Ports»). 



Voici certains des ports reconnus les plus couramment utilisés :


Port 	Service ou Application
21 	FTP
23 	Telnet
25 	SMTP
53 	Domain Name System
63 	Whois
70 	Gopher
79 	Finger
80 	HTTP
110 	POP3
119 	NNTP


Ainsi, un serveur (un ordinateur que l'on contacte et qui propose des services tels que FTP, Telnet, ...) possède des numéros de port fixes auxquels l'administrateur réseau a associé des services. Ainsi, les ports d'un serveur sont généralement compris entre 0 et 1023 (fourchette de valeurs associées à des services connus).

Du côté du client, le port est choisi aléatoirement parmi ceux disponibles par le système d'exploitation. Ainsi, les ports du client ne seront jamais compris entre 0 et 1023 car cet intervalle de valeurs représente les ports connus. 

**************************************
* Utilisation de la commande netstat *
**************************************
Source : http://www.tux-planet.fr/utilisation-de-la-commande-netstat/
La commande netstat, sous Linux, a des fonctionalités bien pratique. Elle peut par exemple, permettre de connaître le nombre exact de connexions sur un port donné.

Ici, on veut afficher le nombre de connexions sur le port 80 :

    netstat -an | egrep ".*:80" | tr -s " " | cut -f6 -d " " | sort | uniq -c 

On peut également afficher toutes les connexions tcp et sur quelles adresses distantes :

    netstat -tn 

Tous les ports en attente de connexion tcp (et donc ouvert) avec le programme associé :

    netstat -lptn 

Ou encore, obtenir des statistiques :

    netstat -s 

Voici une liste des différents états qui existe (trouvé sur Internet) :
    * ESTABLISHED: la socket a une connexion établie
    * SYN_SENT: la socket attend activement d'établir une connexion
    * SYN_RECV: une requête de connexion a été reçue du réseau
    * FIN_WAIT1: la socket est fermée, et la connexion est en cours de terminaison
    * FIN_WAIT2: la connexion est fermée, et la socket attend une terminaison du distant
    * TIME_WAIT: la socket attend la fin du traitement avant d'entreprendre la fermeture
    * CLOSED: la socket n'est pas utilisée
    * CLOSE_WAIT: le distant a arrêté, attendant la fermeture de la socket
    * LAST_ACK: le distant termine, et la socket est fermée. Attente d'acquittement
    * LISTEN: la socket est à l'écoute de connexions entrantes
    * CLOSING: les deux prises sont arrêtées mais toutes les données locales n'ont pas encore été envoyées
    * UNKNOWN: l'état de la prise est inconnu

**********************************************************************
* Sniffer des connexions réseaux avec la commande tcpdump sous Linux *
**********************************************************************

Source : http://www.tux-planet.fr/sniffer-des-connexions-reseaux-avec-la-commande-tcpdump-sous-linux/

Tcpdump est un logiciel en ligne de commande sous Linux, qui permet de capturer et d'analyser tous les paquets qui transitent par une carte réseau. Cet article explique son fonctionnement et est illustré de quelques exemples.

1. Installation

Lancez cette commande en root pour une distribution à base de rpm (Fedora, CentOS, RedHat ...) :

    yum install tcpdump 

Ou celle-ci pour une distribution à base de debian (Ubuntu, Debian ...) :

    apt-get install tcpdump 

2. Exemples d'utilisation simple

Dans les exemples donnés ici, la carte réseau utilisée est identifiée par eth0. Il faut savoir également que cette commande n'est accessible que pour l'utilisateur root.

Capturer toutes les connexions, qui ont pour source une adresse IP commençant par 192.168. :

    tcpdump -i eth0 src net 192.168

Capturer toutes les connexions, qui ont pour destination une adresse IP bien précise :

    tcpdump -i eth0 dst net 192.168.0.175

Isoler toutes les connexions qui utilisent le port 80 (http) :

    tcpdump -i eth0 port 80

On pourra également isoler la source ou la destination. Ici on ne souhaite capturer que les envois de mails (port 25 en destination) :

    tcpdump -i eth0 dst port 25

3. Exemples d'utilisation avancée

La commande tcpdump permet également d'utiliser des expressions logiques, afin d'affiner les captures. Pour cela, on peut utiliser les opérateurs logiques suivants :

    * Négation : ! ou not
    * Opérateur et : && ou and
    * Opérateur ou : || ou or

Si je souhaite capturer toutes les connexions réseaux qui vont de l'adresse IP 192.168.0.175 vers l'adresse 192.168.0.1, utilisant le protocole TCP et le port 80, je pourrais utiliser une expression comme celle-ci :

    tcpdump -i eth0 src 192.168.0.175 and dst 192.168.0.1 and port 80 and tcp 

Vous l'avez peut-être remarqué, mais toutes ces commandes n'affichent que le dialogue effectué par la carte réseau. Pour afficher le contenu même des paquets qui transitent au format hexadécimal et ascii, on pourra utiliser les options -XX (ascii + hexa) et -s0 (= pour full content).

Voici un exemple de capture, lorsque q'un navigateur web se connecte à l'adresse www.tux-planet.fr :

    0×0040: d775 4745 5420 2f73 7479 6c65 2e63 7373 .uGET./style.css
    0×0050: 2048 5454 502f 312e 310d 0a48 6f73 743a .HTTP/1.1..Host:
    0×0060: 2077 7777 2e74 7578 2d70 6c61 6e65 742e .www.tux-planet.
    0×0070: 6672 0d0a 5573 6572 2d41 6765 6e74 3a20 fr..User-Agent:. 

La commande tcpdump permet également une utilisation mal intentionnée, comme le montrent ces exemples :

Capturer un mot de passe FTP :

    tcpdump -XX -s0 -i eth0 tcp and port 21 | grep -A1 PASS

Récupérer un cookie de session, d'un utilisateur authentifié sur un site web :

    tcpdump -XX -s0 -i eth0 port 80 | grep -i -A5 Cookie

Capturer des emails envoyés sur le réseau (ici on prend une longueur de 20 lignes, à adapter selon la taille du message) :

    tcpdump -XX -s0 -i eth0 port 25 | grep -i -A20 From

Capturer des conversations msn (longueur de 10 lignes à adapter aussi selon la taille du message) :

    tcpdump -XX -s0 -i eth0 port 1863 | grep -A10 "text/plain"

On comprend ici très rapidement l'utilité d'utiliser des connexions sécurisées (https, ftps, ssh, smtps ...) lorsque l'on est sur Internet, afin de rendre les informations sensibles, illisibles via ce procédé.


***********************************************************************
* Connaître le nombre de machines Linux, Windows et Mac sur un réseau *
***********************************************************************

L'astuce du jour consiste à utiliser la commande nmap pour scanner un réseau et afficher ensuite le nombre de machines sous Linux, Windows ou Mac. Le but sera de se faire une idée des systèmes d'exploitation qui sont utilisés autour de vous.

Voici la commande qui permet de lancer cette analyse. Il faudra bien entendu adapter la plage d'adresses IP à scanner en fonction de celle de votre réseau local :

    nmap -O 192.168.1.1-255 | grep "Running: " | sort | uniq -c 

Ici, on utilise nmap avec l'option -O qui permet de détecter le système. Ce dernier va alors envoyer des paquets TCP avec des ensembles anormaux d'options IP. Et en examinant les réponses reçues, il sera capable de connaître l'OS utilisé.


1598  sudo aptitude install aircraft
 1599  ifconfig
 1600  netstat -tupan
 1601  sudo netstat -tupan

ssh eesi@192.168.10.1
ssh -X eesi@192.168.10.1
scp Desktop/processing-1.2.1.tgz eesi@192.168.10.1:~/
scp Desktop/Pd-0.42.5-extended-ubuntu-maverick-i386.deb eesi@192.168.10.1:~/

iwconfig
 1413  man iwconfig
 1414  iwlist
 1415  iwlist scanning

wget -r -np http://www.xml.com/ldd/chapter/book/ wget -r -k -np -T 10 -t 1 http://www-licence.ufr-info-p6.jussieu.fr/lmd/licence/2008/ue/LI338-2008oct/ wget -r -k -np AdresseDeLaPage 

FTP lftp -c "open nom_de_domaine ; user login password ; mput src destination ; ls" ncftp -u login -p passwd host << EOF get fichier ls EOF 


ifconfig hostname wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 81-66-112-14.rev.numericable.fr Ping 81.66.112.14 Traceroute 81.66.112.14 

svn delete
 svn ci -m "Version 0.35"
 1129  svn add ./sox/win/*
 1130  svn ci -m "Version 0.35"
 1131  svn up

 svn mkdir src
 1048  svn add src/*
 1049  svn mkdir src/processes
 1050  svn add src/processes/*
 1051  svn mkdir sox/linux
 1052  svn mkdir sox/win
 1053  svn delete sox/linux
 1054  svn delete --force sox/linux
 1055  svn add src/win/*
 1056  svn add sox/win/*
 1057  svn add ressources/images/fade/*
 1058  svn add ressources/images/icones/*
 1059  svn ci -m "Version 0.34"

svn cleanup
 1023  ls
 1024  svn ci
 1025  ll
 1026  svn add tmp
 1027  cd ..
 1028  rm -rf dev

wget -r -np http://www.xml.com/ldd/chapter/book/

*******************
wget http://abel.jerome.free.fr/$(wget -q -O - http://abel.jerome.free.fr | sed -n 's#.*<img src=\"\(.*\)\".*#\1#p' | cut -d\" -f1)

En fait la commande suivante marche parfaitement :
sed -n 's#.*<title>\(.*\)</title>.*#\1#p' mon_fichier 

wget -q -O - http://www.jinnove.com/flux_rss?export=agenda.xml | sed -n 's#.*<title>\(.*\)</title>.*#\1#p'

grep -o '/images.*\.jpg' nom_du_fichier

egrep '^.*\/images.*\.jpg.*' SOURCE | sed -e 's/^.*\(\/images.*\.jpg\).*$/\1/' > DEST

Si tu ne veux que les titres :

sed -n 's#.*<h3>\(.*\)</h3>.*#\1#;s#.*">\(.*\)<.*#\1#p' fichier

wget  url_du_fichier.rss.xml
pour le parser directement au travers d'un pipe avec "sed" :
wget -q -O - url_du_fichier.rss.xml | sed 'blablabla'
/home/resonancg/www/wiki/data/pages/logiciels/linux/5.reseau.txt · Dernière modification: 2015/03/08 00:12 de resonance