Я хочу использовать SSH Tunneling на своих локальных машинах, чтобы обойти государственные ограничения. Я говорю о создании прокси-сервера socks с использованием ssh-соединения.
ssh -f -N -D 1080 admin@server1.example.com
Это прекрасно работает прямо сейчас. Но я хочу передать это немногим другим людям (друзьям и членам семьи). Дело в том, что сейчас я использую администратора для этого. Я подумал, что мне, вероятно, следует просто создать пользователя без прав администратора / гостя для каждого человека.
Я немного волнуюсь, если они решат ssh нормально и запутаться в сервере, или если они потеряют учетные данные для входа или это попадет в руки хакера.
Вот и я хочу сделать еще один шаг вперед и ограничить их до такой степени, что они буквально не могут ничего сделать или нанести вред, но с достаточной функциональностью для запуска туннелирования ssh.
Так что же мне делать после adduser <username>
?
После некоторого рытья и большой подсказки от Alex я нашел рабочее решение.
Только необходимо добавить 2 параметра при создании нового пользователя.
sudo adduser limiteduser --shell=/bin/false --no-create-home
--no-create-home
пропустит создание корневого каталога для пользователя, и --shell=/bin/false
удостоверится, что пользователь никогда не будет получать доступ оболочки, неважно, если они попытаются войти в систему локально или соединить удаленно использование ssh.
Если Вы параноики как я, можно также ограничить их в /etc/ssh/sshd_config
как так:
Match user limiteduser
ForceCommand /bin/false
Примечание: Не пытайтесь chroot
их, Это не работает. По крайней мере, не для меня. Когда я судил к chroot их, я получил эту ошибку: channel 2: open failed: connect failed: Device or resource busy
. Возможно, я не устанавливал свою chroot среду правильно, но я думаю, что chroot слишком изолируется, чтобы туннелирование работало.
Так или иначе самая важная часть является туннелированием ssh, которое хорошо работает с помощью методов выше.
ssh -N -D 1080 limiteduser@123.123.123.123
Это соединяется успешно и устанавливает туннель между Вами и Вашим сервером, который можно использовать для маршрутизации трафика в порте 1080. И это даже не требует доступа оболочки. В случае, если limiteduser обычно решает к ssh, они получают ошибку, и соединение SSH сразу закрывается.