Iptables au démarrage, ne se lance pas

Tags: #<Tag:0x00007feddbf5fd40>

Salut all,

Je galère un peu à lancer mon script au démarrage voici la manip :

J’ai créé un fichier /etc/init.d/firewall

contenant :

    #!/bin/sh

# Vider les tables actuelles
iptables -t filter -F

# Vider les règles personnelles
iptables -t filter -X

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# ---

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# ---

# SSH In
iptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT

# SSH Out
iptables -t filter -A OUTPUT -p tcp --dport 2222 -j ACCEPT

# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

# FTP Out
iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT

# FTP In
modprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Ensuite la commande :

 chmod +x /etc/init.d/firewall

Et ensuite :

 update-rc.d firewall defaults

Redémarrage du serveur et pas de script firewall lancé au démarrage…

Aurais-je oublié qqchose ?

Il ne manquerait pas l’en-tête LSB ?

Ha! Une piste !

Je vais regarder de coté la !
Chaque en-tête diffère en fonction du script ?

Oui, il faut l’adapter.

Problème résolu avec l’ajout du code suivant en début de script :

#!/bin/bash

### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Démarre les règles iptables
# Description:       Charge la configuration du pare-feu iptables
### END INIT INFO

Merci pour ces infos Pascal !

Résolu

Tu peux cocher la case qui va bien pour marquer le sujet comme résolu.

Bonjour,
Il existe le paquet iptables-persistent, issu de la suite netfilter-persistent, qui te permet de gérer l’application des règles iptables au démarrage.
Une fois le paquet installé, tu ajoutes tes règles dans le fichier /etc/iptables/rules.v4 et /etc/iptables/rules.v6.
À l’installation du paquet, tu peux même générer automatiquement le fichier de configuration avec les règles actuellement appliquées.

Ok almtesh, mais alors quel interret de générer un script si un paquet le fait ?

Oui, exactement !