Как навсегда сохранить правила брандмауэра 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 < /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
## OR ##
$ 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. Если вам нужен старый добрый файловый брандмауэр, введите следующие команды:
# Disable firewalld if installed #
$ sudo systemctl stop firewalld.service
$ sudo systemctl disable firewalld.service
$ sudo systemctl mask firewalld.service
# install package on Linux to save iptables rules using the yum command/dnf command ##
$ 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.