Jump to content
crocodudule

[ (auto-)RESOLU] Raspbian: proxy squid au travers de neorouteur (VPN)

Publications recommandées

Bonjour à tous.

Je souhaite mettre en place un petit vpn et, au travers, accéder au serveur proxy installé sur le serveur VPN. L’objectif étant que toute machine sur le VPN puisse utiliser le proxy et donc mon IP française depuis l’étranger.

Pour l’anecdote avec neorouter (tout comme openvpn) j’y arrivais sans mal sous windows (mais je n’utilisais pas squid comme proxy que je ne maîtrise manifestement pas), ce n'est pas le cas sous raspbian que j'utilise uniquement en SSH, ce raspberry me servant de mini serveur web sans écran.

S’agissant du VPN, en l’espèce neorouter le serveur est correctement installé sur le raspberry, auquel j’ai ajouté également un client neorouter, de sorte que je vois et je “pingue” sans difficulté l’ensemble des IP du VPN.

S’agissant du proxy, ici squid 2.7, il est également installé sur le serveur raspberry et fonctionne parfaitement s’agissant du réseau local “réel” puisque je peux surfer sur firefox en renseignant l’ip du serveur proxy (192.168.0.50) et le port d’écoute (3128) dans les paramètres (passant iptable sans problème).

En revanche, si j’entre l’ip du serveur proxy dans le réseau VPN , cela ne fonctionne pas;
. un refus de connexion si j’entre l’ip du serveur neorouter dans le VPN (10.0.0.1),
. délai d’attente dépassé si j’entre l’ip du client neorouter installé sur le serveur (10.0.0.7). (je précise la distinction car contrairement à openvpn, le serveur neorouter n'est jamais visible par les clients, c'est pourquoi dans mon installation précédente sous windows j'ajoutais un client à la machine serveur accédant au proxy via l'ip de ce client)

Pour faciliter la compréhension de mon fichier de configuration de squid je précise comment est mon réseau:
. raspbian:
ip locale fixe; 192.168.0.50 / 255.255.255.0
ip du serveur neorouter: 10.0.0.1 / 255.0.0.0
ip du client neorouter (installé également) : 10.0.0.7 / 255.0.0.0
. Ma machine locale:
ip locale fixe; 192.168.0.29
ip du client neorouter : 10.0.0.3/255.0.0.0

Voilà ma configuration de squid:
 

visible_hostname raspberrypi
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 192.168.0.0/255.255.255.0 # RFC1918 possible internal network
acl netvpn src 10.0.0.0/255.0.0.0 # RFC1918 possible internal network
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow netvpn
tcp_outgoing_address 192.168.0.0/255.255.255.0 localnet
tcp_outgoing_address 10.0.0.0/255.0.0.0 netvpn
http_access deny all
forwarded_for off
icp_access allow localnet
icp_access allow netvpn
http_port 3128

J'ajoute pour info la partie modifiée du fichier de configuration d'iptable:
 

# Serveur SQUID (3128)
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j DROP

iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 3128 -J ACCEPT
iptables -A OUTPUT -p tcp --sport 3128 -j DROP

iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j DROP

iptables -A OUTPUT -d 10.0.0.0/8 -p tcp --sport 3128 -J ACCEPT
iptables -A OUTPUT -p tcp --sport 3128 -j DROP

Et toujours dans iptable, celle s'agissant de neorouter:

# Serveur NEOROUTER (1196)
iptables -t filter -A INPUT -p tcp --dport 1196 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1196 -j ACCEPT

Votre aide est donc la bienvenue, car même en commentant deny all et !safe_ports, rien n’y fait.

Modifié par crocodudule

Partager cette publication


Lien vers la publication
Partager sur d'autres sites

J'ai nettoyé mon iptable pour retirer les lignes "DROP" destinées à squid:

#Suppression des règles antérieures
iptables -t filter -F
iptables -t filter -X

#On laisse tout sortir et on bloque tout en entrée
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

#On conserve les connexions déjà établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#On autorise le loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

#Serveur HTTP (80)
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

#Serveur NEOROUTER (1196)
iptables -t filter -A INPUT -p tcp --dport 1196 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1196 -j ACCEPT

#Serveur SQUID (3128)
# iptables -A INPUT -p tcp --dport 3128 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 3128 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 3128 -j DROP
iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 3128 -J ACCEPT
iptables -A OUTPUT -d 10.0.0.0/8 -p tcp --sport 3128 -J ACCEPT

#Serveur FTP (21) dont mode passif
modprobe ip_conntrack_ftp
iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Connexionx SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

#Autorisation du PING :
iptables -A INPUT -p icmp -m limit --limit 15/minute -j ACCEPT
iptables -A INPUT -p icmp -j DROP

#Bloquer les attaques par déni de service
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

#Bloquer les scans de ports
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Et j'ai rectifié ma configuration de SQUID:

#CONFIGURATION SQUID
#-------------------

# AUTORISATION DU RESEAU LOCAL
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
# acl localnet src 192.168.0.0/24       # RFC1918 possible internal network
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
# AUTORISATION DES PORTS
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
# REJET DES AUTRES PORTS
http_access deny !Safe_ports
# ADMINISTRATION QUE LOCALHOST
http_access allow manager localhost
http_access deny manager
# PURGE QUE LOCALHOST
http_access allow purge localhost
http_access deny purge
# CONNEXION QUE DEPUIS SSL
http_access deny CONNECT !SSL_ports

# GESTION DES ACCES AU PROXY
http_access allow localhost
http_access allow localnet
http_access deny all

# REQUETE ICP
icp_access allow localnet
# icp_access allow netvpn
icp_access deny all

# MASQUER IP DANS HEADER
forwarded_for off

# PORT ECOUTE DU PROXY
http_port 3128

# MAP-CHEMIN
# tcp_outgoing_address 192.168.0.0/24 localnet
tcp_outgoing_address 10.0.0.0/8 localnet

# LOGS
access_log /var/log/squid/access.log squid

# REFRESH PATTERN ENTRIES:
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$       0       20%     2880
refresh_pattern .               0       20%     4320

#  TAG: visible_hostname
visible_hostname raspberrypi

Je progresse puisque maintenant firefox m'indique que le proxy refuse la connexion sur 192.168 et 10.0 🤔

Modifié par crocodudule

Partager cette publication


Lien vers la publication
Partager sur d'autres sites

A trouvé!

Les parenthèses dans les commentaires bousillaient l'exécution de squid (sans message d'erreur au lancement) et j'ai précisé l'ip d'écoute en plus du port et ça fonctionne puisque je poste depuis le proxy 🙂

Pour info, mon fichier de conf est le suivant:

acl localnet src 192.168.0.0/24
acl localnet src 10.0.0.0/8

acl SSL_ports port 443      # https
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 10.0.0.7:3128

#  TAG: visible_hostname
visible_hostname raspberrypi

# Add any of your own refresh_pattern entries above these.

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

#via off
forwarded_for off

Je mets en (auto-)résolu ^^

Modifié par crocodudule
  • Merci 1

Partager cette publication


Lien vers la publication
Partager sur d'autres sites

Veuillez vous connecter pour commenter

Vous serez en mesure de laisser un commentaire après vous être connecté



Se connecter dès maintenant

×
×
  • Créer...