Usando o POPPASSD

  • Post author:
  • Post category:Sem categoria

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: [email protected]: 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
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 $login\n”);
$out = fgets($socket,4096);

if (strpos($out,”500″)>-1) {
echo “Usu?rio Inv?lido!”;
}

fwrite($socket,”pass $senhaold\n”);
$out = fgets($socket,4096);

if (strpos($out,”500″)>-1) {
echo “Senha inv?lida!”;
}

fwrite($socket,”newpass $senhanew\n”);
$out = fgets($socket,4096);

if (strpos($out,”200″) >-1) {
echo “Senha Alterada com Sucesso!”;
}

fwrite($socket,”quit\n”);
?>