Iptables centos 7 где хранятся правила
Перейти к содержимому

Iptables centos 7 где хранятся правила

Настройка iptables в CentOS 7

Настройка iptables в CentOS 7

Во всех операционных системах, основанных на базе ядра Linux, имеется встроенный межсетевой экран, осуществляющий контроль и фильтрацию входящего и исходящего трафика, исходя из заданных пользователем или платформой правил. В дистрибутиве CentOS 7 по умолчанию такую функцию выполняет утилита iptables, взаимодействуя со встроенным брандмауэром netfilter. Иногда системному администратору или менеджеру сети приходится настраивать работу этого компонента, прописывая соответствующие правила. В рамках сегодняшней статьи мы бы хотели поговорить об основах конфигурации iptables в упомянутой выше ОС.

Настраиваем iptables в CentOS 7

Сам инструмент доступен к работе сразу же после завершения инсталляции CentOS 7, но дополнительно потребуется установить некоторые сервисы, о чем мы и поговорим далее. В рассматриваемой платформе имеется еще один встроенный инструмент, выполняющий функцию фаервола под названием FirewallD. Для избежания конфликтов при дальнейшей работе рекомендуем отключить этот компонент. Развернутые инструкции по этой теме читайте в другом нашем материале по следующей ссылке.

Как известно, в системе могут применяться протоколы IPv4 и IPv6. Сегодня мы остановимся на примере IPv4, но если вы хотите осуществлять конфигурацию для другого протокола, потребуется вместо команды iptables в консоли использовать ip6tables.

Установка сервисов iptables

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

  1. Все дальнейшие действия будут производиться в классической консоли, поэтому запустите ее любым удобным методом.

Запуск терминала для настройки утилиты iptables в CentOS 7

Установка сервисов для работы утилиты iptables в CentOS 7

Ввод пароля для установки сервисов iptables в CentOS 7 через терминал

Подтверждение добавления новых пакетов сервисов iptables в CentOS 7

Проверка версии утилиты iptables в CentOS 7 через терминал

Отображение текущей версии утилиты iptables в CentOS 7 через терминал

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

Остановка и запуск сервисов iptables

Управление режимом работы iptables требуется в тех случаях, когда нужно проверить действие определенных правил или просто выполнить перезапуск компонента. Делается это при помощи встроенных команд.

    Введите sudo service iptables stop и нажмите на клавишу Enter, чтобы остановить сервисы.

Остановка сервисов утилиты iptables в CentOS 7 через терминал

Ввод пароля для остановки сервисов утилиты iptables в CentOS 7

Уведомление об остановке сервисов утилиты iptables в CentOS 7

Запустить сервисы утилиты iptables в CentOS 7 в терминале

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

Просмотр и удаление правил

Как уже было сказано ранее, управление межсетевым экраном производится путем ручного или автоматического добавления правил. Например, некоторые дополнительные приложения могут обращаться к инструменту, изменяя определенные политики. Однако большинство подобных действий все же делается вручную. Просмотр списка всех текущих правил доступен через команду sudo iptables -L .

Отобразить список всех текущих правил утилиты iptables в CentOS 7

В отобразившемся результате будет информация по трем цепочкам: «INPUT», «OUTPUT» и «FORWARD» — входящий, исходящий и пересылаемый трафик соответственно.

Вид списка всех правил утилиты iptables в CentOS 7

Определить статус всех цепочек можно, введя sudo iptables -S .

Отображение списка цепей утилиты iptables в CentOS 7

Если увиденные правила вас не устраивают, они достаточно просто удаляются. Весь список очищается так: sudo iptables -F . После активации правила будут стерты абсолютно для всех трех цепей.

Очистить список всех правил утилиты iptables в CentOS 7

Когда необходимо затронуть только политики из какой-то одной цепи, к строке добавляется дополнительный аргумент:

sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD

Очистить список правил для определенной цепи iptables в CentOS 7

Отсутствие всех правил означает, что сейчас не применяется никаких настроек фильтрации трафика ни в одну из сторон. Далее системный администратор уже самостоятельно задает новые параметры, используя всю ту же консоль, команду и различные аргументы.

Прием и сбрасывание трафика в цепях

Каждая цепь настраивается отдельно для приема или блокирования трафика. Выставив определенное значение, можно добиться того, что, например, весь входящий трафик будет блокироваться. Для этого команда должна быть sudo iptables —policy INPUT DROP , где INPUT — название цепи, а DROP — значение сброса.

