Ограничить вход по ssh для конкретного пользователя на основе IP-адреса

Aug 20 2020

Как я могу ограничить sshвход для определенного пользователя только с одного IP-адреса?

У меня есть пользователь с именем fooна сервере, например, с IP-адресом 127.0.0.5(мой первый сервер), и я оставил его логин sshтолько с помощью открытого ключа. Я хочу предоставить этому пользователю доступ только с определенного IP (это мой другой сервер), например IP 127.0.0.6.

Как это возможно?

Ответы

2 GiacomoCatenazzi Aug 20 2020 at 20:50

Вы можете изменить конфигурацию sshd в /etc/ssh/sshd_config:

AllowUsers [email protected] [email protected] ....

Вы также можете указать, что какой-либо пользователь может использовать только некоторые методы аутентификации:

Match User my_login
AuthenticationMethods publickey

Но будьте осторожны с обоими пунктами: вы должны иметь физический контроль или быть очень осторожными, прежде чем изменять какие-либо настройки. И я рекомендую вам также просмотреть страницу руководства для вариантов AllowUsersответа AuthenticationMethods, чтобы лучше понять последствия и, в конечном итоге, дополнительные параметры и методы, которые вам нужны.

dirdi Aug 20 2020 at 20:27

Вы можете настроить брандмауэр и разрешить подключаться к порту 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;
    }
}