Alterar password linux user pam autentication

990 views
909 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
990
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Alterar password linux user pam autentication

  1. 1. Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/ Usando o POPPASSD O poppassd possibilita que qualquer usu?rio de uma m?quina Gnu/Linux possa alterar a senha corrente do usu?rio selecionado atrav?s de um script PHP, abaixo voc? verifica com configurar este aplicativo e tamb?m pega o source code do script PHP para executar o mesmo: O poppassd criado Pawel Krawczyk(http://echelon.pl/pubs/poppassd.html), baseado no poppassd de John Norstad, Roy Smith e Daniel L. Leavitt, cria um servi?o no linux que possibilita a troca de senhas no /etc/shadow ou /etc/passwd. Como todo servi?o do Linux ,o poppassd ? associado a uma porta especifica. Utilizando um script em php, podemos comunicar com essa porta e alterar a senha do usu?rio. Link para download do poppassd : http://echelon.pl/pubs/poppassd-1.8.4.tar.gz A instala??o do poppassd via c?digo fonte ? f?cil, vamos aos passos: 1. Instale as bibliotecas Linux-PAM(PAM-DEVEL) para C. O PAM fornece uma forma de programas autenticarem usu?rios em uma forma independente, baseada em “m?dulos de autentica??o”. 2. Crie uma pasta qualquer e descompacte o conte?do do arquivo poppassd-1.8.4.tar.gz. Por exemplo : mkdir /usr/src/ poppassd cd /usr/src/poppassd tar zxvf poppassd-1.8.4.tar.gz 3. Como root execute: make make install 4. Adicione ao arquivo /etc/inetd.conf a seguinte linha: poppassd stream tcp nowait root /usr/sbin/tcpd poppassd 5.Adicione ao arquivo /etc/services: poppassd 106/tcp O servi?o do poppassd neste caso est? utilizando a porta 106. 6.Adicione ao arquivo /etc/hosts.deny: poppassd: nobody@localhost: allow poppassd: ALL: deny Estou liberando o acesso ao servi?o para o usu?rio nobody na maquina local(estou executando o script na mesma maquina do servi?o do poppassd) e negando o acesso a outras maquinas e outros usu?rios, nobody refere-se ao usu?rio que apache utiliza. Em algumas distrui??es o usu?rio do apache ? outro. No Suse Linux o usu?rio ? wwwrun e no debian ele tem outro nome. Na duvida, busque no http.conf o nome do usu?rio, voc? deve encontrar algo assim: User nobody 7.Adicione ao arquivo /etc/pam.d/poppassd: #%PAM-1.0 1 de 3 08/09/2010 17:16
  2. 2. Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/ #%PAM-1.0 auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so retry=3 password required /lib/security/pam_pwdb.so use_authtok nullok 8. Adicione ao arquivo /etc/syslog.conf : local4.err /var/log/poppassd 9. Reinicie os servi?os do inetd. Quem utiliza o mandrake pode instalar via rpm : http://rpmfind.net/linux/RPM/mandrake/9.2/contrib/i586/poppassd-ceti-1.8.4-1mdk.i586.html Para gosta do debian ou outra distribui??o baseada (por exemplo Kurumin) instalar o pacote via apt: apt-get install poppassd ou dpkg -i nomedopacotepoppassd.deb Download do pacote debian : http://packages.debian.org/stable/mail/poppassd < ?php // Autor(a): Heloisa Karina Costa // Fonte : http://bazar.conectiva.com.br/listas/linuxisp-br/arquivo/2001/10/msg00370.html // Conex?o para trocar senha de usu?rio sistema // $servidor = ip do servidor de poppassd e autentica??o // $porta = porta espec?fica do servi?o // $login = login do usu?rio // $senhaold = senha atual // $senhanew = nova senha $socket = fsockopen($servidor,$porta); if (!$socket) { echo “Conex?o Recusada!”; } $out = fgets($socket,4096); if (strpos(”$out”,”500″)>-1) { echo “Conex?o Recusada!”; } fwrite($socket,”user $loginn”); $out = fgets($socket,4096); if (strpos($out,”500″)>-1) { echo “Usu?rio Inv?lido!”; } fwrite($socket,”pass $senhaoldn”); $out = fgets($socket,4096); if (strpos($out,”500″)>-1) { echo “Senha inv?lida!”; } fwrite($socket,”newpass $senhanewn”); 2 de 3 08/09/2010 17:16
  3. 3. Jaccon » Usando o POPPASSD http://jaccon.com.br/2004/04/usando-o-poppassd/ fwrite($socket,”newpass $senhanewn”); $out = fgets($socket,4096); if (strpos($out,”200″) >-1) { echo “Senha Alterada com Sucesso!”; } fwrite($socket,”quitn”); ?> 3 de 3 08/09/2010 17:16

×