Чем отличается таблица межсетевого экрана iptables от цепочки
iptables — утилита командной строки, являющаяся стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux.
Текущие правила на случай перезагрузки хранятся в файле /etc/sysconfig/iptables .
Таблицы, цепочки
- mangle : предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов (поля TTL и TOS).
- nat : предназначена для операций stateful-преобразования сетевых адресов и портов обрабатываемых пакетов.
- security : предназначена для изменения маркировки безопасности (меток SELinux) пакетов и соединений.
- raw : предназначена для выполнения действий с пакетами до их обработки системой conntrack
- filter : предназначена для фильтрации трафика, то есть разрешения и запрещения пакетов и соединений.
В контексте статьи и примерах будем говорить о цепочке filter.
Фильтрация по источнику пакетов
Для фильтрации по источнику используется опция -s .
Для каждого нового соединения к нашему хосту из подсети 10.134.0.64/26 в системном журнале будет появляться запись примерно такого вида:
- Закрываем фрагментированные пакеты (защита от ping flood):
- Запрещаем ping:
- Разрешаем ping только с нужных нам хостов:
- Устанавливаем лимит подключений равный 5 для 80 порта:
Правило iptables: Прием входящих ssh-соединений с определенного MAC-адреса
Используя это правило iptables, мы заблокируем все входящие подключения к порту 22 (ssh), кроме хоста с MAC-адресом 00:e0:4c:f1:41:6b.
Другими словами, все ssh-соединения будут ограничены одним хостом с MAC-адресом 00:e0:4c:f1:41:6b.
I. IPTABLES Таблицы и Цепочки
IPTables имеет следующие 4 встроенные таблицы.
1. Таблица фильтров ( Filter )
Filter – это таблица по умолчанию iptables.
Таким образом, если вы не определите свою собственную таблицу, вы будете использовать таблицу Filter.
Таблица фильтров Iptables имеет следующие встроенные цепочки.
- Цепочка INPUT – входящий траффик в брандмауэр. Для пакетов, поступающих на локальный сервер.
- Цепочка OUTPUT – исходящий траффик из брандмауэра. Для пакетов, генерируемых локально и выходящих из локального сервера.
- Цепочка FORWARD – Пакеты для другого сетевого адаптера на локальном сервере. Для пакетов, маршрутизируемых через локальный сервер.
Базовые действия
Правило iptables: Отклонение входящих подключений на определенном TCP-порту
Следующее правило iptables сбрасывает весь входящий трафик на TCP-порту 3333.
3. Raw таблица
Таблица Iptables Raw предназначена для исключений конфигурации.
Raw таблица имеет следующие встроенные цепочки.
На следующей диаграмме показаны три важные таблицы в iptables.
Заключение
В этом руководстве мы увидели набор основных правил iptables на Linux.
Статья включила всебя некоторые из наиболее распространенных правил, которые обычно применяются к системам, такие как блокировка SSH-соединений, отличных от тех, которые поступают с определенного IP-адреса.
Использование этих правил поможет защитить ваш сервер от атак и повысить безопасность в целом.
Не стесняйтесь адаптировать эти примеры к вашим собственным сценариям.
Anything in here will be replaced on browsers that support the canvas element
Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах. Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области. Эта библиотека используется в большинстве приложений, сервисов и систем. Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году. В связи […]
Самая распространенная команда Docker также является универсальной командой. Узнайте о нескольких вариантах использования команды docker ps. Одной из первых команд Docker, которую вы используете, является команда docker ps. Она показывает запущенные контейнеры: docker ps На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он […]
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
Мануал
Управление сетевым трафиком – одна из самых сложных задач, с которыми приходится сталкиваться системным администраторам.
Мы должны указать, что пользователи работают с утвержденными входящим и исходящим требованиям брандмауэра, чтобы гарантировать защиту системы от атак.
Многие пользователи используют IPTables на Linux в качестве брандмауэра, тогда как в свою очередь IPTables – это просто инструмент командной строки, который помогает администраторам определять правила и взаимодействовать с ядром Linux.
Другими словами этот инструмент позволяет помочь администраторам настроить список правил для входящего и исходящего сетевого трафика, а конкретная реализация фактически находится в ядре Linux.
IPTables включает набор встроенных и определяемых пользователем цепочки правил , и администраторы могут добавить к цепочке различные правила обработки пакетов.
Я познакомлю вас с некоторыми правилами брандмауэра iptables, которые используются администраторами сети.
Разрешить доступ к сетевой карте loopback
Настроим переадресацию портов
Отключим PING
Запуск, остановка и перезапуск IPTables
Просмотр политики брандмауэра IPtables
Используем IPtables для отключения определенного порта
Разрешим установление связанных подключений
При разделении сетевого трафика, чтобы разрешить установку входящих соединений, вы можете использовать следующие правила: ing соединения:
Предотвращение подключения к сетевой карте
Заблокируем правила доставки почты
Если ваша система не используется для доставки почты, мы можем заблокировать исходящий порт SMTP в правиле:
Заблокируем MAC-адрес
Ограничим количество одновременных подключений
Используем диапазон IP-адресов в правилах IPtables для CIDR, например:
Anything in here will be replaced on browsers that support the canvas element
Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах. Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области. Эта библиотека используется в большинстве приложений, сервисов и систем. Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году. В связи […]
Самая распространенная команда Docker также является универсальной командой. Узнайте о нескольких вариантах использования команды docker ps. Одной из первых команд Docker, которую вы используете, является команда docker ps. Она показывает запущенные контейнеры: docker ps На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он […]
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
Правило iptables: Блокировка доступа к определенному сайту
Правило iptables: Отклонение входящих ssh-соединений
Сброс всех входящих подключений к локальному порту 22 (ssh).
Правило iptables: Сброс всех входящих подключений на определенном сетевом интерфейсе
Следующее правило сбрасывает входящий трафик на конкретном сетевом интерфейсе из подсети 192.168.0.0/16.
Это очень полезно при попытке отбросить все поддельные IP-адреса.
Если eth0 является внешним сетевым интерфейсом, входящий трафик, исходящий из внутренней сети, не должен попадать в сетевой интерфейс eth0.
Как происходит фильтрация
Все пакеты пропускаются через определенные для них последовательности цепочек.
При прохождении пакетом цепочки, к нему последовательно применяются все правила этой цепочки в порядке их следования. Под применением правила понимается проверка пакета на соответствие критерию и применение к нему указанного действия.
Под действием может подразумеваться как элементарная операция (встроенное действие, например, ACCEPT, MARK), так и переход в одну из пользовательских цепочек. Действия могут быть как терминальными, то есть прекращающими обработку пакета в рамках данной базовой цепочки (например, ACCEPT, REJECT), так и нетерминальными, то есть не прерывающими процесса обработки пакета (MARK, LOG).
Если пакет прошел через всю базовую цепочку и к нему так и не было применено ни одного терминального действия, к нему применяется действие по умолчанию для данной цепочки.
Правило iptables: Отклонение всех входящих сетевых подключений
3. Mangle таблица
Таблица Mangle Iptables предназначена для специализированного изменения пакетов.
Она изменяет биты QOS в заголовке TCP.
Mangle имеет следующие встроенные цепочки.
- PREROUTING
- OUTPUT
- FORWARD
- INPUT
- POSTROUTING
Правило iptables: Отклонять весь входящий трафик Telnet, кроме указанного IP-адреса.
Следующее правило iptables отклоняет весь входящий трафик Telnet, кроме запроса на соединение с IP-адреса 222.111.111.222.
Принцип построения правила
Каждое правило — это строка, содержащая в себе:
- критерии, определяющие, подпадает ли пакет под заданное правило;
- действие, которое необходимо выполнить в случае выполнения критерия.
Разберём синтаксис подробнее:
- Спецификатор таблицы и описание действия можно указывать в любом месте строки, однако указанный выше формат записи является общепринятым.
- По умолчанию используется таблица filter. Если предполагается использование другой таблицы, то это требуется указать явно.
- Команда должна стоять непосредственно за именем таблицы. Если спецификатора таблицы нет, то команда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п.
- Раздел match задает критерии проверки, по которым определяется подпадает ли пакет под действие этого правила или нет. Здесь мы можем указать самые разные критерии: IP-адрес источника пакета или сети, IP-адрес места назначения, порт, протокол, сетевой интерфейс, другие.
- target указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле.
Правило iptables: Отклонение всего входящего трафика, кроме ssh и локальных подключений
Эти правила будут отклонять все входящие подключения к серверу, кроме подключений к порту 22 (SSH).
Система также будет принимать соединения через интерфейс loopback
Правило iptables: Отклонять весь весь исходящий трафик на конкретный удаленный хост
Следующее правило iptables отклоняет весь исходящий трафик на удаленный хост с IP-адресом 222.111.111.222.
Настройка NAT на примере Debian/Ubuntu
NAT — механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов.
Используется для работы в локальных сетях для скрытия от внешнего доступа одной (или нескольких) машин.
Рассмотрим ситуацию, когда 2 бокса объединены в локальную сеть. Настройки указаны для той машины, которая недоступна извне.
Представим, что интерфейс смотрящий в локальную сеть — eth0, а в интернет — eth. Локальная сеть имеет адреса 192.168.0.0/24, внешний IP-адрес — 185.185.3.3.
В Debian по умолчанию транзитный трафик отключен, поэтому первым делам активируем такую возможность.
- Открываем конфигурационный файл:
- Убираем комментирование в следующей строке (либо добавляем ее при отсутствии):
Теперь приступим к настройке iptables.
- Очищаем таблицы от лишних правил:
- Разрешаем транзитным пакетам трафик по внутреннему диапазону IP-адресов и запрещаем остальной:
- Включаем NAT:
Настройка iptables в панели управления Hestia производится согласно инструкции.
Настройка iptables в панели управления ISP производится в разделе «Система» → «Брандмауэр» веб-интрефейса. Подробнее — в статье.
Мануал
Брандмауэр iptables используется для управления фильтрацией пакетов и правилами NAT.
IPTables поставляется со всеми дистрибутивами Linux.
Понимание того, как установить и настроить iptables, поможет вам эффективно управлять брандмауэром Linux.
Инструмент iptables используется для управления правилами брандмауэра Linux.
На первый взгляд, iptables может показаться сложным (или даже запутанным).
Но, как только вы поймете основы работы iptables и его структуру, чтение и запись правил брандмауэра iptables станет простым делом.
Эта статья является частью продолжающейся серии руководств по iptables.
Это не первая статья в этой серии.
В этой статье объясняется, как структурируется iptables, и объясняются основы таблиц, цепочек и правил iptables.
На высоком уровне iptables может содержать несколько таблиц.
Таблицы могут содержать несколько цепочек.
Цепочки могут быть встроенными или определяемыми пользователем.
Цепочки могут содержать несколько правил.
Правила определены для пакетов.
Итак, структура выглядит так: iptables -> Tables -> Chains -> Rules.
Это определено на следующей диаграмме.
Просто для повторения, таблицы – это куча цепочек, а цепочки – куча правил брандмауэра.
Ключи
Мы рассмотрим часто используемые ключи. Полный список можно получить в выводе --help или документации.
- -t — указывает таблицу правил;
- -A — проверяет, принадлежит ли пакет цепочке;
- -p — проверка протокола пакета;
- -j — указывает, что делать с пакетом;
- -s — проверяет источник пакета;
- -i — проверяет входящий интерфейс.
Примеры iptables
Рассмотрим примеры работы с таблицей filter.
Чтобы после ручного изменения правил они использовались и при перезагрузке системы, их необходимо сохранить командой:
Правило iptables: Cоздания простого IP-маскарадинга
Следующее правило создаст простой шлюз IP Masquerading, чтобы разрешить всем хостам в одной подсети доступ в Интернет.
Указанный ниже eth0 – это внешний интерфейс, подключенный к Интернету.
Правило iptables: Разрыв исходящих telnet-соединений
Это правило iptables блокирует любой исходящий трафик на любой хост, порт назначения которого равен 23 (telnet)
Цепочки таблицы filter
- INPUT — эта цепочка обрабатывает трафик, поступающий непосредственно самому хосту.
- FORWARD — позволяет фильтровать транзитный трафик.
- OUTPUT — эта цепочка позволяет фильтровать трафик, исходящий от самого хоста.
Ключевые понятия
- Правило — состоит из критерия, действия и счетчика. Если пакет соответствует критерию, к нему применяется действие, и он учитывается счетчиком. Критерия может и не быть — тогда неявно предполагается критерий «все пакеты». Указывать действие тоже не обязательно — в отсутствие действия правило будет работать только как счетчик. Правила для каждой цепочки срабатывают в порядке их следования, поэтому порядок важен.
- Критерий — логическое выражение, анализирующее свойства пакета и/или соединения и определяющее, подпадает ли данный конкретный пакет под действие текущего правила. Критерии соединяются логическим «И».
- Действие — описание действия, которое нужно проделать с пакетом и/или соединением в том случае, если они подпадают под действие этого правила. О действиях более подробно будет рассказано ниже.
- Счетчик — компонент правила, обеспечивающий учет количества пакетов, которые попали под критерий данного правила. Также счетчик учитывает суммарный объем таких пакетов в байтах.
- Цепочка — упорядоченная последовательность правил. Цепочки можно разделить на пользовательские и базовые.
- Базовая цепочка — цепочка, создаваемая по умолчанию при инициализации таблицы. Каждый пакет, в зависимости от того, предназначен ли он самому хосту, сгенерирован им или является транзитным, должен пройти положенный ему набор базовых цепочек различных таблиц. Кроме того, базовая цепочка отличается от пользовательской наличием «действия по умолчанию» (default policy). Это действие применяется к тем пакетам, которые не были обработаны другими правилами этой цепочки и вызванных из нее цепочек. Имена базовых цепочек всегда записываются в верхнем регистре (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).
- Пользовательская цепочка — цепочка, созданная пользователем. Может использоваться только в пределах своей таблицы. Рекомендуется не использовать для таких цепочек имена в верхнем регистре, чтобы избежать путаницы с базовыми цепочками и встроенными действиями.
Правило iptables: Отклонить все исходящие сетевые подключения
Вторая строка правил разрешает только текущие исходящие и установленные соединения.
Это очень полезно, когда вы вошли на сервер через ssh или telnet.
Правило iptables: Отклонение всех сетевых подключений
Это правило отключит и заблокирует все сетевые соединения, входящие или исходящие.
Что еще более важно, это также будет включать текущие текущие установленные соединения.
Правило iptables: Отклонение входящих запросов ping
Это правило iptables сбрасывает все входящие запросы ping.
Обратите внимание, что можно использовать REJECT вместо DROP.
Разница между DROP и REJECT заключается в том, что DROP автоматически отбрасывает входящий пакет, тогда как REJECT приведет к возврату ошибки ICMP.
2. NAT таблица
Таблица NAT в Iptables имеет следующие встроенные цепочки.
- PREROUTING – изменяет пакеты перед маршрутизацией. Т.е. преобразование пакета происходит сразу после поступления пакета в систему (и до маршрутизации). Это помогает преобразовать IP-адрес назначения пакетов во что-то, что соответствует маршрутизации на локальном сервере. Она используется для DNAT (целевой NAT).
- Цепочка POSTROUTING – Изменяет пакеты после маршрутизации. Т.е. перевод пакетов происходит, когда пакеты покидают систему. Это помогает преобразовать исходный IP-адрес пакетов во что-то, что может соответствовать маршрутизации на сервер назначения. Она используется для SNAT (источник NAT).
- Цепочка OUTPUT – NAT для локально сгенерированных пакетов на брандмауэре.
Правило iptables: Прием входящих ssh-соединений с определенного IP-адреса
Используя это правило iptables, мы заблокируем все входящие подключения к порту 22 (ssh), кроме хоста с IP-адресом 77.66.55.44.
Это означает, что только хост с IP 77.66.55.44 сможет использовать ssh.
Правило iptables: Отклонение исходящих ssh-соединений
Это правило iptables будет отклонять все исходящие соединения, поступающие с локального порта 22 (ssh).
II. IPTABLES ПРАВИЛА
Ниже приведены ключевые моменты, которые следует помнить для правил iptables.
- Правила содержат критерии и целевые значения.
- Если критерий соответствует, iptables переходит к правилам, указанным в цели (или), выполняет специальные значения, указанные в цели.
- Если критерий не сопоставлен, iptables переходит к следующему правилу.
Ниже приведены возможные специальные значения, которые вы можете указать в цели.
ACCETP Брандмауэр примет пакет.
DROP – брандмауэр сбросит пакет.
QUEUE – Брандмауэр передаст пакет в пространство пользователя.
RETURN – межсетевой экран прекратит выполнение следующего набора правил в текущей цепочке для этого пакета. Элемент управления будет возвращен в вызывающую цепочку.Если вы выполняете iptables-list (или) service iptables status, вы увидите все доступные правила брандмауэра в вашей системе.
В следующем приемлемом примере показано, что в этой системе не определены правила брандмауэра.
Как вы видите, он отображает таблицу input по умолчанию, с цепочкой input по умолчанию, цепочкой прямой forward и цепочкой output.
Сделайте следующее, чтобы просмотреть таблицу mangle.
Для просмотра таблицы nat выполните следующие действия.
Для просмотра таблицы raw выполните следующие действия.
Примечание. Если вы не укажете опцию -t, будет отображена таблица filter по умолчанию. Итак, обе следующие команды одинаковы.
В следующем примере показано, что существуют некоторые правила, определенные в цепочке input, forward и output таблицы фильтров.
В выводе данных команды iptables –list содержат следующие поля у правил:
- num – номер правила в определенной цепочке
- target – специальная переменная target, которую мы обсуждали выше
- prot – протоколы. TCP, UDP, ICMP и т. д.,
- opt – Специальные опции для этого конкретного правила.
- source – IP-адрес источника пакета
- destination – IP-адрес получателя пакета
Anything in here will be replaced on browsers that support the canvas element
Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах. Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области. Эта библиотека используется в большинстве приложений, сервисов и систем. Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году. В связи […]
Самая распространенная команда Docker также является универсальной командой. Узнайте о нескольких вариантах использования команды docker ps. Одной из первых команд Docker, которую вы используете, является команда docker ps. Она показывает запущенные контейнеры: docker ps На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он […]
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
В этой статье мы рассмотрим порядок прохождения таблиц и цепочек в каждой таблице iptables. Информация будет полезна при составлении правил и даст понимание порядка прохождения пакета по всем таблицам и цепочкам iptables, особенно, когда в наборы правил будут включаться такие действия как DNAT, SNAT и TOS.
Пакет, приходящий на firewall сперва попадает на сетевое устройство, перехватывается драйвером и передается в ядро системы. Далее пакет проходит ряд таблиц и в зависимости от правил, находящихся в этих таблица, решается дальнейшая судьба.
Таблица 1. Порядок прохождения FORWARD пакетов
Шаг Таблица Цепочка Примечание 1 ═ ═ Кабель (т.е. Интернет) 2 ═ ═ Сетевой интерфейс (например, eth0) 3 Mangle PREROUTING Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр.. 4 Nat PREROUTING Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях 5 ═ ═ Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет — локальному приложению или на другой узел сети. 6 Filter FORWARD В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации. 7 Mangle FORWARD Далее пакет попадает в цепочку FORWARD> таблицы mangle, которая должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации. 8 ═ ═ Принятие решения о дальнейшей маршрутизации, т.е. в этой точке, к примеру, решается на какой интерфейс пойдет пакет. 9 Nat POSTROUTING Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскировка (Masquerading). 10 Mangle POSTROUTING Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации. 11 ═ ═ Выходной сетевой интерфейс (например, eth1). 12 ═ ═ Кабель (пусть будет LAN). Как вы можете видеть, пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables или что либо еще, но нас главным образом интересует iptables. Заметьте, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся через наш firewall/роутер. Не используйте цепочку INPUT для фильтрации транзитных пакетов, они туда просто не попадают! Через эту цепочку движутся только те пакеты, которые предназначены данному хосту.
Таблица 2. Порядок движения INPUT пакетов
Пакеты OUTPUT имеют обратный порядок прохождения через таблицы. Порядок прохождения представлен в таблице 3.
Таблица 3. Порядок прохождения OUTPUT пакетов
Шаг Таблица Цепочка Примечание 1 ═ ═ Локальный процесс 2 Mangle OUTPUT Здесь производится внесение изменений в заголовок пакета. Фильтрация, выполняемая в этой цепочке, может иметь негативные последствия. 3 Nat OUTPUT Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра. 4 Filter OUTPUT Здесь фильтруется исходящий траффик. 5 ═ ═ Принятие решения о маршрутизации. Здесь решается — куда пойдет пакет дальше. 6 Nat POSTROUTING Здесь выполняется Source Network Address Translation (SNAT). Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP. 7 Mangle POSTROUTING Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра. 8 ═ ═ Сетевой интерфейс (например, eth0) 9 ═ ═ Кабель (т.е., Internet) И визуальное представление прохождения пакетов:
Этот рисунок дает довольно ясное представление о порядке прохождения пакетов через различные цепочки. В первой точке принятия решения о маршрутизации (routing decision) все пакеты, предназначенные данному хосту направляются в цепочку INPUT, остальные — в цепочку FORWARD.
Обратите внимание также на тот факт, что пакеты, с адресом назначения на брандмауэр, могут претерпеть трансляцию сетевого адреса (DNAT) в цепочке PREROUTING таблицы nat и соответственно дальнейшая маршрутизация в первой точке будет выполняться в зависимости от произведенных изменений.
Мануал
Цель этого руководства – показать некоторые из наиболее распространенных команд iptables для систем Linux.
iptables – это брандмауэр, встроенный во все дистрибутивы Linux.
Даже такие дистрибутивы, как Ubuntu, который использует ufw (несложный брандмауэр) и Red Hat, который использует firewalld, по-прежнему передают свои команды iptables и используют его в фоновом режиме.
Владение iptables или, по крайней мере, знакомство с некоторыми из самых основных команд оченьважно для администраторов Linux.
🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
Даже обычные пользователи Linux могут извлечь выгоду из понимания основ брандмауэра iptables, поскольку им может потребоваться применить к нему некоторые незначительные настройки в какой-то момент.
Используйте некоторые из приведенных ниже примеров, чтобы ознакомиться с синтаксисом iptables и получить представление о том, как он работает для защиты вашей системы.
Правило iptables: Отклонять весь входящий трафик ssh, кроме указанного диапазона IP-адресов.
Следующее правило iptables отклоняет весь входящий трафик ssh, кроме запроса на соединение из диапазона IP-адресов 10.1.1.90 – 10.1.1.1.100.
Удаление “!” из приведенного ниже правила отклонить весь трафик ssh, исходящий из диапазона IP-адресов 10.1.1.90 – 10.1.1.100.
Закрытие/открытие общих портов
Ниже приведен синтаксис для открытия портов общих портов TCP и UDP. Для закрытия правила выглядят аналогично, только необходимо изменить ACCEPT на DROP.
- Открыть доступ к порту 25 (SMTP) для всех:
- Открыть доступ к порту 53 (DNS) для всех:
- Открыть доступ к портам 80,443 (Apache) для всех:
- Открыть доступ к порту 110 (POP3) для всех:
- Открыть доступ к порту 143 (IMAP) для всех:
- Открыть доступ к порту 3306 для IP-адреса:
Читайте также: