(Courriels de diversion: <soupconnons@estimatives-suspend.com> <priserai@debandes-ecrivain.com> <desassortis@boots-fixerions.com> <chauvinisme@desapprovisionnees-subtile.com> <relaye@corroder-visualises.com> <prevaudrions@recommandables-suspectees.com> <internationalisees@gît-electorale.com> <jardine@decachetais-mediantes.com> <couvre-chefs@preencollee-moka.com> <reinsererait@reorienterait-horrifiions.com> )


Le 14 Déc, Jean-Daniel Dodin écrit :
> Le mer, 13 déc 2000, Marc THIRION a écrit :

>>   Ensuite, tu édites /etc/inetd.conf (ou équivalent suivant le
>>   programme
>> dont tu te sers comme lanceur de démons) et tu ajoutes deux lignes :
>> 4444 stream tcp wait root /usr/sbin/tcpd /usr/local/bin/startppp
>> 4445 stream tcp wait root /usr/sbin/tcpd /usr/local/bin/stopppp
> 
> où pourais-je trouves une doc sur inetd, le man est trop juste pour
> moi? en particulier comment peut-on choisir les ports sans faire de
> bétise ?

  Je me suis planté : c'est « nowait » qu'il faut en quatrième position.
Et j'ai oublié de signaler qu'il faut envoyer un SIGHUP à inetd afin
qu'il relise son fichier de conf (« killall -HUP inetd »).

  La première ligne se lit : créer une socket serveur tcp qui écoute le
port 4444. Quand une demande de connexion arrive, l'accepter (et donc
créer une socket pour la communication), et lancer le programme
/usr/sbin/tcpd (tcp_wrapper) sous l'identité root avec la socket de
communication en tant qu'entrée et sortie standard et la suite de la
ligne comme arguments (en commençant par l'argument 0, normalement le
nom du programme, qui peut être différent du fichier exécuté sous UNIX).

  La bizzarerie des argument s'explique par le fait que tcpd a été
fabriqué exprès, et qu'après avoir vérifié que son entrée standard est
correcte selon les règles définies par /etc/hosts.{allow,deny}, il se
remplace (exec) par ses arguments.

  Les services « connus » se retrouveront dans /etc/services avec un nom
symbolique. Ils sont aussi énumérés dans le RFC 1700 (ou un des suivants
qui le remplacent) nommé « assigned numbers » (« numéros attribués »).

  Dans la pratique, tu choisis au pif un numéro au dessus de 1024 (en
dessous, seul root peut les ouvrir, ce serait du gaspillage d'aller
taper dans cette ressource rare). Tu évites quand même 6000 et ses
suivants (serveur X traditionnellement), 7100 et ses suivants (serveur
de polices pour X11 traditionnellement) et 8080 (ouaibe
traditionnellement).

  À part ça, n'importe quel numéro non utilisé sur ton système fera
l'affaire. Si tu te trompes et que tu tapes dans un port utilisé,
quelque chose ne marchera plus et tu trouveras quelque part un message
d'erreur du genre « cannot bind: address already in use » (« je peux pas
me lier à ce port : y a quelqu'un qui squatte »). Pas bien grave, donc,
puisque cela se remarque assez vite.

>>   (règle tes tcpwrappers /etc/hosts.allow et /etc/hosts.deny de telle
>> sorte que les ports 4444 et 4445 ne soient accessibles que des
>> machines autorisées).
> 
> je n'ai pas encore capté comment on peut limiter les azllow et deny à
> un seul port? il faut que je bosse aussi tcpwrapper, c'est très utile,
> ce truc.

  C'est surtout important pour le stopppp (tu voudrais pas que le pirate
lambda te ferme la connexion inopinément).

  C'est « man 5 hosts_access » chez moi, pour les explications. Je n'ai
jamais réussi à lire jusqu'au bout, tellement c'est compliqué et que je
n'en ai jamais eu besoin. Ta question m'a forcé à reregarder la bête, et
je vois qu'en fait, tu ne spécifies pas des numéros de port, mais les
trucs que tu écris juste après /usr/sbin/tcpd dans /etc/inetd.conf.

  Dans ton cas, je suppose qu'il te faut mettre :
  
/usr/local/bin/stopppp: 192.168.1.

dans /etc/hosts.allow (si ton réseau local est en 192.168;1) et

ALL: ALL

dans /etc/hosts.deny.

  Note qu'il te faut séparer l'intérieur de ton réseau de l'extérieur
par une autre méthode (filtres IP [ipfwadm ou ipchains] sur les
interfaces de ta passerelles) afin d'assurer qu'il ne t'arrive pas de
paquets portant une adresse source interne depuis l'interface ippp :
tcpd n'a aucun moyen de se rendre compte de ce genre de choses (cela ne
devrait néanmoins pas poser de problème avec un protocole comme tcp
[plusieurs paquets pour initier la connexion] si le reste est bien
configuré [en particulier les routes], mais udp peut être vulnérable).

-- 
Marc Thirion              | Ramonville Saint-Agne, France
Un Travail pour Chacun    : http://www.multimania.com/untravailchacun/
Marc.Thirion@ISOscope.com : http://www.ISOscope.com/Pérennité des logiciels et des systèmes



---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>