Сброс входящих запросов в утилите iptables в CentOS 7

Точно такие же параметры задаются и для других цепей, например, sudo iptables —policy OUTPUT DROP . Если же необходимо выставить значение на прием трафика, тогда DROP изменяется на ACCEPT и получается sudo iptables —policy INPUT ACCEPT .

Разрешение и блокировка портов

Как известно, все сетевые приложения и процессы работают через определенный порт. Путем блокировки или разрешения определенных адресов можно контролировать доступ всех сетевых целей. Давайте разберем проброс порта на примере 80. В «Терминале» будет достаточно ввести команду sudo iptables -A INPUT -p tcp —dport 80 -j ACCEPT , где — добавление нового правила, INPUT — указание цепи, -P — определение протокола, в этом случае TCP, а --dport — порт назначения.

Правило для открытия порта 80 в утилите iptables в CentOS 7

Точно такая же команда относится и к порту 22, который используется сервисом SSH: sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT .

Правило для открытия порта 22 в утилите iptables в CentOS 7

Для блокирования указанного порта применяется строка точно такого же вида, только в конце ACCEPT изменяется на DROP. В итоге получается, например, sudo iptables -A INPUT -p tcp —dport 2450 -j DROP .

Правило для запрета порта в утилите iptables в CentOS 7

Все эти правила заносятся в конфигурационный файл и вы можете просмотреть их в любой момент. Напоминаем, осуществляется это через sudo iptables -L . Если вместе с портом необходимо разрешить еще и сетевой IP-адрес, строка немного видоизменяется — после TPC добавляется -s и сам адрес. sudo iptables -A INPUT -p tcp -s 12.12.12.12/32 —dport 22 -j ACCEPT , где 12.12.12.12/32 — необходимый IP-адрес.

Правило для принятия IP-адреса и порта в iptables в CentOS 7

Блокирование происходит по тому же принципу, меняя в конце значение ACCEPT на DROP. Тогда получается, например, sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 —dport 22 -j DROP .

Правило для блокировки IP-адреса и порта в iptables в CentOS 7

Блокирование ICMP

ICMP (Internet Control Message Protocol) — протокол, который входит в состав TCP/IP и задействован для передачи сообщений об ошибках и экстренных ситуациях при работе с трафиком. Например, когда запрашиваемый сервер недоступен, именно этот инструмент выполняет сервисные функции. Утилита iptables позволяет заблокировать его через брандмауэр, а сделать это можно командой sudo iptables -A OUTPUT -p icmp —icmp-type 8 -j DROP . Она произведет блокировку запросов от вашего и к вашему серверу.

Первое правило для блокировки пропинговки iptables в CentOS 7

Входящие запросы блокируются немного иначе. Тогда нужно ввести sudo iptables -I INPUT -p icmp —icmp-type 8 -j DROP . После активации данных правил сервер не будет отвечать на ping-запросы.

Второе правило для блокировки пропинговки в iptables в CentOS 7

Предотвращение несанкционированных действий на сервере

Иногда серверы подвергаются DDoS атакам или другим несанкционированным действиям со стороны злоумышленников. Правильная настройка межсетевого экрана позволит обезопасить себя от подобного рода взломов. Для начала мы рекомендуем задать такие правила:

    Пропишите в консоли iptables -A INPUT -p tcp —dport 80 -m limit —limit 20/minute —limit-burst 100 -j ACCEPT , где --limit 20/minute — ограничение на частоту положительных результатов. Единицу измерения вы можете указывать самостоятельно, например, /second, /minute, /hour, /day . --limit-burst number — ограничение на число пропускаемых пакетов. Все значения выставляются индивидуально по предпочтениям администратора.

Правило для безопасности от DDoS в iptables в CentOS 7

Первое правило для запрета сканирования портов iptables в CentOS 7

Второе правило для запрета сканирования портов iptables в CentOS 7

Третье правило для блокирования сканирования портов iptables в CentOS 7

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

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.

Перенос правил iptables на новый сервер

При смене сервера часто возникает необходимость перенести правила iptables. Данное руководство продемонстрирует простой способ переноса активных правил фаервола с одного сервера на другой.

Требования

