Мне нравится следующая настройка для управления доступом по 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.