Iptable ouvrir les ports

Petite hypothèse :
Sur ta freebox, tu redirige le trafic à destination du port TCP/80 vers l’adresse 192.168.0.1 (adresse IPv4) alors que sur ton serveur Apache utile l’adresse IP v6 (tcp6 0 0 :::80 :::* LISTEN 1206/apache2).

Que donne :

ifconfig -a

As-tu essayé de “forcer” apache à utiliser l’adresse 192.168.0.1 ?

Il a net.ipv6.bindv6only=0, donc une socket TCP/UDP IPv6 sur l’adresse indéfinie accepte aussi les connexions en IPv4. D’ailleurs il a indiqué que ça marche en local.

bonjour,

Je vous envoie un message privé car il y a mon adresse prublic

root@debian:/home/serveur# ifconfig -a
eth0      Link encap:Ethernet  HWaddr f0:ad:4e:00:b2:42
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f2ad:4eff:fe00:b242/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:233244 errors:0 dropped:6 overruns:0 frame:0
          TX packets:47500 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:19890188 (18.9 MiB)  TX bytes:14571793 (13.8 MiB)
          Interrupt:11

eth1      Link encap:Ethernet  HWaddr f0:ad:4e:00:b2:43
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:15

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:85 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:15102 (14.7 KiB)  TX bytes:15102 (14.7 KiB)

pan0      Link encap:Ethernet  HWaddr 3a:0e:38:1b:ed:53
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@debian:/home/serveur#

Merci.

Ok, merci. Je ne savais pas si cela suffisait pour que ça fonctionne.

Vu ton message privé.
Les tcptraceroute depuis chez moi vers les ports 22 et 80 donnent les mêmes résultats finaux que toi. Dans ta capture de paquets on ne voit aucune demande de connexion au port 80 provenant de l’extérieur. Par contre on voit des requêtes ARP provenant de la box pour l’adresse 192.168.0.20 qui semblent rester sans réponse puisqu’elles se répètent plusieurs fois à intervalle d’une seconde. Cela peut correspondre au résultat !H (ICMP destination host unreachable) du tcptraceroute pour le port 80.

A partir de ces éléments mon hypothèse est que la redirection du port 80 dans la freebox est vers l’adresse 192.168.0.20 et non 192.168.0.1 comme attendu. Si l’interface de gestion de la freebox indique 192.168.0.1, ne manque-t-il pas une opération pour que ce soit prise en compte, comme un redémarrage de la box ?

bonjour,

PascalHambourg
effectivement il y a le port 80 redirigé sur l’ip 192.168.0.20 de la freebox.
Je l’ai supprimé.
Quand je modifie le routeur de la freebox je la reboot tjr.
mais ce marche pas.

Mais c’est curieux mon serveur avant etait sous microsft et ca marché sur le port 80 Wamp.
ca craint, je le transfert sur debian !

secuip

Alors la je ne comprend pas ce que vous voulez dire ?
Je suis en IPV4 pourtant mais ip son en IPV4 et non en IPV6 ??? je pige pas la ???
Que voulez vous dire

J’ai fait un test
dans /etc/apache2/ports.conf j’ai remplacé la ligne “listent 80” par "Listen 8585"
puis j’ai fait

/etc/init.d/apache2 restart
iptables -t filter -A INPUT -p tcp --dport 8585 -j ACCEPT

Le routeur de de la freebox redirige le port 8585 tcp sur l’ip 192.168.0.1

quand je tape monipprive:8585 dans le navigateur il m’affiche dans la barre de titre "erreur 404 no found mozzilla"
et dans le navigateur

Not Found
 

