- Вики IT-KB
- Инструменты пользователя
- Инструменты сайта
- Боковая панель
- Автозагрузка правил iptables при загрузке ОС в Debian GNU/Linux
- Автозапуск Iptables ( Подсистема сохранения и автоматического применения правил утилиты сетевого защитного экрана «iptables». )
- Загрузка iptables при запуске системы
- MNorin.com
- Блог про Linux, Bash и другие информационные технологии
- Настройка автозагрузки правил iptables в Debian
- Как навсегда сохранить правила iptables в Linux
- Постоянное сохранение правил брандмауэра iptables в Linux
- Шаг 1 — Откройте терминал
- Шаг 2. Сохраните правила брандмауэра Linux для IPv4 и IPv6.
- ОТОБРАЖЕНИЕ СОХРАНЕННЫХ ПРАВИЛ В LINUX
- Шаг 3. Восстановите правила файловой защиты Linux для IPv4 и IPv6.
- Шаг 4 — Установка пакета iptables-persistent для Debian или Ubuntu Linux
Вики IT-KB
Пошаговые руководства, шпаргалки, полезные ссылки.
Инструменты пользователя
Инструменты сайта
Боковая панель
Автозагрузка правил iptables при загрузке ОС в Debian GNU/Linux
Для того, чтобы настроенные правила iptables автоматически загружались в Debian GNU/Linux при перезагрузке системы, можно использовать разные механизмы и методики. Здесь мы рассмотрим пример того, как без стороннего ПО выполнить настройку автозагрузки таких правил.
Создадим скрипт автозагруки правил, например с говорящим именем iptables , в каталоге /etc/network/if-pre-up.d/ и сделаем его исполняемым:
Наполним скрипт командами, которые будут отвечать за загрузку правил с помощью утилит iptables-restore и ip6tables-restore :
Создадим отдельные конфигурационные файлы iptables.up.v4.rules и iptables.up.v6.rules из которых будут считываться нужные нам правила.
Пример содержимого файла iptables.up.v6.rules :
Пример файла iptables.up.v4.rules :
Текущие правила iptables, используемые в данный момент в системе, можно сбросить в соответствующие конфигурационные файлы нехитрыми командами:
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Версия ОС |
---|
Debian GNU/Linux Stretch 9.2.1 |
Автор первичной редакции:
Алексей Максимов
Время публикации: 28.11.2017 15:26
Источник
Автозапуск Iptables ( Подсистема сохранения и автоматического применения правил утилиты сетевого защитного экрана «iptables». )
6 апреля 2014 (обновлено 23 сентября 2016)
OS: Linux Debian Lenny/Squeeze/Wheezy.
В Linux Debian версий 6/7/8 «по умолчанию» правила iptables не сохраняются автоматически. Это не недоработка, а своего рода защита от неподготовленного пользователя, коих с появлением пакетных дистрибутивов развелось хоть пруд пруди. Инструкции большая часть новоявленных «администраторов» читать не любит, пробавляясь всё больше подсказками на форумах, пользуясь которыми успешно блокируют сами себе доступ к удалённой машине. Так вот, если в результате бездумного манипулирования сильным и резким инструментом сетевые подключения заблокированы напрочь, то достаточно перезагрузить сервер, сделав тем самым «как было».
Уже после того, как вы вдоволь наигрались с iptables, получив работающую конфигурацию, можно установить надстройку, по требованию сохраняющую набор правил iptables и автоматически применяющую их при загрузке системы:
Скрипт сохраняет настройки в файлах «/etc/iptables/rules.v4» и «/etc/iptables/rules.v6» (очевидно, для каждого протокола отдельно). Изначально, если вы или какая-нибудь программа не успели добавить правила, там пусто.
Наверное невредно будет проконтролировать и сверить с задуманным текущую конфигурацию iptables. Сделать это можно следующей командой (вывод с номерами правил, последовательно применяемых — что важно):
Текущий набор правил нужно сохранять принудительно:
С помощью этого скрипта можно вообще «остановить» защиту (на самом деле сервис iptables при этом не останавливается и модуль ядра не выгружается, а просто вычищаются все правила):
Ну и, естественно, можно загрузить сохранённый ранее набор правил:
Если есть желание вывести текущий набор правил в отличающийся от заданного по умолчанию файл (в качестве резервной копии, например), можно сделать это с помощью соответствующей утилиты пакета iptables (этот набор из пяти-шести мини-программ и модулей ядра является стандартным набором для всех без исключения современных дистрибутивов Linux):
В процессе подбора конфигурации иногда требуется таковую полностью зачистить от всех правил, что в самом простом случае делается следующим образом (для сложных комбинаций попрошу в мануал от разработчиков):
Ясное дело, что имеется и утилита восстановления конфигурации из файла:
[ уже посетило: 5959 / +3 / -1 ] [ интересно! / нет ]
Поблагодарить автора ( сделайте свой денежный вклад в хорошее настроение )
Источник
Загрузка iptables при запуске системы
Есть файл такого содержания
Сначала нужно сказать, какая система инициализации. Или, хотя бы, какой дистрибутив.
Что за дистрибутив-то?
pre-up iptables-restore ★★★★★ ( 21.08.12 19:05:14 )
Вчера так и делал, но это iptables-restore, а нужно что б через скрипт #!/bin/sh, обратите пожалуйста внимание на эту тему Автосоздание цепочки в iptables
Тогда pre-up /путь/к/этому/самому/скрипту. Подробнее см. man interfaces.
Тему видел, ничего сказать про неё не могу: цепочки сами по себе не создаются; конкретно это правило предназначено для решения проблем с различающимся MTU у PPP-интерфейсов (особенно когда компьютер, на котором применяется это правило, является роутером).
Добавил исполнительный файл в /etc/network/if-pre-up.d , правила поставились, в iptables.rules для таблицы mangle нет правил, но в списке правил иптеблс они есть, если прописать iptables-save
Значит, их добавляет кто-то ещё. Может быть, NetworkManager?
Источник
MNorin.com
Блог про Linux, Bash и другие информационные технологии
Настройка автозагрузки правил iptables в Debian
Чем отличается настройка iptables в Debian от других операционных систем? Тем, что достаточно давно сложилось так, что способ загрузки правил iptables оставался на усмотрение администратора, который администрирует сервер. И хотя позже появились такие решения, как ufw, пришедший из Ubuntu, или iptables-persistent, все равно может потребоваться реализовать автоматическую загрузку таблиц самостоятельно. И есть несколько способов это сделать…
Прежде, чем рассматривать способы загрузки и сохранения таблиц, давайте разберемся, что мы можем использовать. Это три команды:
Команда iptables — это основная команда для изменения текущих таблиц, по ней можно найти много информации на просторах Интернета, поэтому пока не будем подробно рассматривать все ее возможности.
Команда iptables-save выдает на стандартный вывод действующие в данный момент правила iptables, поэтому для сохранения их в файл надо использовать перенаправление потоков:
Команда iptables-restore делает, как вы уже догадались, обратное. То есть восстанавливает правила iptables. Работает она тоже со стандартными потоками, поэтому загрузка правил будет выглядеть так:
А теперь давайте более подробно посмотрим, как же, собственно, организовать загрузку правил автоматически.
Способ 1. Простой способ.
Самый простой способ загрузки таблиц — это вызывать загрузку после поднятия основного сетевого интерфейса при помощи параметра post-up, размещенного в файле /etc/network/interfaces
Что для этого потребуется? В первую очередь нам потребуется директория, в которой будут храниться файлы с таблицами. В соответствии со стандартом FHS, это будет /etc/iptables/, в ней мы будем хранить файлы с правилами, полученными при помощи iptables-save. Перед настройкой правил сначала сбросим содержимое правил по умолчанию:
Теперь посмотрим, что у нас получилось:
У вас должны быть чистые списки правил. Это состояние желательно сохранить на случай необходимости сброса правил.
Детальную настройку правил мы рассматривать не будем, мы сейчас не об этом. После настройки необходимых правил сохраняем их снова в файл. Я предпочитаю включать в название файла дату и время сохранения правил. Во-первых, так понятнее, что когда сохранялось, во-вторых, сортировка при просмотре в файловых менеджерах о именам выстроит список файлов по времени их создания.
Имя получается длинное, но зато при использовании такого шаблона точно можно определить, в какое время этот файл был получен.
Теперь делаем еще одно действие, которое нам позволит не переписывать название файла с правилами для загрузки. Создаем символическую ссылку на файл, в который мы только что сохранили правила. Пусть это будет файл iptables-20130904-223007, тогда делаем так:
И последнее, что надо сделать — изменить файл /etc/network/interfaces, дописав одну строчку. Должно получиться примерно следующее:
И после этого сохраняем.
В общем, вот и всё. Теперь после поднятия интерфейса правила iptables будут загружены автоматически. Какие у этого способа есть минусы? Если кто-нибудь изменит файл /etc/network/interfaces, например, какая-нибудь программа-менеджер сети, то строчка с загрузкой правил может потеряться. Не факт, конечно, но вероятность есть. Второе — если у вас несколько сетевых интерфейсов, то вам надо либо вешать на событие post-up каждого интерфейса, либо точно знать, что выбранный вами интерфейс точно поднимается. Вариация этого способа — размещение скрипта загрузки правил в директории /etc/network/
Способ 2. Совсем простой способ.
Еще более простой способ, которым многие пользуются — это написать шелл-скрипт загрузки правил и вызывать его из, например, /etc/rc.local или еще из какого-нибудь места при загрузке системы. Минус тут очевиден — для сохранения текущего состояния надо будет править этот самый скрипт, что не есть хорошо и удобно. Предыдущий способ в этом смысле выигрывает.
Способ 3. Самый сложный, но и самый интересный с моей точки зрения.
Третий способ состоит в написании собственного скрипта, делающего вид, что он сервис, и этот сервис будет запускаться при старте системы. Кроме того, мы сможем очищать текущие правила и изменять файл с правилами, который будет загружаться по умолчанию. И для этого всего мы будем использовать только один скрипт. Ну и, конечно же, этот скрипт должен самостоятельно проверять, есть ли у нас необходимые файл и директории и создавать их, если их нет. Но всё по порядку.
Начнем с того, что создадим наш скрипт и поместим его в директорию /etc/init.d, где у нас хранятся скрипты для других сервисов.
Далее в любом удобном вам редакторе редактируем этот файл, вписываем в него следующее:
Это наш шаблон скрипта сервиса, который мы с вами сейчас будем доводить до ума.
У нас уже есть обработка параметров и тела всех функций, осталось только написать внутренности этих функций. Начнем со старта, напишем содержимое функции do_start:
Единственная задача этой функции, по идее,- загрузка правил фаервола, но надо также проверить, а существует ли файл, который мы хотим загрузить, и если его не существует, то выдать соответствующее предупреждение. Следующая функция — это отключение фаервола. Смысл ее будет в загрузке пустых правил. Тут мы даже не будем загружать никакого файла, а просто сбросим содержимое цепочек правил и включим разрешительные политики.
После этих действий цепочки iptables будут, но никаких запретов не будет. Следующая функция, которую мы напишем — do_list(). Ее задача — вывести список файлов с правилами. И можно сразу указать, какой из них считается файлом по умолчанию.
Теперь мы можем просмотреть список файлов с правилами и сказать, какой из этих файлов является файлом по умолчанию. Это нам необходимо для того, чтобы в дальнейшем можно было указывать, какой файл с правилами должен быть по умолчанию. Следующая функция — do_makedefault(). Ее задача — сделать некоторый файл с правилами файлом по умолчанию, чтобы он загружался автоматически при старте нашего скрипта. Поскольку файл, который у нас загружается, всегда будет иметь одно и то же название, он всегда будет просто символической ссылкой, а указывать эта ссылка будет на разные файлы. В этой функции у нас будет использоваться еще один параметр скрипта, поэтому добавим значение $2 в вызов функции в структуре case. Должно получиться так:
В самой функции этот параметр превратится в $1, потому что для скрипта он второй, а для функции — первый. Как вы видите ,мы просто удаляем символическую ссылку с названием iptables.default и делаем новую на тот файл, название которого указано. Указывать надо только имя файла, путь указывать не нужно. А флаг -f мы используем для подавления сообщения об ошибке, если такого файла не существует.
И осталась последняя функция — do_savecurrent(). Она будет тоже выполнять всего одно несложное действие — сохранять текущие правила iptables в файл с включенным в название временем сохранения этих самых правил.
Вот, собственно, сам скрипт почти закончен. Осталось сделать еще одну малость — автоматическое создание директорий, в которых будут храниться правила, если их не существует, и, если файл /etc/iptables/iptables.default не существует, то сбросим правила и политики и создадим файл iptables.clean, после чего создадим символическую ссылку на него с названием iptables.default. Для этого напишем отдельную функцию do_init():
Эту функцию будем вызывать в самом начале скрипта, еще до выбора выполняемой команды. В итоге у нас получится следующий скрипт:
Осталось теперь включить получившийся скрипт в автозапуск:
Всё. Теперь правила будут загружаться каждый раз после загрузки, после выполнения скрипта networking. Если сеть стартовать при использовании LSBInit не будет, то правила фаервола загружаться тоже не будут. Надеюсь, этот скрипт будет вам полезен. Любые замечания в комментариях приветствуются.
Источник
Как навсегда сохранить правила iptables в Linux
Я использую сервер Debian / Ubuntu Linux. Как мне сохранить правила iptables на постоянной основе в Linux с помощью интерфейса командной строки, добавленного с помощью команды iptables? Как я могу постоянно хранить правила IPv4 и IPv6 iptables на облачном сервере Debian Linux?
Системный администратор и разработчики Linux используют команды iptables и ip6tables для настройки, обслуживания и проверки таблиц брандмауэра правил фильтрации пакетов IPv4 и IPv6 в ядре Linux. Любые изменения, сделанные с помощью этих команд, теряются при перезагрузке сервера Linux. Следовательно, нам необходимо постоянно хранить эти правила при перезагрузке. На этой странице показано, как постоянно сохранять правила брандмауэра iptables на сервере Ubuntu или Debian Linux.
Постоянное сохранение правил брандмауэра iptables в Linux
Вам нужно использовать следующие команды, чтобы навсегда сохранить правила брандмауэра iptables:
- iptables-save command or ip6tables-save command – Сохранить или выгрузить содержимое таблицы IPv4 или IPv6 в легко анализируемом формате либо на экран, либо в указанный файл.
- 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
Источник