GNU/Linux >> Tutoriales Linux >  >> Linux

Limite el acceso SSH a clientes específicos por dirección IP

Puede limitar qué hosts pueden conectarse configurando contenedores TCP o filtrando el tráfico de red (cortafuegos) usando iptables. Si desea utilizar diferentes métodos de autenticación según la dirección IP del cliente, configure el demonio SSH en su lugar (opción 3).

Opción 1:Filtrado con IPTABLES

Las reglas de iptables se evalúan en orden, hasta la primera coincidencia.

Por ejemplo, para permitir el tráfico de la red 192.168.0.0/24 y, de lo contrario, descartar el tráfico (al puerto 22). El DROP la regla no es necesaria si su política predeterminada de iptables está configurada en DROP .

iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Puede agregar más reglas antes de la regla de eliminación para que coincidan con más redes/hosts. Si tiene muchas redes o direcciones de host, debe usar ipset módulo. También hay iprange módulo que permite utilizar cualquier rango arbitrario de direcciones IP.

Las iptables no son persistentes en los reinicios. Debe configurar algún mecanismo para restaurar iptables en el arranque.

iptables se aplican solo al tráfico IPv4. Los sistemas que tienen ssh escuchando la dirección IPv6, la configuración necesaria se puede hacer con ip6tables .

Opción 2:usar envoltorios TCP

Nota:esta podría no ser una opción en las distribuciones modernas, ya que la compatibilidad con tcpwrappers se eliminó de OpenSSH 6.7

También puede configurar qué hosts pueden conectarse mediante contenedores TCP. Con contenedores TCP, además de las direcciones IP, también puede usar nombres de host en las reglas.

Por defecto, denegar todos los hosts.

/etc/hosts.deny :

sshd : ALL

Luego enumere los hosts permitidos en hosts.allow. Por ejemplo, para permitir la red 192.168.0.0/24 y localhost .

/etc/hosts.allow :

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

Opción 3:configuración del demonio SSH

Puede configurar el demonio ssh en sshd_config para usar un método de autenticación diferente según la dirección del cliente/nombre de host. Si solo desea bloquear la conexión de otros hosts, debe usar iptables o contenedores TCP en su lugar.

Primero elimine los métodos de autenticación predeterminados:

PasswordAuthentication no
PubkeyAuthentication no

Luego agregue los métodos de autenticación deseados después de un Match Address al final del archivo. Colocando Match al final del archivo es importante, ya que todas las líneas de configuración posteriores se colocan dentro del bloque condicional hasta el siguiente Match línea. Por ejemplo:

Match Address 127.0.0.*
    PubkeyAuthentication yes

Otros clientes aún pueden conectarse, pero los inicios de sesión fallarán porque no hay métodos de autenticación disponibles.

Los argumentos de coincidencia y las opciones de configuración condicional permitidas se documentan en la página de manual de sshd_config. Los patrones de coincidencia se documentan en la página de manual de ssh_config.


Aquí alguna configuración adicional para el demonio SSH para ampliar la respuesta anterior:

  • Añadir filtrado de usuarios con AllowUsers opción en sshd_config archivo:

    AllowUsers [email protected]* [email protected]* otherid1 otherid2
    

    Esto permite que johndoe y admin2 solo desde 192.168.1.* direcciones y otherid1 , otroid2 desde cualquier lugar.

  • Restrinja una clave ssh o clave basada en ca a un conjunto de direcciones en .ssh/authorized_keys archivo del directorio de inicio de un usuario determinado:

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    En este ejemplo, la clave pública para el alias de usuario será efectiva solo desde las direcciones dadas.


Linux
  1. ¿Cómo SSH en un directorio específico?

  2. ¿Permitir acceso Ssh remoto?

  3. Restrinja el inicio de sesión SSH a una IP o host específico

  4. ¿Debo limitar la velocidad de los paquetes con iptables?

  5. Acceso solo a tunelización ssh

¿Cómo podemos limitar el acceso SSH con UFW en Linux Mint 20?

Cómo deshabilitar el inicio de sesión SSH para un usuario específico en Linux

Ejecutando dos servidores SSH

Cómo usar iptables o tc para limitar paquetes por cliente.

Túnel vpn de acceso remoto SSH

¿Cómo hacer que caduquen las reglas de iptables?