Comando Linux / Unix: hosts.deny

Comando Linux / Unix: hosts.deny

Comando Linux / Unix: hosts.deny

VALORACIÓN DEL ARTÍCULO:
5/5

Esta página del manual describe un lenguaje de control de acceso simple que se basa en patrones de cliente (nombre/dirección del host, nombre de usuario) y servidor (nombre del proceso, nombre/dirección del host). Al final se dan ejemplos. Se anima al lector impaciente a que pase a la sección EJEMPLOS para una rápida introducción.

Una versión extendida del lenguaje de control de acceso se describe en el documento hosts_options(5). Las extensiones se activan en el momento de la construcción del programa mediante la construcción con -DPROCESS_OPTIONS.

En el siguiente texto, daemon es el nombre de proceso de un proceso de demonio de red, y client es el nombre y/o dirección de un servicio solicitante de host. Los nombres de proceso del demonio de red se especifican en el archivo de configuración inetd.

Índice de contenidos

Archivos de control de acceso

El software de control de acceso consulta dos archivos. La búsqueda se detiene en la primera coincidencia:

El acceso se concederá cuando un par (demonio,cliente) coincida con una entrada en el archivo /etc/hosts.allow.

De lo contrario, se denegará el acceso cuando un par (demonio,cliente) coincida con una entrada en el archivo /etc/hosts.deny.

De lo contrario, se concederá el acceso.

Un archivo de control de acceso inexistente se trata como si fuera un archivo vacío. Por lo tanto, el control de acceso puede ser desactivado si no se proporcionan archivos de control de acceso.

Reglas de control de acceso

Cada archivo de control de acceso consta de cero o más líneas de texto. Estas líneas se procesan por orden de aparición. La búsqueda termina cuando se encuentra una coincidencia.

Un nuevo carácter de línea se ignora cuando está precedido por un carácter de barra invertida. Esto le permite dividir las líneas largas para que sean más fáciles de editar.

Las líneas en blanco o las líneas que comienzan con un carácter `#’ se ignoran. Esto le permite insertar comentarios y espacios en blanco para que las tablas sean más fáciles de leer.

Todas las demás líneas deben satisfacer el siguiente formato, siendo las cosas entre [] opcionales:

daemon_list : client_list [ : shell_command ]

daemon_list es una lista de uno o más nombres de procesos daemon (valores argv[0]) o comodines (ver abajo).

client_list es una lista de uno o más nombres de host, direcciones de host, patrones o comodines (ver abajo) que se compararán con el nombre o dirección de host del cliente.

Los formularios más complejos daemon@host y user@host se explican en las secciones sobre patrones de endpoints del servidor y sobre búsquedas de nombres de usuario del cliente, respectivamente.

Los elementos de la lista deben estar separados por espacios en blanco y/o comas.

Con la excepción de las búsquedas de grupos de redes NIS (YP), todas las comprobaciones de control de acceso no distinguen entre mayúsculas y minúsculas.

Patrones

El lenguaje de control de acceso implementa los siguientes patrones:

Una cadena que comienza con un carácter `. Un nombre de host coincide si los últimos componentes de su nombre coinciden con el patrón especificado. Por ejemplo, el patrón `.tue.nl’ coincide con el nombre de host `wzv.win.tue.nl’.

Una cadena que termina con un carácter `. Una dirección de host es igualada si sus primeros campos numéricos coinciden con la cadena dada. Por ejemplo, el patrón `131.155.» coincide con la dirección de (casi) cada host en la red de la Universidad de Eindhoven (131.155.x.x).

Una cadena que comienza con un carácter `@’ se trata como un nombre de netgroup NIS (anteriormente YP). Un nombre de host es igual si es un miembro de host del netgroup especificado. Las coincidencias de Netgroup no son compatibles con los nombres de procesos daemon ni con los nombres de usuario de los clientes.

Una expresión de la forma `n.n.n.n.n/m.m.m.m.m’ se interpreta como un par `net/máscara’. Una dirección de host IPv4 coincide si `net’ es igual al AND de bits de la dirección y la `máscara’. Por ejemplo, el patrón neto/máscara `131.155.72.0/255.255.254.0′ coincide con todas las direcciones del rango `131.155.72.0′ a `131.155.73.255′.

Una expresión de la forma `[n:n:n:n:n:n:n:n:n]/m’ se interpreta como un par `[net]/prefixlen’. Una dirección de host IPv6 coincide si los bits `prefixlen’ de `net’ son iguales a los bits `prefixlen’ de la dirección. Por ejemplo, el patrón[net]/prefixlen `[3ffe:505:2:1::]/64′ coincide con todas las direcciones del rango `3ffe:505:2:1:::’ hasta `3ffe:505:2:1:ffff:ffff:ffff:ffff:ffff’.

