zmena hesla pro POP3 uzivatele skrz https

Milan Sorm xsorm na informatics.muni.cz
Pátek Červenec 3 21:51:26 CEST 1998


tak jsem to dodelal jakz takz, ale neni to jeste uplne vono a nema to
README. tady shrnu jak to chodi.

Musite si rozchodit Apache se SSL (mozna uz je clane v Linuxovych novinach,
pokud ne, kdysi jsem jej chtel spat, treba to pres prazdniny udelam).

Potom si zalozte nekde adresar

napr. /adm/web/debug    (to sem mel ja)
tam dejte wrapper.c, ktery najdete na
ftp://ftp.gvid.cz/pub/users/popelnik/chpasswd

do podadresare sec dejte to, co najdete tamtez v podadresari sec.


pak je treba prelozit wrapper:

gcc -o index.cgi wrapper.c

(nejprve je vhodne dovnitr napsat, pod jakym uid bezi web server a cestu k
adresari sec).

prava vyslednych souboru a adresaru:

drwxr-xr-x   3 root     root         1024 Jul  3 21:21 .
drwx--x--x   5 admin    admin        1024 Jul  3 21:21 ..
-rws--x--x   1 root     root         3040 Jul  3 21:15 index.cgi
drwxr-xr-x   2 root     root         1024 Jul  3 21:13 sec
-rw-------   1 root     root          449 Jul  3 21:15 wrapper.c

a v sec:
-rwx------   1 root     root         2297 Jul  3 21:37 chpasswd.pl


potom do /etc zalozte adresar users (bohuzel zatim s pravy rw-r--r--,
protoze z nej musi cist apache hesla (to nevim jak obejit).

do nej napisete vsechny uzivatele, kteri si takto smeji menit heslo ve
formatu:

popelnik:Xg56KDjfkjd5         (tj. zasifrovane heslo z /etc/shadow)
clovek:tuogvjUJFlfh           apod.

na zaver pridejte nekam do webserveru definici virtualniho www:


<VirtualHost www.gvid.cz:443>
   ServerAdmin popelnik na gvid.cz
   DocumentRoot /adm/web/debug
   ServerName www.gvid.cz
   UserDir
   ErrorLog logs/debug-adm-error_log
   TransferLog logs/debug-adm-access_log
   ScoreBoardFile logs/debug-apache_status
   SSLCACertificatePath /www/conf
   SSLCACertificateFile /www/conf/httpsd.pem
   SSLCertificateFile /www/conf/httpsd.pem
   SSLVerifyClient 0
   SSLVerifyDepth 10
   SSLFakeBasicAuth
   SSLLogFile /www/logs/ssl.log
   <Directory /adm/web/debug>
     Options ExecCGI Includes
     AllowOverride All
     <Limit GET POST>
      order allow,deny
      allow from all
     </Limit>
   </Directory>
 
   <Location />   
     AuthName Debug
     AuthType Basic
     AuthUserFile /etc/users
     require valid-user
 
     SourceCzechCodePageLocal CISO8859-2
   </Location>
</VirtualHost>

tady je to samozrejme s mod_czechem a s mod_ssl direktivami, ale to se da
snadno doladit podle hlaseni web serveru na konkretni pripad.

potom uz se lze kochat z https://www.gvid.cz/, kde beha zmena hesla. design
formulare lze modifikovat v perl skriptu v adresari sec. bude nutne
zainstalovat modul CGI.pm, ktery je na CPANu.

no a na zaver:

tento skript cte a modifikuje hesla v souboru /etc/users.
navic je nutne si dopsat zmenu pro /etc/passwd.

je nekolik moznosti:

1. doplnit si kod do chpasswd.pl, kde ve funkci save_password navic heslo
ulozi i do /etc/passwd a zavola pwconv (konverze do /etc/shadow)
2. totez ale uklada primo do /etc/shadow

3. me prijde lepsi napsat si pro crona demona, ktery jednou v noci nacte
/etc/shadow, opravi si hesla (v pameti) podle /etc/users a zapise znovu do
/etc/shadow. 



BUGS:

- prava /etc/users
- nenapsal jsem skript pro konverzi do shadow, coz je ovsem trivialni a je
  moznych nekolik reseni (kdyby nekdo nevedel, poslu mu skriptik v Perlu)
- nutnost mit Perl, CGI, Apache, SSL
- nelze uzit NFS, protoze se uziva flock zamykani souboru
- muze dojit ke kolizi, pokud dva uzivatele soucasne ukladaji zmenu hesla
(mala sance dle mych zkusenosti).


pripadne dotazy rad zodpovim,
   milan sorm
-- 
--------------------------------------------------------------------
Milan Sorm  (aka Popelnik)    tel/fax/zazn: +420 5 46211083/46211311          
office:  B205 - FI MU Brno    e-mail: sorm na fi.muni.cz
telefon: +420 5 41512348      web:    http://www.fi.muni.cz/~sorm/  


Další informace o konferenci Linux