Newsgroup: it.comp.www.server
Titolo: apache su win32 - sicurezza

approfitto ricollegandomi alla chiacchierata con dmitry su apache in win32.
io uso sempre IIS, pero' sulla mia postazione sto usando (diciamo sto 
provando a usare) apache.
al di la' dell'utilizzo di .htaccess per la protezione delle cartelle, 
sto provando un filemanager in php che non fa altro che esplorare il 
contenuto dei dischi col filesystem.
e si puo' anche andare su C:\
come faccio con apache e win32 a impedire che avvenga?
vorrei limitare l'accesso a una dir soltanto (e le sottodir).
non vorrei mettere una decina di .htaccess sparsi per C:\
:-/
sp-

 vorrei limitare l'accesso a una dir soltanto (e le sottodir).
http://cwfm.sourceforge.net
-- 
Vincenzo

 
http://cwfm.sourceforge.net
conosco gia', grazie :)
ma il problema e' un altro: non sto cercando un filemanager che 
restringa l'accesso ad alcune dir e subdir "lato php" ma proprio a 
livello di permissioni APACHE.
se non erro su lainucs se puede con suEXEC o qualcosa del genere.
su IIS ci sono le NTFS.
ma visto che apache ignora (giustamente) le permissioni NTFS di win32, 
come si risolve?
sp-

 ma visto che apache ignora (giustamente) le permissioni NTFS di win32, 
Apache non ignora i permessi NTFS. Lo installi come servizio e lo fai 
girare come un utente specifico:
http://httpd.apache.org/docs-2.0/platform/windows.html#cust
Inoltre (se servisse) 'open_basedir' in php.ini ti permette di rendere 
visibile solo uno o piu` rami dell'hd agli script PHP.
-- 
Vincenzo

 visibile solo uno o piu` rami dell'hd agli script PHP.
grande vincenzo! erano le informazioni che cercavo!
:-)))))
ciao
sp-

sto provando il tutorial che mi hai consigliato.
e' molto chiaro.
purtroppo pero' c'e' qualcosa che evidentemente non so (forse perche' 
sono un po' viziato da iis).
in pratica, dopo aver creato un user (es. apache), aver impostato le 
permissioni come da tutorial, apache non si avvia e negli eventslog 
ricevo un "accesso negato".
apparte che ho dovuto dare permissioni di lettura sulla cartella 
winnt/system32 perche' a quanto pare c'e' bisogno di alcune DLL 
utilizzate *anche* da apache.
ho anche impostato le policies locali, ma continuo a ricevere sto 
maledetto accesso negato :(
sp-

 utilizzate *anche* da apache.
Per vedere quali sono i file che il sistema richiede potresti utilizzare 
Filemon:
http://www.sysinternals.com/ntw2k/source/filemon.shtml
-- 
Vincenzo

 
http://www.sysinternals.com/ntw2k/source/filemon.shtml
vaccaboia fantastico!
sai da quanto cercavo un utility cosi' ??
grazie!!! (oggi mi stai illuminando....)
:)
sp-

non e' cosi' semplice come sul tutorial.
filemon mostra tutti i files necessari per far girare il servizio apache 
come utente normale, e da quel che mi sembra di aver capito c'e' bisogno 
di spingersi fino alla winnt/system32.
di fatti, proprio per vedere se effettivamente erano le permissioni 
ntfs, ho messo everyone su C:\ con controllo completo, e apache si avvia 
regolarmente.
ovvio pero' che non posso lasciare everyone ^__^ , quindi sto vedendo 
cosa posso tenere chiuso (io spero il piu possibile).
sp-

 di spingersi fino alla winnt/system32.
