ssh restrições para autenticação do usuário

3

RHEL 6.8, tenho um usuário autenticado localmente e não totalmente certo se esse usuário tiver logins baseados em chave de configuração já de outro nó para se conectar ao nó em questão.

Estou pensando em regenerar as chaves ssh para o usuário, a fim de evitar que ele faça login usando as chaves de configuração anteriores.

Eu tenho acesso "root" ao nó. Qual é a melhor maneira de restringir o login baseado em chave que teria sido definido, mas manter a mesma conta para outros serviços que atualmente usamos a conta.

    
por user2967267 30.11.2017 / 01:37

3 respostas

2

Por padrão, a lista de chaves que um usuário pode usar para efetuar login em qualquer nó específico é armazenada em $HOME/.ssh/authorized_keys no nó que está sendo conectado.

A chave privada que o usuário usa para fazer conexões é armazenada no nó que origina a conexão.

Se você quiser evitar que um usuário faça login usando uma chave específica, basta removê-lo do arquivo authorized_keys . Mas esteja ciente de que o usuário pode sempre colocá-lo de volta, se eles podem efetuar login nesse nó ou acessar o arquivo. Você também pode alterar o caminho para o arquivo de chaves autorizadas definindo AuthorizedKeysFile em /etc/ssh/sshd_config para um arquivo que o usuário não pode acessar. Mas tenha em mente que isso se aplicará a todos os usuários.

Quanto a determinar como um usuário é autenticado, essa informação está no seu arquivo de log /var/log/secure . Por exemplo:

# grep Accepted /var/log/secure
Nov 26 03:13:46 www sshd[13925]: Accepted password for user1 from 203.0.113.242 port 3481 ssh2
Nov 26 03:20:22 www sshd[14216]: Accepted publickey for dev2 from 198.51.100.21 port 64386 ssh2: RSA SHA256:...omitted...
    
por 30.11.2017 / 02:55
1

Se você quiser controlar quais teclas são usadas para o login, você deve controlar o arquivo que lista as chaves autorizadas, portanto, você não deve permitir que os usuários o controlem. Em vez de copiar arquivos nos diretórios de usuários, você deve usar os itens de configuração ssh apropriados que funcionariam, como:

  • AuthorizedKeysCommand : um programa atuando como um filtro nas chaves a serem usadas
  • AuthorizedKeysFile : arquivo no qual obter chaves autorizadas a usar, você pode especificar um caminho absoluto, fora dos diretórios controlados pelo usuário

Além disso, não entender 100% do seu caso de uso, mas você pode dar uma olhada nos certificados em vez de nas chaves, pois com os certificados você pode fornecer um período de validade e garantir que algumas credenciais expirem. Veja a opção -V de ssh-keygen .

    
por 30.11.2017 / 16:40
0

O usuário pode editar seu próprio arquivo authorized_keys para que as alterações feitas sejam desfeitas. Para evitar isso, você pode alterar o arquivo authorized_keys para ser somente leitura para o usuário e, em seguida, alterar os atributos de diretório e arquivo para torná-los imutáveis. Isso impedirá que o usuário faça alterações no arquivo de chaves autorizado, mas ainda permita que ele faça o login.

Etapas

  1. Remova as chaves que você não deseja que o usuário use no arquivo ~ / .ssh / authorized_keys do usuário.
  2. Adicione a nova chave pública que você gerou ao arquivo
  3. chmod o arquivo authorized_keys para 400 (legível apenas pelo proprietário)
  4. chattr + i o arquivo authorized_keys (torne-o imutável para que o usuário não pode alterar os privilégios de volta para editá-lo)
  5. chattr + i o diretório .ssh

por exemplo, suponha que o nome de usuário seja "hogan" e esteja logado como root:

#cd ~hogan/.ssh
#vim authorized_keys
[ do your edits and save ] 
#chmod 400 authorized_keys
#chattr +i authorized_keys
#cd ..
#chattr +i .ssh
    
por 30.11.2017 / 15:51

Tags