• Aucun résultat trouvé

Gestionnaire de services Gestionnaire de services Réseau Réseau

N/A
N/A
Protected

Academic year: 2022

Partager "Gestionnaire de services Gestionnaire de services Réseau Réseau"

Copied!
38
0
0

Texte intégral

(1)

Gestionnaire de services Gestionnaire de services

Réseau Réseau

Inetd, tcp-wrappers et xinetd Inetd, tcp-wrappers et xinetd

ISET MAHDIA 2011

(2)

RAPPEL RAPPEL

Une connexion IP est constituée de Une connexion IP est constituée de

plusieurs éléments : plusieurs éléments :

 une adresse IP source une adresse IP source

 un numéro de port source sur la machine de un numéro de port source sur la machine de départ

départ

 une adresse IP de destination une adresse IP de destination

 un numéro de port sur la machine de destination un numéro de port sur la machine de destination

 protocole TCP ou UDP protocole TCP ou UDP

2

(3)

 Le fichier « /etc/services » mentionne des Le fichier « /etc/services » mentionne des triplets

triplets (numéro de port, (numéro de port, protocole, nom du protocole, nom du service).

service).

 En pratique il y a 3 catégories de triplets : En pratique il y a 3 catégories de triplets : Les Les Well Known Ports Well Known Ports sont ceux de 0 à 1023 sont ceux de 0 à 1023

Les Les Registered Ports Registered Ports sont ceux de 1024 à 49151 sont ceux de 1024 à 49151 Les Les Dynamic and/or Private Ports Dynamic and/or Private Ports sont ceux de sont ceux de

49152 à 65535

49152 à 65535

(4)

4

(5)

 La commande « La commande « netstat -a netstat -a » affiche la liste » affiche la liste des ports ouverts sur une machine. Les

des ports ouverts sur une machine. Les noms affichés proviennent de

noms affichés proviennent de

«/etc/services »

«/etc/services »

 Une machine UNIX offre de nombreux Une machine UNIX offre de nombreux services accessibles par le réseau.

services accessibles par le réseau.

Souvent les services réseau contactés Souvent les services réseau contactés

durent peu de temps : durent peu de temps :

 inutile de les faire tourner en permanence inutile de les faire tourner en permanence (consommation de

(consommation de ressources) ressources)

(6)

 On utilise alors un « On utilise alors un « gestionnaire de gestionnaire de services

services » pour écouter les requêtes » pour écouter les requêtes pour certains services réseau et lancer pour certains services réseau et lancer

ces services.Plus particulièrement, le ces services.Plus particulièrement, le

gestionnaire de services assure : gestionnaire de services assure :

 l’attente de connexions réseau sur l’attente de connexions réseau sur certains

certains ports ports

 le lancement des services contactés le lancement des services contactés

 le comportement adapté au lancement de le comportement adapté au lancement de ces services

ces services

6

(7)

 Il existe plusieurs gestionnaires de Il existe plusieurs gestionnaires de services :

services :

 programme INETD programme INETD

 programme XINETD programme XINETD

 Autre programme TCPD Autre programme TCPD (Tcp-wrappers): (Tcp-wrappers):

 ce n’est pas un gestionnaire de services ce n’est pas un gestionnaire de services

 c’est un contrôleur de services c’est un contrôleur de services

(8)

Gestion par inetd Gestion par inetd

8

(9)
(10)

10

(11)

 Le fichier « /etc/inetd.conf » est spécifique Le fichier « /etc/inetd.conf » est spécifique au gestionnaire de services

au gestionnaire de services « inetd ». « inetd ».

 Son format est le suivant : Son format est le suivant :

# Syntax for socket-based Internet services:# Syntax for socket-based Internet services:

# service_name socket_type proto flags user server_pathname args# service_name socket_type proto flags user server_pathname args

 Par exemple : Par exemple :

...

ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpdftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd

telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetdtelnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

……

(12)

 La signification des champs est la suivante : La signification des champs est la suivante :

 champ 1 : « champ 1 : « service_name service_name » »

 C’est le nom symbolique d’un service (cf « /etc/services C’est le nom symbolique d’un service (cf « /etc/services

»). »).

 champ 2 : « champ 2 : « socket_type socket_type » »

 C’est le type du socket réseau. C’est essentiellement « C’est le type du socket réseau. C’est essentiellement « stream »,

