Je lance habituellement mes règles iptables à chaque fois que je me connecte. Du terminal je tape;
Sudo sh firewall.sh
En configurant l'ordinateur de ma sœur, je veux lui donner une protection de base par pare-feu. Elle ne se connectera pas en tant qu'administrateur, mais uniquement avec un compte standard. Comment puis-je faire en sorte qu'un script de pare-feu s'exécute chaque fois qu'elle se connecte sans qu'elle soit obligée de saisir 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 je l'ai configuré pour qu'il soit 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 faire exécuter ce script automatiquement à la connexion ou éventuellement sauvegarder ces règles de manière permanente pour l'ordinateur de ma sœur? 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 fructueuses. À chaque redémarrage, toutes les chaînes INPUT, OUTPUT et FORWARD sont réinitialisées sur ACCEPT. Aucune stratégie n'est répertoriée lorsque je tape Sudo iptables -L -v
.
Vous voudrez peut-être utiliser le paquetage iptables-persistent
plutôt que de manipuler vos scripts de démarrage. Tout d’abord, lancez votre script pour configurer les règles du pare-feu. Deuxièmement, exécutez Sudo apt-get install iptables-persistent
et suivez les instructions. Lorsqu'il vous demande de sauvegarder les règles actuelles, cliquez sur "Oui" aux deux invites. Maintenant, au redémarrage, vos règles iptables seront restaurées.
NOTE: Si vous modifiez vos règles après cela, vous devrez exécuter les commandes suivantes après les modifications:
Pour enregistrer vos règles iptables IPv4: Sudo su -c 'iptables-save > /etc/iptables/rules.v4'
Pour enregistrer vos règles IPv6 ip6tables: Sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'
En supposant que vous ayez les règles de pare-feu dans:
/etc/iptables.up.rules
La réponse la plus évidente sera peut-être de créer un fichier appelé iptables dans:
/etc/network/if-pre-up.d
avec le contenu:
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
et le rendre exécutable en utilisant
Sudo chmod +x /etc/network/if-pre-up.d/iptables
Ainsi, avant l'activation de votre interface réseau, vos règles seront chargées.