Мені подобається наступна установка для управління доступом до 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 після редагування файлу)
Пояснення
Отже, що все це робить?
- Він завжди вимикає кореневі логіни, як додатковий захід безпеки.
- Він завжди вимикає вхід на основі паролів (слабкі паролі - це великий ризик для серверів, на яких працює 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строфи. Це дозволить користувачам як автентичного доступу, так і паролів allowssh.
Ця конфігурація обмежує будь-якого sftponlyкористувача домашнім каталогом. Якщо ви цього не хочете, видаліть ChrootDirectory %hдирективу.
Якщо ви дійсно хочете Chrooting до роботи, дуже важливо , щоб домашній каталог користувача (і будь-який каталог , над ним) належатьroot:root і не доступний для запису групи / інші. Добре, щоб підкаталоги домашнього каталогу були у власності та / або для запису.
Так, домашній каталог користувача повинен бути власником root та непридатним для користувача. На жаль, для цього обмеження є вагомі причини . В залежності від вашої ситуації, ChrootDirectory /homeможе бути хорошою альтернативою.
Налаштування оболонки sftponlyкористувачів не /sbin/nologinє необхідною та шкідливою для цього рішення, оскільки SSH ForceCommand internal-sftpпереосмислює оболонку користувача.
Використання /sbin/nologinможе бути корисним, щоб зупинити їх вхід за допомогою інших способів (фізична консоль, самба тощо).
Ця установка не дозволяє здійснювати прямі rootвходи через SSH; це формує додатковий рівень безпеки. Якщо ви дійсно дійсно потрібні прямі логіни кореня, змінити PermitRootLoginдирективу. Розгляньте його як forced-commands-only, prohibit-passwordі (як крайній варіант) yes.
Щодо бонусних балів, погляньте на обмеження того, хто може suвиконувати корінь; додати системну групу , названу wheel, і додати / включити auth required pam_wheel.soв /etc/pam.d/su.