J'exécute généralement mes règles iptables chaque fois que je me connecte. Depuis le terminal, je tape;
sudo sh firewall.sh
En installant l'ordinateur de ma sœur, je veux lui donner une protection de base du pare-feu. Elle ne se connectera pas en tant qu'administrateur, juste un compte standard. Comment puis-je exécuter un script de pare-feu à chaque fois qu'elle se connecte sans qu'elle ait à taper un mot de passe?
Le script que j'ai écrit pour l'ordinateur de ma sœur contient;
#!/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
Je l'ai placé dans son dossier personnel sous le nom firewall.sh et l'ai défini comme exécutable (cliquez avec le bouton droit sur le fichier et cochez l'option "autoriser l'exécution du fichier en tant que programme" dans l'onglet autorisations).
L'exécution de ce script à partir du terminal en tant que root fonctionne correctement.
Après avoir tapé;
sudo sh firewall.sh
J'ai tapé dans le terminal
sudo iptables -L -v
et je reçois
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
Comment puis-je exécuter ce script automatiquement lors de la connexion, ou éventuellement enregistrer ces règles de façon permanente pour l'ordinateur de mes sœurs? Pourriez-vous s'il vous plaît fournir un code détaillé, car mes premières tentatives de méthode rc.local et d'iptables-save n'ont pas été très réussies. À chaque redémarrage, toutes les chaînes INPUT, OUTPUT et FORWARD sont réinitialisées sur ACCEPT, sans aucune politique répertoriée lorsque je tapesudo iptables -L -v
ip6tables
règles si vous obtenez un jour la connectivité v6, car IPv6 est géré parip6tables
et noniptables
.