Я обычно запускаю свои правила 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
.