• Mise en place de pare-feu Shorewall, vos règles iptables en quelques minutes.


      Pas mal de personnes ont peur d'iptables et je les comprends. Il existe un moyen simple et rapide de générer vos autorisations de traffic sans toucher aux iptables avec le logiciel Shorewall.

      Shorewall génère les règles iptables à votre place, il vous faut juste lui d’écrire les autorisations.

      Nous avons:

      Serveur asterisk eth0 adresse 192.168.0.1 masque 255.255.255.0
      Postes téléphoniques en local 192.168.0.0/24
      Postes télétravail: 83.167.123.58
      Un second bureau distant avec vpn openvpn entre deux sites 192.168.1.0/24 interface tun0

      Nos besoins:

      1: Protéger serveur asterisk de l’extérieur
      2: Permettre le reste


      Première étape, télécharger le paquet Shorewall il faut juste choisir la bonne version, depuis la version 4.4 il y a 3 éditions de logiciel, version lite, standard et avec support de ipv6
      Nous allons prendre une normale rpm puisque j'ai une centos.

      cd /usr/src
      wget http://slovakia.shorewall.net/pub/sh...3-1.noarch.rpm
      rpm -ivh shorewall-4.4.13-1.noarch.rpm
      Les fichiers de configuration sont dans le /etc/shorewall

      cd /etc/shorewall
      ls

      accounting clear hosts interfaces maclist nat params proxyarp restored rules started tcclasses tcfilters tcrules zones
      actions ecn init isusable Makefile netmap policy refresh route_rules shorewall.conf stop tcclear tcinterfaces tos
      blacklist findgw initdone lib.private masq notrack providers refreshed routestopped start stopped tcdevices tcpri tunnels
      Heureusement il nous faut juste une très petite partie de ces fichiers.

      interfaces
      Il faut commencer par les interfaces, c'est ici que nous allons signaler nos interfaces.
      Zone internet c'est eth0 zone vpn c'est tun0 il est possible de spécifier masque mais pas obligatoire, les options tcpflags,routeback sont pour vérifier les paquets tcp, et permettre le routage entre les interfaces.

      cat interfaces:

      ################################################## ###########################
      #ZONE INTERFACE BROADCAST OPTIONS
      internet eth0 - tcpflags,routeback
      vpn tun0 - tcpflags,routeback
      zones
      Les zones sont déclares en ipv4. Par rapport au dernier fichier nous avons une ligne supplémentaire par défaut "fw firewall" c'est la zone de pare-feu, en fait la machine elle même.
      cat zones

      ################################################## ##########################
      #ZONE TYPE OPTIONS IN OUT
      # OPTIONS OPTIONS
      fw firewall
      internet ipv4
      vpn ipv4

      policy Le fichier policy est la pour définir de manière générale le comportement de pare feu. Nous allons permettre le traffic sortant, et interdire entrant, l'ordre est "DE VERS" je vais coller deux exemples, détaillé et abrégé.

      Détaillé
      cat policy

      ################################################## #############################
      #SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
      # LEVEL BURST MASK
      internet $FW DROP info
      internet vpn DROP info
      $FW loc ACCEPT info
      $FW vpn ACCEPT info
      vpn $FW ACCEPT info
      vpn loc ACCEPT info

      Abrégé, la différence est simple , le mot clé "all" autorise ou interdit le traffic vers l'ensemble de zones.
      cat policy

      ################################################## #############################
      #SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
      # LEVEL BURST MASK
      internet all DROP info
      $FW all ACCEPT info
      vpn all ACCEPT info
      *L'option info de log est la pour ajouter les logs dans le /var/log/messages de traffic autorisé et "DROP'e" elle est très utile pour voir ce qui passe dans le cas de mauvais configuration ou debug.


      Si on interdit tout en entrée comment autoriser les ports spécifiques ? Pour cette tache nous avons une fichier rules si Shorewall ne trouve aucune règle dans le fichier rules il applique policy

      rules C'est la ou Shorewall montre ça puissance, étape par étape:



      cat rules
      #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME
      # PORT PORT(S) DEST LIMIT GROUP
      #SECTION ESTABLISHED
      #SECTION RELATED
      SECTION NEW
      ACCEPT internet:192.168.0.0/24,83.167.123.58 $FW tcp -
      ACCEPT internet:192.168.0.0/24,83.167.123.58 $FW udp -

      #Le traffic depuis réseau local et postes télétravail est autorise sans limites ni restriction de ports en tcp et udp

      ACCEPT internet:181.13.18.69 $FW tcp 22

      #Le traffic sur le port 22 ssh est autorise depuis 181.13.18.69

      Ping/ACCEPT internet:192.168.0.0/24 $FW

      #Autoriser le ping depuis local, encore quelque exemples.

      ACCEPT internet:181.13.18.69 $FW udp 10000:20000
      ACCEPT internet:181.13.18.69 $FW udp 5060

      #Autoriser les ports 10000-20000 en udp depuis 181.13.18.69

      La dernière étape pour démarrer shorewall il faut éditer shorewall.conf, et mettre la valeur STARTUP_ENABLED=Yes
      Attention la commande "shorewall stop" arrête le routage et networking, à utiliser seulement dans le cas de suspicion d'intrusion

      Si vous avez un service qui ne passe pas, c'est la ou les logs sont utiles, ils sont la pour permettre rapidement de trouver ou ça bloque, l'avantage majeur c'est que ils sont très lisible sans chercher.

      Exemples

      Sep 28 09:57:13 trixbox kernel: Shorewall:internet2fw:DROP:IN=eth0 OUT= MAC=00:30:18:ab:b0:c8:00:07:cb:0c:a0:65:08:00 SRC=74.115.97.9 DST=192.168.0.1 LEN=31 TOS=0x00 PREC=0x00 TTL=51 ID=46553 DF PROTO=UDP SPT=44489 DPT=5060 LEN=11
      Le sens du paquet internet vers FW (firewall) source ip 74.115.97.9 destination 192.168.0.1 port SOURCE / DEST 44489/ 5060 Protocole UDP.

      Sep 28 14:27:04 trixbox kernel: Shorewall:vpn2fw:ACCEPT:IN=tun0 OUT= MAC= SRC=10.37.252.169 DST=1.0.182.170 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=30322 DF PROTO=TCP SPT=51769 DPT=443 WINDOW=5840 RES=0x00 SYN URGP=0
      VPN vers FW Accepté interface tun0 SRC / DST PROTO STP DPT, facile !! Pour trouver rapidement ces logs vous pouvez faire

      tail -f /var/log/messages | grep Shorewall
      Pour voir L'ensemble de Accepté / Rejeté ou

      tail -f /var/log/messages | grep DROP
      Pour les traces de drop.


      Astuces:

      Pour démarrer shorewall c'est "shorewall start" pour virer les règles de shorewall c'est "shorewall clear"

      La procédure de l’arrêt d'urgence c'est shorewall stop, à utiliser seulement dans le cas de contamination, shorewall arrête l'ensemble de traffic sauf depuis IP de confiance qui se trouve dans le fichier routestopped.

      routestopped

      #INTERFACE HOST(S) OPTIONS PROTO DEST SOURCE
      ############################################PORT(S ) PORT(S)
      eth0 83.167.121.12 tcp 22
      Nous avons juste frotté la surface ici, shorewall capable faire du nat 1:1 masquerade, gérer les interface aliases, et bien plus encore. La documentation est complète et simple ce trouve sur www.shorewall.net

      Reaper
    • A propos d'Asterisk

      Asterisk

      Asterisk est un IPBX open source (logiciel libre) pour Linux originellement créé en 1999 par Mark Spencer, fondateur de la société Digium.

      logo asterisk
    • Downloads populaires

    • Articles récents

    • Utilisateurs actuellement connectésUtilisateurs actuellement connectés

      0 membre(s) et 322 invité(s)

      Le record de connectés est de 2 678, 22/07/2022 à 11h34.

    • Ils nous soutiennent

      logo digium
      logo alter-it
      logo avencall
      logo beronet
      logo celya
      logo cnsi
      logo dolmen
      logo easypyro
      logo eyepea
      logo keyyo
      logo opcom
      logo openip
      logo ovh
      logo qualigaz
      qualistream
      logo voip-asterisk
      logo voxity
      logo yealink