>а вот так не подойдет?
>
>root@# ipfw show
>00050 0 0 deny
>udp from any to me 137-139
>00100 2223 217065 allow ip from any to any
>65535 0 0 deny
>ip from any to any
>
>root@# ipfw delete `ipfw -a l | grep "deny udp from any
>to me 137-139"|cut -f 1 -d " "`
>
>root@# ipfw show
>00100 2223 217065 allow ip from any to any
>65535 0 0 deny
>ip from any to any
Вариант, я вот ещё такую конфигу нашёл
#!/usr/bin/perl
$buffer="$ENV{'QUERY_STRING'}";
if (length($buffer) == 0) {
&PrintHeader;
&PrintFooter;
exit 0;
}
#system("/bin/echo \'$buffer\' \>\>/1111");
($cmd,$ip) = split('&', $buffer);
($temp, $cmd) = split('=', $cmd);
($temp, $ip) = split('=', $ip);
($temp, $temp, $temp, $ruleset) = split('\.',$ip);
$ruleset=$ruleset*100;
if ($ruleset <= 900) {
&PrintHeader;
&PrintFooter;
exit 0;
}
&PrintHeader;
if ($cmd == 2) {
system("/usr/local/bin/sudo /sbin/ipfw add $ruleset deny all from any to $ip via xl0 >/dev/null");
system("/usr/local/bin/sudo /sbin/ipfw add $ruleset deny all from $ip to any via xl0 >/dev/null");
if (&CheckFirewallRules($ruleset) == 1) {
print "<center>Service stopped for $ip.</center>\n";
} else {
print "<center>Operation error! Please, contact system administrator!</center>\n";
}
print "</body>\n";
&PrintFooter;
exit 0;
} else {
system ("/usr/local/bin/sudo /sbin/ipfw delete $ruleset");
if (&CheckFirewallRules($ruleset) == 0) {
print "<center>Service started for $ip.</center>\n";
} else {
print "<center>Operation error! Please, contact system administrator!</center>\n";
}
print "</body>\n";
&PrintFooter;
exit 0;
}
exit 0;
sub GetIP {
return $ENV{'REMOTE_ADDR'};
}
sub CheckFirewallRules($) {
my ($fwrule);
open (FW, "/usr/local/bin/sudo /sbin/ipfw show $_[0]|");
$fwrule=<FW>;
close FW;
if (length($fwrule) !=0) {return 1} else {return 0}
}
sub PrintHeader {
print "Content-type: text/html\n\n";
print "<head>\n";
print "\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n";
print "</head>";
}
sub PrintFooter {
print "\n";
}