Por dentro do login no Linux

Posted on jun 08, 2008 under Dicas Linux, Segurança, Sem categoria |

Quando executamos o login no linux, várias medidas de segurança são executadas antes de permitir o acesso. Estas medidas podem variar de distribuição para distribuição, mas geralmente são as mesmas.


Login: segundo a documentação Linux é um programa usado para estabelecer uma nova sessão com o sistema. Este programa executa vários checagens antes de permitir acesso mostrarei eles passo a passo.

Primeiro, o login irá verificar se existe o arquivo /etc/nologin este arquivo sinaliza que somente o usuário root pode logar no sistema. Este arquivo é criado quando desligamos a máquina com o comando shutdown. Então quando existir o arquivo /etc/nologin o login irá falhar e o conteúdo do arquivo será mostrado no prompt, somente será aceito que o root faça o login. Exemplo:

vim /etc/nologin
Sistema em manutenção tente a partir das 17:00hs

Login localhost: marlon
Sistema em manutenção tente a partir das 17:00hs

Senha:

Login incorrect
Login localhost:root
Sistema em manutenção tente a partir das 17:00hs
Senha:
localhost ~ #

Segundo, verificar a existência de alguma restrição nos arquivos /etc/usertty e /etc/securetty estes arquivos definem em qual TTY(terminal), pode ser feito o login por usuário ou root respectivamente.
Exemplo:

vim /etc/securetty
console
tty0
tty1
tty2
tty3
:q

Caso seja necessário proibir que o root faça login em algum dos terminais listados no arquivo, somente coloque # na frente do terminal, comentando a linha.

Após a verificação do password e restrições mostradas acima o login armazena no arquivo /var/log/lastlog o horário que foi executado o login, criando uma entrada no arquivo /var/run/utmp e indicando que o login foi executado com sucesso.

Terceiro, verifica a existência do arquivo .hushlogin dentro do diretório /home do usuário. Caso exista o login será silencioso, não haverá nenhuma mensagem; caso contrário uma seqüência de eventos ocorrerá. As informações serão mostradas ao usuário no terminal, por exemplo informações sobre direitos autorais, seguidas pela mensagem do dia geralmente armazenada no arquivo /etc/motd e por fim a data do último login e sua origem. Mas se você não quiser receber este ruído simplesmente execute o seguinte comando:

touch ~/.hushlogin

Finalmente, se todas as checagem passaram e as restrições foram executadas,o login inicia um shell. Este depende das informações contidas no arquivo (/etc/passwd,NIS,LDAP). O shell possui a opção de ajuste para ser não interativo . Este diretiva geralmente é configurada para usuário de email e ftp, com a opção /bin/true ou /bin/false, que informa se o usuário poderá ou não ter acesso ao shell.

Estou lendo um livro, que tem me inspirado bastante vale a pena ler: Hack Notes: Segurança no Linux e Unix

Se gostaram do post comentem, solicitem assuntos de seu interesse.

14 Responses to “ Por dentro do login no Linux ”

  1. [...] por Marlon Petry (marlonpetryΘgmail·com) - referência [...]

  2. Muito interessante! O .hushlogin foi uma surpresa para mim.
    Parabéns!

  3. Valeu Diego, obrigado pelo incentivo!

  4. Legal, não tinha pensado que um “simples” procedimento de login poderia realizar tantas checagens e verificações.

  5. Eu não sei porque todo mundo prefere o touch para criar aquivos, enquanto a maneira “certa” ( espero que entenda o sentido do “certa ) seria o “>”.

    Exemplo:

    tuxhome ~/Desktop $ time touch teste.txt

    real 0m0.005s
    user 0m0.001s
    sys 0m0.002s

    @tuxhome ~/Desktop $ time > teste1.txt

    real 0m0.001s
    user 0m0.000s
    sys 0m0.000s

    Parabéns, ótimo artigo!

  6. Opa Diogo

    Pô da uma diferença boa de tempo.

    Vou adotar > para criar arquivos, já usei mas somente com cat,echo,tail desta forma numca tinha utilizado.

    Obrigado

  7. Gostei da dica, tanto do login quanto do livro.
    Um abraço.

  8. Opa Fernando obrigado pelo comentário

    Muito legal teu blog http://desconstruindo.eng.br, eu também gosto de hardware embarcado.

  9. [...] do arquivo será mostrado no prompt, somente será aceito que o root faça o login. Exemplo: view plaincopy to [...]

  10. touch é feito somente para criar arquivos vazio, nao foi feito para se criar conteudo a um arquivo mesmo, ele nao exige nenhum parametro extra q o > necessita tipo um comando antes.. seria mta perda de tempo fazer echo “” > teste.txt em vez de touch teste.txt ¬¬

  11. Bom post!
    Mas fiquei com uma dúvida: em que ponto do login é lido o arquivo “login.defs” e também quando são carregados os módulos do pam.d?

  12. Bom dia Marcelo

    Em relação a tua dúvida, eu tive a intenção de fazer um post sem mencionar os módulos pam.d porque existe distribuições que não usam. O login busca as configurações dentro do /etc/login.defs. Até tem mais parâmetros que podem ser ajustados como quantas vezes o usuário pode errar a senha, quanto tempo o login deve esperar para mostrar o prompt de login novamente.

  13. Gostei do informativo sobre como é feito o login, pois está dita de uma forma clara e simples. Congratulations!!!

  14. Muito obrigado Bosco.

Leave a Reply