The requested URL / was not found on this server.
Apache/2.2.16 (Debian) Server at 78.xxx.xx.xxx Port 8585[/code]
par contre si je tape tout cour [monipprive:80](http://monipprive:80))
il m'affiche dans la barre de titre "Erreur de chargement de la page mozilla"
et dans le navigateur [code]La connexion a échoué
          Firefox ne peut établir de connexion avec le serveur à l'adresse 78.xxx.xx.xxx.
        
  Le site est peut-être temporairement indisponible ou surchargé. Réessayez plus
    tard ;
  Si vous n'arrivez à naviguer sur aucun site, vérifiez la connexion
    au réseau de votre ordinateur ;
  Si votre ordinateur ou votre réseau est protégé par un pare-feu ou un proxy,
    assurez-vous que Firefox est autorisé à accéder au Web.
Réésayer

A noter qn’en local c’est pareil avec 192.168.0.1:8585

Pouvez vous retester sur le port 8585
Merci.

J’obtiens les mêmes résultats que toi. J’en conclus :

  1. La réponse du serveur sur le port 8585 vient probablement de la configuration des virtualhosts d’apache qui ne sont accessibles que sur le port 80. En tout cas la redirection fonctionne.

  2. Il y a toujours un problème de redirection du port 80. Tu peux refaire le test avec tcpdump pour voir quelle est l’adresse IP demandée dans les requêtes ARP de la box quand tu essaies d’accéder au port 80.

Bonjour,
Je vous l’ai envoyé en mp.
Merci

Tu peux regarder toi-même, ce n’est pas difficile. Ce sont des lignes qui se répètent comme celle-ci, non suivies d’une réponse :

ARP, Request who-has 192.168.0.240 tell 192.168.0.254

192.168.0.254 (la box) demande qui a l’adresse 192.168.0.240. Donc la redirection semble se faire maintenant vers cette adresse. D’où vient-elle ? Qu’as-tu changé ?

Dans ton dernier MP. J’ai bien une erreur 404 retourné par ton serveur, donc :

  • ta redirection réseau actuelle fonctionne
  • c’est un problème de configuration d’Apache ou il n’y a pas de page web présente dans le répertoire d’hébergement du site

Sur le port 80 le traceroute aboutit maintenant et je reçois bien la page par défaut “it works”.

Bonsoir,

Dans le routeur de la freebox, j’ai supprimé toute les adresses ip redirigé vers le port 80

192.168.0.240 (cam de surveillance)
192.168.0.20 (cam de surveillance)
192.168.0.2 (Wamp)

Et ca marche
idem pour asterisk sur le port 5060

192.168.0.2 (sip)

Et ca marche

Comment saviez vous que cette ligne redirige sur le port 80 c’est pas indiqué
18:39:08.514906 ARP, Request who-has 192.168.0.254 tell 192.168.0.1, length 28

Comme j’ai ouvert le port 8585 pour faire un test

# iptables -t filter -A INPUT -p tcp --dport 8585 -j ACCEPT

Quel est la commande pour fermer le port ?

root@debian:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     udp  --  anywhere             anywhere            udp dpt:sip
ACCEPT     udp  --  anywhere             anywhere            udp dpts:10000:20000
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:sip
ACCEPT     udp  --  anywhere             anywhere            udp dpt:sip
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:8585

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@debian:~#

Je vous remercie de votre aide.

Tu supprime la ligne suivante de ton fichier de configuration Iptables et tu le réapplique (ou tu redémarre :119 ) :

iptables -t filter -A INPUT -p tcp --dport 8585 -j ACCEPT

On en ferme pas un port, on n’autorise plus les paquets à destination de ce port (pour ton vocabulaire d’informatologue :wink: ).

Il y en avait plusieurs ? Ça ne peut pas marcher. Un port ne peut évidemment faire l’objet que d’une seule redirection vers une seule adresse. Comment le routeur saurait-il quelle règle appliquer s’il y en a plusieurs ?

Ce n’est pas exactement cette ligne, car ici il s’agit d’une requête ARP émise par le serveur pour l’adresse de la box. Ce que je recherchais, c’était l’inverse : une requête de la box à destination de l’adresse de redirection, répétée car sans réponse.
Le scénario est le suivant :

  • la box reçoit une demande de connexion sur le port 80
  • elle a une règle de redirection du port 80 vers l’adresse X
  • elle envoie une requête ARP pour cette adresse X
  • si l’adresse X répond, la box lui fait suivre la demande de connexion
  • sinon, après plusieurs tentatives la box renvoie un message d’erreur ICMP “destination host unreachable” au client, ce qui se traduit par “!H” dans le traceroute TCP.

Pour fermer le port 8585, il faut reconfigurer apache pour qu’il n’écoute plus dessus et le relancer.
Pour supprimer la règle iptables (ce qui est totalement différent), c’est la même commande que pour l’ajouter avec -D au lieu de -A. Mais de toute façon cette règle ne servait à rien (de même que les autres règles) puisqu’il n’y avait que des règles ACCEPT et la politique par défaut était aussi ACCEPT, donc tout était déjà accepté.

Bonsoir,

Vous voulez dire que mon serveur linux est une vrai passoire a la windode !
j’ai pourtant suivi ce tuto —> debian-fr.org/installation-p … t1901.html
ou bien j’ai mal compris les manip ?
si tout les ports sont ouvert ca fait peur
j’ai du sip via asterisk sur mon serveur ça craint non de dieu

Merci

Non, pas forcément. Une passoire, ce serait plutôt une machine avec des services configurés n’importe comment, des failles de sécurité dans ses logiciels…

Bloquer l’accès à des ports qui ne sont pas ouverts est d’un intérêt discutable sur une machine propre, bien configurée et à jour.

Possible. Dans ton jeu de règles je ne retrouve ni le réglage de la politique par défaut des chaînes, ni les règles pour l’interface de loopback ni celles pour le suivi de connexion.

non, c’est ton parefeu qui est une vrai passsoire, il ne sert à rien en fait, tu dois activer le Drop par défaut et spécifier la ligne du suivi de connexion, connexions dites déjà établies.

Chain INPUT (policy ACCEPT)----------> Chain INPUT (policy DROP)

script iptables pour ton serveur http en supposent qu’il n’est qu’une carte réseau.
c’est une version simplifier de celui-ci

#! /bin/sh
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:   
# Required-Stop:   
# Should-Start:     
# Should-Stop:       
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: script iptables
### END INIT INFO
 
# activer au demarage.
# en root avec su ou sudo
# cp ...iptables /etc/init.d/
# chown root:root /etc/init.d/iptables
# chmod 750 /etc/init.d/iptables
# update-rc.d iptables defaults
# /etc/init.d/iptables start
 
on="1"
off="0"
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
interface_WAN="eth0"
fileipblackliste="/usr/local/share/ipblacklist"
##### règles à appliquer ou non ######
ipblacklist=$off
pingexterne=$on
serveurhttpd=$on
clientNTP=$on

###################################
IPmaskValide() {
ip=$(echo $1 | cut -d"/" -f1)
mask=$(echo $1 | cut -d"/" -f2)
if [ ! $(echo $ip | grep -c "^\(\(2[0-5][0-5]\|1[0-9][0-9]\|[0-9]\{1,2\}\)\.\)\{3\}\(2[0-5][0-5]\|1[0-9][0-9]\|[0-9]\{1,2\}\)") -eq 1 ];then
	return 0
fi
if [ ! $(echo $mask | grep -c "\([1-9]\|[1-2][0-9]\|3[0-2]\)$") -eq 1 ];then
	i=1 
	octn=255
	result=1
	while [ $i -le 4 ]
	do
  	oct=$( echo $mask | cut -d "." -f$i )
  	if [ ! $octn -eq 255 ];then
		if [ ! $oct -eq 0 ];then
			result=0
			break
  		fi
  	fi 
  	octn=$oct
  	if [ ! $oct -eq 255 ] &&  [ ! $oct -eq 254 ]  &&  [ ! $oct -eq 252 ] &&  [ ! $oct -eq 248 ] &&  [ ! $oct -eq 240 ] &&  [ ! $oct -eq 224 ] &&  [ ! $oct -eq 192 ] &&  [ ! $oct -eq 128 ] &&  [ ! $oct -eq 0 ]; then
		result=0
		break	
	  fi
	i=$( expr $i + 1 )
	done
	if [ $result -eq 1 ] ;then
	    return 1
	else
            return 0
	fi
else
	return 1
fi
}
start() {
    ## parametrage pour ce protéger contre les attaques par spoofing et par synflood
    sysctl -w net.ipv4.conf.default.rp_filter=1
    sysctl -w net.ipv4.conf.all.rp_filter=1
    sysctl -w net.ipv4.tcp_syncookies=1
    sysctl -w net.ipv4.tcp_max_syn_backlog=1280
    ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUT!!) ###
    iptables -F
    iptables -X
    ### BLOQUE TOUT PAR DEFAUT (si aucune règle n'est définie par la suite) ###
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    ### Iptables refuse les scans XMAS et NULL
   iptables -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
   iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    ### Iptables limite TCP, UDP, ICMP Flood !
    ### Une des attaques possible est de saturer votre interface réseau.
   # TCP Syn Flood
   iptables -A INPUT -i $interface_WAN -p tcp --syn -m limit --limit 3/s -j ACCEPT
   # UDP Syn Flood
   iptables -A INPUT -i $interface_WAN -p udp -m limit --limit 10/s -j ACCEPT
   # Ping Flood
   if [ $pingexterne  -eq $on ];then
      iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
      iptables -A INPUT -i $interface_WAN -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
   fi
 
    ### IP indésirables
    ## en gros elles sont sur le site du RIPE (organisme distribuant les IP ou plage   IP aux professionnels)
    ## site du RIPE https://apps.db.ripe.net/search/full-text.html (HADOPI et trident media guard (tmg) sont les mots à rechercher ;)
    if [ $ipblacklist=$on ];then
       if [ -e $fileipblackliste ]
       then
	   while read ligne
	   do
		ipdrop=`echo $ligne | cut -d " " -f1`
	        IPmaskValide $ipdrop
		if [ $? -eq 1 ]  ; then
			iptables -I INPUT  -s $ipdrop -j DROP
			iptables -I OUTPUT  -d $ipdrop -j DROP
		fi 
          done < $fileipblackliste
       else
	    echo > $fileipblackliste
	    chown root:root $fileipblackliste
	    chmod 750 $fileipblackliste
       fi
    fi
   # les lignes du fichier ipblacklist doivent être de type :
   # xxx.xxx.xxx.xxx/xx <=espace commentaire sans le # au debut bien sûr
   # ou
   # xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx <=espace commentaire en fonction de comment on écrit le masque réseau
 
    ### ACCEPT ALL interface loopback ###
    iptables -A INPUT  -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
 
    ### accepte en entrée les connexions déjà établies (en gros cela permet d'accepter 
    ### les connexions initiées par sont propre serveur)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
    ### DHCP a priori pas utile pour un serveur souvent en ip FIX
    ## iptables -A OUTPUT -o $interface_WAN -p udp --sport 68 --dport 67 -j ACCEPT
    ## iptables -A INPUT -i $interface_WAN -p udp --sport 67 --dport 68 -j ACCEPT
 
    ### DNS indispensable pour naviguer facilement sur le web ###
    iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
 
    ### HTTP navigation internet non sécurisée ###
    iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

    if [  $clientNTP -eq $on ]
    then
       iptables -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
    fi
    ### serveur http
    if [ $serveurhttpd=$on ];then
          phttp="80"
          iptables -A INPUT -p tcp -m tcp --dport $phttp -j ACCEPT
          iptables -A INPUT -p tcp -m tcp --dport $phttp -j ACCEPT
    fi
    
    ### HTTPS pour le site des banques .... ###
    iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
    ### ping ... autorise à "pinger" un ordinateur distant ###
    iptables -A OUTPUT -p icmp -j ACCEPT
  
    ### LOG ### Log tout ce qui qui n'est pas accepté par une règles précédente
        # prérequis :       sudo apt-get install sysklogd
        # echo 'kern.warning             /var/log/iptables.log' > /etc/syslog.conf                     
    iptables -A OUTPUT -j LOG --log-level 4
    iptables -A INPUT -j LOG  --log-level 4
    iptables -A FORWARD -j LOG  --log-level 4
    echo "############ <START> ##############"
    iptables -L -n
    echo "############ </START> ##############"
}
stop() {
### OUVRE TOUS !! ###
    iptables -F
    iptables -X
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    echo "############ <STOP> ##############"
    iptables -L -n
    echo "############ </STOP> ##############"
}
 
case "$1" in
  start)
   start
    ;;
  stop)
      stop
    ;;
  restart)
   stop
   start
    ;;
  *)
    N=/etc/init.d/${0##*/}
    echo "Usage: $N {start|stop|restart}" >&2
    exit 1
    ;;
esac
 
exit 0

Bonjour,

J’ai ajouté le port 4661 tcp

# iptables -t filter -A INPUT -p tcp --dport 4661 -j ACCEPT

2/ Je voudrai redémarrer iptables pour que le port ajouté soit pris en compte, quel est la commande ?

root@debian:~# /etc/init.d/iptables restart
-bash: /etc/init.d/iptables: No such file or directory
root@debian:~# /etc/init.d/firewall restart
-bash: /etc/init.d/firewall: No such file or directory
root@debian:~# 

je voudrai supprimer de iptables le port tcp 8585

iptables -t filter -A INPUT -p tcp --dport 8585 -j ACCEPT 

Je voudrai édité avec nano iptables pour surprimer la ligne ci-dessus, mais je ne trouve pas le fichier.
Quel est le nom du fichier ?

Merci.

//