Newsgroup: it.comp.sicurezza.varie
Titolo: sicurezza apache

buonasera,
spero innansitutto di non essere OT
PREMESSA
vi sto contattando per un problema che con le mie attuali conoscenze non 
so risolvere.
ho un piccolo server che uso anche per dare spazio web ai miei amici che 
lo desiderano, il server monta debian sarge 3.1, la sua versione di 
apache e la 1.3 la versione di php e 4.3.10-16 il kernel è 2.4.27-2-386
per quanto riguarda apache, la document root è /var/www e gli user hanno 
le loro home per lo spazio web in /var/www/"nomeutente". le home sono 
chownate dal propietario che e un uid numerico dato che il database 
degli user proftpd e su mysql e chmoddate a 755.
al momento non sto usando vhosts ma mi piacerebb eusare mod_vhost_alias 
in modo da non creare un vhost per ogni user ma utilizzare direttamente 
solo 2 righe nel config
PROBLEMA
per caso, mentre tentavo di fare uno script php mi sono accorto che 
ineffetti php dato che gira da www-data puo leggere ogni script e quindi 
copiare il contenuto ad esempio di files di confurazione con dati 
sensibili (ad esempio altri script php di altre home contenenti 
passwords). ineffetti questi files per funzionare devono essere 
leggibili a www-data e quindi a tutti e quindi a php!! quindi non 
potendo negare i permessi di lettura sui files sensibli pensavo di 
creare una soluzione vhost con mod_vhost_alias, ma mi sono accorto che 
giustamente anche un vhost (da solo) è una soluzione non attuabile 
perche php puo sempre risalire oltre la directory del vhost e quindi 
leggere il contenuto dei files. a questo punto ho scritto alla lista 
debian, ed ho ricevuto una risposta che apparentemente risolve il problema
 >     php_admin_value open_basedir "/var/www/nomeutente:/usr/share/php"
 >     php_value include_path ".:/usr/share/php:/var/www/nomeutente"
in questo modo però non posso attuare la soluzione con i vhost offerta 
da mod_vhost_alias e mi tocca creare un nuovo vhost per ogni utente, e 
riavviare apache!! ho provato altresi a utilizzarlo con mod_vhost_alias
sostituendo a /var/www/nomeutente /var/www/%1 (cioe la prima perte 
dell'url) ma giustamente queste direttive per php non supportano questo 
tipo di indicazione per le directory e quindi la richiesta dell'url 
http://nomeutente.miodominio.org
  limiterà in ogni caso php non su 
/var/www/nomeutente ma su /var/www/%1 (dato che non accetta %1 come la 
prima parte dell'url ma come "paramentro" statico(si dice cosi'))
come posso fare ad ovviare al problema?? esiste qualche modo per fare 
funzionare la limitazione di php con mod_vhost_alias?? devo per forza 
fare tutti i vhost a mano??
referenze per mod_vhost_alias: 
http://httpd.apache.org/docs/1.3/mod/mod_vhost_alias.html
CONCLUSIONE
grazie per l'attenzione e per l'eventuale aiuto che avrete deciso di 
concedermi, spero di essere stato chiaro e non aver detto corbellerie 
immani, scusi la terminologia imprecisa in alcuni punti. grazie
ringraziando in anticipo,
Fausto Milletarì

 fare tutti i vhost a mano??
forse ne aveva parlato il Serni su it.comp.www.server di questo problema e se 
non erro vi era una soluzione, anche se macchinosa. Francamente se non 
aggiungi tanti VHost al giorno io eviterei cmq. Alla fine se ne aggiungi uno 
al mese che te frega di dover riavviare il demone? lo riavvi e te ne freghi, 
mica sei un ISP :)
Io ho una decina di VHOST e li ho inseriti tutti a manina. Al limite puoi 
farti uno scriptino per inseririli in modo automatico e far riavviare apache.
Molto imho.
-- 
Ciao, Dmitry
X-Privat F.A.Q. : 
http://www.x-privat.org/faq.php

 farti uno scriptino per inseririli in modo automatico e far riavviare apache.
il problema che mi arrivano circa 3 richieste al giorno e proprio ora 
che avevo automatizzato il servizio per l'iscrizione dovrei riprendere a 
fare tutto a mano..
se puoi indicarmi magari dove trovare info.. io potrei sottoscrivere 
anche quell'ng magari pongo li la domanda, comunque grazie per la 
dritta. se sai qualcosa non esitare..
ciao..

 dritta. se sai qualcosa non esitare..
se trovo il riferimento te lo posto. Non mi sono mai interessato a 
mod_vhost_alias in quanto come ti dicevo non ne ho necessità (almeno per ora)
mumble, ti consiglio cmq di sottoscriverlo, c'è anche gente in gamba lì. 
Serni dove sei? :)


riavviare apache!
Be', "apachectl graceful" non e' che porti via molto tempo. Ti puoi anche
fare uno script che crea il vhost, lo aggiunge, e riavvia apache tutto in
una botta, usando sed su un file "vhost.template":
sed -e "s/VHOSTNAME/$1/g" < vhost.template >> /etc/virtualhosts.conf
(dopo aver controllato che $1 sia valido, ecc. ecc., eh!)
oppure
sed	-e "s/VHOSTSERVERNAME/.../g" \
	-e "s/VHOSTADMINMAIL/.../g" \
	...
	< vhost.template >> /etc/virtualhosts.conf
Per automatizzare la cosa, apache puo' scrivere gli host da creare dentro
un file; poi uno script da crontab con permessi di root, se trova il file
pieno crea gli host e lo svuota. Lo esegui ogni 5 minuti e sei lesto. Per
esempio scrivi
	ciccio:j...@von-neumann.de:192.168.4.2:...
nel file, poi lo script estrae le varie parti:
	VHOST=$( echo "$LINE" | cut -f1 -d: )
	EMAIL=$( echo "$LINE" | cut -f2 -d: )
	USERIP=$( echo "$LINE" | cut -f3 -d: )
	...
	CURRENTDATE=$( date )
e nel file vhost.template avrai qualcosa tipo
# Creato il CURRENTDATE dall'indirizzo USERIP
<VirtualHost *>
	ServerName	VHOSTSERVERNAME.tuodominio.tld
	ServerAdmin	VHOSTADMINMAIL
	DocumentRoot	/var/www/VHOSTSERVERNAME
	...
	...
	php_admin_value	open_basedir
"/var/www/VHOSTSERVERNAME:/usr/share/php"
	php_value	include_path
".:/usr/share/php:/var/www/VHOSTSERVERNAME"
</VirtualHost>
L'alternativa e' il safe mode:
 
http://it.php.net/features.safe-mode
ma ti crea varie limitazioni addizionali.
Leonardo SE&O
-- 
"Se e' vero che Linux in se' e' gratis, non lo sono le indispensabili
interfacce grafiche (X, KDE ecc.) che consentono alle persone normali
di utilizzarlo."                    -- Jason Matusow, Microsoft Corp.

 Leonardo SE&O
Leggendo ho visto il safe mode, e l'ho messo, mi sembrano accetabili le 
limitazioni. Considerando che non uso nemmeno i vhost ora come ora va 
bene per me. ma prendero in consigderazione la tua idea che gia mi era 
passata nella mente ma non comprendeva certo una spiegazione cosi accurata!!
grazie per l'attenzione.
grazie a tutto il newsgroup per l'aiuto
ciao.