Por dentro do login no Linux

Posted on jun 08, 2008 under Dicas Linux, Segurança, Sem categoria | 14 Comentários

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. Diego disse:

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

  3. Marlon disse:

    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. Diogo disse:

    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. Marlon disse:

    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. Fernando F. disse:

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

  8. Marlon disse:

    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. Havacci disse:

    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. admin disse:

    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. Bosco disse:

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

  14. admin disse:

    Muito obrigado Bosco.

Leave a Reply