GNU/Linux >> Tutoriales Linux >  >> Linux

Restrinja el acceso a los servidores Linux mediante contenedores TCP

Contenedor TCP es un sistema ACL (Lista de control de acceso) basado en host de código abierto, que se utiliza para restringir los servicios de red TCP en función del nombre de host, la dirección IP, la dirección de red, etc. Decide a qué host se le debe permitir acceder a un servicio de red específico. TCP Wrapper fue desarrollado por un programador y físico holandés Wietse Zweitze Venema en 1990 en la Universidad Tecnológica de Eindhoven. Lo mantuvo hasta 1995 y luego lo lanzó bajo la licencia BSD en 2001. En esta breve guía, explicaré cómo restringir el acceso a servidores Linux utilizando TCP Wrappers.

Tenga en cuenta que TCP Wrapper no es un reemplazo completo para un firewall configurado correctamente . Es solo una valiosa adición para mejorar la seguridad de su servidor Linux. Se recomienda usarlo junto con un firewall completamente configurado y otros mecanismos y herramientas de seguridad.

Instalar contenedores TCP

TCP Wrappers está disponible en los repositorios oficiales de la mayoría de los sistemas operativos Linux.

Dependiendo de la distribución de Linux que utilice, se puede instalar como se muestra a continuación.

En sistemas basados ​​en Arch:

$ sudo pacman -S tcp_wrappers

En sistemas basados ​​en YUM:

$ sudo yum install tcp_wrappers

En sistemas basados ​​en APT:

$ sudo apt-get install tcp_wrappers

En sistemas SUSE/openSUSE:

$ sudo zypper in tcp_wrappers

Restringir el acceso a servidores Linux usando contenedores TCP

Configuración

TCP Wrappers implementa el control de acceso con la ayuda de dos archivos de configuración:/etc/hosts.allow y /etc/hosts.deny . Estos dos archivos de lista de control de acceso deciden si los clientes específicos pueden o no acceder a su servidor Linux.

El archivo /etc/hosts.allow

Este archivo contiene la lista de hosts o redes permitidos o no permitidos. Significa que podemos permitir o denegar conexiones a servicios de red definiendo reglas de acceso en este archivo.

El archivo /etc/hosts.deny

Este archivo contiene la lista de hosts o redes que no pueden acceder a su servidor Linux. Las reglas de acceso en este archivo también se pueden configurar en /etc/hosts.allow con 'deny' opción.

La sintaxis típica para definir una regla de acceso es:

daemon_list : client_list : option : option ...

donde,

  • lista_demonios - El nombre de un servicio de red como SSH, FTP, Portmap, etc.
  • lista_de_clientes - La lista separada por comas de nombres de host válidos, direcciones IP o direcciones de red.
  • opciones - Una acción opcional que especifica algo que se debe hacer siempre que se cumpla una regla.

La sintaxis es la misma para ambos archivos.

Reglas para recordar

Antes de usar TCP Wrappers, debe conocer las siguientes reglas importantes. Tenga en cuenta que TCP Wrapper solo consulta estos dos archivos (hosts.allow y hosts.deny).

  • Las reglas de acceso en el archivo /etc/hosts.allow se aplican primero. Tienen prioridad sobre las reglas del archivo /etc/hosts.deny. Por lo tanto, si se permite el acceso a un servicio en /etc/hosts.allow archivo y una regla que deniega el acceso a ese mismo servicio en /etc/hosts.deny se ignora.
  • Solo se permite una regla por servicio en ambos archivos (hosts.allow y hosts.deny).
  • El orden de las reglas es muy importante. Solo se tendrá en cuenta la primera regla coincidente para un servicio dado. Lo mismo se aplica a ambos archivos.
  • Si no hay reglas coincidentes para un servicio en ninguno de los archivos o si ninguno de los archivos existe, se otorgará acceso al servicio a todos los hosts remotos.
  • Cualquier cambio en cualquiera de los archivos tendrá efecto inmediatamente sin reiniciar los servicios de red.

El enfoque recomendado para asegurar su servidor

En general, la mejor práctica para proteger un servidor Linux es bloquear todas las conexiones entrantes y permitir solo algunos hosts o redes específicos. Para hacerlo, edite /etc/hosts.deny archivo:

$ sudo vi /etc/hosts.deny

