Мне нравится следующая настройка для управления доступом по SSH, которую я использую на работе для управления группой пользователей на небольшом парке серверов. Безопасность и простота управления занимает первое место в списке моих приоритетов.
Его основными функциями являются простое управление правами SSH через членство в группах Unix, строго определенные разрешения и безопасность по умолчанию.
Настройка
Установите программное обеспечение (необязательно, но полезно):
yum install members # or apt install members
Добавить группы:
addgroup --system allowssh
addgroup --system sftponly
В /etc/ssh/sshd_config
, убедитесь, что следующие настройки No
:
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
И в конце /etc/ssh/sshd_config
добавьте эти две строфы:
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(не забудьте перезапустить SSH после редактирования файла)
объяснение
Итак, что же все это делает?
- Это всегда отключает root-логины, в качестве дополнительной меры безопасности.
- Он всегда отключает логины на основе паролей (слабые пароли представляют большой риск для серверов, работающих под управлением sshd).
- Это позволяет (pubkey) вход в систему только для пользователей в
allowssh
группе.
- Пользователи в
sftponly
группе не могут получить оболочку через SSH, только SFTP.
Управление тем, у кого есть доступ, просто выполняется путем управления членством в группе (эти изменения вступают в силу немедленно, перезапуск SSH не требуется):
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
Обратите внимание, что ваши пользователи sftp должны быть членами как sftponly
(чтобы гарантировать, что они не получат оболочку), так и из allowssh
(чтобы разрешить вход в систему в первую очередь).
Дальнейшая информация
Обратите внимание, что эта конфигурация не позволяет входить по паролю ; все учетные записи должны использовать аутентификацию с открытым ключом. Это, вероятно, самая большая победа в области безопасности, которую вы можете получить с помощью SSH, поэтому я считаю, что это стоит усилий, даже если вы должны начать сейчас.
Если вы действительно этого не хотите, то добавьте PasswordAuthentication yes
в Match Group allowssh
строфу. Это позволит пользователям использовать как pubkey, так и пароль allowssh
.
Эта конфигурация ограничивает любого sftponly
пользователя их домашним каталогом. Если вы не хотите этого, удалите ChrootDirectory %h
директиву.
Если вы хотите, чтобы chroot работал, важно, чтобы домашний каталог пользователя (и любой каталог над ним) находился в собственности группы, root:root
а не на ее запись. Это нормально, если подкаталоги домашнего каталога принадлежат пользователю и / или доступны для записи.
Да, домашний каталог пользователя должен быть корневым и недоступным для записи пользователю. К сожалению, есть веские причины для этого ограничения. В зависимости от вашей ситуации, ChrootDirectory /home
может быть хорошей альтернативой.
Установка оболочки для sftponly
пользователей не /sbin/nologin
является ни необходимой, ни вредной для этого решения, потому что SSH ForceCommand internal-sftp
переопределяет оболочку пользователя.
Использование /sbin/nologin
может быть полезно, чтобы остановить вход в систему другими способами (физическая консоль, samba и т. Д.).
Эта настройка не разрешает прямой root
вход через SSH; это формирует дополнительный уровень безопасности. Если вы действительно действительно нужны прямые логины корня, изменить PermitRootLogin
директиву. Подумайте о том, чтобы установить его на forced-commands-only
, prohibit-password
и (в крайнем случае) yes
.
Для получения бонусных баллов обратите внимание на ограничение того, кто может su
получить root-права; добавить системную группу с именем wheel
и добавить / включить auth required pam_wheel.so
в /etc/pam.d/su
.