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

je viens de faire

root@smtp:~# update-rc.d firewall.sh disable update-rc.d: using dependency based boot sequencing insserv: warning: current start runlevel(s) (empty) of script `firewall.sh' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `firewall.sh' overrides LSB defaults (0 1 6). root@smtp:~# update-rc.d mesReglesIptables defaults update-rc.d: using dependency based boot sequencing

contenu de firewall.sh

#!/bin/sh
#
# Simple Firewall configuration.
#
# Author: Nicolargo
#
# chkconfig: 2345 9 91
# description: Activates/Deactivates the firewall at boot time
#
### BEGIN INIT INFO
# Provides:          firewall.sh
# Required-Start:    $syslog $network
# Required-Stop:     $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start firewall daemon at boot time
# Description:       Custom Firewall scrip.
### END INIT INFO

PATH=/bin:/sbin:/usr/bin:/usr/sbin

# Services that the system will offer to the network
TCP_SERVICES="22 666 8080" # SSH 
UDP_SERVICES=""
# Services the system will use from the network
REMOTE_TCP_SERVICES="80 443 993 465 443 25 8080" # web browsing
REMOTE_UDP_SERVICES="53" # DNS
# FTP backups 
# Allow backups to an external FTP
FTP_BACKUPS=""

if ! [ -x /sbin/iptables ]; then
        for PORT in $TCP_SERVICES; do
                /sbin/iptables -A INPUT -p tcp --dport ${PORT} -j ACCEPT
        done
fi
if [ -n "$UDP_SERVICES" ] ; then
        for PORT in $UDP_SERVICES; do
                /sbin/iptables -A INPUT -p udp --dport ${PORT} -j ACCEPT
        done
fi

# Ftp backups
if [ -n "$FTP_BACKUPS" ] ; then
        # The following two rules allow the inbound FTP connection
        /sbin/iptables -A INPUT -p tcp --sport ${FTP_BACKUPS} -m state --state ESTABLISHED -j ACCEPT
        /sbin/iptables -A OUTPUT -p tcp --dport ${FTP_BACKUPS} -m state --state NEW,ESTABLISHED -j ACCEPT
        # The next 2 lines allow active ftp connections
        #/sbin/iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
        #/sbin/iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
        # These last two rules allow for passive transfers
        /sbin/iptables -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
        /sbin/iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: -m state --state NEW,ESTABLISHED,RELATED -j$
fi


# Remote testing
/sbin/iptables -A INPUT -p icmp -j ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -j LOG

# Output:
/sbin/iptables -A OUTPUT -j ACCEPT -o lo
/sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMP is permitted:
/sbin/iptables -A OUTPUT -p icmp -j ACCEPT
# So are security package updates:
# Note: You can hardcode the IP address here to prevent DNS spoofing
# and to setup the rules even if DNS does not work but then you
# will not "see" IP changes for this service:
/sbin/iptables -A OUTPUT -p tcp -d security.debian.org --dport 80 -j ACCEPT

# As well as the services we have defined:
if [ -n "$REMOTE_TCP_SERVICES" ] ; then
        for PORT in $REMOTE_TCP_SERVICES; do
                /sbin/iptables -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
        done
fi
if [ -n "$REMOTE_UDP_SERVICES" ] ; then
        for PORT in $REMOTE_UDP_SERVICES; do
                /sbin/iptables -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
        done
fi
# All other connections are registered in syslog
/sbin/iptables -A OUTPUT -j LOG
/sbin/iptables -A OUTPUT -j REJECT
/sbin/iptables -P OUTPUT DROP

# Other network protections
# (some will only work with some kernel versions)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
}

##########################
# Stop the Firewall rules
##########################

fw_stop () {
        /sbin/iptables -F
        /sbin/iptables -t nat -F
        /sbin/iptables -t mangle -F
        /sbin/iptables -P INPUT DROP
        /sbin/iptables -P FORWARD DROP
        /sbin/iptables -P OUTPUT ACCEPT

}

##########################
# Clear the Firewall rules
##########################

fw_clear () {
        /sbin/iptables -F
        /sbin/iptables -t nat -F
        /sbin/iptables -t mangle -F
        /sbin/iptables -P INPUT ACCEPT
        /sbin/iptables -P FORWARD ACCEPT
        /sbin/iptables -P OUTPUT ACCEPT
}