Для выполнения руководства нужно иметь два сервера. Исходный сервер, на котором находятся правила фаервола, называется в руководстве сервером A; целевой сервер – B.

Также нужно иметь права sudo.

Просмотр правил iptables

Прежде чем приступить к переносу правил брандмауэра, нужно просмотреть их. Для этого выполните следующую команду на сервере A:

sudo iptables -S
Example output:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP

Теперь нужно перенести эти правила на другой сервер.

Экспорт правил Iptables

Команда iptables-save сохранит текущие правила брандмауэра в stdout, после чего его можно будет сохранить в файл.

Используйте эту команду на сервере А, чтобы экспортировать правила в файл iptables-export.

sudo iptables-save > iptables-export

После этого в домашнем каталоге появится файл iptables-export, при помощи которого можно перенести правила фаервола на другой сервер.

Просмотр файла (опционально)

Проверьте, содержит ли новый файл все необходимые данные:

cat iptables-export
# Generated by iptables-save v1.4.21 on Tue Sep 1 17:32:29 2015
*filter
:INPUT ACCEPT [135:10578] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [8364:1557108] -A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp —dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp —dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP
COMMIT
# Completed on Tue Sep 1 17:32:29 2015

Как видите, данный файл содержит все текущие правила iptables, и теперь можно скопировать этот файл на целевой сервер.

Перенос правил на целевой сервер

Проще всего для этого использовать scp или же просто скопировать и вставить содержимое файла в новый файл на целевом сервере.

Ниже показано, как при помощи scp скопировать файл по сети в каталог /tmp.

Итак, запустите команду scp на сервере А, указав логин и IP-адрес сервера.

scp iptables-export user@server_b_ip_address:/tmp

Пройдя авторизацию, файл будет скопирован в каталог /tmp на сервер В.

Примечание: Содержимое каталога /tmp будет удалено при перезагрузке системы. Не забудьте переместить файл в более надёжный каталог.

Импорт правил

Теперь можно загрузить перенесённые правила.

Примечание: В случае необходимости сейчас можно обновить их, добавив данные нового сервера; отредактируйте файл /tmp/iptables-export, внеся всё необходимое.

Когда правила будут соответствовать требованиям данного сервера, загрузите их из файла iptables-export при помощи команды iptables-restore.

На сервере В запустите:

sudo iptables-restore < /tmp/iptables-export

Чтобы убедиться, что правила загружены успешно, используйте:

sudo iptables -S

Сохранение правил

Несохранённые правила фаервола действительны только в течение одной сессии; чтобы сделать набор правил постоянным, нужно его сохранить. Убедитесь, что вы на сервере В, и следуйте соответствующему разделу.

Сохранение правил в Ubuntu

Для сохранения правил брандмауэра система Ubuntu предлагает пакет iptables-persistent. Чтобы установить этот пакет, введите команду:

sudo apt-get install iptables-persistent

Во время установки программа предложит сохранить текущие правила iptables. Выберите yes.

В дальнейшем для сохранения новых или обновлённых правил используйте команду:

sudo invoke-rc.d iptables-persistent save

Сохранение правил в CentOS 6 и 7

По умолчанию системы CentOS 6 и 7 используют фаервол FirewallD; чтобы сохранить правила iptables, используйте:

sudo service iptables save

Это сохранит текущие правила iptables в файл /etc/sysconfig/iptables, который загрузится после перезапуска системы.

Как сохранить правила iptables

Рабочую копию правил Netfilter хранит в пространстве ядра linux. Ядро по умолчанию разрешает все подключения, что мы видим при выполнении команды iptables с опцией -L При этом все изменения правил, сделанные нами во время работы операционной системы, автоматически обычно никуда не сохраняются при выключении компьютера. Поэтому после очередного включения вы обнаруживаете, что настроенных правил опять нет и везде установлены политики по умолчанию — ACCEPT.

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

Конечно, заново настраивать каждый раз после перезагрузки компьютера набор правил межсетевого экрана не выгодно, поэтому нам необходимы средства сохранения и восстановления параметров брандмауэра после включения нашей машины. Наиболее распространенных вариантов решения этой проблемы два:

  • С помощью утилиты iptables-save и загружать их с помощью iptables-restore;
  • С помощью утилиты iptables-persistent (данный вариант возможен в операционных системах Debian и Ubuntu).

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

Как сохранить правила iptables

