[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ¿Seguro con hosts.deny?



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



Reply to: