Я использую сервер Debian / Ubuntu Linux.
Как сохранить правила iptables на постоянной основе в Linux с помощью интерфейса командной строки?
Как сохранить правила IPv4 и IPv6 iptables на облачном сервере Debian Linux?
- Постоянное сохранение правил брандмауэра iptables на Linux
- Шаг 1 – Откройте терминал
- Шаг 2. Сохраните правила брандмауэра Linux для IPv4 и IPv6.
- Отображение сохраненных правил на Linux
- Шаг 3. Восстановление правил брандмауэра Linux для IPv4 и IPv6.
- Шаг 4 – Установка пакета iptables-persistent для Debian или Ubuntu Linux
- Шаг 5 – Установите пакет iptables-services для RHEL / CentOS
Постоянное сохранение правил брандмауэра 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. Избегайте использования следующих пакетов, если вы используете эти инструменты.
$ sudo apt install iptables-persistent
## или ##
$ sudo apt-get install iptables-persistent
$ 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.