Firewall

kenneth007 Messages postés 14 Statut Membre -  
kenneth007 Messages postés 14 Statut Membre -
Bonjour,

j'ai install un petit réseau sur lequel il y'a un parefeu (Netfilter), un proxy et un serveur web.
Chaque machine a une adresse statique.Mon problème est que si je démarre le parefeu certains sites ne passent pas. quand je fais un ping sur ces sites ça passe. Quand j'arrête le parefeu tout roule à merveil.
J'ai tester toutes mes règles, ça mache, alors je sais pas ce que c'est! merci d'avance pour vos reponses
Configuration: Linux Ubuntu 7.10

4 réponses

  1. Youplaboum
     
    quels sites ?
    0
    1. kenneth007 Messages postés 14 Statut Membre 2
       
      Bonjour,

      Je voudraiq d'abord vous remercier d'avance d'avoir accepter de m'aider.
      Alors la pluspart des sites comme yahoo, hotmail , wikipedia, etc....
      -1
      1. Youplaboum > kenneth007 Messages postés 14 Statut Membre
         
        peut on avoir le script du firewall ?
        0
      2. kenneth007 Messages postés 14 Statut Membre 2 > Youplaboum
         
        Voici le script du firewall

        #! /bin/bash
        . /lib/lsb/init-functions
        case "$1" in

        'start')
        log_daemon_msg "Démarrage du parefeu..."
        modprobe ip_tables
        modprobe iptable_filter
        modprobe ipt_state
        modprobe ip_conntrack
        modprobe ip_conntrack_ftp
        modprobe ip_conntrack_irc
        modprobe ip_nat
        modprobe ip_nat_ftp
        modprobe ip_nat_irc
        iptables-restore < /etc/init.d/firewall.conf
        echo 1 > /proc/sys/net/ipv4/ip_forward
        sleep 1
        RETVAL=$?
        log_end_msg $RETVAL
        ;;

        'stop')
        log_daemon_msg "Arrêt du parefeu..."
        iptables-restore < /etc/init.d/firewall.conf
        iptables-save > /etc/init.d/firewall.conf

        #Clean le parefeu pendant que la machine tourne
        log_daemon_msg "Remise à zéro des règles du parefeu"
        iptables -F
        iptables -X
        iptables -Z
        iptables -t nat -F
        iptables -t nat -X
        iptables -t mangle -F
        iptables -t mangle -X
        iptables -P OUTPUT ACCEPT
        iptables -P INPUT ACCEPT
        iptables -P FORWARD ACCEPT

        #Désactive le partage de connexion
        echo 0 > /proc/sys/net/ipv4/ip_forward
        RETVAL=$?
        log_end_msg $RETVAL
        ;;

        'restart')
        $0 stop && $0 start
        ;;

        'clean')
        $0 stop
        log_daemon_msg "Activation du partage de connexion"
        #Active le partage de connexion
        echo 1 > /proc/sys/net/ipv4/ip_forward
        iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
        #Redémarre la connexion internet PPP
        poff
        pon dsl-provider
        sleep 1
        RETVAL=$?
        log_end_msg $RETVAL

        ;;
        'status')
        iptables-save
        sleep 1
        RETVAL=$?
        log_end_msg $RETVAL
        ;;
        'init')
        log_daemon_msg "Initialisation des règles du parefeu..."
        /etc/init.d/firewall.init
        iptables-save > /etc/init.d/firewall.conf
        $0 start
        RETVAL=$?
        sleep 1
        log_end_msg $RETVAL
        ;;
        *)
        echo "Usage: /etc/init.d/firewall {start|stop|restart|status|clean|init}"

        RETVAL=1
        log_end_msg $RETVAL
        ;;
        esac

        exit $RETVAL



        # !/bin/bash
        ####################################################
        #Variables globales#################################
        ####################################################

        NET_ETH=ppp0 ;
        LAN_ETH=eth1 ; # Interface reseau interne
        LAN_IP=192.168.16.1 ; # Adresse reseau interne
        LAN_NETWORK=192.168.16.0/24 ; # Reseau interne
        LAN_BROADCAST=192.168.16.255 ; # Adresse de broadcast interne
        IP_PROXY=192.168.16.3 ; # Adresse IP du Proxy
        IP_PUBLIC=41.233.187.150 ; # Adresse IP publique
        FTP_DATA_PORT=20 ;
        FTP_PORT=21 ; # Port d'ecoute du serveur local
        SSH_PORT=22 ; # Port d'ecoute du Serveur SSH local
        SMTP_PORT=25 ; # Port d'ecoute du serveur SMTP local
        DNS_PORT=53 ; # Port d'ecoute du serveur DNS local
        TFTP_PORT=69 ; # Port d'ecoute du serveur TFTP local
        WEB_PORT=80 ; # Port d'ecoute du servur WEb local
        SFTP_PORT=115 ; # Port d'ecoute du serveur SFTP local
        HTTPS_PORT=443 ; # Port d'ecoute du serveur HTTPS local
        POP3_PORT=110 ; # Port d'ecoute du serveur POP3 local
        IMAP_PORT=143 ; # Port d'ecoute du serveur IMAP local
        MMCC_PORT=5050 ; # Port d'ecoute du serveur yahoo
        MSN_PORT=1863 ; # Port d'ecoute du serveur MSN
        UNPRIVPORTS="1024:65535";

        ###########################################################################
        ###################Initialisation des tables###############################
        # Initialise la table Filter (par defaut tout les echanges sont refuses)

        iptables -F
        iptables -X
        iptables -Z
        iptables -P INPUT DROP
        iptables -P FORWARD DROP
        iptables -P OUTPUT DROP

        # Initialisation de la table NAT (par defaut tout les echanges sont actives)
        iptables -t nat -F
        iptables -t nat -X


        # Initialisation de la table Mangle(par defaut tout les echanges sont actives)
        iptables -t mangle -F
        iptables -t mangle -X


        # On rejete les requetes icmp du type echo-request
        iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/min -j LOG --log-prefix "rejet_paquet_ICMP"
        iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


        # On autorise le ping sur l'interface LAN du parefeu et du LAN vers l'extérieur
        iptables -A INPUT -i $LAN_ETH -p icmp -j ACCEPT
        iptables -A FORWARD -s $LAN_NETWORK -p icmp -j ACCEPT

        # On autorise l'interface loopback à dialoguer avec elle-meme
        iptables -A OUTPUT -o lo -j ACCEPT
        iptables -A INPUT -i lo -j ACCEPT

        # On redirige les requetes en provenance de l'exterieur vers le serveur approprié
        iptables -t nat -A PREROUTING -i $NET_ETH -d $IP_PUBLIC -p tcp -m multiport --dports $WEB_PORT,$FTP_DATA_PORT,$FTP_PORT,$DNS_PORT,$SFTP_PORT,$SSH_PORT -j DNAT --to-destination $IP_PROXY
        iptables -t nat -A PREROUTING -i $NET_ETH -d $IP_PUBLIC -p udp -m multiport --dports $SSH_PORT,$DNS_PORT,$TFTP_PORT -j DNAT --to-destination $IP_PROXY

        # On redirige vers le proxy les requets HTTP et FTP du LAN destinées vers l'exterieur \(sauf le proxy\)
        # iptables -t nat -A PREROUTING -i $LAN_ETH -s ! $IP_PROXY -p tcp -m multiport --dports $WEB_PORT,$FTP_PORT,$FTP_DATA_PORT -j DNAT --to-destination $IP_PROXY:3128

        # On accepte tous les paquets faisant partie d'une connexion déjà établie
        iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

        # On autorise les nouveaux paquets à transiter par le parefeu pour les services autorisés
        #iptables -A FORWARD -s $LAN_NETWORK -i $LAN_ETH -o $NET_ETH -p tcp -m multiport --dports $WEB_PORT,$MMCC_PORT,$MSN_PORT,$IMAP_PORT,$POP3_PORT,$FTP_PORT,$FTP_DATA_PORT,$HTTPS_PORT,$DNS_PORT,$SFTP_PORT,$SSH_PORT -m state --state NEW -j ACCEPT
        #iptables -A FORWARD -d $IP_PROXY -p tcp -m multiport --dports $WEB_PORT,$SMTP_PORT,$FTP_PORT,$FTP_DATA_PORT -m state --state NEW -j ACCEPT
        #iptables -A FORWARD -s $LAN_NETWORK -i $LAN_ETH -o $NET_ETH -p udp -m multiport --dports $DNS_PORT,$MMCC_PORT,$MSN_PORT,$IMAP_PORT,$POP3_PORT -m state --state NEW -j ACCEPT
        #iptables -A FORWARD -d $IP_PROXY -p udp -m multiport --dports $DNS_PORT -m state --state NEW -j ACCEPT
        iptables -A FORWARD -o $NET_ETH -i $LAN_ETH -j ACCEPT

        # On autorise le reseau local à dialoguer avec le routeur
        iptables -A INPUT -s $LAN_NETWORK -j ACCEPT

        # On autorise le parefeu à se connecter à l'Internet
        iptables -A OUTPUT -j ACCEPT

        # On active le partage de connexion
        iptables -t nat -A POSTROUTING -o $NET_ETH -j MASQUERADE

        # Journalisation des paquets rejetés
        iptables -A INPUT -i $NET_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "rejets_inTCP_NET"
        iptables -A INPUT -i $LAN_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_inTCP_LAN"
        iptables -A OUTPUT -o $NET_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_outTCP_NET"
        iptables -A OUTPUT -o $LAN_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_outTCP_LAN"
        iptables -A FORWARD -m limit --limit 10/min -j LOG --log-prefix "Rejet_fw"
        -1
  2. Ritchi09 Messages postés 651 Statut Membre 41
     
    normal si, ces pas les mêmes ports qui sont utilisées.

    Pour le ping et le HTTP ces des ports différents, donc celui du ping doit être ouvert et pas celui du serveur WEB.

    après question serveur je suis pas très caler moi, faut attendre un pro des serveurs WEB.
    -1
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    il faut tester les règles une par une
    essaie avec ces règles quand ton firewall est actif

    iptables -A INPUT -i INTERFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -o INTERFACE -m state --state ! INVALID -j ACCEPT


    INTERFACE tu l'as trouves avec la commande
     /sbin/ifconfig
    --
    106485010510997108
    -1
    1. kenneth007 Messages postés 14 Statut Membre 2
       
      salut!

      Merçi ,ais j'ai déjà essayé avec cette méthode et le résultat était le même
      -1
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    affiche le résultat de
    iptables-save | perl -ne 's/([\s\/])(\d{1,3}\.){1,3}\d{1,3}/$1X.X.X.X/g;print'
    -1
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      plus besoin, je n'ai pas vu ton script ;-)))
      -1
    2. kenneth007 Messages postés 14 Statut Membre 2
       
      Voici le script du firewall

      #! /bin/bash
      . /lib/lsb/init-functions
      case "$1" in

      'start')
      log_daemon_msg "Démarrage du parefeu..."
      modprobe ip_tables
      modprobe iptable_filter
      modprobe ipt_state
      modprobe ip_conntrack
      modprobe ip_conntrack_ftp
      modprobe ip_conntrack_irc
      modprobe ip_nat
      modprobe ip_nat_ftp
      modprobe ip_nat_irc
      iptables-restore < /etc/init.d/firewall.conf
      echo 1 > /proc/sys/net/ipv4/ip_forward
      sleep 1
      RETVAL=$?
      log_end_msg $RETVAL
      ;;

      'stop')
      log_daemon_msg "Arrêt du parefeu..."
      iptables-restore < /etc/init.d/firewall.conf
      iptables-save > /etc/init.d/firewall.conf

      #Clean le parefeu pendant que la machine tourne
      log_daemon_msg "Remise à zéro des règles du parefeu"
      iptables -F
      iptables -X
      iptables -Z
      iptables -t nat -F
      iptables -t nat -X
      iptables -t mangle -F
      iptables -t mangle -X
      iptables -P OUTPUT ACCEPT
      iptables -P INPUT ACCEPT
      iptables -P FORWARD ACCEPT

      #Désactive le partage de connexion
      echo 0 > /proc/sys/net/ipv4/ip_forward
      RETVAL=$?
      log_end_msg $RETVAL
      ;;

      'restart')
      $0 stop && $0 start
      ;;

      'clean')
      $0 stop
      log_daemon_msg "Activation du partage de connexion"
      #Active le partage de connexion
      echo 1 > /proc/sys/net/ipv4/ip_forward
      iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
      #Redémarre la connexion internet PPP
      poff
      pon dsl-provider
      sleep 1
      RETVAL=$?
      log_end_msg $RETVAL

      ;;
      'status')
      iptables-save
      sleep 1
      RETVAL=$?
      log_end_msg $RETVAL
      ;;
      'init')
      log_daemon_msg "Initialisation des règles du parefeu..."
      /etc/init.d/firewall.init
      iptables-save > /etc/init.d/firewall.conf
      $0 start
      RETVAL=$?
      sleep 1
      log_end_msg $RETVAL
      ;;
      *)
      echo "Usage: /etc/init.d/firewall {start|stop|restart|status|clean|init}"

      RETVAL=1
      log_end_msg $RETVAL
      ;;
      esac

      exit $RETVAL



      # !/bin/bash
      ####################################################
      #Variables globales#################################
      ####################################################

      NET_ETH=ppp0 ;
      LAN_ETH=eth1 ; # Interface reseau interne
      LAN_IP=192.168.16.1 ; # Adresse reseau interne
      LAN_NETWORK=192.168.16.0/24 ; # Reseau interne
      LAN_BROADCAST=192.168.16.255 ; # Adresse de broadcast interne
      IP_PROXY=192.168.16.3 ; # Adresse IP du Proxy
      IP_PUBLIC=41.233.187.150 ; # Adresse IP publique
      FTP_DATA_PORT=20 ;
      FTP_PORT=21 ; # Port d'ecoute du serveur local
      SSH_PORT=22 ; # Port d'ecoute du Serveur SSH local
      SMTP_PORT=25 ; # Port d'ecoute du serveur SMTP local
      DNS_PORT=53 ; # Port d'ecoute du serveur DNS local
      TFTP_PORT=69 ; # Port d'ecoute du serveur TFTP local
      WEB_PORT=80 ; # Port d'ecoute du servur WEb local
      SFTP_PORT=115 ; # Port d'ecoute du serveur SFTP local
      HTTPS_PORT=443 ; # Port d'ecoute du serveur HTTPS local
      POP3_PORT=110 ; # Port d'ecoute du serveur POP3 local
      IMAP_PORT=143 ; # Port d'ecoute du serveur IMAP local
      MMCC_PORT=5050 ; # Port d'ecoute du serveur yahoo
      MSN_PORT=1863 ; # Port d'ecoute du serveur MSN
      UNPRIVPORTS="1024:65535";

      ###########################################################################
      ###################Initialisation des tables###############################
      # Initialise la table Filter (par defaut tout les echanges sont refuses)

      iptables -F
      iptables -X
      iptables -Z
      iptables -P INPUT DROP
      iptables -P FORWARD DROP
      iptables -P OUTPUT DROP

      # Initialisation de la table NAT (par defaut tout les echanges sont actives)
      iptables -t nat -F
      iptables -t nat -X


      # Initialisation de la table Mangle(par defaut tout les echanges sont actives)
      iptables -t mangle -F
      iptables -t mangle -X


      # On rejete les requetes icmp du type echo-request
      iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/min -j LOG --log-prefix "rejet_paquet_ICMP"
      iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


      # On autorise le ping sur l'interface LAN du parefeu et du LAN vers l'extérieur
      iptables -A INPUT -i $LAN_ETH -p icmp -j ACCEPT
      iptables -A FORWARD -s $LAN_NETWORK -p icmp -j ACCEPT

      # On autorise l'interface loopback à dialoguer avec elle-meme
      iptables -A OUTPUT -o lo -j ACCEPT
      iptables -A INPUT -i lo -j ACCEPT

      # On redirige les requetes en provenance de l'exterieur vers le serveur approprié
      iptables -t nat -A PREROUTING -i $NET_ETH -d $IP_PUBLIC -p tcp -m multiport --dports $WEB_PORT,$FTP_DATA_PORT,$FTP_PORT,$DNS_PORT,$SFTP_PORT,$SSH_PORT -j DNAT --to-destination $IP_PROXY
      iptables -t nat -A PREROUTING -i $NET_ETH -d $IP_PUBLIC -p udp -m multiport --dports $SSH_PORT,$DNS_PORT,$TFTP_PORT -j DNAT --to-destination $IP_PROXY

      # On redirige vers le proxy les requets HTTP et FTP du LAN destinées vers l'exterieur \(sauf le proxy\)
      # iptables -t nat -A PREROUTING -i $LAN_ETH -s ! $IP_PROXY -p tcp -m multiport --dports $WEB_PORT,$FTP_PORT,$FTP_DATA_PORT -j DNAT --to-destination $IP_PROXY:3128

      # On accepte tous les paquets faisant partie d'une connexion déjà établie
      iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
      iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
      iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

      # On autorise les nouveaux paquets à transiter par le parefeu pour les services autorisés
      #iptables -A FORWARD -s $LAN_NETWORK -i $LAN_ETH -o $NET_ETH -p tcp -m multiport --dports $WEB_PORT,$MMCC_PORT,$MSN_PORT,$IMAP_PORT,$POP3_PORT,$FTP_PORT,$FTP_DATA_PORT,$HTTPS_PORT,$DNS_PORT,$SFTP_PORT,$SSH_PORT -m state --state NEW -j ACCEPT
      #iptables -A FORWARD -d $IP_PROXY -p tcp -m multiport --dports $WEB_PORT,$SMTP_PORT,$FTP_PORT,$FTP_DATA_PORT -m state --state NEW -j ACCEPT
      #iptables -A FORWARD -s $LAN_NETWORK -i $LAN_ETH -o $NET_ETH -p udp -m multiport --dports $DNS_PORT,$MMCC_PORT,$MSN_PORT,$IMAP_PORT,$POP3_PORT -m state --state NEW -j ACCEPT
      #iptables -A FORWARD -d $IP_PROXY -p udp -m multiport --dports $DNS_PORT -m state --state NEW -j ACCEPT
      iptables -A FORWARD -o $NET_ETH -i $LAN_ETH -j ACCEPT

      # On autorise le reseau local à dialoguer avec le routeur
      iptables -A INPUT -s $LAN_NETWORK -j ACCEPT

      # On autorise le parefeu à se connecter à l'Internet
      iptables -A OUTPUT -j ACCEPT

      # On active le partage de connexion
      iptables -t nat -A POSTROUTING -o $NET_ETH -j MASQUERADE

      # Journalisation des paquets rejetés
      iptables -A INPUT -i $NET_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "rejets_inTCP_NET"
      iptables -A INPUT -i $LAN_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_inTCP_LAN"
      iptables -A OUTPUT -o $NET_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_outTCP_NET"
      iptables -A OUTPUT -o $LAN_ETH -p tcp -m limit --limit 10/min -j LOG --log-prefix "Rejet_outTCP_LAN"
      iptables -A FORWARD -m limit --limit 10/min -j LOG --log-prefix "Rejet_fw"
      0