У меня есть служба systemd, которая выполняет скрипт оболочки, настраивающий брандмауэр. Система встроенная и работает под управлением Debian 8.
Как настроить службу, чтобы она выполняла скрипт как можно раньше при запуске системы, но достаточно поздно, чтобы сработал iptables?
Файл сервиса в том виде, в котором он есть сейчас (он работает, но я не знаю, оптимален ли он):
[Unit]
Description=Firewall configuration script
After=sysinit.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/firewall.sh
[Install]
WantedBy=basic.target
Сценарий:
#!/bin/bash
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
решение1
Попробуйте скопироватьуфвповедение при запуске, так как оно делает почти то же самое:
ufw.service:
[Unit]
Before=network.target
Вы также можете рассмотреть возможность перехода от собственного скрипта iptables к списку правил ufw.