problème récurrent de non-accessibilté au serveur en HTTP

Non, sauf si le script d’arrêt enregistre le jeu de règles actives dans un fichier pour le rejouer au démarrage.

Note : il y a des doublons évidents et des règles inutiles (règle ACCEPT pour un port et une adresse source et/ou destination, suivie d’une règle ACCEPT pour le même port seul, ce qui rend la précédente inutile).

bonjour

le problème revient à chaque fois que le serveur s’éteint. et je ne comprends déjà par pourquoi il s’éteint…

existe-t-il une manière de réinitialiser tout le système iptables pour que je puisse par la suite virer tout ce qui ne convient pas et au pire recréer les règles ?
j’en ai ras le bol de devoir à chaque fois remettre 2 règles manquantes au redémarrage de la machine.

merci à vous

Méthode brutale : tu supprimes (ou déplaces) tous les scripts de règles iptables dans /etc/init.d/ sauf celui que tu veux garder, et tu effaces les liens symboliques correspondants dans /etc/rc*.d/ avec [mono]update-rc.d remove[/mono].

Merci Pascal
le souci c’est que je e les connais pas (leur nom) d’où mon plus grand souci

Il me semblait pourtant qu’on les avait identifiés ?
Sinon, une recherche à coup de grep pour voir ceux qui contiennent des mots-clés comme “iptables”, “firewall”…

Bonjour, alors je reviens encore avec ce souci que j’ai cru avoir résolu… mais !

j’ai été chercher un script sur la toile et j’ai trouvé ça à cette adresse :
http://webadonf.net/2011/03/regles-de-filtrage-avec-iptables/

le résultat après tentative de Start :

[code]root@smtp:~# /etc/init.d/mesReglesIptables start

  • Initialisation du firewall :
  • Vidage des regles et des tables : [OK]
  • Interdire toutes les connexions entrantes et sortantes : [OK]
  • Ne pas casser les connexions établies : [OK]
  • Initialisation des regles : [OK]
    root@smtp:~# update-rc.d mesReglesIptables defaults
    update-rc.d: using dependency based boot sequencing
    insserv: Script mesReglesIptables is broken: incomplete LSB comment.
    insserv: missing Provides:' entry: please add. insserv: missingRequired-Start:’ entry: please add even if empty.
    insserv: missing Required-Stop:' entry: please add even if empty. insserv: missingDefault-Start:’ entry: please add even if empty.
    insserv: missing Default-Stop:' entry: please add even if empty. insserv: Default-Start undefined, assuming empty start runlevel(s) for scriptmesReglesIptables’
    insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `mesReglesIptables’
    insserv: script mon_parefeu: service iptables already provided!
    [/code]

j’en sue avec ce truc !
j’ai fait un remove et voilà le message de Deby :

root@smtp:~# update-rc.d mon_parefeu remove update-rc.d: using dependency based boot sequencing insserv: Script mesReglesIptables is broken: incomplete LSB comment. insserv: missing `Provides:' entry: please add. insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing `Default-Start:' entry: please add even if empty. insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Default-Start undefined, assuming empty start runlevel(s) for script `mesReglesIptables' insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `mesReglesIptables'

help me please, je suis sûr que le bout du tunnel n’est plus très loin… :open_mouth:

merci à vous

Tu as bien laissé l’en-tête LSB en commentaire ?

PS : le #!/bin/sh devrait être au début du fichier, pas après l’en-tête LSB.

j’ai remis le code dans le bon ordre (du moins le comm au départ du script)

je suis sceptique sur ce script ou sur ma façon de faire…

voilà le status après redémarrage

