[Tech] su-script

Gianni Bianchini giannibi@firenze.linux.it
Sab 26 Lug 2003 17:28:52 CEST


On Sat, Jul 26, 2003 at 04:23:56PM +0200, Leonardo Boselli wrote:

> tali script mi vanno a toccare alcune configurazioni, con uso di
> programmi di root (iptables e ifconfig, in particolare).
> quale è la soluzione più efficiente ? (creare una copia di iptables con
> gruppo root:quello_del_mio_utente e suiddato non piace a tanti?)

Il problema principale e' che se l'input che viene dato al programma
privilegiato (setuid) viene fornito dall'utente, quest'input dev'essere
fidato. Se l'input e' "cablato" all'interno di un altro programma
o script chiamante su cui l'utente non ha possibilita' di scrittura e i
diritti d'esecuzione di tale programma sono ben circoscritti, puoi
- lasciare iptables come sta,
- creare e rendere setuid un programmino wrapper che ti lancia
un altro script o direttamente la linea di comando di iptables dopo aver
creato un environment sicuro.

La copia setuid di iptables (ammesso che funzioni, non ho provato)
ha i seguenti (ovvi?) svantaggi:
- un altro processo con le stesse credenziali del supposto chiamante
puo' modificare qualunque cosa e isolarti la macchina, questo
comprende anche la possibilita' di far fare al processo chiamante (non
privilegiato) cose che non e' pensato per fare, e questo
indipendentemente dal fatto che l'utente debba o meno fornire un
input,
- c'e' di nuovo il problema di validare l'eventuale input e
iptables non e' un programma fatto per essere eseguito setuid, per
cui ci sta che la validazione dell'input sia meno rigida che in un
programma che invece e' fatto per questo scopo (es. pppd), quindi c'e'
bisogno di fare controlli a monte.

In due parole, se l'operazione privilegiata da fare e' sempre la
stessa, vai (moderatamente) liscio, se l'utente ci deve mettere del
suo entri in un bel ginepraio, e una possibile soluzione e' la lettura
(completa :) ) dell'ottimo

http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO

e un bel po' di ponderazione.

> PS: per vari motivi tali script hanno permission 600 .. si può eseguorli
> senza cambiarli in 700 (ossia da perl un system("sh script") lo prende ?)

Curiosita': qual e' il problema a renderli eseguibili?

> (NB: l'utente è un demone lanciato da root, che però gira con permessi
> inferiori)--

Se il processo conserva l'uid reale o salvato (viva Gapil) a root,
puoi recuperarlo e non c'e' bisogno di rendere nulla setuid.

Ciao.
Gianni.




Maggiori informazioni sulla lista flug-tech