Curso
Administrador Linux
Módulo 2
inetd/xinetd
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 1 de 11
Presentación
En esta unidad se introducirá a los participantes en el funcionamiento y configuración
de los súper demonios.
Objetivos
Los participantes al finalizar la Unidad:
Entenderán cual es la función de inetd y xinetd
Comprenderán la relación de inetd y xinetd con otros demonios
Entenderán el porqué de xinetd
Podrán configurar los súper demonios
Temario
2.1 inetd/xinetd
2.2 Instalación
2.3 Configuración
2.4 Agregando servicios
2.5 Directorio etc/xinetd.d/
Actividad de aplicación del conocimiento
Los participantes encontraran la actividad de aplicación en un archivo por separado
en caso de ser requerida.
Examen
Los participantes deberán rendir el examen online o presentar el material solicitado
según corresponda.
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 2 de 11
2.1 inetd/xinetd
Tanto inetd como xinetd son llamados súper demonios, o super daemons, dado que
son demonios que gestionan las conexiones de otros demonios. Uno de estos
demonios, el que estemos utilizando, se carga en memoria y atiende las solicitudes de
conexión que llegan. Inetd o Xinetd realiza un llamado al demonio que corresponda en
función del tipo de conexión (en función del puerto), esto disminuye la carga del
sistema dado que no se tienen cargados todos los demonios, sino que se cargan por
demanda.
Hay otras implementaciones de super severs menos conocidas como launchpad para
MacOSX y ucspi-tcp.
Funcionamiento
Inetd es un demonio que atiende las solicitudes de conexión que llegan a nuestro
equipo, y está a la espera de todos los intentos de conexión que se realicen en una
máquina. Cuando le llega una solicitud de conexión, irá dirigida a un puerto, por
ejemplo, el 80 sería una solicitud al servidor de páginas web, 23 para telnet, 25 para
SMTP, etc.
Inetd se utiliza principalmente para lanzar procesos que albergan a otros demonios,
pero también se utiliza para gestionar determinados protocolos triviales como chargen,
auth y daytime.
En el archivo /etc/[Link] encontraremos la
descripción de los servicios y en /etc/services los
números de puertos y demonios que atenderán las
solicitudes.
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 3 de 11
Por ejemplo, en /etc/[Link] podemos encontrar las siguientes líneas en la
sección servicios estándar:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/[Link]
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/[Link]
Y en el archivo /etc/services lo siguiente:
ftp 21/tcp
telnet 23/tcp
Estas configuraciones indican que cuando se inicie una conexión al puerto 21 tcp se
ejecutará el comando “/usr/sbin/tcpd /usr/sbin/[Link]” pasando a este server el control
y que cuando llegue una conexión al puerto 23 tcp se ejecutará en cambio
“/usr/sbin/tcpd /usr/sbin/[Link]”.
Veremos más configuraciones más adelante.
La función fundamental es la de escuchar todas las solicitudes
de los clientes de los servicios que supervisa, y ejecutar de
forma controlada el servidor correspondiente para que atienda a
su cliente.
El super-server xinetd
Según la forma en que funcionan los servicios que controla xinetd estos pueden
dividirse en dos grupos: los que son multi-hilos, para atender a cada cliente se ejecuta
un servidor; y los de un único hilo, sólo existe un servidor activo que interactúa con
todos los clientes.
Los primeros siempre dependerán de xinetd para responder a cada cliente, mientras
que en el caso de los de un solo hilo, una vez iniciada la instancia del servidor este
tomará el control de su puerto para responder al resto de sus clientes sin la
intervención de xinetd.
2.2 Instalación
En la distribución Debian inetd viene por default, en cambio xinetd debe instalarse a
través del paquete del mismo nombre. De este paquete dependen todos los paquetes
que contengan servidores, controlados por xinetd por defecto, como son el Telnet, el
Talk, etc. Una vez instalado, la forma de interactuar con el servicio: iniciarlo, detenerlo,
conocer su estado, etc., es a través del script de inicio nombrado xinetd (en el
directorio /etc/init.d/).
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 4 de 11
Para instalarlo debemos ejecutar:
# apt-get install xinetd
Para iniciar o detener el servicio debemos ejecutar:
# /etc/init.d/xinetd start
Starting internet superserver: xinetd
# /etc/init.d/xinetd stop
Stooping internet superserver: xinetd.
Para volver a cargar la configuración debemos ejecutar:
# /etc/init.d/xinetd reload
Reloading internet superserver configuration: xinetd.
Por cada modificación debemos ejecutar:
# /etc/init.d/xinetd restart
Stooping internet superserver: xinetd.
Starting internet superserver: xinet
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 5 de 11
2.3 Configuración
Antes de explicar cómo se configura propiamente xinetd y los servicios que controla,
es necesario mencionar y describir al archivo /etc/ services. En el mismo se indican los
puertos por defecto asociados a cada servicio controlado o no por xinetd. También se
especifican los protocolos de transmisión asociados a cada par servicio-puerto (tcp o
udp), además de algunos alias que pueden tener estos servicios.
El archivo /etc/services también es utilizado por otros programas de tipo cliente para
determinar los puertos por defecto de sus respectivos servidores.
Ejemplo de líneas en /etc/services son:
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
http 80/tcp www www-http
pop3 110/udp pop-3
xdmcp 177/tcp
linuxconf 98/tcp
squid 3128/tcp
Es importante destacar que el servicio xinetd tiene como antecesor al conocido como
inetd, que viene por defecto en la mayoría de las distribuciones. En este último la
configuración de todos los servicios controlados se almacena en el archivo
/etc/[Link]. Por cada servicio habilitado se coloca una línea en el archivo.
Ejemplos:
ftp stream tcp nowait root /usr/sbin/tcpd [Link] -l -a
telnet stream tcp nowait root /usr/sbin/tcpd [Link]
ntalk dgram udp wait root /usr/sbin/tcpd [Link]
Inetd funciona en coordinación con otro daemon llamado tcpd que se encarga de
controlar el acceso de los clientes a los servicios de acuerdo a distintos aspectos. Este
mecanismo se conoce como tcp_wrapper y se configura a través de los archivos en
/etc/[Link] y /etc/[Link]. El mecanismo se mantiene con xinetd aunque este
introduce además, nuevas formas de establecer restricciones de seguridad en los
servicios que controla.
En la versión extendida, la configuración, además de ser más flexible y funcional, se
organiza mucho mejor pues en el archivo inicial, en este caso /etc/[Link], sólo se
colocan los aspectos por defecto y se incluye un directorio donde existe un archivo de
configuración para cada servicio instalado. Este directorio es /etc/xinetd.d/.
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 6 de 11
La entrada que permite describir un determinado servicio en estos archivos toma la
forma:
service <nombre>
{
<atributo> <operador> <valor1> <valor2> ...
...
}
<nombre> : es el nombre genérico del servicio. Debe coincidir con el de la
entrada correspondiente en /etc/services. Ejemplos: ftp, telnet, echo, etc.
<operador> : puede ser = si el atributo toma exactamente los valores expresados,
-= si se eliminan los valores expresados del conjunto de valores por defecto, y +=
cuando se adicionan los valores expresados a los por defecto.
<atributo> : permite expresar cómo funciona el servicio.
A continuación se listan los atributos más comunes e interesantes:
wait:
Indica si el servicio es multi-hilo (valor ``yes'') o no (valor ``no'').
Ejemplo: wait = yes
id:
Permite asignarle un identificador único al servicio. Por defecto es su propio nombre.
Es útil para servicios que funcionan a través de distintos protocolos por lo que
necesitan más de una entrada en el archivo de configuración.
Ejemplo: id = ftpudp
socket_type:
Especifica el tipo de socket que emplea el servicio para la comunicación entre el
cliente y el servidor.
Ejemplo: socket_type = stream
disable:
Permite habilitar y deshabilitar un servicio de forma sencilla. Toma los valores ``yes'' o
``no''.
Ejemplo: disable = yes
protocol:
Indica el protocolo empleado por el servicio.
Ejemplo: protocol = tcp
user y group:
Indican el ID de usuario y de grupo respectivamente con los que se ejecuta el servidor.
Ejemplo: user = user1
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 7 de 11
nice:
Determina la prioridad con que se ejecuta el proceso del servidor.
Ejemplo: nice = 10
server: Indica el ejecutable correspondiente al servicio.
Los argumentos de dicho programa se especifican a través del atributo server_args.
Ejemplo: server = /usr/sbin/[Link]
only_from:
Permite especificar aquellas máquinas que tienen acceso al servicio. Los valores de
este atributo pueden tomar múltiples formas.
Ejemplo: only_from = 192.168.40/24 [Link] [Link]
no_access:
Permite especificar aquellas máquinas que no tienen acceso al servicio. Este atributo
se relaciona con el anterior. Si ninguno está presente el acceso es libre y si están
ambos se aplica la regla que más se ajuste al cliente.
Ejemplo: no_access = [Link]
access_time:
Define el intervalo de tiempo en que estará activo el servicio. El valor de este atributo
toma la forma hora:minuto-hora:minuto donde hora oscila entre 0 y 23 y minuto, entre
0 y 59.
Ejemplo: access_time = 8:00-18:30
port :
Indica el puerto al que se asocia el servicio. Si este aparece en /etc/services ambos
puertos deben coincidir.
Ejemplo: port = 100
log_type:
Permite indicar la forma en que se tratarán las auditorias del servicio. Puede ser
utilizando el servicio de logs o un archivo.
Ejemplo: log_type = FILE /var/log/telnetlogs
log_on_success y log_on_failure:
Especifican cual información se almacena en los logs cuando el servicio comienza
exitosamente y cuando falla.
Ejemplo: log_on_success += DURATION USERID
bind:
Permite asociar el servicio a una interfaz de red determinada.
Ejemplo: bind = [Link]
instances:
Determina el número máximo de instancias del servidor que se pueden ejecutar
simultáneamente (para servicios multi-hilos). El valor cero indica que no hay límites.
Ejemplo: instances = 10
per_source:
Permite establecer la cantidad máxima de conexiones permitidas a un mismo cliente.
Ejemplo: per_source = 1
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 8 de 11
redirect:
Permite redireccionar un servicio TCP a otra máquina especificando su dirección IP (o
nombre) y el puerto por el cual esta va a dar el servicio. Si se especificara además el
atributo server este tendría prioridad.
Ejemplo: redirect = [Link] 80
include: Permite incluir otro archivo de configuración.
Ejemplo: include = /etc/[Link]
includedir:
Permite incluir todos los archivos presentes en un directorio.
Ejemplo: includedir = /etc/xinetd.d
2.4 Agregando servicios
El archivo de configuración /etc/[Link] por defecto tiene una forma similar a la
siguiente:
defaults
{
instances = 60
log_type = SYSLOG daemon
log_on_success = HOST PID USERID
log_on_failure = HOST RECORD USERID
cps = 25 30
}
includedir /etc/xinetd.d
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 9 de 11
En el directorio /etc/xinetd.d/ se encontraran los archivos de configuración para cada
uno de los servicios manejados por xinetd.
Ejemplo del archivo de configuración del servicio Telnet:
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/[Link]
log_on_failure += USERID
}
Ejemplo del archivo de configuración del servicio Talk:
service ntalk
{
disable = yes
socket_type = dgram
wait =yes
user = nobody
group = tty
server = /usr/sbin/[Link]
}
2.5 Directorio /etc/xinetd.d/
En la versión extendida, la configuración, además de ser más flexible y funcional, se
organiza mucho mejor pues en el archivo inicial, en este caso /etc/[Link], sólo se
colocan los aspectos por defecto y se incluye un directorio donde existe un archivo de
configuración para cada servicio instalado. Este directorio es /etc/xinetd.d/.
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 10 de 11
El formato de los mencionados archivos de configuración es igual al de
configuración de xinetd y lleva el nombre del servicio controlado. Se utiliza un
archivo por servicio para que la gestión sea más cómoda y de modo de no afectar
con algún cambio en un servicio a otro servicio.
Universidad Tecnológica Nacional – Facultad Regional Buenos Aires
Página 11 de 11