Les services réseaux : utilités et contrôles
Un service réseau est un logiciel ayant pour but de répondre à une demande provenant du réseau.
Il n’est pas rare d’avoir un certain nombre de services démarrés en même temps que son système d’exploitation.
Le but de se document est de comprendre l’utilité d’un certain nombre de services reseaux et ainsi jugé s’il est util de le conserver. Puis nous nous attacheront à voir comment utiliser les mécanismes internes aux logiciels pour contrôler les accès et les informations fournies.
Liste des services
Pour connaitre les services réseau :
netstat -tanp | grep LISTEN
Voici un exemple de service :
tcp 0 0 *:111 * :* LISTEN 1505/rpc.portmap
Les informations qui nous interessent ici sont :
- *:111 : le port 111 est utilisé ...
- 1505/rpc.portmap : ... par l’application rpc.portmap (ayant le PID 1505)
Pour question de facilité, je vais prendre la syntaxe retourné par l’outil nmap : nmap -sV 192.168.1.76 (la machine utilisé aura l’ip 192.168.1.76).
Cette outil donne la liste des services réseaux démarré sur la machine cible.
La syntaxe de la réponse est : Port/Protocole Etat Nom_du_service.
Voici une liste de service couremment ouvert :
9/tcp open discard ?
but
Le service discard peut être considéré comme l’équivalent du fichier /dev/null sur le réseau : les octets qu’on lui envoie seront oubliés ("discard").
utilisation
telnet 192.168.1.76 9
arret, protection
voir inetd
13/tcp open daytime
but
Donne la date système en clair.
utilisation
telnet 192.168.1.76 13
arret, protection
voir inetd
22/tcp open ssh OpenSSH 3.8p1 (protocol 2.0)
but
Serveur ssh. Permet d’executer des commandes sur une machine a distance, de transmettre des fichiers ... de façon sécurisé.
utilisation
ssh 192.168.1.76
arret, protection
Sous slackware : /etc/rc.d/rc.sshd stop
chmod -x /etc/rc.d/rc.sshd
25/tcp open smtp ???
but
Serveur smtp. Il sert à envoyer et recevoir des courriels. Ce serveur n’est pas utile si vous utilisez une client courrier comme evolution, mozilla-mail ou kmail.
utilisation
telnet 192.168.1.76 25
HELO
Pour vérifier si un utilisateur existe sur le systeme :
VRFY root
250
VRFY existepo
550
Plus interessant, il est possible de savoir a qui est rediriger un mail :
EXPN root
250
protection
Il est possible pour certain serveur mail d’interdire les commandes VRFY et EXPN.
Attention a l’openrelay !
arret
Il est possible d’arrêter le serveur smtp.
37/tcp open time
but
Donne la date système.
utilisation
rdate 192.168.1.76
arret, protection
voir inetd
79/tcp open finger Linux fingerd
but
Le serveur finger donne des informations à propos des utilisateurs existants sur l’ordinateur. Les utilisateurs distants peuvent obtenir des informations comme le nom complet, l’adresse, le numéro de téléphone, le titre ...
utilisation
finger @192.168.1.76
finger utilisateur@192.168.1.76
Pour changer les informations de l’utilisateur :
chfn utilisateur
arret, protection
voir inetd
80/tcp open http Apache httpd ???
but
Partage de page internet
utilisation
Un client internet (mozilla par exemple) suffit ;)
Nous allons tester tout de même notre serveur avec nikto
Pour mettre a jour la base
nikto -update
Lancer les tests
nikto -h 192.168.1.76
protection
- Suppression du numero de version : ServerSignature Off (donner avec telnet 192.168.1.76 80 puis GET /index.html HTTP/1.0 et deux fois "entrée").
- Verification des répertoires partagés sur internet : regarder les sections
. Par exemple chez moi j’ai (en faisant grep " dans une console) :
- #
-
-
-
Les lignes commençant par # sont commenté. Ils n’ont donc pas d’effet.
Comme je n’ai pas de manuel et de cgi-bin, je peux commenté sans problème ces sections (une section commencant par
Order allow,deny -> Order deny,allow
Allow from all -> Deny from all
- Nous pouvons ensuite autoriser un nom de fichier particulier :
Allow from all
(ici tous les fichiers test.html inclut dans la section seront accessible par tout le monde). - Autoriser le poste local d’acceder au serveur : Allow from 127.0.0.1
- Autoriser le reseau local d’acceder au serveur : Allow from 192.168.1.0/255.255.255.0
- Demande d’identification pour les autres :
AuthName "Et oui, il faut s’identifier ici !"
AuthType Basic
AuthUserFile /etc/apache/htpasswd
Require valid-user
Satisfy Any
puis creer le fichier /etc/apache/htpasswd :
htpasswd -c /etc/apache/htpasswd test (pour creer l’utilisateur test).
Attention :l’option -c n’est utile que pour créer le fichier.
arret
Sous slackware : /etc/rc.d/rc.httpd stop
chmod -x /etc/rc.d/rc.httpd
111/tcp open rpcbind 2 (rpc #100000)
but
SUN Remote Procedure Call (RPC) est technique permettant de gérer des applications client/serveur. Il permet à une application d’appeler une sous-application sur une autre machine. Ce port est utilisé en tant que des moyens bien définis pour déterminer les ports sur lesquels d’autres services fonctionnent sur le système. Il désigné sous le nom d’un "portmapper" parce qu’il fournit un annuaire, ou de "mappage" entre les services disponibles et leurs ports. Les ports étant éphémère.
utilisation
rpcinfo -p 192.168.1.76 (ou nmap -sR 192.168.1.76)
Une liste de service rpc lancé apparait. La liste contient des numeros inscrit dans /etc/nfs.
Un certain nombre de serveur rpc existe :
si mountd -> showmount -e 192.168.1.76 (le demon mountd receptionne le requete de montage de la machine cliente)
si ruserd -> rusers -l 192.168.1.76 (donne les mêmes informations que who en local)
si rstatd -> rup (un broadcast est envoyé. En retour on obtient l’uptime)
Le client peut faire des demande RPC seulement si le demon portmap est lancé. Lors qu’un serveur RPC demarre, il donne à pormap son numero de port d’écoute et sont numéro RPC (voir /etc/nfs).
protection
RPC utilise les mêmes fichiers de configuration que tcpwrapper (voir inetd).
arret
pormap -> voir inetd
les serveurs rpc sont lancé seul. Leur nom est généralement rpc.nom_du_service (exemple rpc.mountd).
113/tcp open ident OpenBSD identd
but
L’idée derrière ce protocole était de fournir un service pour identifier automatiquement les utilisateurs qui essaye de se connecter. Le service distant regarde si la personne qui accède est déjà identifier sur le poste. Cela permettait des authentifications automatiques sur FTP par exemple. Mais les protocoles etaient tellement simple qu’il était facile à contourner.
Il sert aujoud’hui encore pour des serveurs IRC ou serveur mail.
utilisation
nmap -sT -I 192.168.1.76
arret
voir inetd
6000/tcp
but
Offrir a des personnes extérieurs la possibilité de lancer des applications X.
utilisation
Il est nécessaire d’avoir un cookie sur le serveur. Celui est stocké dans le fichier dans le répertoire $HOME/.Xauthority (ou autre suivant le contenu de la variable $XAUTHORITY).
Si le fichier n’existe pas faire :
xauth add :0 . `mcookie`
Le programme xauth est utilisé pour editer et afficher les information d’authentification des utilisateurs pour se connecter sur un serveur X.
serveur : xauth extract fichier $DISPLAY
Copier le fichier sur le client
client : xauth merge fichier
puis xauth generate :0 .
ou
serveur : xauth list
client : xauth add ???????
arret
- Si vous lancer X avec startX :
Dans /usr/X11R6/bin/startx mettre : serverargs="-nolisten tcp" - Si vous utilisez xdm :
Dans /etc/X11/xdm/Xserver mettre : :0 local /usr/X11R6/bin/X -nolisten tcp - Si vous utilisez gdm :
Dans le panneau de configuration gdmconfig, onglet Sécurité, cochez Toujours interdir les connexions TCP au serveur X(option par défaut).
Si vous utilisez kdm, cherchez et donnez moi la solution ;).
Inetd
Inetd permet de lancer des services au moment où ils sont appelés.
Pour désactiver un service, il suffit de commenter la ligne correspondante dans /etc/inetd.conf.
Inetd n’a aucun mecanisme de contrôle d’accès aux services (contrairement a xinetd). Voila pourquoi la plupart des services sont lancés avec le démon tcpd (le démon tcpwrapper).
Tcpwrapper fait un contrôle au niveau de l’adresse IP. Deux fichiers de configuration sont utilisés :
- Hôte rejeté : /etc/hosts.deny
- Hôte accepté : /etc/hosts.allow
La syntaxe des deux fichiers est la suivante :
service : hôte
exemples :
- finger : ALL :
- portmap : 127.0.0.1 192.168.1.3
Il semble interessant par défaut d’interdir tout le monde (ALL : ALL : dans /etc/hosts.deny et d’autorisé les hôtes suivants le service)

Commentaires
> Les services réseaux : utilités et contrôles
juste apres
"Pour question de facilité, je vais prendre la syntaxe retourné par l ?outil nmap : nmap -sV 192.168.1.76 (la machine utilisé aura l ?ip 192.168.1.76)."
tu devrais peut etre donner cette sortie en texte ou en capture d’écrant.
Sinon ca parais déconsertant.
Peut etre aussi marquer plus entre les descriptions de ports. Avec une hr ou qqch comme ca non ?