Pages : 1
#1 Le 27/10/2018, à 16:34
- abrainboy
Rendre les règles iptables permanentes
Bonjour,
Afin d'ouvrir certains accès à un client VPN qui se connecte sur mon PC je dois créer les règles suivantes:
sudo iptables -I FORWARD -i tun0 -j ACCEPT
sudo iptables -I FORWARD -o tun0 -j ACCEPT
sudo iptables -I OUTPUT -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Ensuite tout fonctionne bien côté client sauf que je n'arrive pas à rendre ces règles permanentes. J'ai essayé plein de choses trouvées à gauche et à droite sur le net mais rien ne fonctionne, dès que je redémarre je dois refaire les commandes.
Ça ne doit pas être trop compliqué mais je n'y arrive pas.
Si quelqu'un a la solution simple...
Merci.
Ubuntu 24.04 64 bits
Go Habs Go!
Hors ligne
#2 Le 27/10/2018, à 18:57
- Watael
Re : Rendre les règles iptables permanentes
salut,
d'abord, iptables-save -f ~moi/mesRèglesIpTables,
puis, dans un script sous /etc/interfaces/post-up (parce que les interfaces doivent exister au préalable, il me semble), inscrire iptables-restore ~moi/mesRèglesIpTables.
si je me souviens bien...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 27/10/2018, à 20:53
- abrainboy
Re : Rendre les règles iptables permanentes
J'ai déjà essayé ça mais ça ne fonctionne pas.
Dans un log j'ai ce message:
nf_conntrack: default automatic helper assignment has been turned off for security reasons and CT-based firewall rule not found. Use the iptables CT target to attach helpers instead.
Je cherche mais ne trouve pas pourquoi. Donc les règles ne sont pas chargées.
Ubuntu 24.04 64 bits
Go Habs Go!
Hors ligne
#4 Le 28/10/2018, à 15:45
- abrainboy
Re : Rendre les règles iptables permanentes
En fait ce que je voudrais c'est que quand un client se connecte ou simplement quand openvpn démarre que certaines règles de routage s'appliquent. J'ai essayé de créer un fichier que j'ai mis dans /etc/network/if-up.d mais ça ne fonctionne pas.
Ubuntu 24.04 64 bits
Go Habs Go!
Hors ligne
#5 Le 30/10/2018, à 17:58
- abrainboy
Re : Rendre les règles iptables permanentes
Bon, j'ai essayé plein de choses.
Un script contant les commandes et mis dans les applications au démarrage -> Marche pas
Mis le Script dans /etc/init.d -> Marche pas
sudo update-rc.d monscript defaults -> Marche pas.
Je me décourage.
Disons que les lignes "-t nat" je les ai plutôt mises dans before.rules, ça c'est ok.
Mais les autres? Où dois-je les mettre? Ou sinon, comment les entrer dans le firewall directement de façon permanente?
Ubuntu 24.04 64 bits
Go Habs Go!
Hors ligne
#6 Le 30/10/2018, à 20:30
- diesel
Re : Rendre les règles iptables permanentes
T'es sous quelle version d'ubuntu ?
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#7 Le 31/10/2018, à 13:58
- abrainboy
Re : Rendre les règles iptables permanentes
Je suis en 18.04
Ubuntu 24.04 64 bits
Go Habs Go!
Hors ligne
#8 Le 31/10/2018, à 14:34
- mazarini
Re : Rendre les règles iptables permanentes
Tu dois avoir une ligne :
net.netfilter.nf_conntrack_helper=0
Dans le fichier /etc/sysctl.conf ou dans un des fichiers du répertoire /etc/sysctl.d
Si tu remplace 0 par 1, le message devrait disparaitre.
Pour des tests, echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper permet de tester mais ca revient à 1 au démarrage.
Faudrait voir à quoi correspond ce paramètre et les problème de sécurité éventuellement lié à cette modification. A priori je pense que ce entraîne juste un ralentissement.
S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)
Hors ligne
#9 Le 31/10/2018, à 18:16
- diesel
Re : Rendre les règles iptables permanentes
En 18.04, les services lancés au démarrage sont gérés avec systemd (en non plus l'init system V)
Je te suggère la configuration suivante :
Créer un répertoire /etc/netfilter.d
sudo mkdir /etc/netfilter.d
Taper la commande suivantes :
vi /etc/netfilter.d/netfilter.service
et entrer le contenu suivant (sous vi taper "i", sélectionner le texte ci-dessous, puis clic central dans la fenêtre vi, puis "echap", puis "ZZ")
[Unit]
Description=IPv4 firewall with netfilter
ConditionPathExists=/run/network/ifstate
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/netfilter start
[Install]
WantedBy=basic.target
Puis taper la commande suivante :
sudo chown root,root /etc/netfilter.d/netfilter.service
Créer un fichier "/etc/netfilter.d/netfilter.sh" (même manip que pour le précédent) contenant
#! /bin/sh
# Author: abrainboy
# Provides: Packet filtering rules.
# Description: Defines the rules.
#####################################################################################
# Stop all the network interfaces before modifying rules #
#####################################################################################
systemctl stop networking.service
#####################################################################################
# Clean up previous packet filtering rules #
#####################################################################################
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
#####################################################################################
# Packet filtering rules #
#####################################################################################
/sbin/iptables -I FORWARD -i tun0 -j ACCEPT
/sbin/iptables -I FORWARD -o tun0 -j ACCEPT
/sbin/iptables -I OUTPUT -o tun0 -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
#####################################################################################
# Saves the configuration #
#####################################################################################
/sbin/iptables-save >/etc/netfilter.d/netfilter.arch
#####################################################################################
# Restart the network interfaces #
#####################################################################################
systemctl start networking.service
return 0
Ensuite, un petit
sudo chown root.root /etc/netfilter.d/netfilter.sh
sudo chmod +x /etc/netfilter.dnetfilter.sh
Ensuite, créer le fichier "/etc/init.d/netfilter" (même manip que pour le précédent) contenant
#! /bin/sh
# Author: abrainboy
### BEGIN INIT INFO
# Provides: Packet filtering rules
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Manages filtering rules.
# Description: Restores the packet filtering rules at startup and completly redefines the rules, including eventual new ones, at reload.
### END INIT INFO
DESC="Loads the new packet filtering rules"
SCRIPTNAME="/etc/init.d/netfilter"
echo -n "script name : "
echo $SCRIPTNAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
do_reload()
{
/etc/netfilter.d/netfilter.sh
#####################################################################################
# Saves the configuration #
#####################################################################################
/sbin/iptables-save >/etc/netfilter.d/netfilter.arch
return 0
}
case "$1" in
start)
[ -f /etc/netfilter.d/netfilter.arch ] && /sbin/iptables-restore </etc/netfilter.d/netfilter.arch
;;
stop) # Does nothing
;;
reload)
do_reload
log_end_msg $?
;;
*)
echo "Usage: $SCRIPTNAME {start|reload}" >&2
exit 3
;;
esac
:
Suivi de
sudo chown root.root /etc/init.d/netfilter
sudo chmod +x /etc/netfilter
sudo /etc/init.d/netfilter reload
Puis
sudo ln -s /etc/netfilter.d/netfilter.service /etc/systemd/system/netfilter.service
Enfin
sudo systemctl enable netfilter.service
Et normalement, si je n'ai pas fait d'erreur, ça devrait marcher.
Vérifier notamment que le fichier netfilter.arch a bien été créé dans le répertoire /etc/netfilter.d et qu'il contient bien les bonnes règles.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne