Astra linux iptables save

Содержание
  1. Настройка правил iptables в Linux
  2. Введение
  3. Основы Iptables
  4. Пример настройки iptables
  5. Шаг 1 – Установка брандмауэра Iptables в Linux
  6. 1. Установка Iptables
  7. 2. Проверка текущего состояния Iptables
  8. Шаг 2 – Определение правил
  9. 1. Разрешение трафика на локальном узле
  10. 2. Разрешение подключений к портам HTTP, SSH и SSL
  11. 3. Фильтрация пакетов по источнику
  12. 4. Запрет всего остального трафика
  13. Удаление правил iptables
  14. Настройка NAT (MASQUERADE)
  15. Проброс портов
  16. Сохранение изменений в iptables
  17. Восстановление настроек
  18. Заключение
  19. iptables. Сохранение и восстановление правил
  20. Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности
  21. Как навсегда сохранить правила iptables в Linux
  22. Постоянное сохранение правил брандмауэра iptables в Linux
  23. Шаг 1 — Откройте терминал
  24. Шаг 2. Сохраните правила брандмауэра Linux для IPv4 и IPv6.
  25. ОТОБРАЖЕНИЕ СОХРАНЕННЫХ ПРАВИЛ В LINUX
  26. Шаг 3. Восстановите правила файловой защиты Linux для IPv4 и IPv6.
  27. Шаг 4 — Установка пакета iptables-persistent для Debian или Ubuntu Linux

Настройка правил iptables в Linux

Введение

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

Важно: В последних дистрибутивах RHEL/CentOS по умолчанию используется служба firewallD, уже установленная в системе. Если вы хотите использовать Iptables, сначала нужно ее отключить.

Для рассматриваемого примера используются VPS на Ubuntu 16.04 и локальная машина с SSH-клиентом

Основы Iptables

Все данные передаются по сети в виде пакетов. Ядро Linux предоставляет интерфейс для фильтрации пакетов входящего и исходящего трафика при помощи специальных таблиц. Iptables — это приложение командной строки и межсетевой экран для Linux, которым можно пользоваться для создания, поддержания работоспособности и проверки этих таблиц.

Можно создать несколько таблиц. В каждой таблице может содержаться несколько цепочек. Цепочка — это набор правил. Каждое правило определяет, что делать с пакетом, если он соответствует условиям. При соответствии пакета над ним выполняется целевое действие (TARGET). Это может быть проверка следующей цепочкой или один из следующих вариантов:

  • ACCEPT: разрешить передачу пакета.
  • DROP: запретить передачу пакета.
  • RETURN: пропустить текущую цепочку и перейти к следующему правилу в цепочке, которая ее вызвала.

В данном руководстве мы будем работать с одной из таблиц по умолчанию, которая называется фильтром (filter). В таблице фильтра есть три цепочки (набора правил):

  • INPUT – используется для контроля входящих пакетов. Можно разрешать или блокировать подключения по порту, протоколу или IP-адресу источника.
  • FORWARD – используется для фильтрации пакетов, приходящих на сервер, но перенаправляемых куда-либо еще.
  • OUTPUT – используется для фильтрации исходящих пакетов.

Пример настройки iptables

Давайте рассмотрим настройку iptables, на примере настройки доступа к web серверу.

Шаг 1 – Установка брандмауэра Iptables в Linux

1. Установка Iptables

Iptables предустановлен практически во всех дистрибутивах Linux, но если у вас его нет, в системах Ubuntu/Debian воспользуйтесь командами:

или в Centos/RedHat

2. Проверка текущего состояния Iptables

Эта команда позволит вам проверить состояние текущей конфигурации Iptables. Опция -L используется для выведения всех правил, а опция -v — для более подробной информации:

В рассматриваемом примере во всех трёх цепочках установлена политика по умолчанию ACCEPT. Ни в одной цепочке нет никаких правил. Давайте изменим цепочку INPUT для фильтрации входящего трафика.

Шаг 2 – Определение правил

Определение правила означает внесение его в список (цепочку). Вот пример команды Iptables с обычными опциями. Некоторые из них не являются обязательными.

Опция -A означает “append”, добавление правила в конец цепочки. Очень важным моментом является то, что правила в цепочке применяются последовательно, и если пакет удовлетворяет условиям одного из них, последующие применяться не будут. Это всегда нужно помнить при создании наборов правил. Таблица означает таблицу, в которой редактируются цепочки. По умолчанию это filter. Цепочка — имя цепочки, к которой мы добавляем правило. Интерфейс — сетевой интерфейс, для которого выполняется фильтрация трафика. Протокол указывает сетевой протокол, пакеты которого вы хотите фильтровать, источник — IP-адрес отправителя пакета, номер порта — порт на вашем сервере, для которого применяется правило. Эти и некоторые другие опции будут рассмотрены ниже при демонстрации соответствующих действий. Для более подробной информации о команде Iptables и ее опциях обратитесь к соответствующей man-странице.

