Верно ли говорить:
А) ВЫВОД цепочка предназначена для пакетов, которые "генерируется"самим аппаратом, т. е. выходная цепочка влияет на подключить () функция.
Б) ВВОД цепочка предназначена для пакетов, которые "адресовано"и закончится на машине, т.е. цепочка INPUT влияет на привязать () и Слушать() функции.
Если да, то зачем вам контролировать эти функции на брандмауэре? Брандмауэр - это не веб-сервер, который прослушивает порт 80, или клиент, который подключается к этому порту.
Правильно ли я предполагаю, что эти цепочки существуют только для удовлетворения потребностей многоцелевой машины (которая является, скажем, межсетевым экраном и веб-сервером одновременно)?
Цепочки INPUT и OUTPUT работают так, как вы описываете.
Даже машина с брандмауэром не является «многоцелевым» компьютером, рекомендуется настроить цепочки INPUT и OUTPUT так, чтобы разрешать вход и выход только явно желаемого трафика. Если у вас есть дисциплина, чтобы использовать эти цепочки и на «многоцелевых» компьютерах, вы получаете преимущество, когда злоумышленник пытается, например, использовать исходящее HTTP-соединение для передачи кода эксплойта 2-го уровня на сервер, который он атакует.
Ваши утверждения верны, но они неполны.
Взгляните на картину целиком: http://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
Это может ответить на ваши настоящие и многие будущие вопросы.
Многим нужен брандмауэр, потому что:
- компьютер действует как маршрутизатор, поэтому блокировка некоторых потоков является желательной функцией
- компьютер управляется людьми. И люди не идеальны. Так что использование брандмауэра - это круто, если вы забыли удалить какой-то сервер или если сервер неисправен (например, «обычный» ntpd, который всегда хочет прослушивать все интерфейсы, даже когда вы просите его не отвечать)
- netfilter можно использовать для перенаправления портов (на другой порт или на другой компьютер)
- netfilter может использоваться, чтобы разрешить доступ к веб-серверу только некоторым IP-адресам, или для реализации блокировки портов и т. д.
- и многое другое
Цепочки INPUT / OUTPUT обеспечивают высокую степень безопасности. Многие приложения не имеют точного контроля над тем, откуда они принимают соединения (или где они могут подключаться), поэтому нам нужен универсальный способ управления этим.
Кроме того, существует множество атак / эксплойтов, которые iptables может смягчить. Допустим, происходит очень простая атака переполнением соединений, когда кто-то одновременно открывает тонну соединений. Очередь входящих подключений вашего приложения может заполниться, что приведет к сбою законных подключений. Iptables может предотвратить это.
Существует общепринятый минимальный список правил iptables, которые должны быть реализованы на всех серверах в целях безопасности. Видеть Вот (есть более «официальный» источник этих правил, но я не могу вспомнить, где он находится).
Что ж, вместо использования цепочки OUTPUT вы можете «просто» убедиться, что:
Вместо использования цепочки INPUT вы можете «просто» убедиться, что:
TL; DR iptables предоставляет вам базовый обязательный контроль доступа (MAC) в поле дискреционного контроля доступа (DAC) или даже полностью неконтролируемом поле.