############################
# Restart the Firewall rules
############################

fw_restart () {
        fw_stop
        fw_start
}

##########################
# Test the Firewall rules
##########################

fw_save () {
        /sbin/iptables-save > /etc/iptables.backup
}

fw_restore () {
        if [ -e /etc/iptables.backup ]; then
                /sbin/iptables-restore < /etc/iptables.backup
        fi
}
fw_test () {
        fw_save
        fw_restart
        sleep 30
        fw_restore
}

case "$1" in
        start|restart)
echo -n "Starting firewall..."
fw_restart
echo "done."
;;
stop)
echo "\033[31;01mBE VERY CAREFUL !!! The incoming and outgoing connection (including the current one) will be s$
read -r -p "Stop all connections ? [Y/n] " response
case $response in
        [yY][eE][sS]|[yY]) 
echo -n "Stopping firewall..."
fw_stop
echo "done."
;;
*)
echo "canceled"
;;
esac
;;
clear)
echo -n "Clearing firewall rules..."
fw_clear
echo "done."
;;
test)
echo -n "Test Firewall rules..."
echo -n "Previous configuration will be restore in 30 seconds"
fw_test
echo -n "Configuration as been restored"
;;
*)
echo "Usage: $0 {start|stop|restart|clear|test}"
echo "Be aware that stop drop all incoming/outgoing traffic !!!"
exit 1
;;
esac
exit 0

Quelques remarques:
Pour tes règles: il n’y a pas de règles acceptant forward, mais tu es peut être sur la machine même.

Pour les fichiers, tu as le fichier /etc/init.d/.depend.start qui t’indique les services. Fais un

