Мені подобається наступна установка для управління доступом до 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
.