[code]root@smtp:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp – 192.168.0.254 symposion.fr tcp dpt:http-alt
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
ACCEPT tcp – anywhere anywhere tcp dpt:666
ACCEPT tcp – anywhere anywhere tcp dpt:http-alt
ACCEPT icmp – anywhere anywhere
ACCEPT all – anywhere anywhere
LOG all – anywhere anywhere LOG level warning

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp – anywhere anywhere
ACCEPT tcp – anywhere 212.211.132.32 tcp dpt:http
ACCEPT tcp – anywhere 212.211.132.250 tcp dpt:http
ACCEPT tcp – anywhere anywhere tcp dpt:http
ACCEPT tcp – anywhere anywhere tcp dpt:https
ACCEPT tcp – anywhere anywhere tcp dpt:imaps
ACCEPT tcp – anywhere anywhere tcp dpt:ssmtp
ACCEPT tcp – anywhere anywhere tcp dpt:https
ACCEPT tcp – anywhere anywhere tcp dpt:smtp
ACCEPT tcp – anywhere anywhere tcp dpt:http-alt
ACCEPT udp – anywhere anywhere udp dpt:domain
LOG all – anywhere anywhere LOG level warning
REJECT all – anywhere anywhere reject-with icmp-port-unreachable

Chain fail2ban-dovecot (0 references)
target prot opt source destination

Chain fail2ban-postfix (0 references)
target prot opt source destination

Chain fail2ban-roundcube (0 references)
target prot opt source destination

Chain fail2ban-ssh (0 references)
target prot opt source destination [/code]
de là imposssible de joindre le serveur de l’exterieur (test avec http)
je le stoppe comme dit dans le tuto

[code]root@smtp:~# /etc/init.d/mesReglesIptables stop

  • Vidage des regles et des tables : [OK]
  • Autoriser toutes les connexions entrantes et sortantes : [OK]
    root@smtp:~# /etc/init.d/mesReglesIptables status
  • Liste des regles :
    Chain INPUT (policy ACCEPT)
    target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[/code]

y a pas un souci ?

je n’ai pas fait la suite du tuto car je ne sais pas trop quoi faire à ce stade
et ça qui revient alors que mon_parefeu est “stop”…

root@smtp:~# update-rc.d mesReglesIptables defaults update-rc.d: using dependency based boot sequencing insserv: Script mesReglesIptables is broken: incomplete LSB comment. insserv: missing `Provides:' entry: please add. insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing `Default-Start:' entry: please add even if empty. insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Default-Start undefined, assuming empty start runlevel(s) for script `mesReglesIptables' insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `mesReglesIptables' insserv: script mon_parefeu: service iptables already provided!

Envoie le script en place sur ta machine et la sortie d’iptables-save lorsque les règles sont actives.

je te fais ça dès que possible Pascal, merci enccore pour tes réponses et ton aide

alors le script mesReglesIptables

[code]#!/bin/sh

BEGIN INIT INFO

    # Provides:          mesReglesIptables
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Demarrage du script lors de la sequence de boot
    # Description:       Ajout des regles de parefeu
    ### END INIT INFO

    case "$1" in
    start)

    echo - Initialisation du firewall :

    # Vidage des tables et des regles personnelles
    iptables -t filter -F
    iptables -t filter -X
    echo - Vidage des regles et des tables : [OK]

    # Interdire toutes connexions entrantes et sortantes
    iptables -t filter -P INPUT DROP
    iptables -t filter -P FORWARD DROP
    iptables -t filter -P OUTPUT DROP
    echo - Interdire toutes les connexions entrantes et sortantes : [OK]

    # 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
    echo - Ne pas casser les connexions établies : [OK]

    ########## Regles ##########

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

    # Autoriser le ping
    iptables -t filter -A INPUT -p icmp -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -j ACCEPT

    # Autoriser SSH
    iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 666 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 666 -j ACCEPT

    # Autoriser DNS
    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

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

    # Autoriser FTP
    modprobe ip_conntrack_ftp
    iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
    modprobe ip_conntrack_ftp
    iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
    iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Autoriser HTTP et HTTPS
    iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

    # Autoriser POP3
    iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT

    # Autoriser SMTP
    iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

    # Autoriser IMAP
    iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

    # Autoriser POP3S
    iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
    iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT

    # Autoriser DMA pour le Monitoring de la Dedibox
    iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth0 -s 88.191.254.0/24 -p udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o eth0 -d 88.191.254.0/24 -p udp --sport 161 -m state --state ESTABLISHED -j ACCEPT
    echo - Initialisation des regles : [OK]

    ;;
    status)

    echo - Liste des regles :
    iptables -n -L

    ;;
    stop)
    # Vidage des tables et des regles personnelles
    iptables -t filter -F
    iptables -t filter -X
    echo - Vidage des regles et des tables : [OK]

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    echo - Autoriser toutes les connexions entrantes et sortantes : [OK]

    ;;
    esac
    exit 0

