Загрузка правил iptables при активации сетевого интерфейса в Ubuntu/Debian

Сегодня я расскажу как настроить firewall iptables на Ubuntu/Debian при поднятии (активации) сетевого интерфейса. Сами команды управления iptables описывать я не буду, т.к. этого в Сети вы найдёте море.

Для начала, создадим такой вот файл (например /etc/iptables.rules.sh):

#!/bin/sh
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -I INPUT 1 -i lo -p all -j ACCEPT
/sbin/iptables -I INPUT -s 127.0.0.1 -j ACCEPT
/sbin/iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT	# LAN
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -j DROP
/sbin/iptables-save > /etc/iptables.rules
/sbin/iptables -L -n -v --line-numbers

В нем мы закроем любые входящие подключения (включая ICMP), кроме уже установленных и подключений на 80ый порт (www). Также разрешим доступ по протоколу SSH (порт: 22) только с текущей локальной сети 192.168.1.0/24. После этих ограничений скрипт создаст файл правил iptables тут /etc/iptables.rules и покажет результат в виде таблички.

Теперь поставим на него права и выполним:

chown root:root /etc/iptables.rules.sh
chmod 755 /etc/iptables.rules.sh
/etc/iptables.rules.sh

После выполнения этого файла, правила iptables сразу начнут действовать.

Теперь нам необходимо чтобы на активацию сетевого интерфейса автоматически загружались наши правила (это особенно актуально при перезагрузке).

Создаём файл /etc/network/if-pre-up.d/iptables со следующим содержанием:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.rules

Назначаем права и выполняем:

chown root:root /etc/network/if-pre-up.d/iptables
chmod 755 /etc/network/if-pre-up.d/iptables
/etc/network/if-pre-up.d/iptables

Вот и всё.