stream »,

 « dgram ». « dgram ».

 champ 3 : « champ 3 : « proto proto » »

 C’est le protocole réseau utilisé : « tcp », « udp » C’est le protocole réseau utilisé : « tcp », « udp »

 champ 4 : « champ 4 : « flags flags » »

 Cela indique si l’on peut répondre à une requête du Cela indique si l’on peut répondre à une requête du même type alors

même type alors

 que la première n’est pas terminée. On peut avoir : « que la première n’est pas terminée. On peut avoir : « wait »,

wait », « nowait » « nowait »

1212

(13)

 champ 5 : « champ 5 : « user user » »

 Nom de l’utilisateur sous lequel le programme tournera. Nom de l’utilisateur sous lequel le programme tournera.

 champ 6 : « champ 6 : « server_pathname server_pathname » »

 C’est le chemin absolu du programme à exécuter. C’est le chemin absolu du programme à exécuter.

 champ 7 : « champ 7 : « args args » »

 Ce sont les paramètres à donner lors du « execv() ». Ce sont les paramètres à donner lors du « execv() ».

(14)

 Inetd est lancé par les scripts de Inetd est lancé par les scripts de démarrage.

démarrage.

 Si l’on modifie le fichier « /etc/inetd.conf », Si l’on modifie le fichier « /etc/inetd.conf », la modification est prise en compte en

la modification est prise en compte en envoyant le signal « SIGHUP » au

envoyant le signal « SIGHUP » au processus inetd :

processus inetd :

# ps -ax | grep inetd# ps -ax | grep inetd

173 ? IW 2 0:00 inetd173 ? IW 2 0:00 inetd

19544 p2 S 2 0:00 grep inetd19544 p2 S 2 0:00 grep inetd

# kill -HUP 173# kill -HUP 173

14

(15)

 INETD fonctionne très bien en pratique. INETD fonctionne très bien en pratique.

 Il a un seul gros défaut : il ne gère aucun Il a un seul gros défaut : il ne gère aucun aspect de

aspect de sécurité sécurité . .

 On aimerait au moins : On aimerait au moins :

 pouvoir filtrer l’accès à certains services pouvoir filtrer l’accès à certains services

 avoir des traces d’activation de certains avoir des traces d’activation de certains services

services

 Un remède : emploi du logiciel Un remède : emploi du logiciel TCP TCP WRAPPERS

WRAPPERS

(16)

Fonctionnement de TCP- Fonctionnement de TCP-

WRAPPERS WRAPPERS

16

(17)
(18)

18

(19)
(20)

20

(21)
(22)

 Le principe du contrôle d’accès des TCP Le principe du contrôle d’accès des TCP WRAPPERS repose sur les

WRAPPERS repose sur les fichiers « fichiers « /etc/hosts.allow

/etc/hosts.allow » et « » et « /etc/hosts.deny /etc/hosts.deny » : » :

On vérifie d’abord si la requête TCP est On vérifie d’abord si la requête TCP est autorisée par le contenu de

autorisée par le contenu de « /etc/hosts.allow « /etc/hosts.allow

». Si oui, OK.

». Si oui, OK.

 Si non, on passe à l’étape 2. Si non, on passe à l’étape 2.

On vérifie si la requête TCP est interdite par On vérifie si la requête TCP est interdite par le contenu de

le contenu de

 « /etc/hosts.deny ». « /etc/hosts.deny ». Si oui, la requête est rejetée. Si oui, la requête est rejetée.

 Si non, on passe à l’étape 3. Si non, on passe à l’étape 3.

On accepte la requête TCP. On accepte la requête TCP.

22

(23)

Au niveau des fichiers « hosts.allow » et « hosts.deny », on peutAu niveau des fichiers « hosts.allow » et « hosts.deny », on peut

appliquer des règles de filtrage par service servi.appliquer des règles de filtrage par service servi.

Voici un exemple de politique de connexion :Voici un exemple de politique de connexion :