Читайте также:  Windows 10 отключение слежки телеметрии

1. Разрешение трафика на локальном узле

Первым делом нам нужно обязательно разрешить трафик через интерфейс loopback. Чтобы связь между приложениями и базами данных на сервере продолжалась в обычном режиме.


Опция -A используется для добавления в цепочку INPUT правила, разрешающего все соединения для интерфейса lo. Это обозначение для интерфейса loopback, он используется для всей связи на локальном узле, например, связи между базой данных и веб-приложением на одной машине.

2. Разрешение подключений к портам HTTP, SSH и SSL

Нам требуется, чтобы в обычном режиме работали порты HTTP (порт 80), https (порт 443), ssh (порт 22). Для этого нужно выполнить следующие команды. В них мы при помощи опции -p указали протокол, а при помощи опции —dport (destination port, порт на принимающей стороне, в данном случае это ваш сервер) соответствующий каждому протоколу порт:

Теперь все TCP-подключения с этими номерами портов будут разрешены. На самом деле для подключения по порту ssh лучше разрешить не со всех ip адресов, а только с определенных. Для защиты вашего сервера, как это сделать написано ниже

3. Фильтрация пакетов по источнику

Если вам нужно принимать или отклонять пакеты по IP-адресу или диапазону IP-адресов источника, можно указать их при помощи опции -s. Например, чтобы принимать пакеты с адреса 192.168.1.3:

вместо хоста также можно указать и полностью сеть, например для разрешения подключения по ssh только с локальной сети 192.168.1.0/24 пропишите правило

Отклонение команд с IP-адреса задаётся аналогичной командой с опцией DROP:

Если нужно отклонять или принимать пакеты с диапазона IP-адресов, вам потребуется воспользоваться модулем Iprange с опцией -m и при помощи параметра —src указать диапазон:

4. Запрет всего остального трафика

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

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

Как мы видим для интерфейса loopback у нас разрешен любой трафик, по портам 80 и 443 можно подключиться с любого ip. А по порту 22 можно подключиться только с сети 192.168.1.0/24. Не забудьте сохранить настройки, иначе после перезагрузке вы потеряете все изменения. Как сохранить написано ниже.

Удаление правил iptables

Если нужно удалить все правила и прописать все заново с чистого листа, можно воспользоваться командой очистки (flush):

Она удаляет все существующие правила. Если вам нужно удалить конкретное правило, воспользуйтесь опцией -D. Сначала при помощи опции —line-numbers выведите пронумерованный список всех правил:


Для удаления правила нужно указать цепочку и номер в списке. В нашем случае это цепочка INPUT и номер 3.

Настройка NAT (MASQUERADE)

Большинство организаций получает от своих интернет-провайдеров ограниченное количество публично доступных IP-адресов, поэтому администратору требуется разделять доступ к Интернету, не выдавая каждому узлу сети публичный IP-адрес. Для доступа к внутренним и внешним сетевым службам узлы локальной сети используют внутренний (частный) IP-адрес. Граничные маршрутизаторы (межсетевые экраны) могут получать входящие соединения из Интернета и передавать их нужным узлам локальной сети и наоборот, направлять исходящие соединения узлов удаленным интернет-службам. Такое перенаправление сетевого трафика может быть опасным, особенно учитывая доступность современных средств взлома, осуществляющих подмену внутренних IP-адресов и таким образом маскирующих машину злоумышленника под узел вашей локальной сети. Чтобы этого не случилось, в Iptables существуют политики маршрутизации и перенаправления, которые можно применять для исключения злонамеренного использования сетевых ресурсов. Политика FORWARD позволяет администратору контролировать маршрутизацию пакетов в локальной сети. Например, чтобы разрешить перенаправление всей локальной сети, можно установить следующие правила (в примере предполагается, что внутренний IP-адрес брандмауэра/шлюза назначен на интерфейсе eth1):

Эти правила предоставляют системам за шлюзом доступ к внутренней сети. Шлюз направляет пакеты от узла локальной сети к узлу назначения и наоборот (опции -o и -i), передавая их через устройство eth1.

Важно: по умолчанию в большинстве дистрибутивов Linux перенаправление отключено. Чтобы его включить, нужно внести изменения в файл конфигурации /etc/sysctl.conf. Найдите там такую строчку net.ipv4.ip_forward = 0 и измените 0 на 1:

Разрешение перенаправления пакетов внутренним интерфейсом брандмауэра позволяет узлам локальной сети связываться друг с другом, но у них не будет доступа в Интернет. Чтобы обеспечить узлам локальной сети с частными IP-адресами возможность связи с внешними публичными сетями, нужно настроить на брандмауэре трансляцию сетевых адресов (NAT). Создадим правило:

