13.07.2015 Views

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

162CAPÍTULO 10. EL SISTEMA DE REDEspecificar correctamente el modelo de concurrencia a seguir en un determinado servicioes importante para nuestra seguridad, especialmente para prevenir ataques de negación deservicio (DoS). Si especificamos wait, inetd no podrá atender una petición hasta que no finaliceel servicio de la actual, por lo que si este servicio es muy costoso la segunda petición noserá servida en un tiempo razonable (o incluso nunca, si inetd se queda bloqueado por cualquiermotivo). Si por el contrario especificamos nowait, el número de conexiones simultáneasquizás llegue a ser lo suficientemente grande como para degradar las prestaciones del sistema,lo que por supuesto no es conveniente para nosotros. Para evitar ataques de este estilo, lamayoría de sistemas Unix actuales permiten especificar (junto a wait o nowait, separadode él por un punto) el número máximo de peticiones a un servicio durante un intervalo detiempo (generalmente un minuto), de forma que si este número de sobrepasa inetd asumeque alguien está intentando una negación de servicio contra él, por lo que deja de ofrecer eseservicio durante cierto tiempo (algunos clones de Unix incluso paran inetd, es convenienteconsultar la documentación en cada caso). Como evidentemente esto también es una negaciónde servicio, algo muy común entre administradores es aprovechar las facilidades de planificaciónde Unix para enviar cada poco tiempo la señal sighup al demonio inetd, de forma queeste relea su fichero de configuración y vuelva a funcionar normalmente. Por ejemplo, paraconseguir esto podemos añadir a nuestro fichero crontab una línea como la siguiente:00,10,20,30,40,50 * * * * pkill -HUP inetdCon esto conseguimos que inetd se reconfigure cada diez minutos (el equivalente a pkill enciertos Unices es killall, pero es recomendable consultar el manual para asegurarse de loque esta orden provoca).• UsuarioEn este campo se ha de indicar el nombre de usuario bajo cuya identidad se ha de ejecutar elprograma que atiende cada servicio; esto es así para poder lanzar servidores sin que posean losprivilegios del root, con lo que un posible error en su funcionamiento no tenga consecuenciasexcesivamente graves. Para el grupo, se asume el grupo primario del usuario especificado,aunque se puede indicar un grupo diferente indicándolo junto al nombre, separado de éste porun punto.• ProgramaPor último, en cada línea de /etc/inetd.conf hemos de indicar la ruta del programa encargadode servir cada petición que inetd recibe en un puerto determinado, junto a los argumentosde dicho programa. El servidor inetd es capaz de ofrecer pequeños servicios basado en tcppor sí mismo, sin necesidad de invocar a otros programas; ejemplos de este tipo de serviciosson time, echo o chargen. En este caso, el valor de este campo ha de ser internal.De esta forma, si en /etc/inetd.conf tenemos una línea comotelnet stream tcp nowait root /usr/sbin/in.telnetdentonces inetd sabe que cuando reciba una petición al puerto telnet ha de abrir un socket tipostream (el habitual para el protocolo tcp) y ejecutar fork() y exec() del programa/usr/sbin/in.telnetd, bajo la identidad de root.10.3 Algunas órdenes importantes10.3.1 La orden ifconfigLa orden ifconfig se utiliza para configurar correctamente los interfaces de red de nuestro sistemaUnix; habitualmente con ifconfig se indican parámetros como la dirección ip de la máquina, lamáscara de la red local o la dirección de broadcast. Si como parámetros se recibe únicamente unnombre de dispositivo, ifconfig nos muestra su configuración en este momento:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!