Для сохранения правил межсетевого экрана Netfilter в linux можно использовать пакет iptables-save. Данный пакет записывает текущую конфигурацию в файл с указанным именем. Существуют две версии данного пакета:

  • iptables-save для протокола IPv4;
  • ip6tables-save для протокола IPv6.

Синтаксис команд одинаковый, поэтому мы рассмотрим вариант ipv4.

iptables-save [ -m modprobe ] [ -c ] [ -t таблица ] [ -f имя файла ]

  • -m modprobe: Указывает путь к программе modprobe. По умолчанию iptables-save проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe — утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
  • -c: включает в поток вывода программы все счетчики количества переданных байтов и пакетов;
  • -t таблица: выводит в поток вывода только одну таблицу, которая была явно указана. При отсутствии флага выводит все таблицы настроек firewall;
  • -f имя файла: Указывает имя файла записи настроек. Если файл не указан, то вывод происходит в поток вывода на экран STDOUT.

В самом простом варианте команда будет выглядеть, например, следующим образом:

sudo iptables-save -f /etc/iptables-conf/iptables_rules.ipv4

Вы можете использовать свою папку, имя файла и расширение. Возможно использование другого синтаксиса данной команды:

sudo iptables-save > /etc/iptables-conf/iptables_rules2.ipv4

В данном варианте команды iptables-save выводит оформленные правила в поток вывода на экран STDOUT, который мы перенаправляем в указанный нами файл. Предварительно необходимо создать директорию /etc/iptables-conf/:

sudo mkdir /etc/iptables-conf/

Просмотреть содержимое каталога можно с помощью команды:

ls -la /etc/iptables-conf/

Как загрузить правила iptables

Для ручного восстановления настроек можно использовать вызов утилиты iptables-restore. Она восстанавливает настройки брандмауэра Netfilter с указанного файла или из потока ввода STDIN, если файл не задан явно. Рассмотрим синтаксис iptables-restore:

iptables-restore [ -chntvV ] [ -w секунды ] [ -W миллисекунды ] [ -M modprobe ] [ -T таблица ] [ имя файла ]

  • -c: восстанавливает значения всех счетчиков пакетов и байтов;
  • -n: позволяет не сбрасывать содержимое правил обновляемой таблицы правил iptables. Если не указан — все текущие правила обновляемой таблицы сбрасываются. Получается, что правила из файла дописываются в конец таблиц рабочей конфигурации, если указан этот параметр;
  • -t: происходит только сборка и тестирование набора правил из файла, без обновление рабочей таблицы правил iptables;
  • -v: выводит дополнительную отладочную информацию в течении восстановления набора правил;
  • -V: выводит номер версии программы;
  • -w секунды: дождаться монопольной блокировки фильтра пакетов ядра linux xtables. Применяется, чтобы предотвратить одновременное выполнение нескольких экземпляров утилиты. Опция заставляет ждать программу в течении некоторого времени возможности монопольной блокировки xtables;
  • -W миллисекунды: интервал ожидания для каждой попытки запуска пакета в монопольном режиме. Часто многие приложения системы критичны к времени запуска и выполнения, поэтому длительное ожидания для монопольной блокировки xtables часто является неприемлемым. Данный параметр в миллисекундах задает максимальное время такого ожидания. По умолчанию равно 1 секунде. Применяется только совместно с ключом -w;
  • -M modprobe: Указывает путь к программе modprobe. По умолчанию iptables-restore проверяет /proc/sys/kernel/modprobe для определения пути к исполняемому файлу. modprobe — утилита управления модулями ядра. Существует несколько вариантов данной утилиты. Данный параметр можно проигнорировать;
  • -T таблица: Восстанавливает только таблицу правил с указанным именем, даже если поток данных содержит другие таблицы;
  • имя файла: путь до файла с восстанавливаемыми таблицами правил в файловой системе

Вот пример команды iptables-restore:

sudo iptables-restore -vV /etc/iptables-conf/iptables_rules.ipv4

Или вариант восстановления правил из файла без сброса содержимого текущих таблиц Netfilter:

sudo iptables-restore -nvV /etc/iptables-conf/iptables_rules.ipv4

Автозагрузка правил iptables

1. Загрузка правил с помощью скрипта

