В настоящее время я анализирую существующие наборы правил iptables, чтобы внести изменения в политику по умолчанию. Однако мне нужна помощь в понимании парных правил.
$ UNIVERSE определяется как 0.0.0.0/0
. Каковы варианты использования следующего правила?
# Allow any related traffic coming back to the MASQ server in.
-A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate
ESTABLISHED,RELATED -j ACCEPT
Какие типы связанных соединений может иметь HTTP (S)? Мне действительно нужно указывать здесь RELATED?
# External interface, HTTP/HTTPS traffic allowed
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s
$UNIVERSE -d $EXTIP --dport 80 -j ACCEPT
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s
$UNIVERSE -d $EXTIP --dport 443 -j ACCEPT
Зачем мне нужно следующее? Что такое варианты использования?
# Accept solicited tcp packets
-A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate
ESTABLISHED,RELATED -j ACCEPT
Кроме того, когда я это сделаю lsmod
я могу видеть nf_conntrack
и nf_conntrack_ftp
. Мне все еще нужно использовать -m conntrack
или -m nf_conntrack
?
ОБНОВЛЕНИЕ: полный сценарий Вот Мне нужно изменить политику по умолчанию на DROP.
-A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Это правило позволяет пакетам входить на внешний IP-адрес и предназначаться для самого брандмауэра (не проходящего NAT) из любого места, пока состояние УСТАНОВЛЕНО (т. Е. Ответ на исходящий пакет) или СВЯЗАНО (например, сообщение об ошибке ICMP относительно исходный исходящий пакет, например «назначение недоступно»)
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $UNIVERSE -d $EXTIP --dport 80 -j ACCEPT
-A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $UNIVERSE -d $EXTIP --dport 443 -j ACCEPT
NEW, ESTABLISHED и RELATED практически покрывают 99% возможных пакетов на порты 80 и 443. Как и ранее, RELATED в основном используется для сопоставления сообщений об ошибках ICMP.
-A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
В INPUT
Правило выше соответствует пакету, предназначенному самому ящику брандмауэра. В FORWARD
Правило разрешает пакеты, которые предназначены не для самого брандмауэра, а для хоста во внутренней сети. Значения ESTABLISHED и RELATED такие же, как и раньше.
Кроме того, когда я выполняю lsmod, я вижу nf_conntrack и nf_conntrack_ftp. Мне все еще нужно использовать -m conntrack или -m nf_conntrack?
Да. В nf_conntrack
и nf_conntrack_ftp
модули предпосылки для -m conntrack
работать. Он будет загружен автоматически iptables
первый раз -m conntrack
встречается.
Нет такой вещи, как -m nf_conntrack
.
Первое правило будет принимать любые входящие соединения на внешнем интерфейсе (предполагается, от $ EXTIF), на любом исходном адресе к внешнему IP-адресу, если состояние пакета ESTABLISHED или RELATED. Это означает, что НОВЫЕ пакеты не будут пропущены. Возможный вариант использования для этого - если у вас есть НОВЫЙ пакет, полученный через какое-то другое правило.
Возможно, вам понадобится состояние RELATED в HTTP / HTTPS для пакетов в TIME_WAIT, но я не уверен в этом.
Что касается вашего третьего вопроса, правило FORWARD - это пересылка пакетов на внутренний интерфейс (опять же, предполагаемый), вероятно, для туннельного интерфейса, другого хоста или аналогичного.
Из того, что я прочитал, conntrack устарел и теперь заменен nf_conntrack по неизвестным мне причинам.