Xinetd
es un super servidor ampliado, que proporciona la funcionalidad de
inetd y más la opciones de seguridad similares a las de TCP
Wrappers. El demonio xinetd controla el acceso a un subconjunto de
servicios de una red incluyendo FTP, IMAP o Telnet. También
proporciona opciones de configuración específicas al servicio para
el control de acceso, registro mejorado, redireccionamiento y control
de utilización de recursos.
Cuando
un host cliente intenta conectarse a un servicio de red controlado
por xinetd, el super servicio recibe la petición y verifica las
reglas de control de acceso Wrappers TCP. Si se permite el acceso,
xinetd verifica que la conexión sea permitida con las reglas
configuradas para ese servicio, luego pasa el control de la conexión
al servicio solicitado. Una vez establecida la conexión, xinetd no
interfiere entre la comunicación entre el cliente y el servidor.
Para
instala xinetd ejecutando las órdenes siguientes:
aceitunero@aceitunero:/$
sudo apt-get install xinetd
Configurar
xinetd
Ficheros
de configuración que controla xinetd se encuentra en
/etc/xinetd.conf, en este fichero sólo se encuentra las opciones
globales por defecto y un directiva para incluir los ficheros
almacenados en el directorio /etc/xinetd.d.
Cada
servicio que se ejecute a través de xinetd verificará los ficheros
que se encuentra en este directorio (/etc/xinetd.d) y estas opciones
la configuración que son las que tendrá cada máquina, es decir,
que si tenemos tres servidores uno servidor Web, otro FTP y otro de
servicios de Correo, para cada servidor tenemos que instalar xinedt y
configurarlo a las necesidades cada servicio. Y una vez configurado
el servicio tenemos que reiniciar xinedt:
aceitunero@aceitunero:~$
sudo /etc/init.d/xinetd
restart
Este
archivo contiene las opciones de configuración por defecto que se
aplican al servidor, pero si quieres no hace falta editarlo, en caso
contrario, puede usar este ejemplo:
defaults
{
instances
= 60
log_type
= SYSLOG authpriv
log_on_success
= HOST PID
log_on_failure
= HOST
cps
= 25 30
}
includedir
/etc/xinetd.d
Estas
líneas controlan los siguientes aspectos de xinetd:
log_type:
Configura xinetd para usar el registro authpriv, el cual escribe las
entradas de registro al archivo /var/log/secure. Si agregamos una
directiva como FILE /var/log/xinetdlog.log , creará un archivo de
registro personalizado llamado xinetdlog.log en el directorio
/var/log/. Por ejemplo: log_type = FILE /var/log/xinetdlog.log
El
directorio /etc/xinetd.d/
El
directorio /etc/xinetd.d/ contiene los archivos de configuración
para cada servicio manejado por xinetd y los nombres de los archivos
que se relaciona con el servicio. Para que los cambios tengan efecto,
el administrador debe reiniciar el servicio xinetd.
La
razón principal por la que la configuración para cada servicio es
almacenada en un archivo separado es hacer más fácil la
administración y que sea menos probable afectar otros servicios.
Para
configurar los distintos servicios creamos un archivo con el nombre
del servicio dentro del directorio /etc/xinetd.d, pero si queremos
también se puede incluir esta configuración dentro del archivo
/etc/xinetd y no crea ningún fichero dentro del directorio
/etc/xinetd.d.
Para
tener una idea de cómo estos archivos están estructurados, este
puede ser un ejemplo de como quedaría configurado xinetd para un
servicio de telnet y el archivo se guardaría en el directorio
/etc/xinetd.d/telnet:
service
telnet
{
flags
= REUSE
socket_type
= stream
wait
= no
user
= root
server
= /usr/sbin/in.telnetd
log_on_failure
+= USERID
disable
= yes
}
Estas
líneas controlan varios aspectos del servicio telnet:
socket_type:
Configura el socket de red. Stream crea una conexión fiable en los
dos sentidos, dgram crea una conexión menos fiable, pero con menos
sobre carga, raw crea una conexión de bajo nivel.
Estos
son unos ejemplos de los distintos fichero que podemos crear para los
distintos servidores dependiendo de los servicios que podemos tener
instalados en la red.
service
ftp
{
socket_type
= stream
protocol
= tcp
wait
= no
user
= root
server
= /usr/sbin/proftpd
}
service
ssh
{
socket_type
= stream
protocol
= tcp
wait
= no
user
= root
port
= 22
server
= /usr/sbin/sshd
server_args
= -i
}
service
http
{
socket_type
= stream
protocol
= tcp
wait
= no
user
= root
server
= /usr/local/apache/bin/httpd
}
service
finger
{
socket_type
= stream
protocol
= tcp
wait
= no
user
= root
no_access
= 0.0.0.0
only_from
= 127.0.0.1
banner_fail
= /etc/finger_fail
server
= /usr/sbin/in.fingerd
server_args
= -l
}
Opciones
de registro
Las
siguientes opciones están disponibles para /etc/xinetd.conf y los
archivos de configuración del servicio en el directorio
/etc/xinetd.d/. En esta lista tenemos algunas de las opciones de
registro más usadas:
Para
una lista completa de las opciones de registro, consulte la página
de manual de xinetd.conf.
Opciones
de control de acceso
Los
usuarios de servicios xinetd pueden seleccionar usar reglas de acceso
a hosts wrapped TCP, proporcionar control de acceso a través de los
archivos de configuración xinetd. A diferencia de los wrappers TCP,
los cambios al control de acceso sólo tengan efecto si el
administrador de xinetd reinicia el servicio xinetd y sólo afecta a
los servicios controlados por xinetd.
Los
wrappers TCP colocan la configuración del acceso por medio de dos
archivos, /etc/hosts.allow y /etc/hosts.deny, el control de acceso de
xinetd se encuentra en el archivo de configuración de cada servicio
dentro del directorio /etc/xinetd.d.
Las
opciones de acceso son soportadas por xinetd:
Las
opciones only_from y no_access pueden usar una lista de direcciones
IP o nombres de hosts, o especificar una red completa. Por ejemplo,
el siguiente archivo /etc/xinetd.d/telnet puede ser usado para
bloquear el acceso a Telnet desde un grupo de red y restringir el
tiempo permitido para conectarse:
service
telnet
{
disable
= no
flags
= REUSE
socket_type
= stream
wait
= no
user
= root
server
= /usr/sbin/in.telnetd
log_on_failure
+= USERID
no_access
= 10.0.1.0/24
log_on_success
+= PID HOST EXIT
access_times
= 09:45-16:15
}
Con
este ejemplo, cuando un equipo de un cliente de la red 10.0.1.0/24,
con la IP 10.0.1.12, intenta acceder al servicio Telnet, recibirá un
mensaje indicando lo siguiente:
Connection
closed by foreign host.
Además,
sus intentos de conexión son registrados en /var/log/secure
como sigue:
May
15 17:38:49 boo xinetd[16252]: START: telnet pid=16256 from=10.0.1.2
May
15 17:38:49 boo xinetd[16256]: FAIL: telnet address from=10.0.1.2
May
15 17:38:49 boo xinetd[16252]: EXIT: telnet status=0 pid=16256
Vincular
y redirigir opciones
Los
ficheros de configuración de servicios para el comando xinetd
también soportan la vinculación del servicio a una dirección IP y
el desvío de las peticiones entrantes para dicho servicio a otra
dirección IP, nombre de la máquina o puerto.
La
vinculación es controlada con la opción bind
que se encuentra en el archivo de configuración específico del
servicio, y une al servicio a una dirección IP del sistema. Una vez
configurada, la opción bind sólo permite peticiones para la
dirección IP y tenga acceso al servicio.
De
esta forma se pueden vincular servicios diferentes a interfaces de
red diferentes basados en la necesidad. Esto es útil sobre todo para
los sistemas con múltiples adaptadores de red o con múltiples
direcciones IP. Los servicios inseguros como Telnet, se pueden
configurar de modo que solo escuche a la interfaz conectada a una red
privada, y no a la interfaz conectada a Internet.
La
opción redirect
acepta la dirección IP o el nombre de la máquina seguido del número
de puerto. Y hace que el servicio desvíe todas las peticiones a una
localización y número de puerto específicos.
Esta
característica se usa para establecer otro número de puerto, y
desviar la petición a otra dirección IP en la misma máquina,
cambiar la petición a otro equipo y puerto diferentes. De esta
manera, un usuario que está conectado a un determinado servicio en
un sistema puede ser redirigido a otro sistema sin ninguna
interrupción.
Estas
opciones se pueden usar para limitar la exposición de un servicio
determinado a una dirección IP conocida, así como desviar todas las
peticiones a ese servicio a otra máquina. Por ejemplo, para
configurar las característica de un servicio Telnet:
service
telnet
{
socket_type
= stream
wait
= no
server
= /usr/sbin/in.telnetd
log_on_success
+= DURATION USERID
log_on_failure
+= USERID
bind
= 123.123.123.123
redirect
= 10.0.1.13 23
}
Las
opciones bind y redirect en este archivo aseguran que el servicio
Telnet en la máquina con dos tarjetas de red, está enlazando la
dirección IP externa (123.123.123.123), que es la que se encarga de
Internet.
Además,
todas las peticiones del servicio Telnet enviadas a 123.123.123.123
son redirigidas a través de una segunda tarjeta de red a una
dirección IP interna (10.0.1.13) a la que sólo tienen los sistemas
internos.
Opciones
de administración de recursos
El
demonio xinetd puede añadir un nivel básico de protección de un
ataque Denial of Service (DoS). Con esta lista de las directivas os
puede ayudar en limitar la efectividad de tales ataques:
Hay
más opciones de administración de recursos disponibles para xinetd.
Para más información.consulte la página del manual de xinetd.conf.
Espero
que os haya servido de ayuda a tod@s. Un saludo:
Antonio
Comentarios
Has mirado información sobre las opción de configuración: deny_time
Te paso este manual que contiene mucha información de las opciones y parámetros de configuración de xinetd.
http://informatica.uv.es/iiguia/R/apuntes/laboratorio/Practica-8.pdf
Como te dije, por falta de tiempo, tengo el Blog un poco abandonado, y además no tengo instalado Linux para hacer pruebas :-(.
Pero si encuentro algo te lo comunico, y espero que a la fecha de hoy, hayas resuelto el problema y comentes la solución, para que todos aquellos que se encuentren con ese problema, tenga una referencia y ayuda.
Un saludo
Antonio
service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = pepitoperez
server = /usr/sbin/proftpd
}
Un saludo
Publicar un comentario
Dejanos tu opinión o comentario, entre todos podemos aprender más sobre los temas que se tratan en este Blog. No te olvides seguidme en Twitter, YouTube o Facebook. Muchas gracias por tu tiempo. 👋😎