Сохраненные правила с помощью утилиты iptables-save можно восстанавливать с помощью скрипта, запускаемого при каждом запуске операционной системы. Для этого необходимо выполнить следующие действия:

Сохранить набор правил межсетевого экрана с помощью команды:

sudo iptables-save -f /etc/iptables-conf/iptables_rules.ipv4

Для запуска набора правил при старте операционной системы перед включением сетевого интерфейса мы создаем новый файл с помощью команды:

sudo vi /etc/network/if-pre-up.d/iptables

Заметим — в сети есть много вариантов места размещения скрипта на локальной машине, но я считаю именно размещение в папке if-pre-up.d наиболее верным, так как при этом скрипт будет выполнятся перед включением сетевого интерфейса. Добавляем в данный файл следующий скрипт:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables_rules.ipv4

Сохраняем файл iptables Ctrl+O. Выходим из editor Ctrl+X. Устанавливаем необходимые права для созданного файла:

sudo chmod +x /etc/network/if-pre-up.d/iptables

Перезагружаем компьютер и проверяем результат для таблицы filter с помощью команды:

sudo -t filter iptables -L

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

2. Автозагрузка правил iptables-persistent

По умолчанию данный пакет не установлен в операционной системе. Данный вариант реализации автозапуска конфигурации возможен в операционных системах Debian, Ubuntu. Для установки пакета требуется выполнить команду:

sudo apt-get install iptables-persistent

Этот пакет впервые стал доступен в Debian (Squeeze) и Ubuntu (Lucid). Используемые этим пакетом правила iptables хранятся в следующих директориях:

  • /etc/iptables/rules.v4 для набора правил протокола IPv4;
  • /etc/iptables/rules.v6 для набора правил протокола IPv6.

Но они должны быть сохранены в понятном утилите iptables-persistent виде.

Требования к формату данных файлах не задокументированны, что создает некоторые сложности для создания этих файлов вручную. Их можно создать с помощью dpkg-reconfigure:

sudo dpkg-reconfigure iptables-persistent

Или можно использовать iptables-save и ip6tables-save:

sudo iptables-save > /etc/iptables/rules.v4

sudo ip6tables-save > /etc/iptables/rules.v6

Если мы были внимательны при установке пакета, то мы должны были заметить в Debian 10 и последних версиях Ubuntu пакет-зависимость для iptables-persistent: netfilter-persistent, устанавливаемых с нужным нам пакетом. Можно по адресу https://packages.ubuntu.com посмотреть содержимое пакета iptables-persistent, и мы заметим, что на текущий момент пакет называется iptables-persistent, а основные файлы уже относятся к пакету netfilter-persistent.

Утилита netfilter-persistent тоже позволяет управлять автозагрузкой правил. Вот её синтаксис:

sudo netfilter-persistent [ действие ]

Где [действие] может принимать следующие значения:

  • start — вызывает все плагины с параметром start, для загрузки правил в netfilter;
  • stop — если настроена конфигурация сброса настроек Netfilter при остановке плагина, сбрасывает все настройки firewall на значения по умолчанию. Иначе просто выдает предупреждение;
  • flush — плагины вызываются с параметром flush, что приводит к сбросу правил межсетевого экрана на значения по умолчанию;
  • save — вызывает плагины с параметром save, позволяя сохранить значения правил брандмауэра в файлы на диске;
  • reload — не задокументированный параметр, возникали случаи когда параметр start не срабатывал, помогал вызов этого параметра для загрузки правил из файла на диске;

Значит, чтобы сохранить правила мы можем вызвать следующую команду:

sudo netfilter-persistent save

Для загрузки же сохраненных правил мы можем использовать команду:

sudo netfilter-persistent start

Замечание: После установки netfilter-persistent система при использовании iptables и формата хранения файлов, связанного с ним, начинает при работе выдавать предупреждение

# Warning: iptables-legacy tables present, use iptables-legacy to see them.

Это связано с наличием новой утилиты настройки и редактирования правил Netfilter — nftables, для миграцию на эту утилиту старых правил iptables можно использовать автоматический транслятор правил iptables-translate. Но это уже тема для отдельной статьи.

Выводы

Итак, в этой статье мы рассмотрели где хранятся правила iptables а также как сохранить правила iptables после перезагрузки, разобрались с настройкой скрипта автозагрузки и пакета iptables-persistent.

alt=»Creative Commons License» width=»» />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *