View Full Version : Bloccare pc con iptables
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!
Prova un pò questi
http://www.fs-security.com/
http://www.webmin.com/
Oppure potresti provare questa distribuzione:
http://www.clarkconnect.com/
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!
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.
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!
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....
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!)
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!
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).
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!
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 ?
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
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....
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:
Originariamente inviato da kingv
il mio passwd lo ha come opzione :wtf:
ke distro e versione d passwd usi ? :confused:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.