Як ми дозволяємо певному набору приватних IP-адрес входити через вхід SSH (пара ключів RSA) в Linux Server?
/etc/ssh/sshd_config
Як ми дозволяємо певному набору приватних IP-адрес входити через вхід 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 daemon в sshd_config для використання різних методів аутентифікації залежно від адреси клієнта / імені хоста. Якщо ви хочете лише заблокувати підключення інших хостів, натомість слід використовувати iptables або TCP обгортки.
Спочатку видаліть методи аутентифікації за замовчуванням:
PasswordAuthentication no
PubkeyAuthentication no
Потім додайте потрібні методи аутентифікації після 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, який ви хочете дозволити. Мій eth0
є 192.168.3.4
тому ListenAddress 192.168.3.4
призводить до SSH тільки працюють в мережі 192.168.3.4 , яка знаходиться на eth0; і eth1 eth2 eth3 заперечується.
Ось додаткова конфігурація демона SSH для розширення попередньої відповіді:
Додати фільтрацію користувача за допомогою AllowUsers
параметра у sshd_config
файлі:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Це дозволяє johndoe та admin2 лише з 192.168.1.*
адрес та otherid1 , otherid2 з будь-якого місця.
Обмежте ключ ssh або ключ на основі набору адрес у .ssh/authorized_keys
файлі домашнього каталогу певного користувача:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
У цьому прикладі відкритий ключ для useralias буде ефективним лише з вказаних адрес.