Una cadena que comienza con un carácter `/’ se trata como un nombre de archivo. El nombre o la dirección de un host coincide con cualquier patrón de nombre o dirección del host que aparezca en el archivo con nombre. El formato de archivo es cero o más líneas con cero o más nombres de host o patrones de dirección separados por espacios en blanco. Un patrón de nombre de archivo se puede utilizar en cualquier lugar donde se pueda utilizar un nombre de host o un patrón de dirección.

Los comodines `*» y «?’ pueden utilizarse para que coincidan con los nombres de host o las direcciones IP. Este método de coincidencia no se puede utilizar junto con la coincidencia `net/mask’, la coincidencia de nombres de host que empiezan por `.’ o la coincidencia de direcciones IP que terminan por `.

Comodines

El lenguaje de control de acceso soporta comodines explícitos:

Todos

El comodín universal, siempre coincide.

Local

Concuerda con cualquier host cuyo nombre no contenga un carácter de punto.

Desconocido

Coincide con cualquier usuario cuyo nombre sea desconocido, y con cualquier host cuyo nombre o dirección (tag) sea desconocido. Este patrón debe utilizarse con cuidado: los nombres de host pueden no estar disponibles debido a problemas temporales con el servidor de nombres. Una dirección de red no estará disponible cuando el software no sepa con qué tipo de red está hablando.

Conocido

Coincide con cualquier usuario cuyo nombre sea conocido y con cualquier host cuyo nombre y dirección () sean conocidos. Este patrón debe utilizarse con cuidado: los nombres de host pueden no estar disponibles debido a problemas temporales con el servidor de nombres. Una dirección de red no estará disponible cuando el software no sepa con qué tipo de red está hablando.

Paranoico

Coincide con cualquier host cuyo nombre no coincida con su dirección. Cuando tcpd se construye con -DPARANOID (modo por defecto), deja caer las peticiones de dichos clientes incluso antes de mirar las tablas de control de acceso. Construya sin -DPARANOID cuando desee tener más control sobre dichas peticiones.

Operadores

EXCEPTO

El uso previsto es de la forma: list_1 EXCEPT list_2″; este constructo coincide con cualquier cosa que coincida con list_1 a menos que coincida con list_2. El operador EXCEPTO se puede utilizar en daemon_lists y en client_lists. El operador EXCEPT puede anidarse: si el lenguaje de control permite el uso de paréntesis, `a EXCEPT b EXCEPT c’ parpadeará como `(a EXCEPT (b EXCEPT c))’.

COMANDOS SHELL

Si la primera regla de control de acceso coincidente contiene un comando shell, ese comando está sujeto a %sustituciones (vea la siguiente sección). El resultado se ejecuta mediante un proceso hijo /bin/sh con entrada, salida y error estándar conectado a /dev/null. Especifique un `&’ al final del comando si no desea esperar hasta que se haya completado.

Los comandos de Shell no deben depender de la configuración PATH del inetd. En su lugar, deberían usar nombres de ruta absolutos, o deberían comenzar con una PATH=cualquiera que sea la sentencia.

El documento hosts_options(5) describe un lenguaje alternativo que utiliza el campo de comandos shell de una manera diferente e incompatible.

EXPANSIONES

Las siguientes expansiones están disponibles dentro de los comandos del shell:

a (%A)

La dirección del host del cliente (servidor).

c

Información del cliente: user@host, user@address, un nombre de host, o simplemente una dirección, dependiendo de cuánta información esté disponible.

d

El nombre del proceso daemon (valor argv[0]).

h (%H)

El nombre o la dirección del host del cliente (servidor), si el nombre del host no está disponible.

%n (%N)

El nombre de host del cliente (servidor) (o «desconocido» o «paranoico»).

%p

El identificador de proceso del demonio.

%s

Información del servidor: daemon@host, daemon@address, o simplemente un nombre de demonio, dependiendo de cuánta información esté disponible.

%u

El nombre de usuario del cliente (o «desconocido»).

%%

Se expande a un solo carácter `%’.

Los caracteres en expansiones de % que pueden confundir al shell son reemplazados por guiones bajos.

PATRONES DE ENDOPUNTO DEL SERVIDOR

Para distinguir a los clientes por la dirección de red a la que se conectan, utilice los patrones del formulario:

process_name@host_pattern : client_list ….

Patrones como estos pueden ser utilizados cuando la máquina tiene diferentes direcciones de Internet con diferentes nombres de host de Internet. Los proveedores de servicios pueden utilizar este servicio para ofrecer archivos FTP, GOPHER o WWW con nombres de Internet que pueden incluso pertenecer a diferentes organizaciones. Vea también la opción `twist’ en el documento hosts_options(5). Algunos sistemas (Solaris, FreeBSD) pueden tener más de una dirección de Internet en una interfaz física; con otros sistemas puede que tenga que recurrir a pseudointerfaces SLIP o PPP que viven en un espacio de direcciones de red dedicado.

