Sie sind auf Seite 1von 4

EL SUPERSERVIDOR XINETD

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:

– Control de acceso individualizado por servicio.

– Control de acceso basado en intervalos de tiempo.

– Prevención de ataques por denegación de servicio.

– Limitar el número total posible de clientes simultáneos en un servicio.

– Limitar el número total de conexiones que un usuario puede tener en el mismo servicio.

– Limitar el número total de servidores.

– Limitar el tamaño de los archivos de registro de actividad (archivos log).


Configurando Xinetd.

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

Para especificar una configuración para un servicio debemos poner la linea:

service "nombre"
{
"atributo" "operador" "valor1" "valor2" ...
}

Donde tenemos que:

- 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

En el caso de log_on_success , se pueden indicar cinco valores:


- PID: Número que se le da al proceso servidor cuando xinetd lo crea.
- HOST: Dirección IP del equipo remoto que se conecta.
- EXIT: Estado de salida del servidor.
- USERID: Identidad del usuario remoto, de acuerdo al RFC 1413.
- DURATION: Duración de la sesión.

En el caso de log_on_failure , se pueden indicar cuatro valores:


- HOST: Dirección IP del equipo remoto que se conecta.
- USERID: Identidad del usuario remoto, de acuerdo al RFC 1413.
- RECORD: Recoge tanta información como sea posible sobre el equipo que se quiere conectar.
- ATTEMPT: Registra todo intento de acceso.

- bind: Asociar el servicio a una interfaz de red determinada. Ejemplo:bind=192.168.100.3


- instances: Número máximo de instancias del servidor que se pueden ejecutar. Cero indica que no hay
límites. Ejemplo:instances=10
- per_source: Cantidad máxima de conexiones permitidas a un mismo cliente. Ejemplo: per_source=1
- redirect: Redirecciona 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=192.168.100.1 80
- include: Permite incluir otro fichero de configuración. Ejemplo: include=/etc/otroxinetd.conf
- includedir: Permite incluir todos los ficheros presentes en un directorio.
Ejemplo:includedir= /etc/xinetd.d

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

Ejemplo de configuración del servicio Telnet

service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr /sbin / in. telnetd
log_on_failure += USERID
}

Ejemplo de configuración del servicio Talk

service ntalk
{
disable = yes
socket_type = dgram
wait = yes
user = nobody
group = tty
server = /usr /sbin / in.ntalkd
}

Das könnte Ihnen auch gefallen