Agregue la siguiente línea. Esta línea rechaza conexiones a TODOS los servicios y TODAS las redes.

ALL: ALL

Luego, edite /etc/hosts.allow archivo:

$ sudo vi /etc/hosts.allow

y permita los hosts o redes específicos de su elección.

sshd: 192.168.43.192 192.168.43.193

Además, puede especificar nombres de host válidos en lugar de direcciones IP como se muestra a continuación.

sshd: server1.ostechnix.lan server2.ostechnx.lan

Alternativamente, puede hacer lo mismo definiendo todas las reglas (tanto permitir como denegar) en el mismo archivo /etc/hosts.allow.

Edite /etc/hosts.allow archivo y agregue las siguientes líneas.

sshd: 192.168.43.192 192.168.43.193
sshd: ALL: DENY

No necesita especificar ninguna regla en /etc/hosts.deny archivo.

Según la regla anterior, se denegarán todas las conexiones entrantes para todos los hosts excepto los dos hosts 192.168.43.192, 192.168.43.193.

Ahora, intente conectar SSH a su servidor Linux desde cualquier host, excepto los hosts anteriores, obtendrá el siguiente error.

ssh_exchange_identification: read: Connection reset by peer

Puede verificar esto desde los archivos de registro de su servidor Linux como se muestra a continuación.

$ cat /var/log/secure

Salida de muestra:

Jun 16 19:40:17 server sshd[15782]: refused connect from 192.168.43.150 (192.168.43.150)

De manera similar, puede definir reglas para otros servicios, digamos, por ejemplo, vsftpd, en /etc/hosts.allow archivo como se muestra a continuación.

vsftpd: 192.168.43.192 
vsftpd: ALL: DENY

Nuevamente, no necesita definir ninguna regla en /etc/hosts.deny expediente. Según la regla anterior, un host remoto con la dirección IP 192.168.43.192 puede acceder al servidor Linux a través de FTP. Todos los demás hosts serán denegados.

Además, puede definir las reglas de acceso en diferentes formatos en el archivo /etc/hosts.allow como se muestra a continuación.

sshd: 192.168.43.192				#Allow a single host for SSH service
sshd: 192.168.43.0/255.255.255.0		#Allow a /24 prefix for SSH
vsftpd: 192.168.43.192				#Allow a single host for FTP
vsftpd: 192.168.43.0/255.255.255.0	        #Allow a /24 prefix for FTP
vsftpd: server1.ostechnix.lan                   #Allow a single host for FTP

Permitir todos los hosts excepto un host específico

Puede permitir conexiones entrantes desde todos los hosts, pero no desde un host específico. Digamos, por ejemplo, para permitir conexiones entrantes desde todos los hosts en el 192.168.43 subred, pero no del host 192.168.43.192 , agregue la siguiente línea en /etc/hosts.allow archivo.

ALL: 192.168.43. EXCEPT 192.168.43.192

En el caso anterior, no necesita agregar ninguna regla en el archivo /etc/hosts.deny.

O puede especificar el nombre de host en lugar de la dirección IP como se muestra a continuación.

ALL: .ostechnix.lan EXCEPT badhost.ostechnix.lan

Para obtener más detalles, consulte las páginas man.

$ man tcpd

Lea también: 

  • Permitir o denegar el acceso SSH a un usuario o grupo en particular en Linux
  • Limite el número de inicios de sesión SSH por usuario/grupo/sistema

Nuevamente, no olvidemos que TCP Wrapper no reemplaza a un firewall. Debe usarse junto con firewalls y otras herramientas de seguridad.


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Linux:¿cómo restringir el acceso a Internet para un usuario en particular en la LAN usando Iptables en Linux?

  3. Opciones de comando TCP Wrapper (hosts.allow y hosts.deny) en Linux

  4. ¿Por qué se requieren < o > para usar /dev/tcp?

  5. Diferencia entre /etc/hosts y /etc/resolv.conf

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

Uso de Ajenti en la gestión de servidores Linux

Formato de /etc/hosts en Linux (¿diferente de Windows?)

¿Cuál es la conexión entre los directorios /etc/init.d y /etc/rcX.d en Linux?

En mi archivo /etc/hosts/ en Linux/OSX, ¿cómo hago un subdominio comodín?

Utilidad de línea de comandos de Linux para resolver nombres de host usando /etc/hosts primero