[/code]

le souci c’est que j’ai aussi ce script (nommé “mon_parefeu”)qui semble être au démarrage de la machine

[code]#!/bin/sh

BEGIN INIT INFO

Provides: iptables

Required-Start:

Should-Start:

Required-Stop:

Should-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-description: iptables

Description: Firewall

END INIT INFO

chargement/déchargement d’iptables

case “$1” in
’start’)
/sbin/iptables-restore < /etc/config_parefeu
RETVAL=$?
;;
‘stop’)
/sbin/iptables-save > /etc/config_parefeu
RETVAL=$?
;;
‘clean’)

clean le parefeu pendant que la machine tourne

ça peut être une faille de sécurite si on l’exécute lors de l’extinction avant l’arrêt des interfaces

pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l’extinction

/sbin/iptables -t filter -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t raw -F
/sbin/iptables -t filter -P INPUT ACCEPT
/sbin/iptables -t filter -P OUTPUT ACCEPT
/sbin/iptables -t filter -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P PREROUTING ACCEPT
/sbin/iptables -t mangle -P OUTPUT ACCEPT
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
/sbin/iptables -t mangle -P FORWARD ACCEPT
/sbin/iptables -t mangle -P INPUT ACCEPT
/sbin/iptables -t raw -P OUTPUT ACCEPT
/sbin/iptables -t raw -P PREROUTING ACCEPT
RETVAL=$?
;;
‘restart’)
$0 stop && $0 start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop | restart | clean}"
RETVAL=1
;;
esac
exit $RETVAL

[/code]

et la commande iptables-save renvoie

[code]root@smtp:~# iptables-save

Generated by iptables-save v1.4.14 on Thu Jan 29 11:51:53 2015

*mangle
:PREROUTING ACCEPT [104844]
:INPUT ACCEPT [100569]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [74221]
:POSTROUTING ACCEPT [76427]
COMMIT

Completed on Thu Jan 29 11:51:53 2015

Generated by iptables-save v1.4.14 on Thu Jan 29 11:51:53 2015

*nat
:PREROUTING ACCEPT [12895:1473054]
:INPUT ACCEPT [8620:1231232]
:OUTPUT ACCEPT [8173:614167]
:POSTROUTING ACCEPT [8173:614167]
COMMIT

Completed on Thu Jan 29 11:51:53 2015

Generated by iptables-save v1.4.14 on Thu Jan 29 11:51:53 2015

*filter
:INPUT ACCEPT [100569]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [74221]
COMMIT

Completed on Thu Jan 29 11:51:53 2015

[/code]

D’après le wiki Debian, les # de l’en-tête LSB doivent se trouver en début de ligne. Il faudrait donc supprimer les espaces ou tabulations qui les précèdent.

Il ne faut en laisser qu’un seul d’actif sinon le resultat est imprévisible.

Aucune règle et toutes les chaînes à ACCEPT par défaut. A priori cela correspond à la configuration “ouverte” du script mon_parefeu.

Merci Pascal
donc
je “colle le script à la bordure” pour le premmier et
je “stop” mon-parefeu ?

je vais testé

merci encore

Uniquement les lignes de l’en-tête LSB de [mono]### BEGIN INIT INFO[/mono] à [mono]### END INIT INFO[/mono]. L’indentation du reste peut être conservée si elle améliore la lisibilité du script.

Plus que ça : il faut le désactiver pour qu’il ne s’exécute plus automatiquement au démarrage du système sinon il entrera en conflit avec l’autre.

ok
j’ai ôté les indentations
j’ai stopé mon_parefeu et mis en “start” mesReglesIptables
quand j’ai voulu le mettre en default, encore ce message

root@smtp:~# update-rc.d mesReglesIptables defaults update-rc.d: using dependency based boot sequencing insserv: script mon_parefeu: service iptables already provided!
et voilà la commande iptables-save à jour

[code]root@smtp:~# iptables-save

Generated by iptables-save v1.4.14 on Sat Jan 31 16:16:51 2015

