Normalerweise führe ich meine iptables-Regeln bei jedem Login aus. Vom Terminal tippe ich;
sudo sh firewall.sh
Ich richte den Computer meiner Schwester ein und möchte ihr einen grundlegenden Firewall-Schutz bieten. Sie wird sich nicht als Administrator anmelden, nur als Standardkonto. Wie kann ich ein Firewall-Skript jedes Mal ausführen, wenn sie sich anmeldet, ohne dass sie ein Kennwort eingeben muss?
Das Skript, das ich für den Computer meiner Schwester geschrieben habe, enthält:
#!/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
Ich habe es als firewall.sh in ihrem Ausgangsordner abgelegt und als ausführbar festgelegt (Rechtsklick auf die Datei und Aktivieren der Option "Datei als Programm ausführen lassen" auf der Registerkarte "Berechtigungen").
Das Ausführen dieses Skripts vom Terminal aus als root funktioniert einwandfrei.
Nach dem Tippen;
sudo sh firewall.sh
Ich habe in das Terminal getippt
sudo iptables -L -v
und ich verstehe
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
Wie kann ich dieses Skript bei der Anmeldung automatisch ausführen lassen oder diese Regeln möglicherweise dauerhaft für den Computer meiner Schwester speichern? Könnten Sie bitte etwas detaillierten Code bereitstellen, da meine ersten Versuche mit rc.local und iptables-save nicht sehr erfolgreich waren. Bei jedem Neustart werden alle INPUT-, OUTPUT- und FORWARD-Ketten auf ACCEPT zurückgesetzt, und bei der Eingabe werden keine Richtlinien aufgeführtsudo iptables -L -v
ip6tables
Regeln haben , wenn Sie eines Tages eine v6-Konnektivität erhalten, da IPv6 von verwaltet wirdip6tables
und nichtiptables
.