¿Cómo permitimos que cierto conjunto de IP privadas ingrese a través del inicio de sesión SSH (par de claves RSA) en el servidor Linux?
/etc/ssh/sshd_config
¿Cómo permitimos que cierto conjunto de IP privadas ingrese a través del inicio de sesión SSH (par de claves RSA) en el servidor Linux?
/etc/ssh/sshd_config
Respuestas:
Puede limitar qué hosts pueden conectarse configurando contenedores TCP o filtrando el tráfico de red (firewall) 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).
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, soltar el tráfico (al puerto 22). La DROP
regla no es necesaria si su política predeterminada de iptables está configurada para 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 caída para que coincida con más redes / hosts. Si tiene muchas redes o direcciones de host, debe usar el módulo ipset . También hay un módulo iprange que permite usar cualquier rango arbitrario de direcciones IP.
Iptables no son persistentes en todos los reinicios. Necesita configurar algún mecanismo para restaurar iptables en el arranque.
iptables
se aplica solo al tráfico IPv4. Los sistemas que tienen ssh escuchando direcciones IPv6 pueden hacer la configuración necesaria ip6tables
.
También puede configurar qué hosts pueden conectarse mediante contenedores TCP. Con los 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]
Puede configurar ssh daemon 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 envoltorios 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. Colocar Match
al final del archivo es importante, ya que todas las líneas de configuración posteriores se colocan dentro del bloque condicional hasta la 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 del comando man sshd_config . Los patrones de coincidencia se documentan en la página de manual ssh_config .
#ListenAddress ::
en /etc/ssh/sshd_config
le dirá al servidor SSH para aceptar entrante de cualquiera de esas redes. De lo contrario, haga ListenAddress <ip address>
dónde <ip address>
está el de esos puertos NIC que desea permitir. Por eth0
lo 192.168.3.4
tanto, mi ListenAddress 192.168.3.4
resultado es que SSH solo funciona en la red 192.168.3.4 que está en eth0; y eth1 eth2 eth3 es denegado.
Aquí alguna configuración adicional para el demonio SSH para ampliar la respuesta anterior:
Agregar usuario filtrando con AllowUsers
opción en el sshd_config
archivo:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Esto permite johndoe y admin2 solo desde 192.168.1.*
direcciones y otherid1 , otherid2 desde cualquier lugar.
Restrinja una clave ssh o una clave basada en ca a un conjunto de direcciones en .ssh/authorized_keys
archivo del directorio de inicio de un usuario dado:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
En este ejemplo, la clave pública para useralias será efectiva solo desde direcciones dadas.