Beruflich Dokumente
Kultur Dokumente
Xinetd es el servidor de los servidores, es decir, un servidor "Padre" que se encarga de dar servicio a
otros servidores que hayan instalados dependiendo de si hay peticiones o no.
Pongamos el ejemplo de que tenemos los servidores ftp, ssh y http. Deberiamos tener 3 servidores, ftpd corriendo
en el puerto 21, sshd corriendo en el puerto 22 y httpd corriendo en el puerto 80.
Con xinetd solo tendriamos UN solo servidor que, debidamente configurado, estaría a la escucha en los puertos
21, 22 y 80 a la espera de que le lleguen peticiones. Si hubiera una petición ftp, Xinetd ejecutaria el demonio ftpd,
atendería a la petición y lo volvería a descargar. Y lo mismo con todos los servidores que tengamos en nuestro
equipo, aumentando así la seguridad del equipo.
/etc/services
Este archivo indica los puertos por defecto asociados a cada servicio al igual que su protocolo de
transmisión (TCP ó UDP), así como algunos alias. Un ejemplo de este archivo sería:
ft p 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
El funcionamiento de Xinetd se basa en el tcp_wrappers, sistema que usando los archivos "/etc/hosts.allow" y
"/etc/hosts.deny" envía la petición al demonio tcpd, que si es aceptada, pasa al control del servidor propiamente
dicho. Xinetd ofrece:
– Limitar el número total de conexiones que un usuario puede tener en el mismo servicio.
Para configurar el servidor deberemos editar el archivo "/etc/xinetd.conf". La estructura de este archivo es
bastante clara. Dividido en secciones, cada sección pertenece a un servidor que queremos que controle.
Al principio del archivo existe una sección por defecto que tendrá valores que se aplicarán a todos los servicios
que no los indiquemos de forma explícita:
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST RECORD
}
includedir /etc /xinetd.d
service "nombre"
{
"atributo" "operador" "valor1" "valor2" ...
}
- nombre: Es el nombre del servidor y debe ser el mismo que el que hay en el archivo /etc/services
- 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: Especifica el funcionamiento del servicio, que son los siguientes:
- wait: Indica si el servicio es multi-hilo (no) o no (yes). Ejemplo: wait=yes
- id: Asigna un identificador al servicio que por defecto es su propio nombre. Util para servicios que
funcionan a través de distintos protocolos. Ejemplo: id=ftpudp
- socket_type: Tipo de socket que usa para la comunicación. Ejemplo: socket_type=stream
- disable: Activa/desactiva un servicio de forma sencilla. Ejemplo: disable=yes
- protocol: Protocolo empleado por el servicio. Ejemplo: protocol=tcp
- user y group: ID de usuario y grupo del servicio. Ejemplo: user=jose
- nice: Nivel de prioridad de ejecución del servidor. Ejemplo: nice=10
- server: Ruta al ejecutable del servicio. Los argumentos de dicho programa se especifican a través del
atributo server_args. Ejemplo: server= /usr /sbin/ in.ftpd
- only_from: Especifica qué máquinas tienen acceso al servicio. Ejemplo: only_from=192.168.40/24
- no_access: Deniega el permiso a las máquinas especificadas. Este atributo se relaciona con el anterior por
lo que si no aparece en ninguno el acceso es libre y si están en los dos se aplica la regla que más
se ajuste al cliente. Ejemplo: no_access=192.168.40.1
- access_time: Intervalo de tiempo en que estará activo el servicio en formato hm-hm.
El valor de "h" es de 0-23 y "m" es de 0-59. Ejemplo: access_time=8:00- 18:30
- port: Puerto al que se asocia el servicio. Si aparece descrito en /etc/services ambos puertos deben
coincidir.Ejemplo: port=100
- log_type: Modo en que se tratarán las trazas del servicio. Ejemplo: log_type=FILE/var/log/telnetlogs
- log_on_success y log_on_failure: Información que se almacena en los logs cuando el servicio comienza
y cuando falla. Ejemplo: log_on_success+=DURATION USERID
El nombre de servicio que aparece en el encabezado de la sección después de la palabra service debe
coincidir siempre con una entrada del archivo /etc /services, de donde se coge algún atributo. Si el servicio no está
incluido en el archivo /etc/services, deberá indicarse el atributo port.
Aviso: En las distribuciones Red Hat y otras (como Mandrake) el archivo xinetd.conf hace referencia a un
directorio (normalmente a /etc/xinedt.d mediante la entrada: ncludedir
/etc/xinetd.d
En este directorio se encuentran archivos separados para cada uno de los servicios manejados por Xinetd.
Cada uno de estos archivos corresponderá a una de las secciones vistas anteriormente.
Actualización de configuraciones.
Cuando se modifica el archivo xinetd.conf existe una forma de actualizar la configuración sin que los
servicios que se están ejecutando se vean afectados. La forma de reiniciar Xinetd es mediante el comando:
/etc/rc.d/init.d/xinetd restart
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr /sbin / in. telnetd
log_on_failure += USERID
}
service ntalk
{
disable = yes
socket_type = dgram
wait = yes
user = nobody
group = tty
server = /usr /sbin / in.ntalkd
}