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
.Réponses:
Vous voudrez peut-être utiliser le
iptables-persistent
package plutôt que de jouer avec vos scripts de démarrage. Tout d'abord, exécutez votre script pour configurer les règles de pare-feu. Deuxièmement, exécutezsudo apt-get install iptables-persistent
et suivez les invites. Lorsqu'il demande d'enregistrer les règles actuelles, appuyez sur "Oui" aux deux invites. Maintenant, lors des redémarrages, vos règles iptables seront restaurées.REMARQUE: si vous modifiez vos règles après cela, vous devrez effectuer les commandes suivantes après les modifications:
Pour enregistrer vos règles IPv4 iptables:
sudo su -c 'iptables-save > /etc/iptables/rules.v4'
Pour enregistrer vos règles ipvtables IPv6:
sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'
la source
sudo dpkg-reconfigure iptables-persistent
après avoir changé une règle.rules.v4
ourules.v6
au prochain démarrage des fichiers manuellement afin qu'ils sont indexés, ou immédiatement si vous exécuteziptables-restore < /etc/iptables/rules.v4
ouip6tables-restore < /etc/iptables/rules.v6
En supposant que vous disposez des règles de pare-feu dans:
La réponse la plus évidente sera peut-être de créer un fichier appelé iptables dans:
avec le contenu:
et le rendre exécutable en utilisant
De cette façon, avant que votre interface réseau ne soit activée, vos règles seront chargées.
la source