On Sat, Oct 06, 2001 at 10:15:02PM +0200, Alfonso wrote: > Hola, > > Resulta que servicios que tengo activados como por ejemplo el smtp los tengo > cerrados por tcp-wrapper vía hosts.deny / hosts.allow dejando sólo el paso a > quien me interesa (red interna), pero no sé si será un sistema seguro porque
Ipchains y tcpd funcionan a niveles distintos: Ipchains: protocolo TCP/IP (Sesión) Tcpd: nivel de Aplicación Es decir, con Tcpd no puedes evitar que el puerto "se vea abierto" desde el exterior, lo que controlas son las conexiones al programa final. Te pongo el desarrollo de la comunicación y donde interviene cada uno: a) máquina A envía paquete Syn a B dirigido al puerto Y (ipchains) b) máquina B responde con paquete Syn Ack a A (ipchains) c) máquina A completa la conexión con B [esto es el proceso three-way-handshake de TCP/IP] d) máquina A envía datos a lo que esté escuchando en la máquina B puerto Y [esto dispara el proceso del superdemonio inetd que está ejecutando el puerto pero reenvía a otra aplicación según la definición del inetd.conf] (tcpd) e) máquina B responde a la petición de A > > Y otra cosa: si quiero meter un servicio que se ejecuta desde /etc/init.d/ y > no desde inetd, ¿cuál es la mejor forma de ponerlo bajo tcpd?, ¿me lo cargo > de /etc/init.d/ y meto una línea en el /etc/inetd.conf? > > Gracias y saludos. > Creo que el segundo, porque tcpd (creo) no puede funcionar como demonio, es decir, aceptando conexiones en un puerto siempre e instanciando nuevos procesos para atender a las conexiones entrantes (sin perder la escucha en el puerto). Por ello tienes que poner la línea en el inetd.conf que haga que el superdemonio inetd llame a tcpd con los parámetros necesarios (aplicación a ejecutar). En cualquier caso, centralizas todos los servicios en un demonio, lo cual puede ser bueno o malo según tus necesidades. Además de que determinados programas (Apache?) esperan funcionar de otra forma (controlando directamente el puerto y creando instancias de procesos hijos a los que pasan las conexiones). En resumen, sólo podrás hacer ésto para procesos que puedan ejecutarse en modo "terminal" (aceptan datos de la entrada estándar) pero no para otros que quieran, directamente, hacerse con el control del puerto correspondiente. Javi