mandag den 10. december 2012

Skifte kodeord over netværk

Nogen gange har man brug for at brugere selv kan skifte kodeord uden at de har terminal adgang til serveren. Det kan fx være igennem en hjemmeside.
For ikke at lave for mange sikkerheds brud i systemet kan man bruge et program der hedder poppassd.
poppassd kan opsættes som en netværks service og har FTP ligne kommunikation. Problemet med poppassd er bare at det er dårligt dokumenteret, fyldt med fejl og opsætningen forældet eller forkert.

Programmet er originalt skrevet for at understøtte mail systemerne Eudora and NUPOP du kan finde original programmet her http://netwinsite.com/poppassd/

Den originale version bruger passwd programmet direkte, denne metode er knap så fleksibel og det har desuden vist sig at under nogen omstændigheder mister passwd processen sin parrent process og bliver en zombie.

Det har ledt til udviklingen af en ny version kaldet poppassd-ceti, den version kan findes her http://freecode.com/projects/poppassd-ceti poppassd-ceti benytter sig af PAM som er en langt mere fleksibel metode til at håndtere bruger konti autorisations funktioner.

Men da der også med den nye version er brug for udokumenteret workarounds for at få det til at virke bliver det her dokumenteret.
Bruger du RetHat enterprise eller Scientific linux (og måske andre RPM baseret systemer) kan du installere poppassd-ceti fra denne RPM poppassd-1.8.5-3.rh9.re.i386.rpm http://rpm.pbone.net/index.php3/stat/4/idpl/5808798/dir/redhat_9/com/poppassd-1.8.5-3.rh9.re.i386.rpm.html
Hvis den klager over den mangler sysklogd, og kun sysklogd så kontroller du har syslog installeret (#rpm -qa | grep syslog) da den kan have et par forskellige navnet, fx rsyslog, når det er bekræftet, installer den bare med --nodeps

Du kan teste om programmet virker ved at bare skrive poppassd i prompten, neden for er en typisk poppassd transaktion:

S: Server/K: Klient

S: 200 HOSTNAME popassd v1.4 hello, who are you?\r\n
K: user BRUGERNAVN\r\n
S: 200 your password please.\r\n
K: pass EKSISTERENDE_KODE\r\n
S: 200 your new password please.\r\n
K: newpass NY_KODE\r\n
S: 200 Password changed, thank-you.\r\n
K: quit\r\n
S: 200 Bye-bye\r\n

Klager den over eksisterende kode ikke er korrekt selvom den uden tvivl er det, skyldes det forkert opsætning af PAM.
Skal poppassd skifte koder i lokal unix's shadow fil (normale unix brugere), erstat din PAM konfiguration i /etc/pam.d/poppassd med nedenstående:

#%PAM-1.0
auth       required     /lib/security/pam_unix.so shadow nullok
account    required     /lib/security/pam_unix.so
password   required     /lib/security/pam_cracklib.so retry=3
password   required     /lib/security/pam_unix.so use_authtok nullok

Når det er testet kan der forsættes med opsætning af poppassd som netværks service.
Start med at definere din service i /etc/services
Vi skal bruge port 106, hvis den allerede bruges så kommenter de linjer med port 106 ud med # og indsæt i stedet nedenstående linje:

poppassd        106/tcp
Herefter bruger vi xinetd som har sine konfigurationer i individuelle filer for hver service, vi skal derfor bruge filen /etc/xinet.d/poppassd med følgende indhold.

service poppassd
{
        disable                 = no
        port                    = 106
        socket_type             = stream
        protocol                = tcp
        wait                    = no
        user                    = root
        server                  = /usr/sbin/poppassd
        passenv                 = PATH
        env                     = HOME=/var/poppassd
        bind                    = 127.0.0.1
        only_from               = 127.0.0.1
        log_on_success  += HOST DURATION
        log_on_failure  += HOST
}
Efter rettelser i xinet.d konfigurations filer skal xinetd reloades
#/etc/init.d/xinetd reload

Test herefter med telnet at programmet virker som netværks service
$telnet localhost 106

Ingen kommentarer:

Send en kommentar

Baggrunden for opslag og artikler her på AOit er mine mere end sidste ti års erfaringer i drift og brug af LAMP platformen til at løse et utal af opgaver. En platform der består af Linux, Apache, MySQL og PHP. Alle fire frit og åben software og til at presentere data som som information bruger jeg HTML til formatering og CSS til layout.