Как за каменной стеной!

Докучаев Дмитрий aka Forb

Xakep, номер #058, стр. 058-066-1

(forb@real.xakep.ru)

Настраиваем фаервол iptables

Люди, установившие себе Linux в качестве рабочей станции, нередко придерживаются мнения, что хакеры тянутся только к крупным серверам, поэтому фаервол им ни к чему. Это не совсем верно. Дело в том, что в большинстве случаев взломщику просто наплевать, что ломать и куда вторгаться. Поэтому о своей защите лучше позаботиться заранее, чтобы потом не пришлось кусать локти и сожалеть о собственной беспечности.

История iptables

Для начала вспомним, что такое фаервол. По сути, это стандартный фильтр пакетов, параметры которого задает пользователь. Юниксоидам, в отличие от виндузятников, с "огненной стеной" повезло. Фаервол является обязательным атрибутом всех unix-like систем. В линуксе, например, в истории развития операционки можно проследить три фаервола: сперва был простой в использовании ipfadm (его синтаксис схож с ipfw, характерным для BSD-систем), затем с развитием ядра Linux появился ipchains. Он уже умел делать NAT (замена source-ip) и REDIRECT (замена destination-port) и работал на 2.2.х ядрах. С появлением ветки 2.4 приобрел популярность фаервол iptables, который имел множество различных функций и модулей. Самая последняя версия этого брандмауэра - 1.2.7a.

Перекроем врагу кислород

Обычно для активации фаервола достаточно выполнить команду service iptables start. После этого будут загружены модули iptable_nat, iptable_owner, iptable_state и iptable_filter. Каждый модуль отвечает за определенные функции. После запуска фаервола можно посмотреть наличие всех (пока еще пустых) цепочек. Делается это командой iptables -L. Будет видно, что у брандмауэра есть три главных цепи: INPUT, OUTPUT и FORWARD. В них как раз и записываются правила, определяющие политику работы фаервола. Политик может быть две - ACCEPT, которая принимает все пакеты без исключения (по умолчанию), и DROP, фильтрующая все соединения, если нет исключающих правил. Кроме того, пользователь может создать свои личные цепи и соединить их с главными.

INPUT

INPUT содержит в себе правила, проверяющие любые входящие в систему пакеты. После такой проверки ядро "решает" - пропустить пакет или блокировать. Фильтровать пакет можно двумя способами - DROP, делая вид, что сервер недоступен, и REJECT - эмуляция отсутствия сервиса (при этом запрете на порт, фаервол ответит на запрос - connection refused, как будто порт вообще не светится).

OUTPUT

В этой цепочке находятся правила, обрабатывающие исходящие пакеты. Принцип работы аналогичен INPUT. При наличии запрещающих правил пакет фильтруется и не выпускается из системы наружу.

FORWARD

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

Практика

Теперь ты знаешь назначение цепей iptables. Тогда попробуем провести небольшую настройку iptables, после которой злоумышленник не сможет проникнуть на твой комп. Саму настройку лучше производить в онлайне, т.к. в случае ошибки фаервол просто заблокирует все входящие соединения.

Содержание  Вперед на стр. 058-066-2
ttfb: 3.1440258026123 ms