Мы хотим ограничить root
SSH-вход только в несколько сетей, которые мы считаем "безопасными" (VPN и т. Д.), Без наложения таких же условий на другие учетные записи.
В OpenSSH 5.x мы могли использовать match
блок. Однако это не вариант в OpenSSH 4.x, которым мы ограничены в RHEL5.
Я подумал, возможно, это можно сделать с помощью PAM. У кого-нибудь есть идеи?
Найдя это Статья Cyberciti.biz, Я начал изучать pam_access
. Это решение, на котором я остановился:
Сначала я создал файл доступа в /etc/security/sshd.conf
. Я решил сделать это вместо использования по умолчанию /etc/security/access.conf
потому что мне нужен файл доступа, посвященный sshd
. Файл выглядит так:
# cat /etc/security/sshd.conf
+:root:192.168.0.0/8
-:root:ALL
Проверять, выписываться man access.conf
для получения дополнительной информации о синтаксисе.
Затем я добавил следующую строку поверх стека PAM в /etc/pam.d/sshd
:
auth required pam_access.so accessfile=/etc/security/sshd.conf
Причина, по которой я использовал auth
вместо того account
как это сделано в статье Cyberciti.biz, потому что использование account
тип разрешил пользователям проверять пароль и затем быть отвергнутым. Я предпочитаю не проверять пароль. Проверять, выписываться man pam.conf
Чтобы получить больше информации.
Это сработало отлично.
Нет опыта работы с RHEL и друзьями, но я, вероятно, сначала попробую использовать tcpwrappers - я имею в виду /etc/hosts.allow
и /etc/hosts.deny
файлы:
---8<--- hosts.deny ---8<---
ALL: ALL
и
---8<--- hosts.allow ---8<---
ALL: localhost, 10.y.z.
Обратите внимание на подразумеваемый / 24; Не уверен в синтаксисе CIDR-блоков. Если тебе это нужно, я найду его. Постарайтесь не заблокировать себя, используя эти уловки.
PS: Вы думали о спуфинге ARP, верно?
Да, pam_access сделает это. Другие возможности включают обертки tcp (их поддерживает RHEL5 sshd) и iptables.