Назад | Перейти на главную страницу

Какова цель запрета определенного входящего трафика в брандмауэрах?

Многие общие правила брандмауэра включают ряд строк, блокирующих определенный входящий трафик. Возьмите это, например, из ipfw:

# Fragments
$cmd 00420 deny all from any to any frag in via $pif

# ACK packets that did not match the dynamic rule table
$cmd 00430 deny tcp from any to any established in via $pif

В конце, однако, обычно блокируется все, что не соответствует ни одному из правил:

# Deny any other inbound traffic, with logging
$cmd 00998 deny log all from any to any in via $pif

# Deny any other traffic, with logging
$cmd 00999 deny log all from any to any

Какую пользу принесет включение первого набора правил, если мы все равно блокируем весь другой трафик, как показано выше?

Я не могу говорить с ipfw, но в iptables это имеет смысл, так как выигрывает первый диспозитивный матч, и обычно существуют разрешающие правила между явным отказом вверху и общим отказом внизу (если вы не создаете очень и очень тихое устройство!).

Так, например, если вы явно хотите исключить все Марсиане, вам нужно иметь такие строки, как

iptables -A INPUT -s 10.0.0.0/8     -j DROP
iptables -A INPUT -s 172.16.0.0/12  -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP

перед строками вроде

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

потому что в противном случае строка ACCEPT для ssh разрешит марсианам прежде, чем они когда-либо увидят blanket DENY.

Спасибо Майклу Хэмптону за установление того, что та же логика применима к ipfw наборы правил.