au niveau du fichier « /etc/hosts.allow » :au niveau du fichier « /etc/hosts.allow » : in.telnetd: .fr, 193.95.32.

in.telnetd: .fr, 193.95.32.

in.rlogind: .fr, 193.95.32.

in.rlogind: .fr, 193.95.32.

in.rshd: .fr in.rshd: .fr

au niveau du fichier « /etc/hosts.deny » :au niveau du fichier « /etc/hosts.deny » : in.telnetd: ALL

in.telnetd: ALL in.rlogind: ALL in.rlogind: ALL in.rshd: ALL in.rshd: ALL

En français ça veut dire, ces fichiers indiquent que les connexions En français ça veut dire, ces fichiers indiquent que les connexions telnet, rlogin, rsh ne sont autorisées que depuis des machines du telnet, rlogin, rsh ne sont autorisées que depuis des machines du

(24)

ATTENTION : ATTENTION :

Ce n’est par parce que l’on active Ce n’est par parce que l’on active tcpd tcpd que l’on a que l’on a

résolu tous les problèmes de sécurité . résolu tous les problèmes de sécurité .

Il ne faut pas oublier que plein d’autres services ne Il ne faut pas oublier que plein d’autres services ne passent pas

passent pas par l’intermédiaire de inetd.conf par l’intermédiaire de inetd.conf

Il faut surveiller les traces de fonctionnement Il faut surveiller les traces de fonctionnement renvoyées par

renvoyées par tcpd. tcpd.

Il faut renseigner les fichiers hosts.allow et Il faut renseigner les fichiers hosts.allow et /etc/hosts.deny.

/etc/hosts.deny.

Il faut des démons sans trou de sécurité. Il faut des démons sans trou de sécurité.

Et surtout pour être un peu tranquille faut installer Et surtout pour être un peu tranquille faut installer un Firewall.

un Firewall.

24

(25)

Xinetd Xinetd

 XINETD est une réécriture complète de INETD en XINETD est une réécriture complète de INETD en incorporant plusieurs

incorporant plusieurs aspects manquants dans aspects manquants dans INETD :

INETD :

 contrôle d’accès à la TCP WRAPPERS contrôle d’accès à la TCP WRAPPERS

 accès horaires aux démons accès horaires aux démons

 traces syslog des connexions (échouées, traces syslog des connexions (échouées, abouties)

abouties)

 limitation du nombre d’instances de chaque démon limitation du nombre d’instances de chaque démon

(26)

26

(27)

 A noter avec certaines versions de « A noter avec certaines versions de « xinetd » la possibilité d’avoir un

xinetd » la possibilité d’avoir un

 répertoire « /etc/xinetd.d » dans lequel on répertoire « /etc/xinetd.d » dans lequel on trouve un fichier par service, portant le

trouve un fichier par service, portant le

nom du service et contenant le réglage du nom du service et contenant le réglage du

service.

service.

 Par exemple : Par exemple :

« /etc/xinetd.d/ftp »« /etc/xinetd.d/ftp »

« /etc/xinetd.d/telnet »« /etc/xinetd.d/telnet »

(28)

 Exemple pour le service « ftp » Exemple pour le service « ftp »

service ftp service ftp {{

socket-type = stream socket-type = stream wait = no

wait = no user = root user = root

server = /usr/sbin/in.ftpd server = /usr/sbin/in.ftpd server_args = -1

server_args = -1 instances = 4 instances = 4

access_times = 7:00-12:30 13:30-21:00 access_times = 7:00-12:30 13:30-21:00 nice = 10

nice = 10

only_from = 192.168.1.0/24 only_from = 192.168.1.0/24 }}

28

(29)

 Exemple pour le service « telnet » Exemple pour le service « telnet »

