Запуск узнать о IPtables, почему мне нужно это правило?

Я читал весь день о таблицах IP, как правила работают, подшипники для основных веб-серверов, и т.д. Теперь я пытаюсь настроить свой веб-сервер с IPtables, использующим этот поток в качестве начальной точки: Хороший iptables стартовые правила для веб-сервера?

Так как я не хочу просто копировать, вставляют что-либо, что работает, я добавляю правило правилом и рассматриваю каждое правило относительно того, почему мне было бы нужно оно. Я приехал, чтобы обнаружить, что мне в основном был нужен доступ через порт 80, 443, 22, 587 (mailserver).

Однако я не могу получить доступ к своему сайту через домен после добавления этих правил. Так я по сравнению с потоком я упомянул, и я обнаружил, что у меня не было этого правила:

# Allow traffic already established to continue 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Таким образом, я добавил это правило протестировать вещи и все внезапные, я мог получить доступ к своему веб-сайту. Затем я думал, возможно, поэтому я уже соединялся с веб-сайтом от этого IP, но если я соединяюсь через другой IP / сети, я все еще могу получить доступ к своему веб-сайту, зависящему от того правила.

Поскольку я хочу понять это, я действительно не добираюсь, почему доступ к моему сайту зависит от того правила. Уже существует правило, позволяющее входящий трафик через порт 80 (который является портом, на котором мой веб-сервер работает), но appearantly просто, что правило недостаточно? PS, это - правило, я должен в данный момент открыть порт 80:

target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:http

Я надеюсь, что кто-то может пролить некоторый свет о том правиле и почему я могу получить доступ к своему сайту с тем правилом а не без.

Править: Я действительно добираюсь, почему можно было бы хотеть добавить это правило, я считаю, что оно ускорило бы вещи, поскольку оно не должно больше проходить все другие правила, но я просто хочу понять, почему в моем случае очень важно иметь это правило для доступа к моему сайту..

Спасибо!

0
задан 13 April 2017 в 15:14
1 ответ

iptables - брандмауэр statefull, как и stateless, что означает, что он идентифицирует соединения как потоки, связанные с состояниями. соединение сначала инициализируется (НОВОЕ состояние), (SYN-пакет для tcp, или первый пакет для UDP). Затем принимается решение (BLOCK, DROP или ACCEPT). Это то, что вы создали до правила ESTABLISHED. Если пакет принимается в НОВОМ состоянии, то пакеты, принадлежащие одному и тому же соединению, не понадобятся (это уже не НОВОЕ состояние. Для tcp это будет SYN-ACK, ACK, Тужься, тужься, ... пакеты). Эти пакеты принадлежат государству ESTABLISHED. Обычно, ESTABLISHED пакеты принимаются, чтобы заставить его работать.

Если вы не активируете это правило, у вас будет stateless брандмауэр. Чтобы правило заработало, вам нужно будет принимать каждый пакет, соответствующий выбранным вами портам. Это может привести к проблемам безопасности (подумайте, что на клиентском брандмауэре, пытающемся связаться с веб-сервером, каждый пакет, идущий к порту 80 или идущий с порта 80 вебсервера, будет принят (для ответа вебсервера). Если кто-то подделывает IP-адрес веб-сервера, то он полностью обходит брандмауэр, до тех пор, пока он пытается соединиться с исходным портом 80.

RELATED здесь не требуется. Это соответствует трафику, не принадлежащему соединению, но иногда полезноl:

  • когда порт закрыт, испускается ICMP-порт, недоступный, эти пакеты не принадлежат соединению, но могут быть полезныl
  • для таких протоколов, как FTP, чей порт данных выбран внутри контрольного трафика; RELATED авторизует трафик данных, даже если с ним не связано явное правило.

Больше об этом здесь

3
ответ дан 4 December 2019 в 12:27

Теги

Похожие вопросы