Newsgroup: it.comp.sicurezza.unix
Titolo: Lanciare batch script da remoto in maniera sicura

Innanzitutto ben trovati a tutti, dato che sono nuovo qua sopra...
volevo provare a vedere se c'era qualcuno disposto a condividere qualche 
idea su un mio problemino.
La situazione č questa: ho una vetusta applicazione gestionale che č 
composta essenzialmente di un set di qualche centinaio di shell script, 
miscelati tra comandi SQL, comandi di stampa, e cosě via.
C'era un front end che consentiva all'utente di scegliere quale lanciare 
in maniera pseudo interattiva passandogli gli opportuni parametri e amen.
Il sistema č in via di riscrittura per passare ad una logica client 
server; tuttavia molti di questi script ancora non sono stati convertiti 
e c'e' l'esigenza di continuare a usarli lanciandoli da un menu che 
stavolta č presente nel client, che gira su PC.
La soluzione piů diretta mi pare sia quella di usare robe tipo rsh o 
rexec che pero' vorrei evitare per ovvi motivi...
Stavo pensando di affrontare il problema in questo modo:
- uso un client command line che si basi su SSH (tipo plink, della suite 
di PuTTy)
- tramite il client SSH lancio un programma wrapper (scritto in perl o 
altro strumento analogo) sul server
- il programma wrapper prende come parametri il nome dello script da 
lanciare e gli argomenti della riga di comando da passargli
- il wrapper fa alcune verifiche (tipo che il comando che gli viene dato 
č effettivamente uno degli script presenti, che i parametri abbiano 
senso ecc.) e poi lancia l'esecuzione del batch
I batch difficilmente restituiscono qualcosa di sensato quindi al 
momento non mi interessa dare particolari informazioni di ritorno se non 
il semplice fatto che il batch sia stato effettivamente lanciato o no, 
eventualmente.
Che dite, sto tralasciando qualche soluzione migliore? Qualche altro 
suggerimento?
TIA, ciao a tutti
-- 
Fabrizio "Hermooz" Ermini

Riposto perchè ne su 
news.interbusiness.it
 nè su 
groups.google.com
compare.
Hermooz wrote:
[...]
 > La situazione è questa: ho una vetusta applicazione gestionale che è
 > composta essenzialmente di un set di qualche centinaio di shell script,
 > miscelati tra comandi SQL, comandi di stampa, e così via.
 > C'era un front end che consentiva all'utente di scegliere quale lanciare
 > in maniera pseudo interattiva passandogli gli opportuni parametri e amen.
 >
[...]
 > c'e' l'esigenza di continuare a usarli lanciandoli da un menu che
 > stavolta è presente nel client, che gira su PC.
 >
 > La soluzione più diretta mi pare sia quella di usare robe tipo rsh o
 > rexec che pero' vorrei evitare per ovvi motivi...
[...]
Una curiosità: vuoi usare ssh anche per controllare gli accessi 
(password/key) o solo per non far viaggiare pacchetti in chiaro ?
A meno che non si tratti di una soluzione quick & dirty (ma non c'è
niente di più definitivo del provvisorio :-)), personalmente preferirei 
forse rifare i menu o scrivere i wrapper che lanciano i batch come cgi ,
così potrebbero essere usati sia da browser (eventualmente anche per 
verificare l'esito dei batch) sia, probabilmente, dai client attuali
utilizzando wget o lynx per fare le richieste http, o sbaglio ?
Ciao,
Andrea

 utilizzando wget o lynx per fare le richieste http, o sbaglio ?
beh, certo, funzionerebbe, ma non vedo che ci guadagno a farli girare 
come CGI... non aumento ne' la sicurezza nè l'efficienza e devo comunque 
usare un programmino esterno (tipo lynx o wget, appunto) per lanciarli...
-- 
Fabrizio "Hermooz" Ermini

 
Non so... non ho le idee del tutto chiare, voleva solo essere uno spunto
di riflessione, dalla mia posizione (non conoscendo la "situazione") non
sono in grado di fornire soluzioni, quel poco che posso fare è suggerire 
alternative, punti di vista differenti :-)
Sotto l'aspetto della sicurezza ci sono pro e contro la cui importanza
sei in grado di "pesare" solo tu: usando ssh i batch verrebbero eseguiti
in un ambiente shell, o sbaglio ? in questo caso mi piacerebbe avere una 
ragionevole sicurezza che non sia possibile lanciare un comando tipo:
batch_01.sh `rm -rf *`, e che non sia neppure possibile acceddere
direttamente (via telnet/ssh) alla shell.
Con un wrapper cgi questi problemi mi sembrano più gestibili (il
controllo non è assunto dalla shell ma da un programma che può fare
le opportune verifiche sulla correttezza degli argomenti prima di
passare il controllo alla shell) ma ciò non vuol dire che non se ne
presentino altri.
Ciao,
Andrea