Table of Contents
Cómo proteger los servicios de red mediante envoltorios TCP en Linux
En este artículo explicaremos qué son los envoltorios TCP y cómo configurarlos para restringir el acceso a los servicios de red que se ejecutan en un servidor Linux. Sin embargo, antes de comenzar, debemos aclarar que el uso de envoltorios TCP no elimina la necesidad de un firewall configurado correctamente.
En este sentido, puede pensar en esta herramienta como un control de acceso basado en host lista, y no como la última medida de seguridad para su sistema. Al usar un firewall y envoltorios TCP, en lugar de favorecer uno sobre el otro, se asegurará de que su servidor no se quede con un solo punto de falla.
Comprensión de hosts.allow y hosts.deny
Cuando una solicitud de red llega a su servidor, los envoltorios TCP usan hosts.allow y hosts.deny (en ese orden) para determinar si el cliente debe poder usar un servicio dado.
Por por defecto, estos archivos están vacíos, todos comentados o no existen. Por lo tanto, todo está permitido a través de la capa de envoltorios TCP y su sistema debe depender del firewall para una protección completa. Dado que esto no es deseado, debido a la razón que mencionamos en la introducción, asegúrese de que ambos archivos existan:
# ls-l/etc/hosts.allow/etc/hosts.deny
La sintaxis de ambos archivos es el mismo:
donde,
- servicios. es una lista de servicios separados por comas a los que se debe aplicar la regla actual.
- clientes. representan la lista de nombres de host separados por comas o direcciones IP afectadas por la regla. Se aceptan los siguientes comodines:
- TODOS. coincide con todo. Se aplica tanto a clientes como a servicios.
- LOCAL. coincide con los hosts sin un punto en su FQDN. como localhost.
- CONOCIDO. indican una situación en la que se conocen el nombre de host, la dirección de host o el usuario.
- DESCONOCIDO. es lo contrario de CONOCIDO.
- PARANOID. hace que una conexión se interrumpa si las búsquedas de DNS inversas (primero en la dirección IP para determinar el nombre del host, luego en el nombre del host para obtener las direcciones IP) devuelven una dirección diferente en cada caso.
- Finalmente, una lista opcional de acciones separadas por dos puntos indica lo que debería suceder cuando se activa una regla determinada.
Es posible que desee tener en cuenta que una regla que permite el acceso a un servicio determinado en/etc/hosts.allow tiene prioridad sobre una regla en/etc/hosts.deny que lo prohíbe. Además, si se aplican dos reglas al mismo servicio, solo se tendrá en cuenta la primera.
Desafortunadamente, no todos los servicios de red admiten el uso de envoltorios TCP. Para determinar si un servicio determinado los admite, haga lo siguiente:
# ldd/path/to/binary | grep libwrap
Si el comando anterior devuelve una salida, puede estar envuelto en TCP. Un ejemplo de esto son sshd. y vsftpd. como se muestra aquí:
Buscar servicios admitidos en TCP Wrapper
Cómo utilizar TCP Wrapper para restringir el acceso a los servicios
Mientras edita/etc/hosts.allow y/etc/hosts.deny, asegúrese de agregar una nueva línea presionando Enter. después de la última línea no vacía.
Para permitir SSH y FTP acceder solo a 192.168.0.102. y localhost. y denegar todo o para ellos, agregue estas dos líneas en/etc/hosts.deny:
sshd, vsftpd: ALL ALL: ALL
y la siguiente línea en/etc/hosts.allow:
sshd, vsftpd: 192.168.0.102, encapsuladores TCP LOCALES-hosts.deny Archivo # # hosts.deny Este archivo contiene reglas de acceso que se utilizan para # denegar conexiones a servicios de red que # utilizan # la biblioteca tcp_wrappers o que tienen se # inició a través de un xinetd habilitado para tcp_wrappers. # # Las reglas de este archivo también se pueden configurar en #/etc/hosts.allow con una opción ‘denegar’ en su lugar. # # Consulte ‘man 5 hosts_options’ y ‘man 5 hosts_access’ # para obtener información sobre la sintaxis de las reglas. # Consulte ‘man tcpd’ para obtener información sobre tcp_wrappers # sshd, vsftpd: ALL ALL: ALL. Envoltorios TCP-hosts.allow Archivo # # hosts.allow Este archivo contiene acceso reglas que se utilizan para # permitir o denegar conexiones a servicios de red que # utilizan la biblioteca tcp_wrappers o que se han # iniciado a través de un xinetd habilitado para tcp_wrappers. # # Consulte ‘man 5 hosts_options’ y ‘man 5 hosts_access’ # para obtener información sobre la sintaxis de las reglas. # Consulte ‘man tcpd’ para obtener información sobre tcp_wrappers # sshd, vsftpd: 192.168.0.102, LOCAL.
Estos cambios tienen lugar inmediatamente sin necesidad de reiniciar.
En la siguiente imagen puede ver el efecto de eliminar la palabra LOCAL de la última línea: el servidor FTP dejará de estar disponible para localhost. Después de volver a agregar el comodín, el servicio vuelve a estar disponible.
Verify FTP Access
Para permitir que todos los servicios hosts donde el nombre contiene example.com, agregue esta línea en hosts.allow:
ALL: .example.com
y para denegar el acceso a vsftpd a las máquinas en 10.0.1.0/24, agregue esta línea en hosts.deny:
vsftpd: 10.0.1.
En los dos últimos ejemplos, observe el punto. al principio y al final de la lista de clientes. Se utiliza para indicar “TODOS los hosts y/o clientes donde el nombre o la IP contiene esa cadena”.
¿Le resultó útil este artículo? ¿Tienes alguna pregunta o comentario? No dude en enviarnos una nota utilizando el formulario de comentarios a continuación.