Desabilita o logon remoto, mas ainda permite su ao mesmo usuário

3

Minha empresa está procurando proteger nossos servidores Ubuntu 14.04 LTS e queríamos impedir que usuários específicos fizessem logon remotamente, mas ainda permitissem que as pessoas mudassem para essa conta de usuário usando SU, se necessário, para fins de suporte. Eu encontrei a resposta para não permitir logins SSH aqui:

Como desabilitar o controle remoto? SSH logar como root de um servidor?

Isso impediria que o SU fosse alterado para um usuário que não tenha recebido o logon SSH remoto?

Exemplo específico: não queremos que as pessoas façam o log do SSH usando a conta 'specadmin', mas o usuário 'mary' pode precisar fazer o login e SU 'specadmin' para realizar algumas tarefas de suporte especiais através de uma conexão SSH, Isso é possível (embora não seja o melhor modelo, tenho certeza). Não temos acesso local aos servidores porque eles estão hospedados na nuvem.

    
por jjthomas3rd 20.07.2016 / 14:26

2 respostas

4

Não, desabilitar o acesso SSH no arquivo sshd_config não afetará a capacidade de login local ou através do uso do comando su .

Embora você possa limitar as contas que podem se conectar ao SSH, conforme descrito na resposta referenciada (ou seja, definindo DenyUsers specadmin ou AllowUsers mary no arquivo /etc/ssh/sshd_config ), ele ainda seria menos seguro do que é considerado uma prática comum para SSH.

Você não deve seguir esse caminho e, em vez disso, alternar para a autenticação baseada em chave.

Se você estiver configurando pela primeira vez, pode parecer complicado, mas à medida que você usa os serviços de nuvem, pode adicionar facilmente um novo servidor e executar testes (btw, os serviços de nuvem geralmente dão acesso à Web ao console se você se trancar).

Primeiro, você deve definir (ou garantir que as seguintes opções estejam definidas no sshd_config ):

PubkeyAuthentication yes

Em seguida, você deve gerar um par de chaves em sua máquina cliente ( ssh-keygen em máquinas Linux) e adicionar a chave pública ao arquivo a seguir (por mary ):

/home/mary/.ssh/authorized_keys

copiando manualmente (uma chave é uma cadeia de caracteres) ou usando o comando ssh-copy-id mary@<destination_server> , que carregará a chave automaticamente.

Você deve conseguir se conectar ao servidor usando ssh mary@<destination_server> usando a chave. Se você definir a frase secreta durante ssh-keygen , você deverá inseri-la, mas ela não será transferida entre o cliente e o servidor. Para ter certeza de que você está fazendo as coisas corretamente, defina uma senha para o arquivo-chave diferente da senha no servidor de destino.

Se você conseguir fazer login com êxito usando a autenticação de chave (e senha), poderá desativar a senha com base em uma, adicionando / garantindo as seguintes configurações em sshd_config :

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
HostbasedAuthentication no

Após as alterações no sshd_config , você deve reiniciar o daemon SSH ( sudo service ssh restart ) no servidor.

Para sua tranquilidade, você também pode não permitir o acesso via SSH para a conta root no sshd_config (embora, se você executar o acima, o root não consiga efetuar login por padrão):

PermitRootLogin no
    
por techraf 20.07.2016 / 14:31
1

Este é o caso de uso exato para as linhas DenyUsers e AllowUsers no arquivo /etc/ssh/sshd_config . Você pode fazer login como um usuário permitido e su para o usuário privilegiado quando necessário.

Além disso, se você quiser melhorar suas medidas de segurança, deverá usar a autenticação baseada em certificado protegida por senha para efetuar login como usuários regulares (como Mary). É muito simples de configurar e adiciona uma camada extra de segurança ao seu sistema.

    
por Arronical 20.07.2016 / 14:39

Tags