Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 18.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 18.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 18.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 18.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 18.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