Skip to content
Snippets Groups Projects

Proper port forwarding (ie. ssh)

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by uıןǝnbsɐW ןǝɐʞɔıW

    Ce snippet décrit comment mettre en place du forward de port. En exemple, on prend un cas d'utilisation avec ssh (tcp/22).

    Architecture

    Machine dans la DMZ

    Serveur avec 2 cartes réseaux. Le détail :

    • Adresse IP publique : xxx.xxx.xxx.xxx
    • Adresse IP privée : yyy.yyy.yyy.yyy
    • Interface publique : eth0
    • Interface privée : eth1

    Serveur avec 1 seule carte réseau. Le détail :

    • Adresse IP privée : zzz.zzz.zzz.zzz
    • Interface privée : eth0

    Setup

    1. Activer le forwarding de paquets

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Pour que cela soit permanent (càd après reboot) :

    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

    2. Appeler le script

    ./sample.sh (au préalable /bin/chmod +x)

    La section ... -s $ADMIN_IP -d $DMZ_eth0_ip ... est ajoutée uniquement à des fins de sécurité. Cela signifie que seule cette machine peut se connecter à ssh sur port tcp/22. Elle peut être retirée.

    Edited
    sample.sh 861 B
    #!/bin/bash
    
    # Adresse IP d'un poste administrateur : 
    ADMIN_IP="aaa.aaa.aaa.aaa"
    
    # Adresse IP des serveurs :
    DMZ_eth0_ip="xxx.xxx.xxx.xxx"
    DMZ_eth1_ip="yyy.yyy.yyy.yyy"
    WEB_eth0_ip="zzz.zzz.zzz.zzz"
    
    # Services:
    SSH="22"
    
    # Gestion du port forwarding avec iptables (en CLI)
    
    /usr/sbin/iptables -t nat -A PREROUTING -i eth0 -s $ADMIN_IP -d $DMZ_eth0_ip -p tcp --dport $SSH -j DNAT --to-destination $WEB_eth0_ip
    /usr/sbin/iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn --dport $SSH -m conntrack --ctstate NEW -j ACCEPT
    /usr/sbin/iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport $SSH -m conntrack --ctstate ESTABLISHED -j ACCEPT
    /usr/sbin/iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport $SSH -m conntrack --ctstate ESTABLISHED -j ACCEPT
    /usr/sbin/iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport $SSH -d $WEB_eth0_ip -j SNAT --to-source $DMZ_eth1_ip
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment