Squirrelmail: problem s prevelikim adresarom zbog suhosina

Squirrelmail je svima poznat webmail sustav, jer se godinama isporučuje u obliku CARNetovog paketa i time briga sistemca oko podešavanja prestaju. Mnogi su se naviknuli na njegovo sučelje, te ne pomišljaju zamjenu za neki jači webmail sustav. Većini korisnika, zaista, i ne treba puno mogućnosti, pa im je uz poznato i jednostavno sučelje Squirrelmail sasvim dovoljan. No, neki korisnici ipak imaju više potreba, što je nedavno prouzrokovalo zanimljiv problem.

Naime, problem je nastao kod korisnika koji je imao blizu 300 korisnika u svom adresaru. To nije nikakav problem, iako Squirrelmail smješta kontakte u flat tekstualnu datoteku (/var/lib/squirrelmail/data/korisnik.abook), što nije pretjerano dobar način pravljenja baze podataka, ali za ovu svrhu radi dobro. (Za vašu informaciju, Squirrelamail korisničke podatke može spremati u MySql bazu, a uz plugin i u LDAP imenik).

Kad je korisnik htio obrisati višak kontakata iznad 200-og unosa, to nije mogao učiniti. Nikakve posebne poruke o greški nije bilo. Kolega sistemac se javio za zamolbom za pomoć, no standardne provjere nisu dale rezultata. No, na sugestiju kolege i uz pomoć logova (/var/log/user.log, odnosno /var/log/syslog), uspjelo se doći do poruke o greški:

Jan 21 13:21:31 server suhosin[20984]: ALERT - configured POST variable
limit exceeded - dropped variable '1:email@domena.hr' (attacker
'161.53.XX.YYY'), file '/usr/share/squirrelmail/src/addressbook.php')

Sada je moguće odrediti "krivca": Suhosin. Suhosin je modul za zaštitu PHP koda od poznatih, ali i nepoznatih napada. To čini tako da ograničava određene tipove pristupa, slanja i primanja web formi i slično. U ovom slučaju, ograničio je pristup POST metodi slanja podataka serveru, jer sadržava previše unosa. Kad pogledamo default vrijednosti, vidjet ćemo zbog čega je došlo do problema:

;suhosin.post.max_vars = 200

Sve vrijednosti Suhosin sprema u datoteku /etc/php5/conf.d/suhosin.ini, a iako su zakomentirane, sve te vrijednosti su ukompilirane u sam Suhosin. Ukoliko želite neku vrijednost promijeniti, samo je otkomentirajte i stavite novu vrijednost. U našem slučaju, i nakon nekoliko pokušaja, došli smo do zadovoljavajućeg rezultata:

;suhosin.post.max_vars = 200
suhosin.post.max_vars = 1024
;suhosin.request.max_vars = 200
suhosin.request.max_vars = 1024

Dakle, povećali smo vrijednost oko 5 puta. Sama vrijednost zapravo i nije bitna, radilo bi vjerojatno i neka druga (500, 700, 1000...), bitno je zapamtiti nekoliko stvari ukoliko imate instaliran Suhosin:

- provjerite logove (/var/log/user.log i /var/log/syslog) kad neka PHP web aplikacija ne radi kako treba
- provjerite i druge varijable koje bi mogle utjecati na problem (u ovom slučaju ".request")
- ne zaboravite restartati Apache, kako bi se suhosin modul ponovo inicijalizirao

Više informacija možete potražiti na web stranici projekta, koju svakako konzultirajte prije nego što idete mijenjati osnovne vrijednosti Suhosina:

http://suhosin.org/stories/index.html

 

Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (2 votes)