1

У меня есть программа, которой я хочу поделиться через ssh (или даже через telnet, безопасность программы не важна), но я не хочу, чтобы соединение получало доступ к чему-либо еще в моей системе, кроме I/O этой одной программы (например, нет scp, нет полного доступа к оболочке, нет ssh-туннелей). Возможно ли это, и как мне это сделать в системе Ubuntu?

Бонусные баллы за возможность запускать это как локальный пользователь или как nobody .

3 ответа3

4

Я вижу два простых подхода:

  1. Создайте локальных пользователей, которые получают исполняемый файл вашей программы в качестве оболочки для входа.

  2. Добавьте службу xinetd, которая вызывает вашу программу (пользователь может затем подключиться к этой службе через telnet)

1

GNU Netcat, кажется, работает в некоторой степени (с -e), но может поддерживать только одного пользователя / сеанс / экземпляр, в идеале я хотел бы иметь возможность подключаться более одного раза без перезагрузки сервера.

Сокат может раскошелиться.

Я предлагаю просмотреть его примеры

socat TCP4-LISTEN:5555,fork,tcpwrap=script \ EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr

простой сервер, который принимает соединения (TCP4-LISTEN) и разветвляет новый дочерний процесс для каждого соединения; каждый ребенок действует как единое реле. Клиент должен соответствовать правилам для имени процесса-демона "script" в /etc/hosts.allow и /etc/hosts.deny, в противном случае ему будет отказано в доступе (см. "Man 5 hosts_access"). Для выполнения программы EXEC дочерний процесс обрабатывает chroot в /home /sandbox, su в пользовательскую песочницу, а затем запускает программу /home /sandbox /bin /myscript. Сокат и myscript общаются через псевдо-tty (pty); Стандер myscript перенаправляется на стандартный вывод, поэтому сообщения об ошибках передаются через socat подключенному клиенту.

0

Создайте пользователей, которые будут использовать сервер, следующим образом:

adduser -s /bin/software username

Где /bin/software - это местоположение программного обеспечения, а имя пользователя , ну, в общем, имя пользователя.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .