Ограничение доступа по SSH для пользователей на сервере Dante

На сервере с Dante (SOCKS) часто заводят отдельных системных пользователей под прокси. Им нужен аккаунт для аутентификации Dante, но не нужен интерактивный shell по SSH. Ниже — как создать такого пользователя, отрезать login shell и при необходимости явно запретить SSH через sshd_config на Ubuntu.

Зачем ограничивать SSH

SSH — вход в систему. Если у proxy-пользователя есть валидный shell и пароль/ключ, его можно использовать не только для SOCKS, но и для шелла на хосте. Ограничение доступа уменьшает поверхность атаки:

  • меньше учёток, с которых возможен интерактивный вход;
  • прокси-аккаунты не становятся «запасным» root-путём при утечке пароля;
  • проще аудит: админские учётки отдельно, служебные — отдельно.

1. Создание пользователя

Создайте системного пользователя, которому будет разрешена работа с Dante (имя подставьте своё):

sudo adduser имя_пользователя

Задайте пароль, если Dante аутентифицирует по системным учёткам (pam/passwd — зависит от вашей конфигурации sockd.conf). Для чисто proxy-роли домашний каталог и shell можно упростить дальше.

2. Оболочка /bin/false (или nologin)

Чтобы пользователь не получал интерактивный shell при попытке SSH/login, смените login shell:

sudo usermod -s /bin/false имя_пользователя

Альтернатива на многих дистрибутивах: /usr/sbin/nologin — при попытке входа обычно печатается сообщение и сессия закрывается. Оба варианта отсекают нормальный shell; выберите то, что принято в вашей политике.

Проверка:

grep имя_пользователя /etc/passwd

Ожидаемый вид (UID/GID и home могут отличаться):

имя_пользователя:x:1001:1001::/home/имя_пользователя:/bin/false

3. Явный запрет в sshd_config

Смена shell — хорошая база, но SSH можно дополнительно зафиксировать политикой. Откройте конфиг:

sudo nano /etc/ssh/sshd_config

Добавьте (или дополните) директиву:

DenyUsers имя_пользователя

Можно перечислить несколько имён через пробел. Есть и обратный подход: AllowUsers / AllowGroups — пускать только админов, всех остальных резать по умолчанию. Для хоста, где много proxy-учёток, whitelist часто удобнее, чем длинный DenyUsers.

Важно: после правок проверьте синтаксис, чтобы не отрезать себе доступ:

sudo sshd -t

4. Перезапуск SSH

На Ubuntu/Debian сервис обычно называется ssh (unit ssh.service); на части систем встречается sshd. Примените то, что есть у вас:

sudo systemctl restart ssh
# или, если unit называется иначе:
sudo systemctl restart sshd

Не закрывайте текущую админскую сессию, пока не убедитесь, что новый логин под вашим админ-пользователем проходит. Иначе при ошибке в AllowUsers/DenyUsers можно потерять вход.

Что ещё имеет смысл

  • Ключи вместо паролей для админов, PasswordAuthentication no после проверки ключей;
  • fail2ban или аналог на sshd — против перебора;
  • отдельная группа для proxy-пользователей и единые правила в Dante + sshd;
  • в sockd.conf явно описать, кто и откуда может ходить в SOCKS, не полагаясь только на «есть unix-user».

Кратко

Для пользователей Dante на Ubuntu: создать учётки → shell /bin/false (или nologin) → при необходимости DenyUsers / whitelist в sshd_configsshd -t и restart ssh. Так proxy-аккаунты остаются для SOCKS, а интерактивный SSH остаётся у администраторов.

Источники и ссылки


Комментарии загружаются…