Eu configurei o .ssh / allowed_keys e sou capaz de fazer login com o novo "usuário" usando a chave pub / private ... Também adicionei "user" à lista de sudoers ... o problema que tenho agora é quando Eu tento executar um comando sudo, algo simples como:
$ sudo cd /root
ele solicitará minha senha, que eu insiro, mas não funciona (estou usando a senha da chave privada que defini)
Além disso, desabilitei a senha do usuário usando
$ passwd -l user
o que estou perdendo?
Em algum lugar minhas observações iniciais estão sendo mal compreendidas ...
Estou tentando proteger meu sistema ... o objetivo final é usar chaves públicas / privadas para fazer logins versus autenticação simples de senha. Eu descobri como configurar tudo isso através do arquivo allowed_keys.
Além disso, evitarei logins de servidor por meio da conta raiz. Mas antes de fazer isso, preciso que o sudo trabalhe para um segundo usuário (o usuário com o qual entrarei no sistema o tempo todo).
Para este segundo usuário, quero impedir logins regulares de senhas e forçar apenas logins de pub / chave privada, se não bloquear o usuário através de "passwd -l user ... então, se não usar uma chave, ainda posso entre no servidor com uma senha regular.
Porém, mais importante , preciso que o sudo funcione com uma configuração de pub / chave privada com um usuário cuja senha seja desativada.
Edit: OK, acho que entendi (a solução):
1) Ajustei / etc / ssh / sshd_config e configurei PasswordAuthentication no
Isso evitará logins de senha ssh (certifique-se de ter uma configuração de chave pública / privada funcionando antes de fazer isso
2) Ajustei a lista de sudoers visudo
e adicionei
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root é a única conta de usuário que terá uma senha, estou testando com duas contas de usuário "dimas" e "sherry" que não possuem uma senha definida (as senhas estão em branco passwd -d user
)
O acima mencionado impede essencialmente que todos façam login no sistema com senhas (uma chave pública / privada deve ser configurada).
Além disso, os usuários da lista de sudoers têm habilidades de administrador. Eles também podem su
para contas diferentes. Então, basicamente "dimas" pode sudo su sherry
, no entanto, "dimas NÃO pode fazer su sherry
. Da mesma forma, qualquer usuário que NÃO esteja na lista de sudoers NÃO pode fazer su user
ou sudo su user
.
NOTA O procedimento acima funciona, mas é considerado uma segurança insuficiente. Qualquer script capaz de acessar código como usuários "dimas" ou "sherry" poderá executar o sudo para obter acesso root. Um bug no ssh que permite que usuários remotos efetuem login, apesar das configurações, uma execução remota de código em algo como o Firefox ou qualquer outra falha que permita a execução de códigos indesejados, já que o usuário poderá executar como root. O Sudo sempre deve exigir uma senha ou você também pode fazer login como root em vez de outro usuário.
passwd -l
remove a senha no sentido de que a conta está BLOQUEADA - ou seja, nenhuma senha funcionará. Você deseja desativar a autenticação de senha no sudo.O que você quer fazer é possível, mas será necessária alguma experiência, pois você precisará compilar um módulo PAM chamado pam-ssh-agent-auth .
O processo é razoavelmente simples:
A edição da configuração do sudo:
Adicione o seguinte:
Continue alterando as configurações do sudo PAM:
Adicione (logo acima das linhas @include):
fonte
/etc/pam.d/sudo
instruções) estão desatualizadas para as versões atuais do Ubuntu. Forneci instruções atualizadas na minha resposta.A resposta de Andre de Miranda fornece uma boa solução usando pam_ssh_agent_auth , mas as peças estão desatualizadas. Particularmente as
/etc/pam.d/sudo
instruções ao usar muitas versões atuais do Linux.Se você estiver executando o Ubuntu 12.04 com precisão, simplifiquei o processo fornecendo uma compilação pam_ssh_agent_auth a partir de um ppa: ppa: cpick / pam-ssh-agent-auth .
Você pode instalar o pacote executando:
Após a instalação, se você quiser usar este módulo PAM com o sudo, terá que definir as configurações e a configuração do PAM, no Ubuntu 12.04, você precisará fazer isso criando os dois arquivos a seguir:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Se você estiver usando chef, o processo acima pode ser automatizado com meu livro de receitas, encontrado em um dos dois locais a seguir:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / livros de culinária / pam-ssh-agent-auth .
O
files
diretório do livro de receitas contém os arquivos/etc/pam.d/sudo
e/etc/sudoers.d/pam-ssh-agent-auth
descritos acima, que funcionam com o Ubuntu 12.04 preciso e devem ser um ponto de partida útil ao usar outras versões / distribuições.fonte
A única maneira que sei ignorar a inserção de uma senha é desativando-a no seu
sudoers
arquivo.Algo assim dará
root
e todos os membros de acessowheel
total sem senha:Isso absolutamente não é recomendado , no entanto. Se você tiver um comando específico para este servidor executar, conceda a eles acesso apenas a esse comando. Ou, melhor ainda, encontre uma maneira diferente de realizar o que você deseja fazer que não exija uma brecha na segurança.
fonte