grep iptables /etc/init.d/* | grep Provides

Ça sera plus précis.

Salut fran
voilà le retour de la commande (oui je suis sur la machine en ce moment mais pas tout le temps)

root@smtp:~# grep iptables /etc/init.d/* | grep Provides /etc/init.d/iptables:# Provides: iptables

/home n’est pas le meilleur emplacement pour stocker les bidouilles de root. /root serait préférable. Mais c’est un détail.

Ce n’est pas la commande que j’ai indiquée. Il ne faut mettre que le nom du script, qui est censé être (ou avoir été dans le cas de [mono]remove[/mono]) dans /etc/init.d.
La commande suivante est correcte.

[quote=“kri2sis”]et il est bien dans /home (vu depuis le gestionnaire de fichier dans le serveur)
pour le supprimer, je dois le chown ? le chmod ?[/quote]
Pas besoin : en root, les permissions sont ignorées. Pourquoi voudrais-tu le supprimer après l’avoir déplacé ? Si tu ne voulais pas le conserver par précaution, il suffisait de le supprimer directement dans /etc/init.d.

Tu peux vérifier l’effet de [mono]remove[/mono] par l’absence de liens symboliques S ou K pointant vers le script dans les répertoires /etc/rc*.d/ des runlevels, et l’effet de [mono]disable[/mono] par présence de liens symboliques K seulement, pas de S.

[quote=“kri2sis”]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[/quote]
Houla, il va falloir faire du ménage dans tout ce bazar. Normal que fai2ban et ton nouveau script remontent, mais il faut vérifier les trois autres.

Ce n’est pas lui qui fournissait le service “iptables”, donc c’est le script nommé [mono]iptables[/mono]. De toute façon il faut les désactiver tous les deux.

[quote=“fran.b”]Fais un
grep iptables /etc/init.d/* | grep Provides
Ça sera plus précis.[/quote]
Mais trop restrictif. Si un script manipule iptables mais fournit un service dont le nom ne contient pas “iptables”, il ne sera pas affiché. Mieux vaut ratisser large et raffiner ensuite.

bon pour faire les choses mieux, j’ai bougé /home/mon_parefeu dans /root

ensuite j’ai essayé de virer ou de disable iptables mais je ne sais pas trop si c’est ok…

root@smtp:~# update-rc.d iptables remove update-rc.d: using dependency based boot sequencing root@smtp:~# update-rc.d iptables disable update-rc.d: using dependency based boot sequencing update-rc.d: error: no runlevel symlinks to modify, aborting!

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
je peux les bouger au cas où…?!

nota : je viens de redémarré le serveur et je ne crois avoir de souci de connexion (test avec mon phone en wifi et en 3G)

nouveau iptables-save

[code]root@smtp:~# update-rc.d mesReglesIptables defaults
update-rc.d: using dependency based boot sequencing
root@smtp:~# insserv mesReglesIptables
root@smtp:~# iptables-save

Generated by iptables-save v1.4.14 on Sat Jan 31 22:59:52 2015

*filter
:INPUT DROP [18:4360]
:FORWARD DROP [0:0]
:OUTPUT DROP [58:6301]
-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 22:59:52 2015

[/code]

et j’ai virer les deux scripts dans /root

root@smtp:~# grep -li iptables /etc/init.d/* /etc/init.d/fail2ban /etc/init.d/mesReglesIptables /etc/init.d/mesReglesIptables.save

Comme j’ai écrit dans mon message précédent : vérifie les liens symboliques des différents scripts dans [mono]/etc/rc*.d[/mono]. S’il n’y en a pas et si le script n’existe plus dans [mono]/etc/init.d[/mono] : script supprimé ; s’il n’y a que des K : script désactivé. Si le script existe dans [mono]/etc/init.d[/mono] mais aucun lien dans [mono]/etc/rc*.d[/mono], tu peux l’effacer ou le déplacer.

comment puis- savoir avec certitude que tout est ok ?

je pense que c’est ok mais je ne suis pas sûr…

“Tout” dépasse quelque peu le cadre de ce sujet. Concernant l’activation des scripts d’init, j’ai déjà tout dit. Concernant la validité de ton nouveau jeu de règles iptables, je n’ai pas regardé. Il faut tester.

je teste en rebootant le serveur manuellement et je pose les iptables-save ? (je les ai mises plus haut au cas où mais je peux les reposer

Dans la forme, il a l’air globalement cohérent. Dans les détails, il n’y a que toi qui peux savoir si ça fait ce que tu veux que ça fasse.

et bien ce que je veux c’est pouvoir accéder au server depuis http, sftp et ssh, aller sur http depuis le serveur
et tout cela sans que je doivent agir à chaque redémarrage du serveur.
je veux aussi que le serveur soit protéger des intrusions
je crois que c’est tout mais deja pas mal…

est-ce que les règle mon firewall sont idéales pour ce faire stp

Bien entendu je te remercie énormément pour avoir résolu ce problème qui date de fort longtemps et pour ta patience :wink:

Il y a dans ton script beaucoup plus de règles que nécessaire pour juste cela. Plusieurs des ports autorisés n’ont rien à avoir avec aucun des protocoles que tu as mentionnés.

Est-ce que c’est gênant pour la sécurité ?
si tu me les cite je peux voir à les ôter…
en gros si je ne me trompe pas, je me sers des input/output 666, 443, 80, 25, … je ne sais plus du coup pour le reste…

C’est à toi de savoir de quels ports tu as besoin ou non. Je ne peux pas répondre à ta place, ne connaissant pas les services que tu utilises ou fournis. Tu me dis SSH et HTTP, or ton script autorise des ports comme 666, 25 qui n’ont rien à voir. Je me contente de pointer l’incohérence. A toi de voir si c’est l’expression du besoin qui était incomplète ou les règles qui sont trop laxistes.

le port 666 est utilisé pour me connecter au shell et à mon serveur via sftp
le port 25 n’est pas un port qui concerne les mails ? j’envoie et reçois des mails sur mon serveur…

Si tu utilises le port 666 pour SSH et SFTP, à quoi sert le port 22 qui est aussi autorisé ?

Tu n’avais pas parlé de mail dans ton expression de besoin que je rappelle :

Et “mail”, c’est vague : il y a divers protocoles avec chacun leurs ports qui servent au mail comme SMTP et son dérivé Submission, POP, IMAP, sans parler de leurs variantes SSL-isées.

Pour finir, quasiment les mêmes ports sont autorisés en entrée et en sortie. La machine utilise-t-elle vraiment les mêmes services que ceux qu’elle fournit et vice versa ?