Actualizado el 21 de Marzo del 2018 (Publicado el 7 de Enero del 2018)
486 visualizaciones desde el 7 de Enero del 2018
30,3 KB
9 paginas
Creado hace 23a (12/08/2001)
División de Seguridad Informática
Configuración de TCP-Wrapper
1.- Introducción.
Linux, igual que cualquier sistema operativo, debe ser configurado para que sea seguro
antes de conectarlo a una red, especialmente cuando nos conectamos a Internet.
Como un intruso puede atacarnos e ingresar a nuestra computadora?
Linux o cualquier otro Unix, ejecutan un conjunto de programas denominados daemons, que
proveen servicios de red, como por ejemplo servidores: ftp, smtp, telnet, etc. Estos pueden tener
problemas de seguridad, que son utilizados por el intruso para ganar acceso a nuestra
computadora.
Normalmente, luego de finalizar la instalación de Linux, existen varios servicios de red
ejecutándose que no son necesarios, debemos saber que servicios son, deshabilitar todos aquellos
que no sean necesarios y configurar de forma segura los servicios que utilizaremos.
2.- El súper server o inetd.
Muchas veces necesitamos que una misma computadora brinde varios servicios de red,
por lo tanto deberíamos tener en el sistema varios daemons ejecutándose simultáneamente. Esto
nos podría producir una sobrecarga en nuestra computadora.
espera por varios servicios de red, cuando un cliente quiere utilizar un servicio, ejecuta el servidor
correspondiente y le da el control de la conexión, de esta manera solo tenemos un solo daemon
ejecutándose y reducimos la carga del sistema.
Para reducir la carga en el sistema, existe un "súper server" inetd, el cual se queda en
Los pasos que realiza el inetd son los siguientes:
- Al ejecutarse en el arranque de la PC o cuando lo reincidamos, lee su archivo de configuración,
/etc/inetd.conf , el cual le indica que servicios debe atender y que servidor ejecutar en caso de que
se produzca un intento de uso de dicho servicio.
- Queda en espera hasta que intenten conectarse.
- Cuando intentan utilizar un servicio, ejecuta el servidor correspondiente (indicado en el inetd.conf)
y le entrega el control de la conexión.
- Vuelve a su estado de espera.
3.- El inetd.conf.
El archivo de configuración del inetd (/etc/inetd.conf) esta compuesto por líneas, donde en cada
una se
indica el nombre del servicio que atenderá y su programa a ejecutar.
Las líneas que comienzan con un '#' son ignoradas (están comentadas).
Veamos brevemente cada campo de una linea de este archivo:
- Nombre del servicio, (ftp, telnet, etc)
- Tipo de socket. (stream, dgram, etc)
- Protocolo. (tcp, udp)
- wait/nowait
- usuario con el que se ejecutara el servicio. (root, nobody, etc)
- programa que brindara el servicio. (/usr/sbin/tcpd /usr/sbin/in.telnetd)
Ejemplo:
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
Importante: observar que el ultimo campo (programa que brindara el servicio) es siempre:
/usr/sbin/tcpd y el pat h del programa correspondiente al servicio, esto se explicara mas adelante.
Veamos un fragmento del archivo inetd.conf :
-----------------------------------------------------
#:STANDARD: These are standard services.
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
#:BSD: Shell, login, exec and talk are BSD protocols.
shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
#:INFO: Info services
finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/in.fingerd
ident stream tcp nowait nobody /usr/sbin/identd identd -i
#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
#bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
------------------------------------------------------------
Los servicios habilitados son: ftp, telnet, shell, login, exec, finger, ident.
Y los deshabilitados (comentados con un '#' en el inicio) son: tftp y bootps.
También se observan líneas de comentarios, como :
#:INFO: Info services
Se ve que hay demasiados servicios habilitados en el ejemplo anterior.
Veamos brevemente la función de algunos de los servicios que maneja el inetd:
Servicios internos.
echo:
Realiza un eco en la conexión, ósea todo lo que enviamos lo recibimos.
chargen: Generador de caracteres, nos envía constantemente caracteres.
discard: Descarta, ósea no hace nada con lo que recibe y tampoco envía nada.
daytime
Nos envía la fecha en formato legible por nosotros, por ejemplo: Wed Jun 14 10:32:20
2000.
time
ftp:
Nos envía la fecha en un formato ilegible para nosotros, pero si legible para otra
computadora, es el numero de segundos transcurridos desde el primero de enero de
1900.
Nota: los cinco servicios anteriores se denominan internos, porque son atendidos por el
mismo inetd, pueden ser todos desabilitados en la mayoría de los casos.
Servicios estandart.
Se utiliza para realizar a través de la red transferencias de archivos, con autentificacion
mediante usuario y contraseña.
telnet:
Se utiliza para obtener sesión remota, ósea una consola remota, con autentificacion
mediante usuario y contraseña.
Protocolos BSD.
shell:
login:
exec:
Provee ejecución remota de comandos, con autentificacion basada en puertos
privilegiados y hosts de confianza (trust).
Provee una sesión remota, con autentificacion basada en puertos privilegiados y hosts
de confianza.
Provee ejecución remota de comandos, con autentificacion basada en usuario y
contraseña.
talk:
Los dos siguientes se utilizan para conversar con otro usuario.
ntalk:
Servicios de información.
finger:
Server que provee información remota, retorna un reporte de estado del sistema o de un
usuario en particular.
ident:
Escucha en determinados ports TCP y retorna el usuario que realiza la conexión.
tftp
Ambos se utilizan normalmente como servidores de booteo, para PCs sin disco riguido.
bootps
Supongamos que queremos deshabilitar los siguientes servicios: shell, login, exec, finger y ident,
en el ejemplo anterior, el archivo inetd.conf nos quedara así:
------------------------------------------------------------
#:STANDARD: These are standard services.
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
#:BSD: Shell, login, exec and talk are BSD protocols.
#shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd
#login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd
#:MAIL: Mail, news and uucp services.
#:INFO: Info services
#finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/in.fingerd
#ident stream tcp nowait nobody /usr/sbin/identd identd -i
#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
#bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
---------------------------------------------------------
ftp y telnet quedan habilitados para su uso.
Para que los cambios tengan efecto debemos reiniciar el inetd, para que vuelva a leer su
archivo de configuración. Esto lo podemos realizar de la siguiente manera:
1- Hallamos el PID del inetd, con el siguiente comando:
# ps aux | grep inetd
root 97 0.0 1.7 1292 536 ? S 10:54 0:00 inetd
El PID
2- luego reiniciamos el inetd con el siguiente comando (con el usuario root):
corresponde
columna,
segunda
en
este
ejemplo
es
97.
a
la
# kill -HUP 97
Los servicios que normalmente se utilizan son : telnet, ftp, smtp.
Servicios que es recomendable deshabilitarlos (comentarlos): shell, login, exec, finger, ident, tftp,
bootps.
Ya hemos deshabilitado los servicios que no vamos a utilizar, ahora debemos configurar de forma
segura los que utilizaremos
4.- El tcpd.
Aquí se entenderá porque el ultimo campo del archivo inetd.conf es siempre /usr/sbin/tcpd
seguido por el path del servidor.
La operación del inetd con el tcpd en conjunto, es la siguiente:
- Cuando inetd recibe un pedido por un servicio, en vez de ejecutar el programa servidor
correspondiente, ejecuta el tcpd y le pasa como parámetro el nombre del servidor correspondiente.
- El tcpd decide si permite el acceso o no al servicio, dependiendo de unas reglas de acceso y la
dirección del cliente que lo solicita. Dichas reglas se encuentran en los archivos hosts.allow y
hosts.deny en el directorio /etc.
- Si las reglas de acceso dicen que la computadora que solicito el servicio no tiene acceso a el,
rechaza la conexión. Si tiene acceso al servicio, el tcpd ejecuta el programa que brinda el servicio
corres pondiente y le entrega el control de la conexión.
- Por ultimo el programa servidor puede pedir usuario y contraseña para autentificar.
Se ve que el tcpd agrega un nivel mas de seguridad mediante reglas de acceso, es intermediario
entre el súper server (inetd) y el servidor correspondiente.
5.- hos
Comentarios de: Configuración TCP-Wrapper (0)
No hay comentarios