Предположим, у вас есть следующее правило iptables: источник A ------> источник B принимает источник B ------> источник A drop.

я заметил, что:- принят первый tcp-пакет от A до B - пакет ответа от B отброшен.

почему ответный пакет отбрасывается? Так как первый пакет из A -> B был разрешен и принят, он должен был быть добавлен в таблицу соединений. когда пакет из B -> A входит, поиск должен быть выполнен до запуска matchmatch и принятия без запуска rulebase, который решает отбросить. почему iptables не выполняет поиск?

Благодарю.

2 ответа2

0

Да, я добавил это и без изменений. Я наблюдаю это как общее поведение, и когда я просматриваю исходный код Iptables, это ожидаемое поведение. Интересно, как вообще можно использовать iptables, так как это совершенно нелепо - добавлять обратное правило. Нельзя обойтись такой рулебазой. Я надеюсь, что мы можем уточнить это. Благодарю.

0

iptables очень низкоуровневый, и когда вы пишете правила iptables, вы имеете дело с необработанными IP-пакетами. Это имеет ряд последствий, одно из которых вы нашли.

Существуют совершенно допустимые случаи использования, когда исходящий трафик должен быть разрешен, но любой соответствующий входящий трафик не должен проходить через брандмауэр; или наоборот, входящий трафик разрешен, но исходящий не разрешен. Одним из распространенных примеров этого является то, войти серверы хранения (которые в свою очередь , часто бывают полезны для аудита): бревенчатый трафик должен быть разрешен в, но ни один не должно быть разрешено вне. В крайнем случае, бревенчатый трафик должен быть разрешен в, но ничего не должно быть разрешено или вне.

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

Если вы хотите разрешить входящий трафик, связанный с уже установленным соединением или сеансом, просто скажите это так:

sudo iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

или для IPv6:

sudo ip6tables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Настройте часть -I INPUT 1 по мере необходимости (например, если у вас есть другие правила, которые должны иметь приоритет над общим правилом разрешения трафика, связанного с установленным соединением или сеансом).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .