Newsgroup: it.comp.os.linux.sys
Titolo: Gestione servizi tipo webmin in php

Premetto che so già che il php non è sicuro e che sarebbe meglio farlo
in perl (come poi è fatto il webmin) ma per ora conosco solo il php
quindi voglio farlo così... in un secondo momento modificherò il tutto
in modo più sicuro.
Voglio crearmi un'interfaccia grafica con la quale via web (solo
dall'interno della rete privata) posso modificare il firewall gestire
gli utenti, gestire il server di posta, avviare e fermare i servizi e
altro che ora non mi viene in mente niente di complicato cmq...
Ok, esiste già il webmin... ma me la voglio fare DA SOLO! :)
Ora mi chiedo... se questo faccio girare apache in modo che nessuno
dall'esterno possa accedervi (cambio la porta di default e blocco con
iptables il traffico verso quella porta dall'interfaccia esterna) non
attivo sshd (il demone di telnet manco è installato), e la password ri
root la tengo per me e per me solo.
Metto tra i sudoers wwwrun (l'utente di apache) e gli d'ho il potere
di usare su senza password (NOPASSWD... o c'è un modo via php anche di
passare la password quando viene richiesta?) per avviare i servizi e
per eseguire alcuni comandi.
In remoto nessuno dovrebbe accedervi (ssh chiuso e telnet
inesistente), giusto?  ...e in locale a nessuno darò il potere di
entrare in console così da avere solo degli utenti che entrano nel
loro ftp (bloccati nella loro home), accedono alla loro home ed a una
dir "scambio" comune tramite samba (dai loro client win) e accedono
alla casella di posta.
Al max creerò un utente con nome lungo e password lunga il quale sarà
l'unico a poter accedere alla console tramite ssh (se lo vorrò
includere) e potrà eseguire solo il comando "su".
La situazione sicurezza è molto critica?
L'unico problema che vedo è se qualcuno accede alla DocumentRoot
potrebbe tramite una pagina php eseguire dei comandi (cmq ristretti a
quelli che ho permesso di usare a "wwwrun"), sbaglio?
Scusate la lunghezza del post! Grazie a chi mi voglia rispondere!

 quelli che ho permesso di usare a "wwwrun"), sbaglio?
si.
Molto dipende ovviamente dalla tua competenza nello sviluppo di codice,
ma in questo php non aiuta (e` molto facile scrivere codice insicuro in
php).
Un modo "forse" piu` interessante "potrebbe" essere quello di far
generare a php un file di "comandi", che venga _poi_ eseguito da uno
job in cron di root (una volta al minuto, tipo). Almeno elimini
l'opzione "sudo wwwrun" che e` proprio bruttina.
Un'alternativa e` avviare un'altra sessione di apache su una porta
differente, magari in ssl, e autenticazione. Questa sessione di apache
_potrebbe_ girare con privilegi di root, ma e` cmq un brutta idea.
Un ulteriore alternativa e` utilizzare perlsuid e usare php solo per la
parte "front-end". Ma cmq, dipende dalla tua capacita` di scrivere
codice sicuro.
-- 
                         Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Windows, another fine product from the folks who gave us edlin.

 codice sicuro.
Aggiungo come opzione quella di far girare apache con i permessi suoi,
niente suid (che, visto che parli di amministrare firewall, mi pare
come darsi un calcio negli zebedei da soli...) e limitarsi a fargli
scrivere su una named pipe (coi permessi più restrittivi possibile) e
di far validare ed eseguire quanto qui inserito da un "motore" che
legga dalla named pipe stessa.
A questo punto, sposti "tutta" la validazione su questo, e la sicurezza
del front-end passa in un certo senso in secondo piano...
Il che ti permetterebbe di mantenere la natura "real time"
dell'interfaccia.
IMHO, detto da uno che programma se ci è costretto...
-- 
Emanuele Balla  aka Skull -  Public Key #661E5CBF on 
www.keyserver.com
+----------------------------------------------------------------------+
"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." (By Linus Torvalds)

codice sicuro.
Ok, che non fosse sicuro lo sapevo...
Ma volevo sapere questo... nel modo in cui l'ho implementato io...
dall'esterno com'è possibile che qualcuno entri visto che non può
accedere al sistema in nessun modo?
(ripeto apache solo in ascolto all'interno, ssh diabilitato o attivo
per solo un utente con nomeutente strano e lungo e passwd lunga).
Dall'interno invece (dovrà gestire una rete da max 10/15 client) ogni
client windows può accedere solo alla sua home ed a una dir comune per
tutti (tramite samba), all'ftp (sempre e solo alla loro home ed a una
dir comune per tutti) ed alla mail.
Ok la mia implementazione non è elegante ma visto che ancora non sono
un'esperto di sicurezza (...e si vede ^_^) volevo capire come qualcuno
potrebbe accedere al sistema in modo non autorizzato. Dall'esterno mi
pare improbabile... dall'interno?

 pare improbabile... dall'interno?
ps: studi di settore dicono che la maggior parte degli attacchi
provengono dall'interno.
-- 
                         Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
If you think you need threads then your processes are too fat.

provengono dall'interno.
Beh... a meno che non entri qualcuno fisicamente all'interno della
rete abbastanza esperto non penso che con l'office riescano a sfondare
la linuxbox...
Cmq quello che volevo capire è questo: a parte bug dei servizi (da
aggiornare prontamente) che problemi ci possono essere?

 aggiornare prontamente) che problemi ci possono essere?
bug del tuo software, principalmente.
-- 
                         Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Analmatrach Utvasvetod Dochieldienve.

lo meno e` ipertestato, e viene aggiornato con eventuali security bugs?
A questo punto direi che sarebbe la cosa migliore da fare... sai se č
possibile modificare webmin semplicizzandolo il piů possibile e
personalizzandolo come mi pare?
Grazie per il tuo tempo!

 Grazie per il tuo tempo!
Nessun problema. :)
-- 
                         Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
There is no substitute for good manners, except, perhaps, fast reflexes.