Encerrando o host de dentro da cadeia

1

Eu criei uma jaula com o ssh usando o Finch-Freebsd em um NAS4FREE e adicionei um não usuário super local para acessar a cadeia via ssh.

Eu quero poder conceder a este usuário acesso limitado especificamente para desligar a cadeia e iniciar um desligamento do servidor em que a cadeia reside

Como posso dar o referido direito de comando de shell limitado ao usuário para iniciar o comando de desligamento?

Até agora, ao tentar iniciar um sh /etc/rc.shutdown

Eu recebo a seguinte saída

eval: cannot open /var/run/cron.pid: Permission denied Stopping sshd. kill: 12060: Operation not permitted Stopping lighttpd. kill: 12001: Operation not permitted eval: cannot open /var/db/mysql/RemandYard.pid: Permission denied pututxline: Permission denied Terminated

    
por Kendall 30.08.2015 / 19:59

2 respostas

5

Como Kassandry disse, você não pode fazer isso com um comando dentro da própria prisão.

O que você poderia fazer, no entanto, seria criar um usuário separado (a quem chamarei daqui em diante closer no sistema host. Esse usuário deve ser bloqueado para que possa efetuar login apenas com uma chave SSH.

Seu usuário preso deve ter a chave privada e a senha da chave.

No lado do host, você concede as permissões sudo da conta closer :

closer   localhost=NOPASSWD:/usr/sbin/shutdown

No lado do host, coloque a parte pública da chave SSH em /home/closer/.ssh/authorized_keys . Edite a chave para que comece com

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

e depois segue a chave real, tudo na mesma linha. (Corrigir o endereço IP para que ele corresponda à cadeia, é claro.) Torne o arquivo authorized_key e o diretório não gravável para o usuário.

Quando o usuário no sistema encarcerado agora usa essa chave para o SSH para o host, ele imediatamente acionará um desligamento. O usuário não poderá fazer mais nada com a chave - sempre que a usar para efetuar login, simplesmente executará o comando. A chave só pode ser usada a partir desta cadeia, assim você não corre o risco de dar ao mundo inteiro o acesso ao desligamento do seu servidor, se de algum modo eles colocarem as mãos na chave.

    
por 31.08.2015 / 09:05
3

As cadeias proíbem especificamente os comandos de desligamento, de acordo com a página de manual aqui .

Normal machine shutdown commands, such as halt(8), reboot(8), and shutdown(8), cannot be used successfully within the jail.

Além disso, citando O design e a implementação do sistema operacional FreeBSD ,

Processes running within a jail are not permitted to perform operations that would allow them to see or affect anything running outside their jail. This restriction is implemented in large part by masking the set of named system privileges available to root processes running within a jail. Constrained privileges include:

  • getting information on processes outside the jail;
  • changing kernel variables;
  • mounting or unmounting filesystems;
  • modifying physical network interfaces or configurations; and
  • rebooting the system.

Então, o que você está querendo fazer não deve ser realmente possível por design em prisões. Para desligar uma cadeia e o servidor em que ela reside, você precisaria ter um usuário privilegiado real no sistema host.

    
por 31.08.2015 / 07:41