Как заблокировать доступ по ssh для пользователей с pam?

CentOS не предназначен для обновления между основными выпусками, и AWS предложит вам уничтожить экземпляр и запустить новый с помощью CentOS 7 AMI.

1
23.08.2017, 06:31
1 ответ

Использование access.confдля предотвращения входа по ssh и только по ssh не работает. Однако это можно сделать, используя pam_accessс другим конфигурационным файлом.

Во-первых, PAM должен быть настроен для использования доступа pam _. Может быть не по умолчанию. Должна быть строка с account required pam_access.soв конфигурации PAM sshd, скорее всего, через файл конфигурации password-auth, который, скорее всего, будет включен в конфигурацию sshd.

В Fedora можно использовать authselect, чтобы разрешить конфигурации PAM использовать доступ pam _:

sudo authselect enable-feature with-pamaccess

В этот момент можно подумать, что доступ можно предотвратить с помощью строки в access.conf, такой как:

-:username:sshd

Это не работает, чтобы предотвратить имя пользователя от доступа при использовании службы sshd. Причина в этом бите из справочной страницы pam _access :

.

... or PAM service names in case of non-networked logins.

Поскольку ssh является сетевым логином (Поле PAM RHOSTопределено ), имя службы не используется. Используются только имя удаленного хоста, IP-адрес, сетевая группа и т. д.

Эта справочная страница не совсем точна, так как имя службы PAM используется только в том случае, если логин не -сетевой и не -tty . Локальные логины, например. в приглашении входа в консоль, приветствии на рабочем столе или запущенном sudo будет использоваться связанный дисплей tty или X, а не имя службы.

По сути, имя службы используется только для фонового входа в систему, например, с помощью atd или crond. Таким образом, вы не можете заблокировать только ssh таким образом, поскольку в access.conf нет способа отфильтровать ssh по сравнению с чем-либо еще.

TL;DR

Можно ограничить все удаленные входы в систему, не только через ssh, но и во все другие сервисы, через:

+:username:LOCAL
-:username:ALL

Чтобы PAM применялся только к ssh, необходимо настроить использование другого файла access.conf для sshd. Добавьте такую ​​строку в /etc/pam.d/sshd, возможно, непосредственно перед строкой, содержащейaccount include password-auth:

account    required     pam_access.so accessfile=/etc/security/access-sshd.conf

Теперь создайте /etc/security/access-sshd.confс элементами управления доступом, которые будут применяться только к входам в систему ssh. Примеры:

# Don't allow user 'username' access
-:username:ALL

# Only allow user 'trusted' access and no one else
-:ALL EXCEPT trusted:ALL

# Only allow user 'username' when they are coming from localhost
+:username:127.0.0.1 ::1
-:username:ALL

Обратите внимание, что использование localhostвместо числового адреса IPv4 и IPv6 должно работать, но не для меня.

1
05.06.2021, 19:23

Теги

Похожие вопросы