Введение в iptables

Если вы достаточно давно работаете с Linux, то знаете, что есть много способов защитить свой компьютер. Что вы можете знать, а можете и не знать, так это то, что некоторые из этих средств являются просто интерфейсами для всемогущего. iptables инструмент. IPtables — очень мощная и сложная система, которая может контролировать пакетный трафик в вашей системе. Он может запрещать, отклонять, разрешать, маршрутизировать и делать с этим трафиком все, что вы хотите … и все это из командной строки. Конечно, вместе с этой властью возникает серьезная сложность.

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

Что такое iptables?

Как я упоминал ранее, iptables — это мощный способ управления пакетным трафиком на ваш Linux-сервер и обратно. Но как ему это удается? Это достигается путем создания ТАБЛИЦ, состоящих из ЦЕПЕЙ. Есть три типа цепочек:

  • ВХОД: контролирует входящие пакеты.
  • ВЫХОД: контролирует исходящие пакеты.
  • FORWARD: контролирует пересылаемые пакеты.

Они также применяются к политикам по умолчанию. Когда вы устанавливаете операционную систему Linux, у нее будет три предопределенных цепочки iptables (по одной для каждой из перечисленных выше).

Теперь каждая цепочка может обрабатывать пакетный трафик одним из четырех различных способов (действий):

  • ПРИНЯТЬ: разрешить вход / выход пакета.
  • REJECT: целевое устройство отклонит пакет.
  • DROP: пакет немедленно отбрасывается, и целевое устройство никогда не видит указанный пакет.
  • ВОЗВРАТ: перейдите к другой цепочке в вашем столе, как если бы она никогда не видела цепочку отклонения.

Итак, теперь у вас есть ТАБЛИЦА, состоящая из ЦЕПЕЙ, которые используют ДЕЙСТВИЯ для маршрутизации трафика. Становится ли это легче? Теперь на машине может быть несколько ТАБЛИЦ, но это слишком сложно для вводной статьи. Ваша машина также будет иметь ПОЛИТИКУ по умолчанию для каждой цепи (ВХОД, ВЫХОД, ВПЕРЕД). По умолчанию для этих ПОЛИТИК установлено действие ПРИНЯТЬ.

Вы также должны понимать, что когда пакет прибывает на машину, он должен пройти через цепочку iptables CHAIN, пока не будет соответствовать правилу CHAIN, или не пройдет через все правила без повреждений. Из-за этого вы хотите аккуратно создавать свои цепочки. Если вы этого не сделаете, вы можете получить трафик, который хотите ПРИНЯТЬ, будучи ОТКЛОНЕННЫМ из-за плохо упорядоченной цепочки. Например:

Допустим, вы хотите ПРИНЯТЬ весь ssh-трафик внутри вашей внутренней сети для безопасного прохода к вашим машинам. Но что, если у вас есть правило CHAIN, которое ОТКАЗЫВАЕТ трафик ssh до этого внутреннего правила? Если вы сделаете это, весь внутренний ssh-трафик также будет ОТКЛОНЕН. В этом случае вам нужен следующий порядок цепочки ТАБЛИЦ:

ЦЕПЬ ПРИНЯТИЯ входящего ssh-трафика LAN

ЦЕПЬ ОТКЛОНЕНИЕ входящего трафика WAN ssh

Давайте посмотрим, как вы используете itables как команду для создания или изменения цепочек ПОЛИТИКИ.

Применение

фигура 1

Если вы дадите команду iptables -L все ваши текущие цепочки будут перечислены, как показано на рисунке 1. ПРИМЕЧАНИЕ. iptables команда ДОЛЖНА запускаться либо от имени пользователя root, либо с помощью судо.

Как вы можете видеть, в моих выводах моя ТАБЛИЦА состоит из трех ЦЕПЕЙ политик по умолчанию, и для каждой в настоящее время установлено действие ПРИНЯТЬ. Что, если я хочу изменить свою политику INPUT на DROP? В конце концов, вы хотите, чтобы входящий трафик имел полный доступ к вашей машине? Вы можете установить для поля POLICY значение DROP с помощью следующей команды:

sudo iptables -P ПАДЕНИЕ ВВОДА

То, что вы фактически сделали выше, — это установка ПОЛИТИКИ ВВОДА по умолчанию на ОТКЛОНЕНИЕ. Таким образом, без создания каких-либо новых ЦЕПЕЙ весь входящий трафик на эту машину будет ОТКЛОНЕН. Вот в чем проблема … скажем, вы хотите разрешить ssh-трафик на эту машину? Если оставить все как есть, этого не произойдет. Поскольку для параметра INPUT POLICY установлено значение REJECT, и у вас нет других ЦЕПЕЙ, входящий трафик работать не будет. Однако помните, что я сказал о создании ЦЕПЕЙ в правильном порядке, чтобы необходимый трафик мог найти безопасный проход.

Вывод

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