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 :
Merci de votre aide et de votre contribution.
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.
Commentaire