На сервере с 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_config → sshd -t и restart ssh. Так proxy-аккаунты остаются для SOCKS, а интерактивный SSH остаётся у администраторов.


