PDA

View Full Version : Bloccare pc con iptables


HexDEF6
30-11-2004, 11:48
Ho un gateway con linux installato, che fa da firewall, ora per poter disabilitare un computer dal navigare mi basta lanciare sul server il comando:
iptables -A FORWARD -s ip_del_pc -p all -j DROP

e per riabilitarlo:
iptables -D FORWARD -s ip_del_pc -p all -j DROP

Adesso vorrei fare la stessa cosa usando un'interfaccia grafica (magari web), visto che dovrebbero essere delle persone inesperte (eufemismo... non saprebbero lanciare un ssh sul server...) a lanciare questi script, pensando che possano disabilitare la navigazione a tutti i pc di un'aula informatica...

Ovviamente non voglio lasciargli la password da root! e quindi probabilmente dovro' usare sudo, ma per questo non c'e' problema...

Idee? esiste qualcosa di simile gia fatto? o mi tocca imparare un po di php?

Ciao!

S3N
30-11-2004, 14:47
Prova un pò questi

http://www.fs-security.com/

http://www.webmin.com/



Oppure potresti provare questa distribuzione:

http://www.clarkconnect.com/

HexDEF6
30-11-2004, 15:24
Originariamente inviato da S3N
Prova un pò questi

http://www.fs-security.com/


firestarter e' bellino... ma non credo faccia al caso mio...


Originariamente inviato da S3N
http://www.webmin.com/


Ho un certo odio per webmin (non so perche' ma non mi e' mai piaciuto) e non ho voglia di installare tutto webmin per il solo modulo di iptables (che se non vado errato non e' nemmeno cosi' aggiornato!)

Originariamente inviato da S3N
Oppure potresti provare questa distribuzione:

http://www.clarkconnect.com/

Questa e' la via meno percorribile.... oltre al firewall ci gira abbastanza roba sul server, riconfigurare tutto sarebbe un suicidio (e poi non cambierei mai la gentoo!)

Grazie, se hai altre idee sono qui!

kingv
30-11-2004, 15:45
se deve fare solo quello che hai indicato ti conviene scriverti un cgi perl (o una pagina php, vedi tu) che gira su un web aperto solo verso la rete interna.
non e' complicato, e se vuoi puoi gestire una autenticazione per evitare che qualcuno ci metta le mani per giocare.

HexDEF6
30-11-2004, 15:49
Originariamente inviato da kingv
se deve fare solo quello che hai indicato ti conviene scriverti un cgi perl (o una pagina php, vedi tu) che gira su un web aperto solo verso la rete interna.
non e' complicato, e se vuoi puoi gestire una autenticazione per evitare che qualcuno ci metta le mani per giocare.

In effetti era quello che volevo fare... ma di perl e php non ne so nulla... comunque sia per fare la pagina web in php credo non ci metterei molto lo stesso... ma come al solito, preferisco non ricreare la ruota, e se c'e' qualcosa di gia' fatto....

Ciao!

bort_83
30-11-2004, 16:25
potresti creare degli utenti che appartengono al gruppo root e invece di avere una shell gli metti lo script

in /etc/passwd


blocca_web:x:10031:100::/home/blocca_web:/home/blocca_web/blocca.sh
attiva_web:x:10032:100::/home/attiva_web:/home/attiva_web/attiva.sh


solo che se devi specificare gli indirizzi la cosa si fà + complicata....

HexDEF6
30-11-2004, 16:42
Originariamente inviato da bort_83
potresti creare degli utenti che appartengono al gruppo root e invece di avere una shell gli metti lo script

in /etc/passwd


blocca_web:x:10031:100::/home/blocca_web:/home/blocca_web/blocca.sh
attiva_web:x:10032:100::/home/attiva_web:/home/attiva_web/attiva.sh


solo che se devi specificare gli indirizzi la cosa si fà + complicata....

in effetti i pc da bloccare/sbloccare sono 14... non posso mica fare 28 utenti solo per questo!
e comunque preferirei una simil-interfaccia grafica (una pagina web sarebbe perfetta!)

HexDEF6
11-12-2004, 10:36
Fatto....
Il metodo utilizzato e' molto grezzo... diciamo una base su cui si puo' lavorare... in termini di sicurezza non e' proprio il massimo (anzi) quindi modifiche, suggerimenti ecc. sono molto ben accetti.


Pagina php:


<?

//Indirizzi IP pc

$ipAddresses["1"] = "192.168.0.1";
$ipAddresses["2"] = "192.168.0.2";
$ipAddresses["3"] = "192.168.0.3";

//Fine Definizione

$numPC = count($ipAddresses);


$FirstPass = $_GET["FirstPass"];