Читайте также:  Как улучшить windows mobile

В этом правиле используется таблица NAT, поэтому она указывается в явном виде (-t nat) и указана встроенная цепочка этой таблицы POSTROUTING для внешнего сетевого интерфейса eth0 (-o eth0). POSTROUTING позволяет изменять пакеты, когда они выходят из внешнего интерфейса шлюза. Целевое действие -j MASQUERADE заменяет (маскирует) частный IP-адрес узла внешним IP-адресом шлюза. Это называется IP-маскарадингом.

Проброс портов

Если в вашей внутренней сети есть сервер, который должен быть доступен извне, можно воспользоваться целевым действием -j DNAT цепочки PREROUTING в таблице NAT и указать IP-адрес и порт места назначения, на которые будут перенаправляться входящие пакеты, запрашивающие соединение с вашей внутренней службой. Например, если нужно перенаправлять входящие HTTP-запросы по порту 80 на выделенный HTTP-сервер Apache по адресу 172.31.0.23, выполните команду:

Данное правило определяет использование встроенной цепочки PREROUTING в таблице NAT для перенаправления входящих HTTP-запросов на порт 80 указанного IP-адреса 172.31.0.23. Такой способ трансляции сетевых адресов называется перенаправлением или пробросом портов.

Сохранение изменений в iptables

Созданные нами правила сохранены в оперативной памяти. Это означает, что при перезагрузке нам нужно будет заново из определить. Чтобы сохранить из после перезагрузки, нужно выполнить следующую команду:

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

Восстановление настроек

Если вы еще не сохраняли настройки, и хотите вернуться к первоначальным настройкам. Используйте iptables-restore.

Заключение

В данном руководстве мы рассмотрели основные моменты работы с Iptables: разрешение трафика только на определенных портах, фильтрацию пакетов по источнику, основы настройки трансляции сетевых адресов (NAT) и сохранение правил после перезагрузки. Однако, важно заметить, что iptables работает только с трафиком ipv4. Если ваш VPS поддерживает ipv6, нужно установить отдельные правила при помощи ip6tables.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

iptables. Сохранение и восстановление правил

Многие параметры сети в Linux настраиваются с использованием iptables, например пересылка пакетов, проброс портов, какие-либо разрешения или запреты для сетевого трафика, построение NAT и т.д.
Но iptables запоминает конфигурацию только до перезагрузки, поэтому встает вопрос, как сохранить и восстановить правила, при этом не перебивая каждое правило вручную в скрипт. Для этого существуют утилиты iptables-save и iptables-restore.

Для сохранения текущих активных правил воспользуемся утилитой iptables-save:

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

данная команда сохранит активную конфигурацию в файл /etc/iptables/iptables.rules (естественно он должен быть доступен на запись).

И соответственно для восстановления:

Так же у iptables-save есть полезный параметр:

-t имя_таблицы — ограничиться конкретной таблицей.

А у iptables-restore несколько параметров:

-T имя_таблицы — ограничиться конкретной таблицей;
-n — не очищать таблицы перед восстановлением (только добавить правила).

Теперь остается только автоматизировать процесс восстановления. Для этого добавим запуск iptables-restore после поднятия одного из сетевых интерфейсов. Для этого откроем файл настройки сети /etc/network/interfaces и в настройки loopback интерфейса добавим восстановление правил (подробнее про настройку сетевых параметров рассказывается в статье Debian, Ubuntu, Raspbian. Базовая настройка IPv4 на сетевых Ethernet интерфейсах):

auto lo
iface lo inet loopback
post-up iptables-restore
Почему именно в loopback интерфейс? Потому что он запускается практически всегда и при любых условиях, соответственно мы можем быть уверены, что восстановление правил iptables отработается точно. Хотя иногда бывают ситуации, когда нужно правила iptables подгрузить при запуске или остановке конкретного интерфейса, но это уже зависит от конфигурации и целей.

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Источник

Как навсегда сохранить правила iptables в Linux

Я использую сервер Debian / Ubuntu Linux. Как мне сохранить правила iptables на постоянной основе в Linux с помощью интерфейса командной строки, добавленного с помощью команды iptables? Как я могу постоянно хранить правила IPv4 и IPv6 iptables на облачном сервере Debian Linux?

Читайте также:  Почему исчезла точка восстановления системы windows

Системный администратор и разработчики Linux используют команды iptables и ip6tables для настройки, обслуживания и проверки таблиц брандмауэра правил фильтрации пакетов IPv4 и IPv6 в ядре Linux. Любые изменения, сделанные с помощью этих команд, теряются при перезагрузке сервера Linux. Следовательно, нам необходимо постоянно хранить эти правила при перезагрузке. На этой странице показано, как постоянно сохранять правила брандмауэра iptables на сервере Ubuntu или Debian Linux.

