![]() |
![]() |
![]() |
VI. MISE EN PLACE DU SERVICE TELNET
Le service TELNET permet d'exécuter
depuis une station distante des programmes sur un serveur. Par convention,
il utilise le port 23.
Vous aurez besoin d'installer le package suivant :
telnet
Pour permettre à votre PC
de devenir un serveur TELNET, il faut lancer le démon telnetd.
Ceci est généralement assuré par le service INET.
Editez le fichier /etc/inetd.conf
et ajoutez, si elle n'existe pas déjà, la ligne suivante
:
Allez ensuite dans le répertoire /usr/sbin/ et vérifiez la présence du fichier in.telnetd. Suivant les distributions, son nom peut changer. Adaptez la ligne ajoutée dans inetd.conf en conséquence.
Remarque : l'utilisation du paramètre root dans la ligne ajoutée à /etc/inetd.conf signifie que le démon est lancé avec les droits root. En effet, j'utilise un système d'authentification où les mots de passe cryptés sont stockés dans le fichier /etc/shadow (et non pas dans le fichier /etc/passwd) qui, pour des raisons de sécurité évidentes, n'est lisible que par root.
Pour lancer le service INET au boot,
tapez setup (ou
drakxservices
suivant les versions) puis sélectionnez inet.
Pour vérifier que les services
fonctionnent bien, lancez INET en tapant la commande :
/etc/rc.d/init.d/inetd start (ou restart si le service est déjà lancé)
Tapez ensuite :
telnet 127.0.0.1
Si le serveur vous répond en vous demandant un nom d'utilisateur et un mot de passe, alors cela fonctionne.
Si vous souhaitez afficher un texte
de bienvenue aux utilisateurs qui se sont authentifiés avec succès,
tapez votre message dans le fichier /etc/issue.net
La gestion des droits des utilisateurs se fait par l'intermédiaire de deux fichiers :
/etc/securetty
/etc/usertty
Ces deux fichiers ne sont directement lus par le démon telnetd mais le programme login qui lui même est lancé par telnetd lors de la procédure d'authentification avant l'ouverture d'une session. Sachez que login est aussi utilisé pour authentifier les utilisateurs qui ont physiquement accès au serveur. Par conséquent, les droits définis dans ces fichiers concernent aussi bien les accès distants (RLOGIN et TELNET) que les accès directs.
Le fichier /etc/securetty contient la liste des consoles sur lesquelles root est autorisé à se connecter. Par défaut, pour des raisons de sécurité, root ne peut pas ouvrir de session TELNET. Il ne peut se connecter que lorsqu'il a physiquement accès à la machine (consoles du type tty). Si vous êtes administrateur d'une station Linux et que vous avez besoin des droits root lors d'une maintenance à distance via une session TELNET, il est recommandé de s'authentifier d'abord grâce à un compte utilisateur simple puis de passer root en tapant la commande :
su root
Si malgré ces recommandations vous souhaitez pouvoir ouvrir directement des sessions TELNET en tant que root (après tout, chacun est libre de faire ce qu'il veut), vous devez rajoutez des lignes contenant les nombres 0, 1, 2, (et ainsi de suite en fonction du nombre de sessions que vous voulez ouvrir en même temps) dans le fichier /etc/securetty Ces nombres correspondent à des noms de fichiers périphériques qui sont crées dynamiquement dans le répertoire /dev/pts par le démon telnetd lors d'une connexion distante.
Le fichier /etc/usertty contient les droits de connexion des utilisateurs. Malheureusement, dans toutes les distributions que j'ai eu l'occasion de tester, le programme login est bogué et la présence de ce fichier est totalement ignorée. De ce fait, tout compte (à part root) présent dans le fichier /etc/passwd est autorisé à se connecter. Il va donc falloir trouver un autre moyen de filtrer les connexions. Nous allons exploiter le fait que tout utilisateur qui ouvre une session a besoin d'un shell : pour que la connexion lui soit refusée, il suffit donc de ne pas lui attribuer de shell.
a) Interdire
à un utilisateur les connexions locales et distantes
Prenons un exemple concret. Tout
d'abord, créez un utilisateur
toto
en tapant la commande :
useradd toto
Attribuez un mot de passe à toto en tapant la commande :
passwd toto
Dans le répertoire /bin, créez un fichier noshell et changez ses droits en tapant la commande :
chmod 755 noshell
Editez le fichier noshell et ajoutez simplement les lignes suivantes :
cat <<
EOF
Sorry, for security
purpose, you are not allowed to open a session on this
server.
EOF
sleep 3
Editez le fichier /etc/passwd, recherchez la ligne concernant l'utilisateur toto. Elle doit ressembler à :
toto:x:504:504::/home/toto:/bin/bash
Remplacez /bin/bash (ou tout autre shell) par /bin/noshell A présent, toto ne peut plus ouvrir ni de session locale, ni de sessions à distance.
b) Autoriser
les connexions distantes mais pas les connexions locales
Créez un fichier /bin/telnetonly
contenant les lignes suivantes :
#!/bin/sh
TTY=`tty | grep
pts`
if [ "$TTY"
= "" ]
then
echo "Sorry, for security purpose, you are not allowed"
echo "to open a session on this server."
sleep 3
else
export SHLVL=0
export SHELL=/bin/bash
/bin/bash -login
(ou
--login suivant les versions)
fi
La suite de la procédure à suivre est la même que celle décrite précédemment.
c) Autoriser
les connexions locales mais pas les connexions distantes
Créez le fichier /bin/ttyonly
contenant les lignes suivantes :
TTY=`tty | grep
tty`
if [ "$TTY"
= "" ]
then
echo "Sorry, for security purpose, you are not allowed "
echo "to open a session on this server."
else
export SHLVL=0
export SHELL=/bin/bash
/bin/bash -login
(ou
--login suivant les versions)
fi
La suite de la procédure à suivre est la même que celle décrite précédemment.
![]() |
![]() |
![]() |