Закрытие хоста из тюрьмы

Я создал тюрьму с ssh использование Finch-Freebsd на NAS4FREE и добавил локальное не суперпользователь для доступа к тюрьме через ssh.

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

Как я могу дать упомянутому пользователю ограниченные права команды оболочки инициировать команду завершения работы?

До сих пор в попытке инициировать a sh /etc/rc.shutdown

Я получаю следующий вывод

оценка: не может открыть/var/run/cron.pid: Разрешение отрицало Останавливаться, sshd. уничтожают: 12060: Операция, не разрешенная Остановку lighttpd., уничтожает: 12001: Операция, не разрешенная оценку: не может открыть/var/db/mysql/RemandYard.pid: Разрешение отклонило pututxline: Разрешение, отклоненное Завершенным

1
задан 30 August 2015 в 20:59
2 ответа

Как сказал Кассандри, вы не можете сделать это с помощью команды внутри самой тюрьмы.

Однако вы могли бы создать отдельного пользователя (которым я буду впредь вызовите ближе в хост-системе. Этот пользователь должен быть заблокирован, чтобы он мог входить в систему только с помощью ключа SSH.

Заключенный в тюрьму пользователь должен иметь закрытый ключ и пароль для ключа.

На стороне хоста вы предоставляете учетной записи sudo close разрешения:

closer   localhost=NOPASSWD:/usr/sbin/shutdown

На стороне хоста поместите открытую часть ключа SSH в /home/closer/.ssh/authorized_keys . Отредактируйте ключ так, чтобы он начинался с

command="sudo /usr/sbin/shutdown",from="1.2.3.4" 

, а затем следовал фактический ключ, все в той же строке. (Конечно, исправьте IP-адрес, чтобы он соответствовал тюрьме.) Сделайте authorized_key и каталог, недоступный для записи для пользователя.

Когда пользователь в заключенной в тюрьму системе теперь использует этот ключ для подключения к хосту по SSH, он немедленно запускает завершение работы. Пользователь не сможет этого сделать. что-нибудь еще с ключом - каждый раз, когда они используют его для входа в систему, он просто запускает команду. Ключ можно использовать только из этой тюрьмы, поэтому вы не рискуете предоставить всему миру доступ для выключения вашего сервера, если они каким-то образом получат ключ в свои руки.

5
ответ дан 3 December 2019 в 16:25

Джейлы специально запрещают команды выключения согласно странице руководства здесь .

Обычные команды выключения машины, такие как halt (8), reboot (8) и shutdown (8), не могут быть успешно использованы в тюрьме.

Дополнительно цитируется из Дизайн и реализация FreeBSD Операционная система ,

Процессам, запущенным в тюрьме, не разрешается выполнять операции, которые позволит им увидеть или повлиять на все, что происходит за пределами их тюрьмы. Это ограничение в значительной степени реализовано путем маскировки набора именованных системных привилегий. доступны для корневых процессов, запущенных в тюрьме. К ограниченным привилегиям относятся:

  • получение информации о процессах за пределами тюрьмы,
  • изменение переменных ядра,
  • подключение или отключение файловых систем,
  • изменение физических сетевых интерфейсов или конфигураций; и
  • перезагрузка системы.

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

3
ответ дан 3 December 2019 в 16:25

Теги

Похожие вопросы