Ограничить вход по ssh для конкретного пользователя на основе IP-адреса
Как я могу ограничить ssh
вход для определенного пользователя только с одного IP-адреса?
У меня есть пользователь с именем foo
на сервере, например, с IP-адресом 127.0.0.5
(мой первый сервер), и я оставил его логин ssh
только с помощью открытого ключа. Я хочу предоставить этому пользователю доступ только с определенного IP (это мой другой сервер), например IP 127.0.0.6
.
Как это возможно?
Ответы
Вы можете изменить конфигурацию sshd в /etc/ssh/sshd_config
:
AllowUsers [email protected] [email protected] ....
Вы также можете указать, что какой-либо пользователь может использовать только некоторые методы аутентификации:
Match User my_login
AuthenticationMethods publickey
Но будьте осторожны с обоими пунктами: вы должны иметь физический контроль или быть очень осторожными, прежде чем изменять какие-либо настройки. И я рекомендую вам также просмотреть страницу руководства для вариантов AllowUsers
ответа AuthenticationMethods
, чтобы лучше понять последствия и, в конечном итоге, дополнительные параметры и методы, которые вам нужны.
Вы можете настроить брандмауэр и разрешить подключаться к порту 22 только определенному IP-адресу:
/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;
}
}