Назад | Перейти на главную страницу

Выключение хоста из тюрьмы

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

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

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

Пока в попытке инициировать sh /etc/rc.shutdown

Я получаю следующий результат

eval: невозможно открыть /var/run/cron.pid: В доступе отказано Остановка sshd. kill: 12060: Операция запрещена. Остановка lighttpd. kill: 12001: операция не разрешена eval: невозможно открыть /var/db/mysql/RemandYard.pid: Permission denied pututxline: Permission denied Terminated

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

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

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

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

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, он немедленно запускает завершение работы. Пользователь не сможет больше ничего делать с этим ключом - каждый раз, когда он использует его для входа в систему, он просто запускает команду. Ключ можно использовать только из этой тюрьмы, поэтому вы не рискуете предоставить всему миру доступ для выключения вашего сервера, если они каким-то образом получат ключ в свои руки.

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

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

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

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

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

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