Limite el inicio de sesión ssh para un usuario específico según la dirección IP
¿Cómo puedo limitar el ssh
inicio de sesión para que un usuario específico pueda acceder desde una sola dirección IP?
Tengo un usuario nombrado foo
en el servidor con, por ejemplo, una dirección IP 127.0.0.5
(mi primer servidor) y dejé su inicio de sesión a través de ssh
solo una clave pública. Solo quiero otorgar acceso de inicio de sesión a este usuario desde una IP específica (que es mi otro servidor), por ejemplo, IP 127.0.0.6
.
¿Como es posible?
Respuestas
Puede cambiar la configuración de sshd, en /etc/ssh/sshd_config
:
AllowUsers [email protected] [email protected] ....
También puede seleccionar que algunos usuarios solo puedan usar algunos métodos de autenticación:
Match User my_login
AuthenticationMethods publickey
Pero con cuidado en ambos puntos: debe tener control físico o ser muy cuidadoso antes de cambiar cualquier configuración. Y le recomiendo que también busque en la página del manual las opciones de AllowUsers
ans AuthenticationMethods
, para comprender mejor las implicaciones y, eventualmente, las opciones y métodos adicionales que necesita.
Puede configurar un firewall y permitir que solo una determinada IP se conecte al puerto 22:
/etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet firewall {
chain inbound {
# By default, drop all traffic unless it meets a filter
# criteria specified by the rules that follow below.
type filter hook input priority 0; policy drop;
# Allow traffic from established and related packets.
ct state established,related accept
# Drop invalid packets.
ct state invalid drop
# Allow loopback traffic.
iifname lo accept
# Allow all ICMP and IGMP traffic, but enforce a rate limit
# to help prevent some types of flood attacks.
ip protocol icmp limit rate 4/second accept
ip6 nexthdr ipv6-icmp limit rate 4/second accept
ip protocol igmp limit rate 4/second accept
# Allow SSH on port 22 but only from 127.0.0.6
ip saddr 127.0.0.6 tcp dport 22 accept
}
chain forward {
# Drop everything (assumes this device is not a router)
type filter hook forward priority 0; policy drop;
}
chain outbound {
# Allow all outbound traffic
type filter hook output priority 0; policy accept;
}
}