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 configurar un firewall.

En este sentido, puede pensar en esta herramienta como una medida de seguridad definitiva 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 utilizan hosts.allow y hosts.deny (en ese orden) para determinar si el cliente debe poder utilizar un servicio determinado. .

De forma predeterminada, 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 existan ambos archivos:

# ls -l /etc/hosts.allow /etc/hosts.deny

La sintaxis de ambos archivos es la misma:

<services> : <clients> [: <option1> : <option2> : ...]

dónde,

  1. services es una lista de servicios separados por comas a los que se debe aplicar la regla actual.
  2. los clientes representan la lista de nombres de host separados por comas o direcciones IP afectadas por la regla. Se aceptan los siguientes comodines:
    1. TODO coincide con todo. Se aplica tanto a clientes como a servicios.
    2. LOCAL coincide con los hosts sin un punto en su FQDN, como localhost.
    3. CONOCIDO indica una situación en la que se conoce el nombre de host, la dirección de host o el usuario.
    4. DESCONOCIDO es lo contrario de CONOCIDO.
    5. PARANOID hace que se interrumpa una conexión 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.

    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 prohíbe eso. 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 salida, se puede ajustar a TCP. Un ejemplo de esto son sshd y vsftpd, como se muestra aquí:

    Cómo utilizar envoltorios TCP 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 el acceso SSH y FTP solo a 192.168.0.102 y localhost y denegar todos los demás, 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,LOCAL
    
    #
    # hosts.deny	This file contains access rules which are used to
    #		deny connections to network services that either use
    #		the tcp_wrappers library or that have been
    #		started through a tcp_wrappers-enabled xinetd.
    #
    #		The rules in this file can also be set up in
    #		/etc/hosts.allow with a 'deny' option instead.
    #
    #		See 'man 5 hosts_options' and 'man 5 hosts_access'
    #		for information on rule syntax.
    #		See 'man tcpd' for information on tcp_wrappers
    #
    sshd,vsftpd : ALL
    ALL : ALL
    
    #
    # hosts.allow	This file contains access rules which are used to
    #		allow or deny connections to network services that
    #		either use the tcp_wrappers library or that have been
    #		started through a tcp_wrappers-enabled xinetd.
    #
    #		See 'man 5 hosts_options' and 'man 5 hosts_access'
    #		for information on rule syntax.
    #		See 'man tcpd' for information on tcp_wrappers
    #
    sshd,vsftpd : 192.168.0.102,LOCAL
    

    Estos cambios se realizan de inmediato 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.

    Para permitir todos los servicios a los 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".

    ¿Te ayudó este artículo? ¿Tienes alguna pregunta o comentario? No dude en enviarnos una nota utilizando el formulario de comentarios a continuación.