Por dentro do login no Linux
Posted on jun 08, 2008 under Dicas Linux, Segurança, Sem categoria | 14 ComentáriosQuando 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.

[...] por Marlon Petry (marlonpetryΘgmail·com) – referência [...]
Muito interessante! O .hushlogin foi uma surpresa para mim.
Parabéns!
Valeu Diego, obrigado pelo incentivo!
Legal, não tinha pensado que um “simples” procedimento de login poderia realizar tantas checagens e verificações.
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!
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
Gostei da dica, tanto do login quanto do livro.
Um abraço.
Opa Fernando obrigado pelo comentário
Muito legal teu blog http://desconstruindo.eng.br, eu também gosto de hardware embarcado.
[...] do arquivo será mostrado no prompt, somente será aceito que o root faça o login. Exemplo: view plaincopy to [...]
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 ¬¬
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?
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.
Gostei do informativo sobre como é feito o login, pois está dita de uma forma clara e simples. Congratulations!!!
Muito obrigado Bosco.