URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 22809
[ Назад ]

Исходное сообщение
"Как удалить правило из IPFW"

Отправлено byte , 10-Ноя-02 13:03 
Есть вот такой список правил для примера:

01200 allow tcp from 192.168.1.239 to 192.168.1.241
01300 allow tcp from 192.168.1.239 to 192.168.1.241
01400 allow tcp from 192.168.1.239 to 192.168.1.241
01500 allow tcp from 192.168.1.239 to 192.168.1.241

Как из удалить без flush, без использования номера правила.


Содержание

Сообщения в этом обсуждении
"RE: Как удалить правило из IPFW"
Отправлено Ilia , 11-Ноя-02 12:07 
>Есть вот такой список правил для примера:
>
>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>
>Как из удалить без flush, без использования номера правила.

ipfw flushyt не использовать, ipfw delete NN не использовать...
То-есть, как удалить правило не удаляя его? Никак.


"RE: Как удалить правило из IPFW"
Отправлено byte , 11-Ноя-02 12:14 
>>Есть вот такой список правил для примера:
>>
>>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>>
>>Как из удалить без flush, без использования номера правила.
>
>ipfw flushyt не использовать, ipfw delete NN не использовать...
>То-есть, как удалить правило не удаляя его? Никак.

как в ipchains есть ключ -A добавить правило, -D удалить...
Причём писать можно не только сам номер, но и полностью такое же правило как добавлялось ключом -A.  


"RE: Как удалить правило из IPFW"
Отправлено LinaS , 11-Ноя-02 13:57 
>>>Есть вот такой список правил для примера:
>>>
>>>01200 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01300 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01400 allow tcp from 192.168.1.239 to 192.168.1.241
>>>01500 allow tcp from 192.168.1.239 to 192.168.1.241
>>>
>>>Как из удалить без flush, без использования номера правила.
>>
>>ipfw flushyt не использовать, ipfw delete NN не использовать...
>>То-есть, как удалить правило не удаляя его? Никак.
>
>как в ipchains есть ключ -A добавить правило, -D удалить...
>Причём писать можно не только сам номер, но и полностью такое же
>правило как добавлялось ключом -A.

а вот так не подойдет?

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



"RE: Как удалить правило из IPFW"
Отправлено byte , 11-Ноя-02 14:01 
>а вот так не подойдет?
>
>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";
}