В Debian базираните дистрибуции има различни варианти за съхранение и въстановяване на правилата в защитната стена (iptables) след рестарт или след някаква промяна в конфигурацията. Един от удобните начини е чрез скрипта iptables-persistent, нека го инсталираме в командия ред с:
sudo apt install iptables-persistent
Инсталатора ще ни зададе въпрос да създаде ли конфигурационен файл за ipv4 протокола в който да съхранява правилата от iptables.
Същото ще направи и за протокола ipv6.
След като инсталатора приключи ние на практика нямаме правила в в защитната стена и затова ще си създадем един стандартни е така за тест.
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state INVALID -j DROP
sudo iptables -A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -j DROP
След което задължително трябва да проверим дали има правила и минават ли някакви пакети през броячите за да установим работи ли защитната стена правилно.
sudo iptables -nvL
Както е видно от птичи поглед всичко изглежда наред.
До тук ние имаме правила, защитната стена функционира правилно но нямаме конфигурационен файл в който да са съхранени тези правила. Това можем да направим с командата:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
И да се убедим, че те са във файла.
sudo cat /etc/iptables/rules.v4
Така, с горната команда запазихме правилата от защитната стена във файл а с тази по долу ще направим обратното а именно ще въстановим правилата от файла активирайки ги в същата последователно в защитната стена.
sudo sh -c "iptables-restore < /etc/iptables/rules.v4"
С две думи излиза, че сме страшно гъвкави защото ако добавя правило директно в терминала:
iptables -I INPUT -s 172.16.0.0/12 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
То ще се нареди най отгоре в правилата на защитната стена и след това ако изпълня:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
То ще се съхрани в конфигурационния файл и ще е активно дори след рестарт на машината.
Всъщност има много по удобен инструмент netfilter-persistent който може да менажира тези процеси:
samyil@kali:~$ sudo netfilter-persistent
Usage: /usr/sbin/netfilter-persistent (start|stop|restart|reload|flush|save)