Annonce

Réduire
Aucune annonce.

Besoin d'aide : Script Transparent Proxy avec TOR

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Besoin d'aide : Script Transparent Proxy avec TOR

    Bonjour,

    J'ai code un script iptable pour utiliser TOR comme transparent proxy. Le soucis c'est comme mes règles iptable sont trop strict je n'arrive pas à utilisé d'autre logiciel qui fonctionne sur le réseau à part le navigateur. Est ce qu'un personne qui est à l'aise avec iptable peu m'aider dans mon projet pour que l'on puisse utiliser d'autre logiciel via le réseau de manière sécurisé de façon évité le fuite DNS. Le soucis c'est qu'on peu pas utilisé d'autre logiciel car les port sont bloqué, voici mon petit script :

    Code:
    #!/bin/bash
    # Script qui démarre les règles de filtrage IPv4
    
    #=======================================================================
    #
    #          FILE:  toriptables.sh
    #
    #         USAGE:  
    #
    #   DESCRIPTION:  Rules IPTABLES for unix server
    #     Copyright (C) 2016 Teeknofil
    #       OPTIONS:  ---
    #  REQUIREMENTS:  ---
    #          BUGS:  ---
    #         NOTES:  Contact [email protected] for bug.
    #        AUTHOR:  Teeknofil
    #       COMPANY:  Anonymous freelance.
    #       VERSION:  1.0
    #       CREATED:  17/12/2016 12:42:31 CEST
    #      REVISION:  ---
    #=======================================================================
    
    
    ###########################
    ## debugging
    ###########################
    
    #set -x
    
     
    echo " OK: Loading Toriptables firewall..."
    
    
    ###########################
    ## error_handler
    ###########################
    
    set -o pipefail
    
    error_handler() {
      echo "##################################################"
      echo " Toriptables firewall script failed!"
      echo "##################################################"
      exit 1
    }
    
    trap "error_handler" ERR
    
    ###########################
    ## NON_TOR
    ###########################
    
    ### set variables
    #destinations you don't want routed through Tor
    LOCAL_NET="\
             192.168.0.0-192.168.255.255 \
             172.16.0.0-192.168.255.255 \
             10.0.0.0-10.255.255.255\
             "
    
    
             
    ###########################
    ## USERS
    ###########################
    
    #the UID that Tor runs as (varies from system to system)
    [ -n "$TOR_USER" ] || TOR_USER="$(id -u debian-tor)"
    
    ###########################
    ## ports
    ###########################
    
    ## The following ports are used
    ##
    ## The following applications will be separated, preventing identity
    ## correlation through circuit sharing.
    
    ## Transparent Proxy Ports
    [ -n "$TRANS_PORT" ] || TRANS_PORT="9040"
    [ -n "$DNS_PORT" ] || DNS_PORT="5300"
    
    ## Control Port Filter Proxy Port
    [ -n "$CONTROL_PORT_FILTER_PROXY_PORT" ] || CONTROL_PORT_FILTER_PROXY_PORT="9052"
    
    ## Flash Proxy Port
    [ -n "$FLASHPROXY_PORT" ] || FLASHPROXY_PORT="9000"
    
    ## Socks Ports for per application circuits.
    [ -n "$SOCKS_PORT_TOR_DEFAULT" ] || SOCKS_PORT_TOR_DEFAULT="9050"
    [ -n "$SOCKS_PORT_TOR_HTTP" ] || SOCKS_PORT_TOR_HTTP="9080"
    [ -n "$SOCKS_PORT_TOR_HTTPS" ] || SOCKS_PORT_TOR_HTTPS="9043"
    [ -n "$SOCKS_PORT_TOR_FTP" ] || SOCKS_PORT_TOR_FTP="9021"
    [ -n "$SOCKS_PORT_TB" ] || SOCKS_PORT_TB="9100"
    [ -n "$SOCKS_PORT_IRC" ] || SOCKS_PORT_IRC="9101"
    [ -n "$SOCKS_PORT_TORBIRDY" ] || SOCKS_PORT_TORBIRDY="9102"
    [ -n "$SOCKS_PORT_IM" ] || SOCKS_PORT_IM="9103"
    [ -n "$SOCKS_PORT_APT_GET" ] || SOCKS_PORT_APT_GET="9104"
    [ -n "$SOCKS_PORT_GPG" ] || SOCKS_PORT_GPG="9105"
    [ -n "$SOCKS_PORT_SSH" ] || SOCKS_PORT_SSH="9106"
    [ -n "$SOCKS_PORT_GIT" ] || SOCKS_PORT_GIT="9107"
    [ -n "$SOCKS_PORT_SDWDATE" ] || SOCKS_PORT_SDWDATE="9108"
    [ -n "$SOCKS_PORT_WGET" ] || SOCKS_PORT_WGET="9109"
    [ -n "$SOCKS_PORT_METASPLOIT" ] || SOCKS_PORT_METASPLOIT="9110"
    [ -n "$SOCKS_PORT_BITCOIN" ] || SOCKS_PORT_BITCOIN="9111"
    [ -n "$SOCKS_PORT_PRIVOXY" ] || SOCKS_PORT_PRIVOXY="9112"
    [ -n "$SOCKS_PORT_POLIPO" ] || SOCKS_PORT_POLIPO="9113"
    [ -n "$SOCKS_PORT_TBB_DOWNLOAD" ] || SOCKS_PORT_TBB_DOWNLOAD="9115"
    [ -n "$SOCKS_PORT_TBB_GPG" ] || SOCKS_PORT_TBB_GPG="9116"
    [ -n "$SOCKS_PORT_CURL" ] || SOCKS_PORT_CURL="9117"
    [ -n "$SOCKS_PORT_RSS" ] || SOCKS_PORT_RSS="9118"
    [ -n "$SOCKS_PORT_TORCHAT" ] || SOCKS_PORT_TORCHAT="9119"
    [ -n "$SOCKS_PORT_MIXMASTERUPDATE" ] || SOCKS_PORT_MIXMASTERUPDATE="9120"
    [ -n "$SOCKS_PORT_MIXMASTER" ] || SOCKS_PORT_MIXMASTER="9121"
    [ -n "$SOCKS_PORT_KDE" ] || SOCKS_PORT_KDE="9122"
    [ -n "$SOCKS_PORT_GNOME" ] || SOCKS_PORT_GNOME="9123"
    [ -n "$SOCKS_PORT_APTITUDE" ] || SOCKS_PORT_APTITUDE="9124"
    [ -n "$SOCKS_PORT_YUM" ] || SOCKS_PORT_YUM="9125"
    [ -n "$SOCKS_PORT_TBB_DEFAULT" ] || SOCKS_PORT_TBB_DEFAULT="9150"
    
    ###########################
    ## PREPARATION
    ###########################
    
    socks_ports_list="$(compgen -v | grep SOCKS\_PORT\_)"
    
    
    
    ###########################
    ## interfaces
    ###########################
    
    # your internal interface
    [ -n "$EXT_ETHERNET" ] || EXT_ETHERNET="eth0"
    [ -n "$EXT_WIRELESS" ] || EXT_WIRELESS="wlan0"
    
    ####### Global variable
    #######
    
     BOLD="\033[01;01m"     # Higligh
     GREEN='\e[0;32m'        # Success
     YELLOW='\e[01;33m'        # Warning/Information
     RESET="\033[00m"        # Normal
     
     
    
    
    
    ColorEcho()
    {
        echo -e "${1}${2}$RESET"    
    }
    
    OK=$(ColorEcho $GREEN "[ OK ]")
    TASK=$(ColorEcho $GREEN "[+]")
    
    ####### Vidage des tables et des règles personnelles
    ####### c'est-à-dire… le filtrage.
    
    ClearIptables()
    {
    
        
    
        echo; echo -e "$TASK Reset policy by default  \n";
        set -v
        iptables -X
        iptables -F
        iptables -t filter -F
        iptables -t filter -X
        iptables -t nat -F
        iptables -t nat -X
        iptables -t mangle -F
        iptables -t mangle -X
    
        iptables --policy INPUT   ACCEPT
        iptables --policy FORWARD ACCEPT
        iptables --policy OUTPUT  ACCEPT
    
        set +v
    
        echo -e "- Reset of firewall                 : $OK"
    }
    
    RulesIptables()
    {
        #########################
        # Politiques par défaut #
        #########################
    
        ######### Les instructions qui suivent concernent la table « filter »    
        ######### Les politiques par défaut déterminent le devenir d'un paquet auquel
        ######### aucune règle spécifique ne s'applique.
        #### On bloque tout les connexion entrantes et sortantes.
        #### Attention il faut autoriser les connexions à distance pour un
        #### serveur distant comme par exemple SSH
        #### Interdire toute connexion entrante
    
        echo -e "\n$TASK Policy rules                 : $YELLOW[ Start Initialization ]$RESET\n"
    
        ## Interdire toute connexion sortante
        iptables  -t filter -P INPUT DROP    
        iptables  -t filter -P FORWARD DROP
    
        echo -e " - Block all connect INPUT            : $OK"
    
        iptables -t filter -P OUTPUT DROP
    
        echo -e " - Block all connect OUTPUT            : $OK"
        echo -e "\n- Policy by defaut                : $OK"
    
    ##### Debut Regles ######
        echo -e "\n$TASK Filtering rules                : $YELLOW[ START ]$RESET\n"
    
    
    ###### Debut Initialisation ######
    
    ######################
    # Règles de filtrage #
    ######################
    
    ######## Nous précisons ici des règles autoriser pour les paquets vérifiant
    ######## certaines conditions.
    
    #### Autoriser loopback
        iptables -t filter -A INPUT  -i lo  -j ACCEPT
        iptables -t filter -A OUTPUT  -o lo   -j ACCEPT
        echo -e "- Allow loopback                  : $OK"
    
    
    #### Accepter les packets entrants relatifs à des connexions déjà
    #### établies : cela va plus vite que de devoir réexaminer toutes
    #### les règles pour chaque paquet.
    
        iptables -A INPUT  -m state --state NEW -j ACCEPT
        iptables -A INPUT  -m state --state RELATED -j ACCEPT
        iptables -A INPUT  -m state --state ESTABLISHED -j ACCEPT
    
        iptables  -A OUTPUT  -m state --state NEW -j ACCEPT
        iptables  -A OUTPUT  -m state --state RELATED -j ACCEPT
        iptables  -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
    
    
    #### Décommentez la ligne suivante pour autoriser le NAT
    #### Remplace eth0 par la carte réseau de votre choix
    #### Si vous avez une politique par défaut DROP dans votre chaîne FORWARD, vous devez ajouter une règle
    #### autorisant la retransmission de requêtes HTTP entrantes afin que le routage NAT de destination soit
    #### possible. EXEMPLE : iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
    
         iptables -A FORWARD   -o lo -j ACCEPT
        echo -e "- Allow NAT                     : $OK"
    
    
    #### Décommentez les ligne suivante pour
    #### Accepter le protocole ICMP (notamment le ping)
    
    # iptables -t filter -A INPUT  -i lo   -p icmp -j ACCEPT
    # iptables -t filter -A OUTPUT  -o lo  -p icmp -j ACCEP
         iptables -t filter  -A INPUT  -i lo  -p icmp -s 0.0.0.0 -j ACCEPT
    
        echo -e "- Allow PING                      : $OK"
    
    #### Décommentez la ligne suivante pour
    #### Accepter le protocole IGMP (pour le multicast)
        iptables -t filter -A INPUT  -i lo  -p igmp -j ACCEPT
        iptables -t filter -A OUTPUT  -o lo   -p igmp -j ACCEPT
        echo -e "- Allow IGMP                      : $OK"
    
    #### Décommentez la ligne suivante pour
    #### Accetet le protocole ICMP (notament le ping) a partir d'une adresse autoriser
    #### Régle ICMP précedante doit être  commentez
    
    # iptables -A FORWARD -s 0.0.0.0 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
    
    
    #### Décommentez les lignes suivante pour autoriser le service FTP
    
        iptables -t filter -A INPUT  -i lo     -p tcp --dport 20 -j ACCEPT
        iptables -t filter -A OUTPUT  -o lo   -p tcp --dport 20 -j ACCEPT
        iptables -t filter -A INPUT  -i lo     -p tcp --dport 21 -j ACCEPT
        iptables -t filter -A OUTPUT  -o lo   -p tcp --dport 21 -j ACCEPT
         echo -e "- Allow FTP                    : $OK"
    
    
    #### Décommentez la ligne suivante pour que le serveur SSH éventuel
    #### soit disponible de l'extérieur
    
        iptables -t filter -A INPUT  -i lo   -p tcp --dport 22 -j ACCEPT
        iptables -A OUTPUT  -o lo  -p tcp --dport 22 -j ACCEPT
        echo -e "- Allow SSH                     : $OK"
    
    
    ##### Décommentez la lignes suivante pour autoriser le service TELNET
    #### soit disponible de l'extérieur
    
    
        iptables -t filter -A INPUT  -i lo   -p tcp --dport 23 -j ACCEPT
        echo -e "- Allow TELNET                  : $OK"
    
    
    #### Décommentez la ligne suivante pour que le serveur de courrier éventuel soit
    #### joignable de l'extérieur. Laissez bien smtps et submission si vous avez
    #### activé les services SMTPS et soumission de messages… L'option --dports
    #### permet de traiter plusieurs ports en une fois.
    
    
         iptables -t filter -A INPUT  -i lo    -p tcp  --dport 25   -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo  -p tcp  --dport 25   -j ACCEPT
         echo -e "- Allow SMTP                    : $OK"
    
         iptables -t filter -A INPUT  -i lo    -p tcp  --dport 110  -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo  -p tcp  --dport 110  -j ACCEPT
         echo -e "- Allow POP3                     : $OK"
    
         iptables -t filter -A INPUT  -i lo     -p tcp  --dport 143  -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo   -p tcp  --dport 143  -j ACCEPT
         echo -e "- Allow IMAP                    : $OK"
    
         iptables -t filter -A INPUT  -i lo    -p tcp  --dport 465  -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo  -p tcp  --dport 465  -j ACCEPT
         echo -e "- Allow of SMTP SLL                : $OK"
        
    
    #### Décommentez les lignes suivantes pour que le  nom de domaine
    #### soit joignable de l'extérieur.
    
         iptables -t filter -A OUTPUT  -o lo  -p tcp --dport 53 -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo  -p udp --dport 53 -j ACCEPT
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 53 -j ACCEPT
         iptables -t filter -A INPUT  -i lo   -p udp --dport 53 -j ACCEPT
    
         echo -e "- Allow DNS                     : $OK"
    
    ##### Décommentez les lignes suivante pour autoriser le service DHCP Input
    
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 67 -j ACCEPT
         echo -e "- Allow DHCP TCP                  : $OK"
    
    
         iptables -t filter -A INPUT  -i lo   -p udp --dport 67 -j ACCEPT
         echo -e "- Allow DHCP UDP                  : $OK"    
    
    
    #### Décommentez la ligne suivante pour que le serveur Web éventuel
    #### soit joignable de l'extérieur.
    
         iptables -t filter -A INPUT  -i lo   -p tcp --dport http -j ACCEPT
         iptables -t filter -A INPUT  -i lo   -p tcp --sport http -j ACCEPT
         echo -e "- Allow Apache on http                 : $OK"
         iptables -t filter -A OUTPUT  -o lo  -p tcp --sport http -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo  -p tcp --dport http -j ACCEPT
         echo -e "- Allow Navigator Web                : $OK"
    
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 8443 -j ACCEPT
         echo -e "- Allow Apache server on the port 8443         : $OK"
    
    ## HTTP-ALT-TCP Input
         iptables -A INPUT  -i lo -p tcp --dport 8080 -j ACCEPT
        echo -e "- Allow HTTP-ALT-TCP                  : $OK"
    
    #### Si vous avez activé le HTTPS…
    
        iptables -t filter -A INPUT  -i lo   -p tcp --dport https -j ACCEPT
        echo -e "- Allow Apache server on https             : $OK"
    
        iptables -t filter -A OUTPUT  -o lo  -p tcp --dport https -j ACCEPT
        echo -e "- Allow Navigator Web                : $OK"
    
        # iptables -t filter -A INPUT  -i lo   -p tcp --dport 8443 -j ACCEPT
    
        #### Décommentez les deux lignes suivantes pour que le serveur rpcbind
        #### éventuel soit joignable de l'extérieur.
         iptables -t filter -A INPUT  -i lo     -p tcp --dport 111 -j ACCEPT
         iptables -t filter -A INPUT  -i lo     -p udp --dport 111 -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo   -p tcp --dport 111 -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo   -p udp --dport 111 -j ACCEPT
         echo -e "- Allow RPCBIND                 : $OK"
    
         ##### Décommentez la ligne suivante pour autoriser le service NNTP Input
    
        iptables -t filter -A INPUT  -i lo   -p tcp --dport 119 -j ACCEPT
         echo -e "- Allow NNTP                      : $OK"
    
    
        ##### Décommentez la ligne suivante pour autoriser le service NTP Input
    
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 123 -j ACCEPT
         iptables -t filter -A INPUT  -i lo   -p udp --dport 123 -j ACCEPT
         echo -e "- Allow NTP                      : $OK"
    
        #### Décommentez les deux lignes suivantes pour que le serveur Samba
        #### éventuel soit joignable de l'extérieur.
    
         iptables -A INPUT  -i lo  -p tcp --dport 139 -j ACCEPT
         iptables -A INPUT  -i lo  -p udp --dport 139 -j ACCEPT
         echo -e "- Allow NETBIOS-SSN                : $OK"
    
    
        #### Décommentez les deux lignes suivantes pour que le serveur microsoft-ds
        #### éventuel soit joignable de l'extérieur.
    
         iptables -A INPUT  -i lo  -p tcp --dport 445 -j ACCEPT
         iptables -A INPUT  -i lo  -p udp --dport 445 -j ACCEPT
         echo -e "- Allow MICROSOFT-DS                : $OK"
    
    
        #### Décommentez les deux lignes suivantes pour que le serveur d'impression
        #### éventuel soit joignable de l'extérieur.
    
         iptables -A INPUT  -i lo -p tcp --dport ipp -j ACCEPT
         iptables -A INPUT  -i lo -p udp --dport ipp -j ACCEPT
         echo -e "- Allow IPP                     : $OK"
    
            
        ##### Décommentez la ligne suivante pour autoriser le service MYSQL Input
        
        iptables -A INPUT  -i lo  -p tcp --dport 3306 -j ACCEPT
        echo -e "- Allow MySQL                     : $OK"
    
    
        #### Décommentez la ligne suivante pour que des clients puissent se connecter
        #### à l'ordinateur par XDMCP.
    
        iptables -A INPUT  -i lo -p udp --dport xdmcp -j ACCEPT
        echo -e "- Allow XMCP                     : $OK"
    
    
        #### Décommentez la ligne suivante pour que l'ordinateur puisse se connecter
        #### par XDMCP à une machine distante).
    
         iptables -A INPUT  -i lo -p tcp --dport x11-1 -j ACCEPT
         echo -e "- Allow XDMCP                     : $OK"
    
    
        #### Décommentez la ligne suivante pour pouvoir recevoir des flux VideoLAN.
    
         iptables -A INPUT  -i lo -p udp --dport 1234 -j ACCEPT
         echo -e "- Allow VideoLAN                 : $OK"
            
    
        ##### Décommentez la ligne suivante pour pouvoir recevoir des annonces SAP
        ##### (ce sont des annonces de session multicast).
    
         iptables -A INPUT  -i lo -p udp -d 0.0.0.0 --dport 9875 -j ACCEPT
         echo -e "- Allow SAP                     : $OK"
            
    
        ##### Décommentez les 3 lignes suivantes pour pouvoir utiliser GnomeMeeting
    
         iptables -A INPUT  -i lo -p tcp --dport 30000:33000 -j ACCEPT
         echo -e "- Allow GnomeMeeting                : $OK"
    
    
        #### Décommentez la ligne suivante pour pouvoir partager de la musique par
        #### DAAP.
    
         iptables -A INPUT  -i lo -p tcp --dport daap -j ACCEPT
         echo -e "- Allow DAAP                    : $OK"
    
        ## serveur FTP VSFTPD  
    
         iptables -t filter -A INPUT  -i lo    -p tcp --dport 40000:40100 -j ACCEPT
         iptables -t filter -A OUTPUT  -o lo   -p tcp --sport 40000:40100 -j ACCEPT
         echo -e "- Allow FTP VSFTPD                 : $OK"
    
    
        ##### Décommentez la ligne suivante pour autoriser le service  FACEBOOK Input
    
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 5050 -j ACCEPT
         echo -e "- Allow FACEBOOK                  : $OK"
    
    
    
        ##### Décommentez la ligne suivante pour autoriser le service SKYPE Input
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 61578 -j ACCEPT
         echo -e "- Allow SKYPE                      : $OK"
    
        #### Décommentez la ligne suivante pour que votre ordinateur
        #### permet l'utisation de VNC
        iptables -A INPUT  -i lo  -p tcp --sport 5900 -m state --state ESTABLISHED -j ACCEPT
        iptables -A OUTPUT  -o lo  -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT
         echo -e "- Allow VNC                      : $OK"
    
    
        ##### Décommentez la ligne suivante pour autoriser le service IRC Input
        
         iptables -t filter -A INPUT  -i lo   -p tcp --dport 6667 -j ACCEPT
         echo -e "- Allow IRC                    : $OK"
    
    
        #### Décommentez la ligne suivante pour que votre ordinateur
        #### annonce son nom et ses services par mDNS sur le réseau local (cela
        #### permet de le contacter sous « son nom d'hôte ».local).
    
         iptables -A INPUT  -i lo -p udp -d 0.0.0.0 --dport mdns -j ACCEPT
         echo -e "- Allow mDNS                      : $OK"
    
    
        ###### Fin Inialisation ######
         echo -e "\n$TASK Filtering Rules                 : $YELLOW[ End Initialization ]$RESET";echo
    
    
    
        #### La règle par défaut pour la chaine INPUT devient REJECT (contrairement
        #### à DROP qui ignore les paquets, avec REJECT, l'expéditeur est averti
        #### du refus). Il n'est pas possible de mettre REJECT comme politique par
        #### défaut. Au passage, on note les paquets qui vont être jetés, ça peut
        #### toujours servir.
    
         #iptables -A INPUT  -i lo -j LOG --log-prefix "paquet IPv4 inattendu "
         #iptables -A INPUT  -i lo -j REJECT
    
    
    
    }
    
    NetworkTranslateAddress()
    {
    
        ########################
        # Share Network        #
        ########################
    
    
    ###########################
    ## IPv4 INPUT
    ###########################
    
    
    for ext_if_item in $EXT_ETHERNET; do
       ## Allow incoming SSH connections on the external interface.
       #  iptables -A INPUT -i "$ext_if_item" -p tcp --dport 22 -j ACCEPT
       
       ## Allow incoming Flash Proxy connections on the external interface.
       ## This has NOTHING to do with Adobe Flash.
          iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$FLASHPROXY_PORT" -j ACCEPT
       
       ## Allow incoming DIRPORT connections for an optional Tor relay.   
       #   iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$DIR_PORT" -j ACCEPT   
    
       ## Allow incoming ORPORT connections for an optional Tor relay.   
       #   iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$OR_PORT" -j ACCEPT
       
    
       ## Custom Open Ports on external interface
       ## - untested, should work
       ## - Replace 22,9050,9051,9150,9151 with any ports you like to be open, example: 9050,9051
       ##   or just 9050
       ## - iptables v1.4.14: multiport needs -p tcp, -p udp, -p udplite, -p sctp or -p dccp
       iptables -A INPUT -i "$ext_if_item" -p tcp --match multiport --dports 22,9050,9051,9150,9151 -j ACCEPT
       iptables -A INPUT -i "$ext_if_item" -p udp --match multiport --dports 22,9050,9051,9150,9151 -j ACCEPT
    
       ## OPTIONAL Allow incoming OpenVPN connections on the external interface.
       iptables -A INPUT -i "$ext_if_item" -p tcp --dport 1194 -j ACCEPT
    done
    
    for ext_if_item in $EXT_WIRELESS; do
       ## Allow incoming SSH connections on the external interface.
       #  iptables -A INPUT -i "$ext_if_item" -p tcp --dport 22 -j ACCEPT
       
       ## Allow incoming Flash Proxy connections on the external interface.
       ## This has NOTHING to do with Adobe Flash.
          iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$FLASHPROXY_PORT" -j ACCEPT
       
       ## Allow incoming DIRPORT connections for an optional Tor relay.   
       #   iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$DIR_PORT" -j ACCEPT   
    
       ## Allow incoming ORPORT connections for an optional Tor relay.   
       #   iptables -A INPUT -i "$ext_if_item" -p tcp --dport "$OR_PORT" -j ACCEPT
       
    
       ## Custom Open Ports on external interface
       ## - untested, should work
       ## - Replace 22,9050,9051,9150,9151 with any ports you like to be open, example: 9050,9051
       ##   or just 9050
       ## - iptables v1.4.14: multiport needs -p tcp, -p udp, -p udplite, -p sctp or -p dccp
       iptables -A INPUT -i "$ext_if_item" -p tcp --match multiport --dports 22,9050,9051,9150,9151 -j ACCEPT
       iptables -A INPUT -i "$ext_if_item" -p udp --match multiport --dports 22,9050,9051,9150,9151 -j ACCEPT
    
       ## OPTIONAL Allow incoming OpenVPN connections on the external interface.
       iptables -A INPUT -i "$ext_if_item" -p tcp --dport 1194 -j ACCEPT
    done
    
    
    # Allow incoming 9050,9051,9001
    iptables -A INPUT -p tcp --match multiport --dport 9050,9051,9001 --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW,ESTABLISHED -j ACCEPT
    
    # Allow outgoing 9050,9051,9001
    iptables -A INPUT -p tcp --match multiport --sport 9050,9051,9001 --tcp-flags FIN,SYN,RST,ACK SYN -m state --state ESTABLISHED -j ACCEPT
    
    ###########################
    ## IPv4 OUTPUT
    ###########################
    
         sleep 1;echo -e  "$TASK $YELLOW Network Address Translating initialization $RESET\n"
    
        # set iptables nat
        ## Redirect  all  other pre-routing and output to DNS_PORT Tor
        iptables -t nat -A OUTPUT -m owner --uid-owner "$TOR_USER" -j RETURN
        iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports "$DNS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_ETHERNET -p udp --dport 53 -j REDIRECT --to-ports "$DNS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_WIRELESS -p udp --dport 53 -j REDIRECT --to-ports "$DNS_PORT"
    
        # Accept outgoing traffic to the local Tor TransPort.
        iptables -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 9040 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
    
        ## Accept outgoing connections to local network,
        for NET in $LOCAL_NET; do
            iptables -A OUTPUT   -m iprange --dst-range "$NET" -j ACCEPT
        done
    
    
        ## Exclude connections to local network from being redirected through Tor,
        for NET in $LOCAL_NET; do
            iptables -t nat -A OUTPUT  -o lo  -m iprange --dst-range "$NET" -j RETURN
        done
    
    
        iptables -t mangle -A PREROUTING -p tcp --dport 1024:65535 -j MARK --set-mark 1
        iptables -t nat -A PREROUTING -p tcp -m mark ! --mark 1 -j REDIRECT --to-ports "$TRANS_PORT"
    
        ## Redirect all TCP traffic to TRANS_PORT
        iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports "$TRANS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_ETHERNET -p tcp --syn -j REDIRECT --to-ports "$TRANS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_WIRELESS -p tcp --syn -j REDIRECT --to-ports "$TRANS_PORT"
    
    
        ## Redirect all UDP traffic to TRANS_PORT
        iptables -t nat -A OUTPUT  -o lo  -p udp  -j REDIRECT --to-ports "$TRANS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_ETHERNET -p udp  -j REDIRECT --to-ports "$TRANS_PORT"
        iptables -t nat -A PREROUTING -i $EXT_WIRELESS -p udp  -j REDIRECT --to-ports "$TRANS_PORT"
    
        for int_if_item in $EXT_ETHERNET; do   
            for socks_port in $socks_ports_list; do         
                ## Redirect Browser/IRC/TorBirdy, etc. to SocksPort.
                iptables -t nat -A PREROUTING -i "$int_if_item" -p tcp --dport "${!socks_port}" -j REDIRECT --to-ports "${!socks_port}"
            done
    
            for port_number_temp in $(seq 9152 9189); do
                ## Redirect ports 9152-9189 prepared for user custom applications.
                iptables -t nat -A PREROUTING -i "$int_if_item" -p tcp --dport "$port_number_temp" -j REDIRECT --to-ports "$port_number_temp"
            done
        done
    
        for int_if_item in $EXT_WIRELESS; do   
            for socks_port in $socks_ports_list; do         
                ## Redirect Browser/IRC/TorBirdy, etc. to SocksPort.
                iptables -t nat -A PREROUTING -i "$int_if_item" -p tcp --dport "${!socks_port}" -j REDIRECT --to-ports "${!socks_port}"
            done
    
            for port_number_temp in $(seq 9152 9189); do
                ## Redirect ports 9152-9189 prepared for user custom applications.
                iptables -t nat -A PREROUTING -i "$int_if_item" -p tcp --dport "$port_number_temp" -j REDIRECT --to-ports "$port_number_temp"
            done
        done
    
        #allow only tor output
        iptables -A OUTPUT -m owner --uid-owner "$TOR_USER" -j ACCEPT
     
        echo -e  "$TASK $YELLOW Network Address Translating FINISH $RESET\n";
    
    }
    
    Forwarding()
    {
    
        ########################
        # Redirections de port #
        ########################
    
        #### Décommentez la ligne suivante pour que les requêtes TCP reçues sur
        #### le port XX de l'interface ethX soient redirigées à la machine dont
        #### l'adresse IPv4 est 192.168.X.X sur son port XX (la réponse à la
        #### requête sera transférée au client).
    
        echo -e  "$TASK $YELLOW Port Forwarding initialization $RESET\n"
    
    
        iptables -t nat -A PREROUTING  -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 0.0.0.0:443
        iptables -t nat -A POSTROUTING -s 0.0.0.0/32 -o eth0 -j SNAT --to-source 0.0.0.0
    
        echo -e "$TASK  $YELLOW Port Forwarding Finish $RESET\n";
    
    }
    
    FixMTU()
    {
        ####################
        # Problème de MTU… #
        ####################
    
        ####### Les instructions qui suivent concernent la table « mangle », c'est
        ####### à dire l'altération des paquets
    
        ###### mangle
    
        #### Si la connexion que vous partagez est une connexion ADSL directement gérée
        #### par votre ordinateur, vous serez probablement confronté au fameux problème du
        #### MTU. En résumé, le problème vient du fait que le MTU de la liaison entre
        #### votre fournisseur d'accès et le serveur NAT est un petit peu inférieur au MTU
        #### de la liaison Ethernet qui relie le serveur NAT aux machines qui sont
        #### derrière le NAT. Pour résoudre ce problème, décommentez la ligne suivante et
        #### remplacez « eth0 » par le nom de l'interface connectée à Internet.
    
    
         iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth0 --clamp-mss-to-pmtu
          iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o wlan0 --clamp-mss-to-pmtu
    }
    
    #################################
    #                                  #
    #            Main                 #
    #                                #    
    #################################
    
    ClearIptables
    RulesIptables
    NetworkTranslateAddress    
    
    exit 0;

    Merci de votre aide et de votre contribution.

  • #2
    Je suis désolé mais ton script est illisible, tu devrais plutôt te tourner vers le couple tor / privoxy si tu désires router proprement tout ton trafic via le réseau tor.

    De plus, il semble que ton script ne soit pas très au point en plus de ne pas répondre à son objectif qui était, je cite : " utiliser TOR comme transparent proxy ".

    Tes régles iptables sont fausses et ne correspondent pas aux commentaires qui les précéde, tu autorises seulement la boucle locale et je vois difficilement

    comment une machine pourrait te joindre sur celle-ci.

    Bref', beaucoup de corrections à faire, bon courage tout de même..





    deux et deux font cinq

    Commentaire


    • #3
      Bonjour,

      Envoyé par shirocen Voir le message
      De plus, il semble que ton script ne soit pas très au point en plus de ne pas répondre à son objectif qui était, je cite : " utiliser TOR comme transparent proxy "
      Ba oui c'est pour ça que le titre est besoin d'aide sinon j'aurais pas posté une demande d'aide, si tu veux pas l’aidé mais juste critiqué tu aurai pu t’abstenir.

      Envoyé par shirocen Voir le message

      Tes régles iptables sont fausses et ne correspondent pas aux commentaires qui les précéde, tu autorises seulement la boucle locale et je vois difficilement

      comment une machine pourrait te joindre sur celle-ci.
      Oui mes règle iptable son fausse c'est pour ça que je demande de l'aide. Je veux tous bloqué par défaut et seulement autorisé les port et communication sur la boucle local pour raison de sécurité pour pas du trafic non tor puisse passer.

      Envoyé par shirocen Voir le message

      Bref', beaucoup de corrections à faire, bon courage tout de même..
      Merci de ton aide.
      Dernière modification par Teeknofil, 02 janvier 2017, 01h38.

      Commentaire


      • #4
        Bonjour,

        Je n'ai pas lu non plus ton code bash, mais sur ce le lien ci-dessous, se trouve certaines règles pour protéger ton réseau local...

        Commentaire


        • #5
          Salut

          Je suis encore nul sur Iptables mais je souhaiterais apporter mon peu.

          Teeknofil, j'ai certains soucis avec des règles iptables. Déjà avec ta fonction ClearIptables(), tu as mis ta politique de filtrage par défaut à ACCEPT, donc cela signifie par défaut tu acceptes tous les paquets (si je me trompe STP plus d'explication). Aussi j'ai aussi un souci avec ta fonction RulesIptables(), en vrai je ne sais pas à quoi ça sert si déjà tu modifies ta règle par défaut de ta fonction ClearIptables() à DROP ce qui permettra d'interdire toutes les connexions. Aussi au lieu d'écrire des règles spécifiques à ta boucle locale lo (en supposant que c'est vraiment le nom de l'interface de ta boucle locale) il serait mieux (sauf si je me trompe) de tout laisser passer au niveau de la boucle locale : c'est ça quand même ce qui représente ta propre machine faisant office de pare-feu voici ce qui est mieux pour la boucle locale :

          Code:
          iptables -A INPUT -i lo -j ACCEPT
          iptables -A OUTPUT -o lo -j ACCEPT
          iptables -A FORWARD -i lo -j ACCEPT
          iptables -A FORWARD -o lo -j ACCEPT
          Bon je trouve qu'il y'a quelques petits trucs superflus dans tes règles que je ne saisis pas bien. Avant que je continue d'apporter ma petite contribution, je souhaiterais savoir : quelle est l'architecture de ton réseau ? (mieux un bon dessin de ton architecture), quels sont les différents services que tu souhaiterais gérer ?

          MERCI
          Dernière modification par rodrigue daniel, 02 janvier 2017, 16h17.
          Passionné par la Sécurité Informatique.
          Le véritable ennemi de la connaissance n'est pas l'ignorance mais l'illusion de la connaissance.
          La quête de la connaissance passe d'abord par l'humilité et ensuite la détermination.

          Commentaire


          • #6
            Bonjour, je vous remercie de votre aide, j'ai finalement réussi, cela fonctionne sur Kali Linux. Voici le lien du projet https://github.com/teeknofil/Anonymous-Hacker

            Commentaire

            Chargement...
            X