🖧 Как навсегда сохранить правила брандмауэра iptables на Linux

Я использую сервер Debian / Ubuntu Linux.

Как сохранить правила iptables на постоянной основе в Linux с помощью интерфейса командной строки?

Как сохранить правила IPv4 и IPv6 iptables на облачном сервере Debian Linux?

 

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

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

    • Команда iptables-save или ip6tables-save – сохраняет или выгружает содержимое таблиц IPv4 или IPv6 в легко анализируемом формате на экран или в указанный файл.

    • Команда iptables-restore или команда ip6tables-restore – Восстановление правил и таблиц брандмауэра IPv4 или IPv6 из заданного файла на Linux.

 

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

Откройте приложение терминала и введите следующие команды.

Для входа на удаленный сервер с помощью команды ssh:

 

$ ssh admin@server1.itsecforu.ru

 

Вы должны ввести следующую команду от пользователя root, используя команду sudo или su.

 

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

Debian и Ubuntu Linux:

 

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

## IPv6 ##

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

 

CentOS / RHEL:

 

$ 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 < /etc/iptables/rules.v4

$ sudo /sbin/ip6tables-restore < /etc/iptables/rules.v6

## CentOS/RHEL ##

$ sudo /sbin/iptables-save < /etc/sysconfig/iptables

$ sudo /sbin/ip6tables-save < /etc/sysconfig/ip6tables

 

Шаг 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

## или ##

$ sudo apt-get install iptables-persistent

 

Убедитесь, что службы включены на Debian или Ubuntu, используя команду systemctl:

 

$ sudo systemctl is-enabled netfilter-persistent.service

 

Если нет, то включите:

 

$ sudo systemctl enable netfilter-persistent.service

 

Проверим статус:

 

$ sudo systemctl status netfilter-persistent.service

 

 

 

● netfilter-persistent.service - netfilter persistent configuration

     Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)

    Drop-In: /etc/systemd/system/netfilter-persistent.service.d

             └─iptables.conf

     Active: active (exited) since Thu 2020-08-20 19:24:22 UTC; 3 days ago

       Docs: man:netfilter-persistent(8)

   Main PID: 577 (code=exited, status=0/SUCCESS)

      Tasks: 0 (limit: 4620)

     Memory: 0B

     CGroup: /system.slice/netfilter-persistent.service



Aug 20 19:24:21 nixcraft-vpn-1 systemd[1]: Starting netfilter persistent configuration...

Aug 20 19:24:21 nixcraft-vpn-1 netfilter-persistent[583]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start

Aug 20 19:24:21 nixcraft-vpn-1 netfilter-persistent[583]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start

Aug 20 19:24:22 nixcraft-vpn-1 systemd[1]: Finished netfilter persistent configuration.

 

Шаг 5 – Установите пакет iptables-services для RHEL / CentOS

По умолчанию RHEL / CentOS 7 или 8 поставляется с firewalld.

Если вам нужен старый добрый файловый брандмауэр, введите следующие команды:

 

# Отключение firewalld #

$ sudo systemctl stop firewalld.service

$ sudo systemctl disable firewalld.service

$ sudo systemctl mask firewalld.service

#Установка пакета##

$ sudo yum install iptables-services

$ sudo systemctl enable iptables

$ sudo systemctl enable ip6tables

$ sudo systemctl status iptables

● iptables.service - IPv4 firewall with iptables

   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)

   Active: active (exited) since Mon 2020-08-24 09:29:59 EDT; 3s ago

  Process: 8259 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)

 Main PID: 8259 (code=exited, status=0/SUCCESS)



Aug 24 09:29:59 centos-8-cloud.sweet.home systemd[1]: Starting IPv4 firewall with iptables...

Aug 24 09:29:59 centos-8-cloud.sweet.home iptables.init[8259]: iptables: Applying firewall rules: [  OK  ]

Aug 24 09:29:59 centos-8-cloud.sweet.home systemd[1]: Started IPv4 firewall with iptables.