*mangle
:PREROUTING ACCEPT [282869:105808891]
:INPUT ACCEPT [273887:105323598]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [205522]
:POSTROUTING ACCEPT [210459]
COMMIT

Completed on Sat Jan 31 16:16:51 2015

Generated by iptables-save v1.4.14 on Sat Jan 31 16:16:51 2015

*nat
:PREROUTING ACCEPT [29934:3567757]
:INPUT ACCEPT [20744:3063912]
:OUTPUT ACCEPT [20158:1511049]
:POSTROUTING ACCEPT [20156:1510731]
COMMIT

Completed on Sat Jan 31 16:16:51 2015

Generated by iptables-save v1.4.14 on Sat Jan 31 16:16:51 2015

*filter
:INPUT DROP [54:11144]
:FORWARD DROP [0:0]
:OUTPUT DROP [2:318]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 666 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -s 88.191.254.0/24 -i eth0 -p tcp -m tcp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 88.191.254.0/24 -i eth0 -p udp -m udp --dport 161 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 666 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A OUTPUT -d 88.191.254.0/24 -o eth0 -p tcp -m tcp --sport 161 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -d 88.191.254.0/24 -o eth0 -p udp -m udp --sport 161 -m state --state ESTABLISHED -j ACCEPT
COMMIT

Completed on Sat Jan 31 16:16:51 2015

[/code]
si je ne me trompe pas en lisant ça a l’air plutôt pas mal… me trompe-je ?
Mon souci maintenant est de conserver ceci (si c’est bon) à chaque démarrage et donc par défault au lieu de mon_parefeu que je n’arrive pas à virer

Concernant mon_parefeu, il semble y avoir un autre script dans /etc/init.d qui fournit aussi le service “iptables” ([mono]# Provides: iptables[/mono]). Regarde leurs en-têtes. De toute façon il faut le désactiver ou le désinstaller. Regarde la page de manuel d’[mono]update-rc.d[/mono] pour voir comment le faire proprement.

pascal, ne me maudis pas stp mais je n’y comprends rien… :blush:

au pire
ne puis-je pas remplacer le contenu du script qui me gêne par celui que je veux ?

Oui à condition de conserver l’en-tête LSB d’origine, mais c’est laid.

Il y a deux moyens “propres” de ne plus exécuter le script mon_parefeu au démarrage, comme on peut le lire dans la page de manuel d’update-rc.d :

  • en le désactivant avec

(cela remplace les liens de démarrage [mono]/etc/rc?.d/S??mon_parefeu[/mono] par des lien d’arrêt [mono]K??mon_parefeu[/mono] dans tous les runlevels)

  • en supprimant (ou déplaçant) le script [mono]/etc/init.d/mon_parefeu[/mono] puis en exécutant

ce qui supprime les liens symboliques [mono]/etc/rc?.d/[SK]??mon_parefeu[/mono] dans tous les runlevels.

Il faut aussi rechercher quel autre script fournit le service “iptables”, car bien que mon_parefeu ne soit plus actif, cela pourrait signifier qu’encore un autre script manipule les règles iptables, ce qu’il faut éviter. Pour cela, il devrait suffire de chercher dans les scripts d’init avec

puis d’examiner le contenu de chaque script correspondant.

alors petit hic
après avoir bougé le script

voilà ce que j’ai fait sans succès

root@smtp:~# update-rc.d /home/mon_parefeu remove update-rc.d: using dependency based boot sequencing root@smtp:~# update-rc.d mon_parefeu remove update-rc.d: using dependency based boot sequencing
et il est bien dans /home (vu depuis le gestionnaire de fichier dans le serveur)

pour le supprimer, je dois le chown ? le chmod ?

pour ce qui concerne la commande de disable (que j’ai fait avant de bouger mon_parefeu), voilà le retour

root@smtp:~# update-rc.d mon_parefeu disable update-rc.d: using dependency based boot sequencing

et enfin

[code]root@smtp:~# grep -li iptables /etc/init.d/*
/etc/init.d/fail2ban
/etc/init.d/firewall.sh
/etc/init.d/iptables
/etc/init.d/mesReglesIptables
/etc/init.d/mesReglesIptables.save

[/code]
ah…