OpenSSH: Como negar o acesso remoto à conta root?

4 Comentários

O OpenSSH é um conjunto de ferramentas que nos permite gerir remotamente máquinas, recorrendo ao protocolo SSH. Ao contrário de outras, como o Telnet, rcp, rlogin e ftp, o OpenSSH garante que as comunicações entre máquinas sejam seguras, pois, recorre à criptografia para cifrar todo o tráfego (incluindo passwords).

Por questões de segurança é fundamental que desativem a autenticação remota da conta root. Hoje ensinamos como podem fazer.

OpenSSH: Como negar o acesso remoto à conta root?


O OpenSSH é uma versão gratuita da implementação do SSH. Para quem não sabe, o SSH – Secure Socket Shell é um protocolo que permite, de forma segura, aceder e gerir  remotamente máquinas Linux e não só.

O OpenSSH é um conjunto de ferramentas das quais fazem parte o:

  • ssh– um substituto para rlogin, rsh e telnet.
  • scp– um substituto para rcp
  • sftp– um substituto para o ftp
  • sshd– daemon da versão server do SSH
  • ssh-keygen– uma ferramenta para verificar e gerar chaves RSA, DSA e Elliptic Curve
  • ssh-agentessh-add –utilitários para que o utilizador não necessite de introduzir sempre a password – ver aqui

Gerir máquinas remotamente é sempre um processo bastante cómodo, no entanto, é fundamental que se analisem todas as questões relativamente à segurança. Uma das primeiras configurações que devem ser realizadas é desativar o acesso à conta root. Como sabemos, esta conta tem todos os privilégios dentro de um sistema e nesse sentido não a devemos usar para proceder à autenticação por acesso remoto.

Depois de acederem remotamente a uma máquina com uma conta com um nível de privilégios mínimo, podem nesse momento usar a conta root para realizar tarefas que necessitem de outro tipo de permissões.

Como negar o acesso remoto à conta root?

Negar o acesso remoto à conta root é algo bastante simples e pode ser realizado de várias formas. Uma delas já apresentamos aqui. Outra das formas é usando o parametro DenyUsers

Para isso basta abrir o ficheiro /etc/ssh/sshd_config e incluir a seguinte informação:

DenyUsers root

Caso pretendam bloquear outros utilizadores basta que façam algo do tipo:

DenyUsers ppinto ppinto user1

Depois de procederem às alterações devem reiniciar o serviço usando o seguinte comando:

/etc/init.d/sshd restart

Para testarem se tudo está operacional podem executar no macOS, Linux e até no Windows o seguinte comando:

ssh root@xxx.xxx.xxx.xxx

Além destas configurações existem outras que podem ser facilmente adotadas. Por exemplo, fazer Logins remotos pela rede “sem password” – ver aqui. Podemos também usar o DenyHosts, um script desenvolvido para sistemas Linux que permite “ajudar” no controlo de ataques indevidos via SSH.

Leia também…

Boas práticas na utilização e configuração do OpenSSH

Comentários

4

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Hugo Andre
    Hugo Andre

    Desculpa perguntar Pedro Pinto, mas será que ao contrário funciona melhor? Do tipo…. AllowUsers xpto admindossh…. e do tipo AllowHosts 192.168.x.x, ou AllowHosts 213.13.65.217 ….. por exemplo…. é que nem muitos acedem ao SSH!… pelo menos só os admins que querem alguma coisa dai!… Qual a diretiva que tem maior precedencia, prioridade, mais bloqueante, afinal !?

    sei que o /etc/hosts.deny é checked antes de /etc/hosts.allow, assim poderiamos ter:

    * hosts.deny
    ALL : ALL

    ou seja, primeiro, bloqueamos toda a gente de tudo,

    * hosts.allow
    ALL : localhost
    sshd: 192.168.1.24
    proftpd: 192.168.1.24

    quer quer dizer que só o ip 192.168.1.24 na rede local acederá
    e só acede via ssh ou proftp server nessa maquina.
    se não bloqeuamos toda a gente podemos utilziar este script… http://denyhosts.sourceforge.net/ conhecido por http://www.denyhosts.net

    1. Avatar de Pedro Pinto
  2. Avatar de José Maria Oliveira Simões
    José Maria Oliveira Simões

    Sou de opinião que a conta de root só pode ser acedida pelo uso de sudo. Assim, fica nos logs, quem fez o quê e quando. Como é evidente, somente alguns utilizadores tem a possibilidade de usar alguns comandos com sudo. Aceder à conta de root, só em casos muito específicos e somente para alguns dos admins. Isto é na minha opinião, como deveriam estar todos os servidores configurados. Outra coisa também muito importante, a password de root ser diferente em todos os servidores. Ter o firewall configurado em todos os servidores de modo a que os acessos sejam efectuados a partir de somente determinadas maquinas. Com esta restrição melhora-se a eficiência e a eficácia da segurança. Acesso aos servidores via ssh , sftp , telnet configurado no firewall de cada servidor, obrigatoriamente. Dá trabalho ? Claro que sim.

  3. Avatar de Oskar Alhos
    Oskar Alhos

    Olá, Pedro Pinto.
    Tenho um laptop com o Fedora 30 Workstation a rodar para uso simplesmente pessoal. ‘Desinstalei’ o boot splash screen para ver o sistema a subir e observei que surge o seguinte: ‘start openssh server…’. Como bom noob que sou, pergunto: Preciso desse serviço rodando? Se a sua resposta for Não, como o desativo? Se for Sim, porquê preciso dele se não o meu computador não é um servidor?
    Cptos, Pedro.