Я обычно запускаю свои правила iptables при каждом входе в систему. С терминала я печатаю;
sudo sh firewall.sh
Настраивая компьютер моей сестры, я хочу дать ей базовую защиту брандмауэра. Она не будет входить в систему как администратор, просто стандартная учетная запись. Как я могу заставить скрипт брандмауэра запускаться каждый раз, когда она входит в систему, без необходимости вводить какой-либо пароль?
Сценарий, который я написал для компьютера моей сестры, содержит;
#!/bin/sh
modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP
iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Я поместил его в ее домашнюю папку как firewall.sh и установил его как исполняемый (щелкните правой кнопкой мыши по файлу и отметьте опцию «разрешить запуск файла как программы» на вкладке прав доступа).
Запуск этого скрипта из терминала как root работает нормально.
После набора текста;
sudo sh firewall.sh
Я набрал в терминале
sudo iptables -L -v
и я получаю
Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP tcp -- any any anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN
0 0 DROP udp -- any any anywhere anywhere
0 0 DROP icmp -- any any anywhere anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 DROP icmp -- any any anywhere anywhere
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:https
0 0 ACCEPT udp -- any any anywhere anywhere udp spts:32768:61000 dpt:domain
0 0 ACCEPT tcp -- any any anywhere anywhere tcp spts:32768:61000 dpt:http
0 0 ACCEPT all -- any lo anywhere anywhere
Как я могу запустить этот скрипт автоматически при входе в систему или, возможно, сохранить эти правила навсегда для моего компьютера сестер? Не могли бы вы предоставить подробный код, так как мои первые попытки использования метода rc.local и iptables-save не были очень успешными. При каждой перезагрузке все цепочки INPUT, OUTPUT и FORWARD сбрасываются в ACCEPT, и при вводе данных политики не отображаются.sudo iptables -L -v
ip6tables
правила, если вы получите соединение v6 однажды, поскольку IPv6 обрабатывается,ip6tables
а не обрабатываетсяiptables
.Ответы:
Вы можете использовать
iptables-persistent
пакет, а не связываться с вашими загрузочными скриптами. Сначала запустите ваш скрипт для настройки правил брандмауэра. Во-вторых, запуститеsudo apt-get install iptables-persistent
и следуйте инструкциям. Когда появится запрос на сохранение текущих правил, нажмите «Да» в обоих запросах. Теперь при перезагрузке ваши правила iptables будут восстановлены.ПРИМЕЧАНИЕ. Если после этого вы измените свои правила, после внесения изменений вам потребуется выполнить следующие команды:
Чтобы сохранить правила IPv4 iptables:
sudo su -c 'iptables-save > /etc/iptables/rules.v4'
Чтобы сохранить правила IPv6 ip6tables:
sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'
источник
sudo dpkg-reconfigure iptables-persistent
после изменения правила.rules.v4
илиrules.v6
вручную, чтобы они были проиндексированы при следующей загрузке, или сразу же при запускеiptables-restore < /etc/iptables/rules.v4
илиip6tables-restore < /etc/iptables/rules.v6
Предполагая, что у вас есть правила брандмауэра в:
Возможно, наиболее очевидным ответом будет создание файла с именем iptables в:
с содержанием:
и сделать его исполняемым с помощью
Таким образом, перед активацией сетевого интерфейса ваши правила будут загружены.
источник