Olá pessoal.
Tenho um problema curioso e até agora sem solução.
Meu firewall roda em Debian/Woody/IPTables sem problemas.
Preciso bloquear seletivamente o acesso à web em alguns laboratórios de
informática e a solução encontrada foi utilizar um script em PHP que remove a
regra de nat do firewall para o tal laboratório e o bicho fica isolado, como
precisamos.
Acontece que consigo remover a regra mas não consigo restaura-la quando
termina a aula.
O script está correto mas não consigo executar algo como 'iptables -A
laboratorio3 ...'
'iptables -F laboratorio3' funciona legal.
O script está em anexo.
Alguma luz?
Obrigado,
João Henrique
if($web=="para" || $web=="libera"){
$IP=substr($REMOTE_ADDR,0,9);
if($IP=="10.130.0.27"){
if($web="para"){
exec("sudo /sbin/iptables -I laboratorio 1 -p all -s 10.130.0.27/32 -j ACCEPT");
exec("sudo /sbin/iptables -I laboratorio 2 -p all -s 10.130.0.0/24 -d ! 10.0.0.0/8 -j DROP");
}
if($web="libera"){
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.0.27/32 -j ACCEPT");
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.0.0/24 -d ! 10.0.0.0/8 -j DROP");
}
}
if($IP=="10.130.2.27"){
if($web="para"){
exec("sudo /sbin/iptables -I laboratorio 1 -s 10.130.2.27 -j ACCEPT");
exec("sudo /sbin/iptables -I laboratorio 2 -s 10.130.2.0/24 -d ! 10.0.0.0/8 -j DROP");
}
if($web="libera"){
$i = shell_exec("sudo /sbin/iptables -D laboratorio -s 10.130.2.27 -d ! 10.0.0.0/8 -j ACCEPT");
}
}
if($IP=="10.130.3.51"){
if($web="para"){
exec("sudo /sbin/iptables -I laboratorio 1 -p all -s 10.130.3.51/32 -j ACCEPT");
exec("sudo /sbin/iptables -I laboratorio 2 -p all -s 10.130.3.0/24 -d ! 10.0.0.0/8 -j DROP");
}
if($web="libera"){
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.3.51/32 -j ACCEPT");
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.3.0/24 -d ! 10.0.0.0/8 -j DROP");
}
}
if($IP=="10.130.4.55"){
if($web="para"){
exec("sudo /sbin/iptables -I laboratorio 1 -p all -s 10.130.4.55/32 -j ACCEPT");
exec("sudo /sbin/iptables -I laboratorio 2 -p all -s 10.130.4.0/24 -d ! 10.0.0.0/8 -j DROP");
}
if($web="libera"){
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.4.55/32 -j ACCEPT");
exec("sudo /sbin/iptables -D laboratorio -p all -s 10.130.4.0/24 -d ! 10.0.0.0/8 -j DROP");
}
}
}
else{
echo "
";
}
?>