Вы можете применить большую часть сведений из этой книги, чтобы исследовать внутренние части специализированной прошивки Linux, хотя вам и встретятся отличия, в особенности при входе в систему. Как и во многих внедренных системах, прошивки с открытым кодом стремятся использовать утилиты BusyBox, чтобы предоставить большинство функций оболочки. Утилиты BusyBox являются единым исполняемым приложением, которое предлагает ограниченную функциональность для многих команд Unix, таких как shell, ls, grep, cat и more. Так экономится существенный объем памяти. Кроме того, команда init для загрузки системы оказывается очень простой во внедренных системах. Тем не менее подобные ограничения не создадут проблем для вас, так как пользовательские прошивки Linux обычно содержат веб-интерфейс для администрирования, который напоминает интерфейс, предлагаемый производителем.
9.21. Брандмауэры
Маршрутизаторы должны всегда содержать какой-либо брандмауэр для запрещения нежелательного трафика в сети.
Система может фильтровать пакеты, когда она:
• получает пакет;
• отправляет пакет;
• перенаправляет пакет другому хосту или шлюзу.
Если брандмауэра нет, система просто обрабатывает пакеты и отправляет их по назначению. Брандмауэры помещают проверочные пункты для пакетов в указанных выше точках передачи данных. На этих проверочных пунктах пакеты удаляются, отклоняются или принимаются, как правило, на основе таких критериев:
• IP-адрес или подсеть источника или пункта назначения;
• порт источника или пункта назначения (в сведениях транспортного уровня);
• сетевой интерфейс брандмауэра.
Брандмауэры обеспечивают возможность работы с подсистемой ядра Linux, которая обрабатывает IP-пакеты. Рассмотрим ее сейчас.
9.21.1. Брандмауэр в Linux: основные понятия
В Linux правила для брандмауэра создаются в виде последовательности, известной как
Все эти структуры данных обслуживаются ядром. Такая система в целом называется таблицами iptables, а команда из пространства пользователя iptables создает правила и управляет ими.
ПРИМЕЧАНИЕ
Есть также более современная система, nftables, которая призвана заменить таблицы iptables. Однако на момент написания книги таблицы iptables являются преобладающими для брандмауэров.
Поскольку таблиц может быть несколько — каждая со своим набором цепочек, содержащих множество правил, — то перемещение пакетов становится довольно сложным. Тем не менее обычно работают с единственной таблицей, которая называется
На рис. 9.5 и 9.6 приведены упрощенные схемы того, где к пакетам применяются правила из таблицы фильтра. Схем две, поскольку пакеты могут либо поступать в систему из сетевого интерфейса (см. рис. 9.5), либо генерироваться локальным процессом (см. рис. 9.6). Как видите, входящий пакет из сети может быть поглощен пользовательским процессом и не достичь цепочки FORWARD или OUTPUT. Пакеты, создаваемые пользовательскими процессами, не достигают цепочек INPUT или FORWARD.
В действительности все сложнее, поскольку есть и другие этапы, помимо этих трех цепочек. Например, пакеты проходят обработку в цепочках PREROUTING и POSTROUTING, а сама обработка может происходить на любом из трех нижних сетевых уровней. Чтобы увидеть полную схему, поищите в онлайн-источниках что-либо под названием «Поток пакетов в сетевом фильтре Linux», но имейте в виду, что подобные схемы пытаются учесть все возможные сценарии поступления и перемещения пакетов. Часто может помочь разбиение схем на основе источников пакетов, как на рис. 9.5 и 9.6.
Рис. 9.5. Последовательность обработки цепочек для входящих пакетов сети
Рис. 9.6. Последовательность обработки цепочек для входящих пакетов от локального процесса
9.21.2. Определение правил для брандмауэра