Постоянное сохранение правил брандмауэра iptables в Linux

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

  1. iptables-save command or ip6tables-save command – Сохранить или выгрузить содержимое таблицы IPv4 или IPv6 в легко анализируемом формате либо на экран, либо в указанный файл.
  2. iptables-restore command or ip6tables-restore command – Восстановить правила и таблицы брандмауэра IPv4 или IPv6 из заданного файла в Linux.

Шаг 1 — Откройте терминал

Откройте приложение терминала и введите следующие команды. Для входа на удаленный сервер с помощью команды ssh: вы должны ввести следующую команду от имени пользователя root либо с помощью команды sudo, либо команды su:
$ ssh vivek@server1.cyberciti.biz
$ ssh ec2-user@ec2-host-or-ip

Шаг 2. Сохраните правила брандмауэра Linux для IPv4 и IPv6.

Тип пользователя Debian и Ubuntu Linux: Пользователи CentOS / RHEL запускают:
$ sudo /sbin/iptables-save > /etc/iptables/rules.v4
## IPv6 ##
$ sudo /sbin/ip6tables-save > /etc/iptables/rules.v6
CentOS/RHEL users run:
$ sudo /sbin/iptables-save > /etc/sysconfig/iptables
## IPv6 ##
$ sudo /sbin/ip6tables-save > /etc/sysconfig/ip6tables

ОТОБРАЖЕНИЕ СОХРАНЕННЫХ ПРАВИЛ В LINUX

Мы можем отобразить сохраненный файл с помощью команды cat или выполнить поиск с помощью команды grep / egrep :
$ cat /etc/iptables/rules.v4

*mangle :PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0] COMMIT *nat :PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/24 -m policy —pol none —dir out -j MASQUERADE COMMIT *filter :INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p ah -j ACCEPT
-A INPUT -p icmp —icmp-type echo-request -m hashlimit —hashlimit-upto 5/s —hashlimit-mode srcip —hashlimit-srcmask 32 —hashlimit-name icmp-echo-drop -j ACCEPT
-A INPUT -p udp -m multiport —dports 21194 -j ACCEPT
-A INPUT -p tcp -s 1xx.yy.zz.ttt,10.8.0.0/24,10.8.1.0/24 —dport 22 -m conntrack —ctstate NEW -j ACCEPT
-A INPUT -p tcp —dport 3128 -d 10.8.0.1 -s 10.8.0.0/24,10.8.1.0/24 -m conntrack —ctstate NEW -j ACCEPT
-A INPUT -d 172.xx.yyy.zzz -p udp —dport 53 -j ACCEPT
-A INPUT -d 172.xx.yyy.z -p udp —dport 53 -j ACCEPT
-A INPUT -i eth0 -m limit —limit 5/min -j LOG —log-prefix «[iptables denied] » —log-level 7
-A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j DROP
-A OUTPUT -d 10.8.0.0/24 -m owner —gid-owner 15000 -j DROP
-A FORWARD -s 10.8.0.0/24 -d 169.254.0.0/16 -j DROP
-A OUTPUT -d 169.254.0.0/16 -m owner —gid-owner 15000 -j DROP
-A FORWARD -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp —dport 445 -j DROP
-A FORWARD -p udp -m multiport —ports 137,138 -j DROP
-A FORWARD -p tcp -m multiport —ports 137,139 -j DROP
-A FORWARD -m conntrack —ctstate NEW -s 10.8.0.0/24 -m policy —pol none —dir in -j ACCEPT
-A FORWARD -m limit —limit 5/min -j LOG —log-prefix «[iptables forward denied] » —log-level 7
COMMIT

Шаг 3. Восстановите правила файловой защиты Linux для IPv4 и IPv6.

Мы просто меняем приведенные выше команды в обратном порядке для каждой операционной системы:
## Debian or Ubuntu ##
$ sudo /sbin/iptables-restore ## CentOS/RHEL ##
$ sudo /sbin/iptables-save

Шаг 4 — Установка пакета iptables-persistent для Debian или Ubuntu Linux

Обратите внимание, что следующая команда будет конфликтовать с интерфейсами iptables, такими как команда ufw или firewall-cmd. Избегайте использования следующих пакетов, если вы используете эти инструменты.

Нам нужно установить iptables-persistent. Он будет действовать как загрузчик для правил Netfilter, плагина iptables netfilter-persistent, который является загрузчиком для конфигурации Netfilter с использованием архитектуры на основе плагинов. Другими словами, автоматическая загрузка сохраненных правил iptables из вышеуказанных файлов. Введите следующую команду apt или команду apt-get :
$ sudo apt install iptables-persistent
## OR ##
$ sudo apt-get install iptables-persistent

Источник

Оцените статью