El host_pattern obedece las mismas reglas sintácticas que los nombres y direcciones de host en el contexto client_list. Normalmente, la información del punto final del servidor sólo está disponible con servicios orientados a la conexión.

BÚSQUEDA DE NOMBRES DE USUARIO DE CLIENTES

Cuando el host cliente soporta el protocolo RFC 931 o uno de sus descendientes (TAP, IDENT, RFC 1413), los programas envolventes pueden recuperar información adicional sobre el propietario de una conexión. La información del nombre de usuario del cliente, cuando está disponible, se registra junto con el nombre del host del cliente y se puede utilizar para hacer coincidir patrones como:

lista_de_demonios : …. patrón_de_usuario@patrón_de_host….

Las envolturas del demonio pueden configurarse en tiempo de compilación para realizar búsquedas de nombres de usuario basadas en reglas (predeterminadas) o para interrogar siempre al host del cliente. En el caso de búsquedas de nombres de usuario basadas en reglas, la regla anterior provocaría la búsqueda de nombres de usuario sólo cuando tanto la daemon_list como la host_patterncoinciden.

Un patrón de usuario tiene la misma sintaxis que un patrón de proceso de demonio, por lo que se aplican los mismos comodines (no se admite la pertenencia a un grupo neto). Sin embargo, uno no debería dejarse llevar por las búsquedas de nombres de usuario.

La información del nombre de usuario del cliente no se puede confiar cuando más se necesita, es decir, cuando el sistema del cliente ha sido comprometido. En general, ALL y (UN)KNOWN son los únicos patrones de nombres de usuario que tienen sentido.

Las búsquedas de nombres de usuario sólo son posibles con servicios basados en TCP, y sólo cuando el host del cliente ejecuta un demonio adecuado; en todos los demás casos el resultado es «desconocido».

Un fallo conocido del kernel UNIX puede causar la pérdida de servicio cuando las búsquedas de nombres de usuario son bloqueadas por un cortafuegos. El documento README del envoltorio describe un procedimiento para averiguar si su kernel tiene este error.

Las búsquedas de nombres de usuario pueden causar retrasos notables para los usuarios que no son de UNIX. El tiempo de espera predeterminado para la búsqueda de nombres de usuario es de 10 segundos: demasiado corto para hacer frente a redes lentas, pero lo suficientemente largo para irritar a los usuarios de PC.

Las búsquedas selectivas de nombres de usuario pueden aliviar el último problema. Por ejemplo, una regla como:

lista_de_demonios : @pcnetgroup ALL@ALL

haría coincidir a los miembros del grupo pc netgroup sin hacer búsquedas de nombre de usuario, pero realizaría búsquedas de nombre de usuario con todos los demás sistemas.

TAMBIÉN TE INTERESA

SMS-fraudulento-Renta-2024

Ojo con tu declaración de la Renta 2024: SMS y webs falsas podrían saquearte

La campaña de la Renta 2024 se encuentra activa desde hace semanas. Hacienda llama, como cada año, a millones de contribuyentes para presentar su declaración. Desde hace años, este trámite se puede realizar cómodamente en los canales online habilitados por la Administración. Además de Renta Web, cabe la posibilidad de hacer la operación o simulación

grabar-un-despido-en-TikTok

La (peligrosa) tendencia de grabar un despido en TikTok

TikTok es una red social en la que cabe absolutamente de todo. Y cuando decimos todo, es todo. Una de las últimas tendencias en auge es grabar un despido en TikTok. Si uno hace una búsqueda de contenido desde hashtags como #layoffs y #techleyoffs, encontrará un gran número de vídeos de personas que son echadas

impacto-a-la-IA-Generativa-en-el-cloud-privado

El impacto de la IA Generativa en el Cloud Privado

En este artículo indagamos sobre un término que está muy de moda en estos días: la IA Generativa. Además de describir qué y cuál es su potencial, lo vamos a relacionar con el Cloud Privado, ya que estos entornos pueden dar un gran paso adelante gracias a la capacidad de procesamiento y generación de datos

recetas-de-postres

Conviértete en todo un chef con las recetas de cocina de Alexa

El famoso asistente de voz de Amazon puede hacer casi de todo lo que le pidas, incluidas las recetas de cocina de Alexa. Tras cinco años de vida en España, algo más en Estados Unidos, los datos que maneja la compañía indican que muchas personas recurren a Alexa como su ayudante en la cocina, ya