Ver Mensaje Individual
  #37  
Antiguo 22-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 26
seoane Va por buen camino
Bueno, yo sigo jugando. Ahora buscando un poco de seguridad me he fijado en xinetd. Xinetd es un demonio presente en muchos sistemas tipo Unix que gestiona las conexiones de varios demonios. La ejecución de una única instancia de Xinetd reduce la carga del sistema, en comparación con lo que significaría ejecutar cada uno de los demonios que gestiona, de forma individual. Cuando una petición llega a nuestro equipo, a uno de los puertos controlados por el, ejecuta una instancia del programa encargado de manejar esa conexión. Por ejemplo, en el caso de pico, cuando alguien se conecte al puerto 1978 xinetd ejecutara una instancia de nuestro programa para que se encargue de esa conexión, una vez cerrada la conexión nuestro programa también se cierra.

Además de la ventaja de no tener el programa siempre funcionando, xinetd nos ofrece un montón de ventajas mas, como pueden ser:
  • Limitar el acceso desde determinados hosts.
  • Limitar el numero de conexiones simultaneas.
  • Limitar el acceso según la hora.
  • Prevenir los ataques de denegación de servicio.
  • Crear archivos log
  • etc ...

He modificado levemente el programa para que funcione con xinet, puedes bajarte el zip con el programa del primer mensaje de este hilo. Ahora para ejecutar pico de forma compatible con xinet utiliza el parametro "--inetd", algo asi:
Código:
/usr/bin/pico --inetd
Ahora ya solo nos falta configurara xinetd. Para eso vamos a crear un fichero de texto en el directorio "/ etc/xinetd.d". Algo así:

"/ etc/xinetd.d/pico"
Código:
service pico
{
    disable         = no
    port            = 1978
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = seoane
    server          = /usr/bin/pico
    server_args     = --inetd
    instances       = 15
    nice            = 10 
    type            = unlisted
}
Estamos suponiendo que el usuario que queremos usar es seoane, y que pico esta en el directorio "/usr/bin". Otras cosas interesantes son que hemos limitado el numero de instancias que se pueden ejecutar de forma simultanea, y hemos bajado su prioridad para que no consuma muchos recursos.

Para que esta nueva configuracion tenga efecto tenemos que reiniciar el servicio xinetd. Asi que ejecutamos el siguiente comando:
Código:
/ etc/init.d/xinetd restart
Una vez reiniciado el demonio, ya podemos acceder a nuestro servidor web como lo hacíamos antes http://127.0.0.1:1978 o http://tuip.com:1978

En la pagina de xinetd o en esta otra , puedes encontrar mas información sobre como limitar el acceso y demás opciones de configuración.

Última edición por seoane fecha: 22-04-2007 a las 16:48:14.
Responder Con Cita