Non saprei. Non usandolo direttamente su Windows (se non da console, per 
fare dei test di compatibilita`) mi sono fidato della documentazione. 
Comunque facendo il 'debug' dei permessi dovresti farcela.
-- 
Vincenzo

 Comunque facendo il 'debug' dei permessi dovresti farcela.
ohhhhhh..... allora :)
son giunto (quasi) al dunque.
e' abbastanza articolato, pero' magari a qualcuno puo' venire in mente 
un modo piu' rapido e semplice.
NON DO' ALCUNA GARANZIA DEL FUNZIONAMENTO (io tendo a chiudere forse 
troppo le permissioni)
:)
1) installare apache (io ho c:\Apache2) sulla porta 80
2) creare un nuovo utente (es. apache) con una password che si vuole.
2) toglierlo subito da OGNI gruppo (di default viene messo su Users).
3) dallo snap-in dei servizi modificare l'esecuzione del servizio Apache 
(io ho Apache2), cambiando da LocalSystem all'utente "apache", con 
relativa password.
4) sulle local policies/diritti utente aggiungere e "spuntare" l'utente 
"apache" in "accesso locale" e "agire come parte del sis. operativo". 
chiudere lo snap-in e riaprirlo: dovrebbero essere "flaggate" anche le 
voci "impostazioni criteri validi"
nota: tempo addietro tolsi tutte le permissioni su C:\ a tutti eccetto 
administrator e system, percio' ho dovuto ricrearmi le permissioni ntfs 
praticamente da zero (continuo a preferirlo).
in questo caso la cosa piu' semplice da fare e' di abilitare 
momentaneamente OGNI privilegio su C:\ anche all'autente "apache".
io ho fatto cosi':
5) impostare le permissioni di controllo TOTALE su  C:\ all'utente 
"apache", in modo che rimangano administrator, system e apache con pieni 
diritti.
6) loggarsi la prima volta come utente apache.
in questo modo lasciamo che al primo login in windows, l'utente "apache" 
possa crearsi tutte le cappero di cartellette del menga che...... vuole 
lui dove vuole lui (e che sia stramaledetto per questo).
dovrebbero quindi essere create sotto c:\documents and settings\apache.
7) tornare ad amministratore e ricambiare le permissioni dell'utente 
apache su c:\ piu' o meno cosi':
- administrator (controllo completo)
- system (controllo completo)
- apache (lettura, esecuzione)
8) far ereditare le nuove permissioni a tutto C:\
9) da dentro la cartella di Apache2 si copiano le permissioni 
deselezionando l'ereditarieta' dalle cartelle padre, e si aggiunge 
"scrittura" (ma NON modifica) all'utente Apache sulla cartella 
c:\apache2\logs.
10) tornare su C:\ e togliere qualsiasi permesso alla cartella dei 
programmi, anche stavolta copiando le permissioni ereditate e togliendo 
di netto l'user Apache.
stesso discorso per tutte le altre eventuali cartelle su C:\, eccetto 
winnt, alla quale vanno lasciate permissioni di lettura ed esecuzione 
(per il momento su tutta la cartella, poi cerchero' di individuare e 
isolare i files necessari ad apache uno per uno).
non ho ancora fatto fatto nulla per php e mysql :)
sp-
ps. a me funziona pero' ripeto che non garantisco nulla :)

allora, seguire quelle specifiche la' sopra, poi aggiungo:
11) impostare permissioni di scrittura/modifica/lettura/esecuzione alla 
cartella temp (io l'ho spostata sotto c:\ modificando anche le variabili 
d'ambiente sia per l'utente "apache" che per quello di sistema)
12) nella cartella system 32 selezionare tutte le cartelle, copiare le 
permissioni e rimuoverle permissioni all'utente apache.
13) sempre sotto system32 selezionare TUTTI i files tranne (o almeno nel 
mio caso):
WS2_32.dll
WS2HELP.DLL
MSWSOCK.dll
DNSAPI.DLL
WSOCK32.DLL
msafd.dll
IPHLPAPI.DLL
ICMP.DLL
MPRAPI.DLL
SAMLIB.DLL
NETAPI32.DLL
SECUR32.DLL
NETRAP.DLL
ACTIVEDS.DLL
ADSLDPC.DLL
RTUTILS.DLL
SETUPAPI.DLL
USERENV.DLL
RASAPI32.DLL
RASMAN.DLL
TAPI32.DLL
DHCPCSVC.DLL
CLBCATQ.DLL
wshtcpip.dll
e togliere le permissioni di lettura all'utente "apache".
14) sperimentale: si puo' anche provare a copiare i files elencati qua 
sopra, incollarli nella directory /bin di apache2 e disabilitare del 
tutto la lettura su system32.
in questo caso (e se anche /temp si trova su c:) probabilmente e' 
possibile chiudere completamente l'accesso alla cartella winnt.
devo ancora provare ma se funzionasse significherebbe gia' parecchio, 
visto che si andrebbero a togliere permissioni (anche se solo di 
lettura) alla cartella di sistema di windows.
ripeto che sono prove che faccio, non garantisco nulla :)
sp-

per quanto riguacrda php la situazione si complica un poco, devo ancora 
trovare tutte le dll utilizzate durante i processi.
per mysql invece e' molto semplice: togliere ogni permissione di lettura 
all'utente di apache.
in definitiva inizio a capire un po' come gestire la convinvenza apache 
+ win32 e visto che vanno cmq dati gli accessi in lettura ad alcune dll 
nella cartella system32, ho scelto di dare permissioni di lettura a 
tutte i files .dll (ma solo quelli) contenuti ed usare open_basedir per 
limitare l'accesso degli script php.
certo la cosa migliore sarebbe dare permissioni di lettura/scrittura in 
base alla cartella del singolo sito web e quindi con utente diverso, ma 
dato che l'utente "apache" su win32 esegue gli script "a nome di tutti" 
non so se si possa fare.
cmq gia' un passo avanti :)
sp-