[Admin-ml] Incantation appelienne sur la sécurité avec syslog.

Olivier DUCROT odlists at easymac.fr
Ven 9 Oct 21:23:42 CEST 2009


Dans launchd, il y a un mode "KeepAlive" et une option NetworkState,
peut-être une piste à explorer.
Tu ferais lancer netcat par launchd, et il se chargerait de le maintenir en
vie..
Extrait de man launchd.plist

KeepAlive <boolean or dictionary of stuff>
     This optional key is used to control whether your job is to be kept
continuously running or to let demand and conditions control the invocation.
The default is false and therefore only demand will start the job. The value
may be set to true to unconditionally keep the job alive. Alternatively, a
dictionary of conditions may be specified to selectively control whether
launchd keeps a job alive or not. If multiple keys are provided, launchd ORs
them, thus providing maximum flexibility to the job to refine the logic and
stall if necessary. If launchd finds no reason to restart the job, it falls
back on demand based invocation.  Jobs that exit quickly and frequently when
configured to be kept alive will be throttled to converve system resources.

           SuccessfulExit <boolean>
           If true, the job will be restarted as long as the program exits
and
           with an exit status of zero.  If false, the job will be restarted
in
           the inverse condition.  This key implies that "RunAtLoad" is set
to
           true, since the job needs to run at least once before we can get
an
           exit status.

           NetworkState <boolean>
           If true, the job will be kept alive as long as the network is up,
           where up is defined as at least one non-loopback interface being
up
           and having IPv4 or IPv6 addresses assigned to them.  If false,
the job
           will be kept alive in the inverse condition.


le 09/10/09 18:31, Fabien COMBERNOUS à fcombernous at kezia.com a écrit :

> Olivier DUCROT wrote:
> 
> [...]
>> Tu peux envisager de monter VPN ou un tunnel SSH entre les deux machines
>> pour le port 514 avec un commande du type ssh -R 514... Mais il faudra faire
>> en sorte de monter le tunnel et le maintenir monté !
>> Le mieux c'est tout de même de faire ça sur un réseau local.
>>   
> J'ai donc suivi cette piste et quelques tests plus loin, j'ai trouvé une
> façon de faire.
> Disons que nous avons deux machines :
> - server : la machine qui envoie les logs.
> - syslog : la machine qui reçoit les logs.
> 
> D'abord j'ai pris soin de dire aux services syslog :
> - sur server d'émettre localement sur le port 514 en udp.
> - sur syslog d'écouter sur le port 514 en udp et écrire dans
> /var/log/LeFichierDeLog
> 
> Sur les deux machines, je crée une fifo : mkfifo /tmp/myfifo
> 
> Puis, depuis la machine server, établissons un tunnel ssh entre les deux
> machines :
> server$: ssh -N -L 6666:localhost:6666 syslog
> 
> Ensuite, sur la machine syslog, soyons pret à recevoir le flux tcp pour
> le renvoyer en udp localement :
> syslog$: nc -l 6666 > /tmp/myfifo | nc  -u syslog 514 < /tmp/myfifo
> 
> Et pour terminer, sur la machine server, établissons la transformation
> réciproque :
> server$: nc  -u -k -l 514 > /tmp/myfifo | nc  127.0.0.1 6666 < /tmp/myfifo
> 
> Et là, le miracle de la technologie s'opère :
> 
> server$: logger ceci est un test
> 
> syslog$: tail -f /var/log/LeFichierDeLog
> Oct  2 17:58:24 192.168.x.1 syslog admin[22295]: ceci est un test
> 
> 
> Mais, ce serait trop simple :)
> Le netcat une fois la connexion inutilisée, il la ferme.
> Du coup, il n'est pas possible d'envoyer une seconde ligne de log. Il
> faut relancer une des commandes ci-dessus utilisant netcat.
> 
> Je me trouve face à une voie qui me semble sans issue :
> - soit launchd permet de relancer à la demande la commande netcat quand
> le service syslog en a besoin. Mais, ca va, à priori, consommé pas mal
> de ressources proportionnellement aux logs générés.
> - soit j'utilise l'option -L de netcat qui sait rendre la connexion
> persistante. Sauf que le netcat embarqué avec macosx ne dispose pas de
> cette option. Et je me voit mal changer le netcat qui va se faire
> dézinguer à une mis à jour future de l'OS.
> 
> Bref pas glop. Quelqu'un voit une issue ?
> 

La théorie, c¹est quand on sait tout mais que rien ne marche
La pratique, c¹est quand tout marche mais qu¹on ne sait pas pas pourquoi
Et l¹informatique, c¹est l¹union de la théorie et de la pratique : rien ne
marche et on sait pas pourquoi

         _________________________________________________________
         |                                                       |  
         |                                                       |  
      / )|                    Olivier DUCROT                     |( \
     / / |               ACSP, ACTC & ACSA 10.5                  | \ \
   _( (_ |                                                       | _) )_
  (((\ \>|_/->_______________________________________________<-\_|</ /)))
  (\\\\ \_/ /                                                 \ \_/ ////)
   \       /                                                   \       /
    \    _/                -----====+====------                 \_    /
    /   /                                                        \   \  
  






Plus d'informations sur la liste de diffusion Admin-ml