service telnet service telnet {{

socket_type = stream socket_type = stream wait = no

wait = no nice = 10 nice = 10 user = root user = root

server = /usr/sbin/in.telnetd server = /usr/sbin/in.telnetd

log_type=FILE /var/log/telnet.log log_type=FILE /var/log/telnet.log

log_on_success= PID USERID HOST DURATION log_on_success= PID USERID HOST DURATION log_on_failures=HOST USERID

log_on_failures=HOST USERID rlimit_as = 8M

rlimit_as = 8M

(30)

 Exemple pour le service « mon_service » Exemple pour le service « mon_service »

service mon_serviceservice mon_service {{

type = UNLISTED type = UNLISTED

port = 12345 (donné au hasard > 1024) port = 12345 (donné au hasard > 1024) disable = no

disable = no

socket_type = stream socket_type = stream protocol = tcp

protocol = tcp wait = no wait = no

server = /bin/bash server = /bin/bash

server_args = /home/user/monservice.sh server_args = /home/user/monservice.sh user = nobody

user = nobody }}

Pour tester si ça marche Pour tester si ça marche

Il faut créer Il faut créer monservice.sh monservice.sh et y mettre quelque chose comme: et y mettre quelque chose comme: hellohello

Redémarrer le service Redémarrer le service xinetdxinetd

Puis tester avec Puis tester avec telnettelnet ou netcat ou netcat (nc) en mettant le numéro de port : (nc) en mettant le numéro de port :

#nc @ip num_port (ici 12345)#nc @ip num_port (ici 12345) 3030

(31)

Attributs de xinetd Attributs de xinetd

 Nous allons lister les différents attributs Nous allons lister les différents attributs

utilisables pour configurer xinetd. Certains utilisables pour configurer xinetd. Certains sont facultatifs et vous permettent d'affiner sont facultatifs et vous permettent d'affiner

son rôle. Toutefois d'autres sont son rôle. Toutefois d'autres sont

obligatoires et s'ils ne sont pas présents, obligatoires et s'ils ne sont pas présents, empêcheront tout ou partie des services empêcheront tout ou partie des services

de fonctionner.

de fonctionner.

(32)

32

(33)

 Xinetd peut affiner les logs : Xinetd peut affiner les logs :

 C'est l'attribut C'est l'attribut log_type log_type qui va donner cette qui va donner cette localisation. Il peut prendre 2 valeurs :

localisation. Il peut prendre 2 valeurs :

SYSLOG syslog_facility [syslog level] SYSLOG syslog_facility [syslog level] : les logs : les logs seront alors gérés par le démon syslogd.

seront alors gérés par le démon syslogd.

FILE file [soft limit [hard limit]] FILE file [soft limit [hard limit]] : vous allez pouvoir : vous allez pouvoir complètement configurer la destination de vos logs complètement configurer la destination de vos logs

et dans l'absolu,

et dans l'absolu, prévoir un fichier de log par service prévoir un fichier de log par service géré par xinetd.

géré par xinetd.

(34)

Contenu des logs : Contenu des logs :

 Outre la localisation des logs, il est possible également Outre la localisation des logs, il est possible également de paramétrer le contenu des logs. On utilisera les

de paramétrer le contenu des logs. On utilisera les attributs

attributs log_on_success log_on_success et et log_on_failure log_on_failure qui, comme qui, comme l'intitulé l'indique, listent ce qui sera logué en cas de l'intitulé l'indique, listent ce qui sera logué en cas de

succès et d'échec de l'accès au service. Les valeurs : succès et d'échec de l'accès au service. Les valeurs :

 · · PID PID : numéro de process du serveur lancé : numéro de process du serveur lancé

 · · HOST HOST : adresse distante cliente du serveur : adresse distante cliente du serveur

 · · USERID USERID : user id de l'utilisateur distant : user id de l'utilisateur distant

 · · DURATION DURATION : durée de la session : durée de la session

Les 4 valeurs sont utilisables avec l'attribut Les 4 valeurs sont utilisables avec l'attribut

log_on_success. Seuls HOST et USERID sont utilisables log_on_success. Seuls HOST et USERID sont utilisables

avec log_on_failure.

avec log_on_failure.

3434

(35)

Xinetd peut contrôler les accès à votre machine Xinetd peut contrôler les accès à votre machine : :

Filtrer des adresses : Filtrer des adresses : only_from only_from = valeur [valeurs...]. = valeur [valeurs...].

Xinetd peut Xinetd peut Contrôler le moment des accès à votre Contrôler le moment des accès à votre machine

machine : :

 access_times access_times = interval [interval...] = interval [interval...]

 Xinetd peut Xinetd peut Contrôler l'exposition du système Contrôler l'exposition du système pendant l'accès

pendant l'accès : chroot : chroot

xinetd vous permet de "chrooter" un service. xinetd vous permet de "chrooter" un service. Rappel : la commande Rappel : la commande chroot permet

chroot permet de lancer un programme en restreignant ses accès de lancer un programme en restreignant ses accès disques à une sous arborescence. En fait pour le processus, la disques à une sous arborescence. En fait pour le processus, la racine du disque est la racine de l'arborescence dans laquelle il a racine du disque est la racine de l'arborescence dans laquelle il a été restreint.

été restreint.

L'attribut L'attribut server_argsserver_args va nous permettre d'automatiser le chroot : la va nous permettre d'automatiser le chroot : la

(36)

 Xinetd peut Xinetd peut Autoriser / interdire un service Autoriser / interdire un service : : Syntaxe :

Syntaxe : disable disable = = yes|no yes|no

Xinetd peut limiter les attaques de type Deny of Xinetd peut limiter les attaques de type Deny of Service

Service (Dos ) : (Dos ) :

Contrôle de la charge CPU :

Contrôle de la charge CPU : rlimit_cpu rlimit_cpu = seconds. = seconds.

Priorité accordée au processus serveur :

Priorité accordée au processus serveur : nice nice = level. = level.

Limite du nombre de connexions par service : Limite du nombre de connexions par service :

instances

instances = value. = value.

Limite du nombre de connexions ayant la même Limite du nombre de connexions ayant la même

origine :

origine : per_source per_source = value. = value.

Xinetd peut blacklister des adresse IP Xinetd peut blacklister des adresse IP : :

Syntaxe : Syntaxe : flags flags = = SENSOR SENSOR

deny_time deny_time = minutes = minutes

36

(37)

Autres fonctionnalités de xinetd Autres fonctionnalités de xinetd

 Redirection de ports : Redirection de ports : Syntaxe :

Syntaxe : redirect redirect = @ip port = @ip port

 Attribution d’un service à une adresse IP Attribution d’un service à une adresse IP Syntaxe :

Syntaxe : bind bind = @ip = @ip

(38)

Conclusion Conclusion

 Je n'ai pas exploré ici l'intégralité des Je n'ai pas exploré ici l'intégralité des possibilités de xinetd. La meilleur des choses à possibilités de xinetd. La meilleur des choses à faire pour cela est de se reporter au man. Bien faire pour cela est de se reporter au man. Bien exploité, il devient un véritable outil de exploité, il devient un véritable outil de sécurisation de votre système, mais il ne sécurisation de votre système, mais il ne remplace pas un Firewall, je conseille de les remplace pas un Firewall, je conseille de les faire travailler conjointement. De cette façon faire travailler conjointement. De cette façon vous limiter à votre machine certains accès à vous limiter à votre machine certains accès à l'extérieur, et également la protéger des vilains l'extérieur, et également la protéger des vilains

hackers.

hackers.

38

Références

Documents relatifs

Le dernier jour de la formation, les participants sont invités à participer à une journée intensive d’évaluation de leurs habiletés et compétences dans le but d’être

Il convient de signaler en outre que les problèmes de rente ne sont pas éliminés,  car  la  position  de  monopole  confère  à  son 

acc` es aux ressources (processeur, m´ emoire, fichiers, p´ eriph´ eriques);.. gestion

• Introduction au modèle Milton, un modèle pour influencer avec intégrité Module 3 : Les sous-modalités pour une meilleure gestion de soi. • Les sous-modalités : théorie

Ce code de conduite doit comprendre un encadrement ayant pour objectif d’éviter toute situation où pourraient coexister ces liens et relations lorsqu’une telle situation risque

Véritable partenaire des collectivités, nous apportons une solution clé en main pour la réalisation et la gestion de votre aire de camping- cars... • Corinne

Objectif / intérêt pour le bénéficiaire : Mieux connaître les métiers du numérique et les parcours de formation permettant d’y accéder dans la perspective d’un accompagnement

 Des ateliers thématiques sont organisés au cours de l’année avec des partenaires locaux et des experts pour permettre aux entreprises de découvrir ou perfectionner