Zazwyczaj uruchamiam reguły iptables przy każdym logowaniu. Z terminala typu I;
sudo sh firewall.sh
Konfigurując komputer mojej siostry, chcę zapewnić jej podstawową ochronę zapory. Nie będzie logować się jako administrator, tylko standardowe konto. Jak mogę uruchomić skrypt zapory ogniowej za każdym razem, gdy się loguje, bez konieczności wpisywania hasła?
Skrypt, który napisałem na komputer mojej siostry, zawiera;
#!/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
Umieściłem go w jej folderze domowym jako firewall.sh i ustawiłem, aby był wykonywalny (kliknij plik prawym przyciskiem myszy i zaznacz opcję „zezwól na uruchamianie pliku jako programu” na karcie uprawnień).
Uruchamianie tego skryptu z terminala, ponieważ root działa dobrze.
Po wpisaniu;
sudo sh firewall.sh
Wpisałem się w terminalu
sudo iptables -L -v
i rozumiem
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
Jak mogę mieć ten skrypt uruchamiany automatycznie podczas logowania lub ewentualnie zapisać te reguły na stałe na komputerze mojej siostry? Czy możesz podać szczegółowy kod, ponieważ moje pierwsze próby zastosowania metody rc.local i iptables-save nie zakończyły się sukcesem. Przy każdym ponownym uruchomieniu wszystkie łańcuchy INPUT, OUTPUT i FORWARD są resetowane do AKCEPTACJI, a podczas pisania nie są wyświetlane żadne zasadysudo iptables -L -v
ip6tables
zasady, jeśli któregoś dnia uzyskasz łączność z v6, ponieważ IPv6 jest obsługiwany przez,ip6tables
a nieiptables
.Odpowiedzi:
Możesz użyć tego
iptables-persistent
pakietu zamiast bałaganu ze skryptami rozruchowymi. Najpierw uruchom skrypt, aby skonfigurować reguły zapory. Po drugie, uruchomsudo apt-get install iptables-persistent
i postępuj zgodnie z instrukcjami. Gdy pojawi się monit o zapisanie bieżących reguł, naciśnij „Tak” w obu pytaniach. Teraz, po ponownym uruchomieniu, twoje reguły iptables zostaną przywrócone.UWAGA: Jeśli po tym zmienisz swoje reguły, będziesz musiał wykonać następujące polecenia po zmianach:
Aby zapisać swoje reguły iptables IPv4:
sudo su -c 'iptables-save > /etc/iptables/rules.v4'
Aby zapisać swoje reguły IP66 ip6tables:
sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'
źródło
sudo dpkg-reconfigure iptables-persistent
po zmianie reguły jest złym pomysłem?rules.v4
lubrules.v6
ręcznie ręcznie, aby zostały zindeksowane przy następnym uruchomieniu) lub natychmiast, jeśli uruchomisziptables-restore < /etc/iptables/rules.v4
lubip6tables-restore < /etc/iptables/rules.v6
Zakładając, że masz reguły zapory w:
Być może najbardziej oczywistą odpowiedzią będzie utworzenie pliku o nazwie iptables w:
z treścią:
i uczynić go wykonywalnym przy użyciu
W ten sposób przed aktywacją interfejsu sieciowego reguły zostaną załadowane.
źródło