Newsgroup: it.comp.os.linux.sys
Titolo: Hardening perl

Ciao a tutti.
Devo implementare un server web con supporto per gli script perl/cgi 
caricabili dall'utente.
Conoscete un modo per fare un po di hardening? un po come il safe mode 
di php....Non mi piacerebbe avere utenti che mi caricano script in grado 
di gironzolare in giro per il server....

Alessandro ha scritto:

apposta hanno inventaso SELinux..
vedi anche il modulo mod_perl di apache che fa girare gli script perl 
quasi alla velocità di php.
PS: il team di sviluppo di php prevede di eliminare safemode per la 
prossima release PHP6

 prossima release PHP6
Eliminare safe mode? e quindi per fare hardening bisogna usare la sfera
di cristallo?

Alessandro ha scritto:

no, se lasciano il resto (open_basedir ecc ecc)
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Brutto?  Avete mai visto una zanzara pungere a occhi chiusi?
		-- Makaresco-Trani

 di cristallo?
RHEL o se preferisci CentOS che poi sono la stessa cosa, implementano
già selinux, basta attivarlo o megnio non disattivarlo durante
l'installazione.
Buona lettura
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/selg-part-0062.html

 no, se lasciano il resto (open_basedir ecc ecc)
Hai ragione, in effetti ho scoperto ora che il basedir,
disable_function, disable_classes sono svincolati dal safe mode. A sto
punto, mi vado a studiare il safe mode di php per capire cosa fa. Tanto
su tutti i siti in hosting che ho, uso solo le restrizioni base dir e
disabilito qualche funzione/classe. Però ho sempre attivato il safe
mode pensando che le 3 funzioni sopra citate fossero utilizzabili solo
in safe mode......
All'interno della singola directory dell'utente, l'utente può fare
quello che vuole quindi il safe mode non dovrebbe servirmi......

 
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/selg-part-0062.html
Grazie per il documento.
Ho notato che tramite un modulo apache è possibile 'forzare'
l'esecuzione degli script ad un determinato utente anzichè quello di
apache.
Potrei forzarlo a nobody:nobody e dovrei essere già abbastanza sicuro
(non credo che nobody possa accedere ai file di configurazione).
Non ho trovato, però, una funzione simile al base_dir di php da
utilizzare per gli script su apache.
Il massimo sarebbe far fare al cliente quello che vuole ma solo e
soltanto dentro la sua directory senza possibilità di uscirne in alcun
modo.

Alessandro wrote:

fai un semplice test.. ovviamente non avrai accesso al suddetto file ne a
tutti gli altri se la distro è RHEL o CentOS già con l'impostazione di
default indipendnetemente dall'utente che vai ad impostare in apache
<?php
if (!$p_file = fopen("/etc/passwd","r")) {
echo "Spiacente, non posso aprire il file";
} else {
while(!feof($p_file))
{
$linea = fgets($p_file, 255);
echo "$linea<BR>";
}
fclose($p_file);
}
?>
~

 
Ma il problema non è php. PHP si mette in sicurezza (quanto basta a me) 
disattivando le 6/7 funzioni di exec e utilizzando open_basedir.
Il problema è che su perl non ho trovato nulla di simile ad open_basedir 
  di php e nemmeno su come limitare determinate funzioni.... e nobody, 
su slackware, di default può gironzolare abbastanza liberamente nel 
sistema (/proc, /boot, /bin, .....).
Allora cercavo qualcosa di più 'plug&play' che cambiare i permessi di 
tutto il sistema andando in contro a chissà quale casino futuro.
Forse il chroot di mod_security potrebbe aiutarmi. Non ha bisogno di un 
ambiente dedicato (niente librerie da copiare etc etc).