Как мы разрешаем определенному набору частных IP-адресов входить через Linux SSH (пара ключей RSA) в Linux Server?
/etc/ssh/sshd_config
Как мы разрешаем определенному набору частных IP-адресов входить через Linux SSH (пара ключей RSA) в Linux Server?
/etc/ssh/sshd_config
Ответы:
Вы можете ограничить количество подключаемых хостов, настроив оболочки TCP или отфильтровав сетевой трафик (межсетевой экран) с помощью iptables . Если вы хотите использовать разные методы аутентификации в зависимости от IP-адреса клиента, настройте демон SSH (вариант 3).
Правила Iptables оцениваются по порядку, до первого совпадения.
Например, чтобы разрешить трафик из сети 192.168.0.0/24 и в противном случае отбросить трафик (на порт 22). DROP
Правила не требуется , если ваша политика Iptables по умолчанию настроена на 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
Вы можете добавить больше правил перед правилом удаления, чтобы соответствовать большему количеству сетей / хостов. Если у вас много сетей или адресов хостов, вы должны использовать модуль ipset . Также есть модуль iprange, который позволяет использовать любой произвольный диапазон IP-адресов.
Iptables не сохраняется при перезагрузке. Вам нужно настроить механизм восстановления iptables при загрузке.
iptables
применять только к трафику IPv4. Системы, в которых ssh прослушивает IPv6-адрес, могут быть выполнены с необходимой конфигурацией ip6tables
.
Вы также можете настроить, какие хосты могут подключаться, используя TCP-оболочки. С оболочками TCP, помимо IP-адресов, вы также можете использовать имена хостов в правилах.
По умолчанию запрещены все хосты.
/etc/hosts.deny
:
sshd : ALL
Затем список разрешенных хостов в hosts.allow. Например, чтобы разрешить сеть 192.168.0.0/24 и localhost .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
Вы можете настроить демон ssh в sshd_config для использования другого метода аутентификации в зависимости от адреса клиента / имени хоста. Если вы хотите заблокировать подключение только других хостов, вам следует использовать оболочки iptables или TCP.
Сначала удалите методы аутентификации по умолчанию:
PasswordAuthentication no
PubkeyAuthentication no
Затем добавьте нужные методы аутентификации после a Match Address
в конце файла. Размещение Match
в конце файла важно, так как все строки конфигурации после него помещаются в условный блок до следующей Match
строки. Например:
Match Address 127.0.0.*
PubkeyAuthentication yes
Другие клиенты по-прежнему могут подключаться, но вход в систему не удастся, потому что нет доступных методов проверки подлинности.
Аргументы соответствия и допустимые параметры условной конфигурации описаны в справочной странице sshd_config . Шаблоны соответствия описаны в справочной странице ssh_config .
#ListenAddress ::
в /etc/ssh/sshd_config
сообщит серверу SSH принять входящий любой из этих сетей. В противном случае сделайте, ListenAddress <ip address>
где <ip address>
находится тот из портов NIC, который вы хотите разрешить. Таким образом, my eth0
is приводит к тому, что SSH работает только в сети 192.168.3.4, которая находится на eth0; и eth1 eth2 eth3 отказано. 192.168.3.4
ListenAddress 192.168.3.4
Вот некоторые дополнительные настройки для демона SSH для расширения предыдущего ответа:
Добавьте пользовательскую фильтрацию с AllowUsers
опцией в sshd_config
файле:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Это позволяет johndoe и admin2 только с 192.168.1.*
адресов и otherid1 , otherid2 из любого места.
Ограничьте ключ ssh или ключ на основе ca набором адресов в .ssh/authorized_keys
файле домашнего каталога данного пользователя:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
В этом примере открытый ключ для useralias будет действовать только с заданных адресов.