Сегодня я расскажу как настроить 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
Вот и всё.