if ($FirstPass){
for ($i=1;$i<=$numPC;$i++){
$ip = $ipAddresses[$i];
system("sudo \/usr\/bin\/attiva.sh ".$ip);
}

$selectedPCS = $_GET["selectedPCS"];

for ($i=0;$i<count($selectedPCS);$i++){
$ip = $ipAddresses[$selectedPCS[$i]];
printf("Disattivazione PC numero: ".$ip." in corso <br>");
system("sudo \/usr\/bin\/disattiva.sh ".$ip);
}
}

?>

<CENTER>
<FORM ACTION="<?=$PHP_SELF?>" method="GET">
<INPUT TYPE="HIDDEN" NAME="FirstPass" VALUE="true">
<TABLE>
<TR>
<TD COLSPAN="<?=$numPC?>" ALIGN="CENTER"><B><FONT COLOR="BLUE" SIZE="+1">
Che pc vuoi disabilitare?</FONT><B></TD>
</TR>
<TR>

<?
for ($currentPC=1;$currentPC<=$numPC;$currentPC++):
?>

<TD align="center">PC n. <?=$currentPC?></TD>
<?
endfor;
?>

</TR>


<?
for ($currentPC=1;$currentPC<=$numPC;$currentPC++):
?>

<TD align="center"><INPUT TYPE="checkbox" name="selectedPCS[]" value="<?=$currentPC?>"></TD>
<?
endfor;
?>

</TR>


<TR>

<TD COLSPAN="<?=$numPC?>" ALIGN="CENTER">
<INPUT TYPE="Submit" VALUE="Invia"></TD>
</TR>
</TABLE>
</FORM>
</CENTER>
</B>
</BODY>
</HTML>


questa pagina lancia gli script attiva.sh e disattiva.sh in base all'input dell'utente.

attiva.sh:

#!/bin/bash
echo "Attiva pc:" $1 >> /var/log/log_firewall
/sbin/iptables -D FORWARD -s $1 -p all -j DROP



disattiva.sh:

#!/bin/bash
echo "Disattiva pc:" $1 >> /var/log/log_firewall
/sbin/iptables -A FORWARD -s $1 -p all -j DROP


ovviamente questi script vengono lanciati dall'utente apache e quindi non potrebbero funzionare, per questo vengono lanciati con sudo, installate (EDIT: prima avevo scritto "emergete"... abituato a gentoo) sudo e aggiungete queste linee con visudo:

apache ALL = NOPASSWD: /usr/bin/attiva.sh *
apache ALL = NOPASSWD: /usr/bin/disattiva.sh *


Ciao!

kingv
11-12-2004, 15:23
Originariamente inviato da HexDEF6
emergete sudo

ci ho messo 5 minuti a capire cosa volevi dire... :fagiano:


se la sicurezza non è abbastanza puoi creare su apache un virtual host ad hoc e abilitare l'autenticazione (via username e password o certificato).

HexDEF6
11-12-2004, 15:27
Originariamente inviato da kingv
ci ho messo 5 minuti a capire cosa volevi dire... :fagiano:


e' che ero di fretta... e ho fatto la copia del post del forum gentoo :mc:

Originariamente inviato da kingv
se la sicurezza non è abbastanza puoi creare su apache un virtual host ad hoc e abilitare l'autenticazione (via username e password o certificato).

ovviamente metto una pagina con htaccess e do utente e pass ai soli professori...

Ciao!

The X
11-12-2004, 18:51
La tua pagina in PHP mi ha illuminato su come interfacciare il mio script in bash ad una pagina web...

Nn conoscendo nulla d PHP mi chiedevo però 1 cosa....

Il mio script è lungo e complesso MA nn richiede intervento del utente a parte 2 cose :

1) L'inserimento d 4 parametri (e fin qui si potrebbe fare con 4 campi)

2) L'inserimento della password da criptare effettuata tramite il comando "passwd"

Quest'ultima cosa, in particolare, come si potrebbe fare ?

kingv
11-12-2004, 18:57
Originariamente inviato da The X

1) L'inserimento d 4 parametri (e fin qui si potrebbe fare con 4 campi)

2) L'inserimento della password da criptare effettuata tramite il comando "passwd"

Quest'ultima cosa, in particolare, come si potrebbe fare ?


1) hai già scritto la soluzione
2) aggiungi un 5 campo e usi passwd --stdin

The X
12-12-2004, 10:21
Originariamente inviato da kingv
1) hai già scritto la soluzione
2) aggiungi un 5 campo e usi passwd --stdin

--stdin è 1 opzione del passwd ? Perchè se SI a me nn viene accettata....

kingv
12-12-2004, 12:38
Originariamente inviato da The X
--stdin è 1 opzione del passwd ? Perchè se SI a me nn viene accettata....

il mio passwd lo ha come opzione :wtf:

The X
12-12-2004, 13:53
Originariamente inviato da kingv
il mio passwd lo ha come opzione :wtf:

ke distro e versione d passwd usi ? :confused: