Proxy de calmar transparent. Mise en cache du serveur proxy transparent anonyme Squid. Configuration de la redirection de port

Squid est un package puissant qui implémente le proxy des requêtes qui le transitent et dispose d'une vaste gamme de fonctionnalités. DANS réseau local il est le plus souvent utilisé comme proxy de mise en cache transparent. Configurons les 3 fonctionnalités principales de squid dans l'ordre.

1. Tout d’abord, installez Squid (pour Debian 6)

Apt-get installer squid3

2. Le fichier de configuration squid.conf se trouve dans /etc/squid3/. Il contient environ 5,5 mille lignes. Mais tout n'est pas si effrayant, l'essentiel de ce fichier est constitué de commentaires détaillés sur les paramètres. C'est à vous de décider comment il est plus pratique d'apporter des modifications au fichier. Vous pouvez ainsi vous débarrasser de tout ce qui est inutile dans un fichier

# va dans le dossier squid cd /etc/squid3 # fais copie de sauvegarde fichier avec les paramètres cp squid.conf squid.conf_backup # obtenu depuis squid.conf_backup nettoyer le fichier avec paramètres sans commentaires dans squid.conf cat squid.conf_backup | egrep -v "^#|^$" > squid.conf

et obtenez un fichier « nu » avec le contenu suivant :

Gestionnaire Acl proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 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 # ports non enregistrés 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 méthode CONNECT http_access autoriser le gestionnaire localhost http_access refuser le gestionnaire http_access refuser !Safe_ports http_access refuser CONNECT !SSL_ports http_access autoriser localhost http_access refuser tous http_port 3128 hierarchie_stoplist cgi-bin ? coredump_dir /var/spool/squid3 rafraîchi_pattern ^ftp : 1440 20 % 10080 rafraîchi_modèle ^gopher : 1440 0 % 1440 rafraîchi_modèle -i (/cgi-bin/|\?) 0 0% 0 rafraîchi_modèle . 0 20% 4320

Il ne reste plus qu'à apporter les modifications nécessaires aux lignes. La deuxième option consiste à modifier l’intégralité du fichier sans le nettoyer. Ce qui est également assez simple si vous savez utiliser la recherche dans l'éditeur vi. Dans ce cas, vous aurez beaucoup d'aide commentaires utiles aux paramètres.

Pour rechercher du texte dans l'éditeur vi, appuyez sur la touche « / ». Si vous êtes en mode édition, vous devez le quitter pour envoyer des commandes à l'éditeur en appuyant sur « Echap ». On obtient la séquence d'actions suivante : « / » > « enter mot de recherche">"Entrer".

Maintenant, nous éditons le fichier et effectuons les réglages de base. Si les lignes nécessaires ne sont pas là, ajoutez-les ou décommentez-les.

Vi /etc/squid3/squid.conf # Autoriser l'accès au proxy uniquement à partir du réseau trouvé acl localnet src 172.16.0.0/24 http_access autoriser localnet http_access autoriser localhost # Par défaut, le port d'exploitation du proxy est 3128 # Puisque notre proxy sera transparent, on indique cela # ainsi que l'adresse de l'interface avec le port sur lequel fonctionnera le proxy # les requêtes dans iptables seront redirigées vers le même port http_port 172.16.0.1:3128 transparent

3. Nous fournissons la mise en cache des demandes

# Définition du répertoire de cache et configuration # ufs - une méthode de mise en cache des fichiers sur le disque # /var/spool/squid3 - dossier de cache # 5000 - taille du cache en mégaoctets # 16 - nombre de dossiers de 1er niveau dans le cache # 256 - nombre des dossiers de 2ème niveau dans le cache cache_dir ufs /var/spool/squid3 5000 16 256 # limiter la taille minimale du fichier mis en cache pour faciliter le travail disque dur# ou vous pouvez perdre tout l'intérêt du cache s'il fonctionne lentement minimum_object_size 2 Ko # nous limitons également la taille maximale maximum_object_size 61440 Ko

4. Squid, configuré par défaut, ajoute plusieurs de ses en-têtes à la requête http. Dans ce cas, les deux premiers en-têtes contiennent l'ip du client (voire plusieurs ip, dans le cas d'une chaîne proxy). Si nous n’en avons pas besoin, par exemple si nous ne voulons pas révéler l’adresse IP interne de notre zone locale, alors faites-le. calmar anonyme très simple

Via off forwarded_for supprimer

Après avoir terminé tous les réglages, il convient de vérifier l'anonymat des demandes sur la page http://checker.samair.ru Si tout est fait correctement, le résultat sera le message « Reprendre : vous utilisez un mode hautement anonyme (élite) procuration."

Ceci termine les modifications apportées au fichier. En fin de compte, squid.conf devrait ressembler à ceci

Acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl localnet src 172.16.0.0/24 # RFC1918 réseau interne possible acl SSL_ports port 443 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 # ports non enregistrés 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 méthode CONNECT http_access autoriser le gestionnaire localhost http_access refuser le gestionnaire http_access refuser !Safe_ports http_access refuser CONNECT !SSL_ports http_access autoriser localnet http_access autoriser localhost http_access refuser tous les http_port 172.16.0.1 : 3128 hiérarchie_stoplist transparente cgi-bin ? rép_cache ufs /var/spool/squid3 5000 16 256 taille_objet minimum 2 Ko taille_objet maximum 61440 Ko rép_coredump /var/spool/squid3 motif_rafraîchissement ^ftp : 1440 20 % 10080 motif_rafraîchissement ^gopher : 1440 0% 1440 motif_rafraîchissement -i (/cgi-bin /| \?) 0 0% 0 modèle_rafraîchissant . 0 20% 4320 via off forwarded_for delete

Pour appliquer les paramètres, arrêtez Squid

Service calmar3 arrêt

Préparez le répertoire du cache Squid

Calmar3 -z

Lancer un proxy

Démarrage du service Squid3

Si vous n'avez pas modifié les paramètres liés au cache proxy, vous pouvez exécuter une seule commande. Les paramètres seront acceptés automatiquement sans redémarrer Squid.

Squid3 -k reconfigurer

5. Il ne reste plus qu'à configurer la transparence du proxy. Cela garantit que les utilisateurs du réseau local peuvent travailler via un proxy sans se faire remarquer, c'est-à-dire les utilisateurs n'ont pas besoin de configurer des programmes pour fonctionner avec des proxys. Transparence assurée redirection simple requêtes http du port 80 au port du serveur proxy en utilisant le pare-feu iptables et en activant le mode proxy transparent dans squid lui-même. Nous avons modifié les paramètres de Squid ci-dessus. Ajouter à règles iptables encore une ligne :

Iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Assurez-vous de préciser dans le paramètre interface requise sur lequel fonctionnera le proxy : -i eth0. Cela vous évitera des problèmes d'accès à serveur Web depuis Internet s'il y a plus d'une interface active, s'il y en a une dans le futur sur ce serveur. Et aussi pour des raisons de sécurité du proxy.

Le serveur proxy est très pratique et extrêmement chose utile, ce qui peut être plus utile que jamais dans un certain nombre de cas. Les serveurs proxy peuvent être différents types, l'un des types de serveurs de ce type les plus populaires est un serveur proxy transparent. Un serveur proxy transparent est un serveur auquel vous pouvez vous connecter sans utiliser programmes spéciaux Et paramètres supplémentaires navigateur Internet. Cet état de choses peut être atteint réglage spécial pare-feu, dont le résultat est de rediriger tout le trafic du port 80 vers le port appartenant au serveur proxy.

Qu'est-ce qu'un serveur proxy transparent ?

Un serveur proxy transparent est un serveur auquel vous pouvez vous connecter sans utiliser de programmes spéciaux ni de paramètres de navigateur Web supplémentaires. Cet état de fait peut être obtenu en configurant spécialement le pare-feu, ce qui a pour conséquence de rediriger tout le trafic du port 80 vers le port appartenant au serveur proxy.

Ce paramètre possède un certain nombre de fonctionnalités et effets intéressants, dont l'un est que les utilisateurs d'un tel système ne sauront même pas qu'ils accèdent à tel ou tel site via un serveur proxy, puisque ce paramètre vous permet de vous débarrasser complètement du besoin configuration manuelle clients Web, ce qui est très pratique et commode. C'est cet effet qui détermine en grande partie la popularité d'un serveur proxy transparent à notre époque.

Comment faire fonctionner un proxy transparent ?

Pour fonctionnement normal proxy transparent, le routeur doit être configuré correctement. Comme on le sait, la plupart moderne réseaux informatiques utilise un routeur pour connecter le réseau local et Internet. L'essence de la configuration d'un routeur dans ce cas est de rediriger tout le trafic sur le port 80 vers un serveur proxy transparent Squid. Il y a des cas, surtout ceci s'applique petits réseaux, quand vous pouvez démarrer un serveur proxy même sur un routeur, ce qui est très pratique.

De plus, lors de la configuration d'un serveur proxy transparent, vous aurez peut-être vraiment besoin de tables IP de pare-feu, ce qui peut être très utile en cas de problème de redirection du trafic.

A quoi sert un serveur proxy transparent ?

Comme mentionné ci-dessus, un serveur proxy transparent présente ses propres avantages, ce qui le rend si souvent utilisé. Le principal avantage de ce type de proxy est que le client qui utilisera un serveur proxy transparent n'a rien à configurer, ce qui est très pratique et confortable pour le client lui-même. Il suffit d'organiser correctement la redirection du trafic sur le routeur, ce que doit faire l'administrateur réseau, après quoi tous les participants de ce réseau pourront profiter de tous les avantages du serveur proxy. Quant aux avantages des serveurs proxy et à leurs capacités, nous pouvons souligner les suivants :

  • Anonymat. Un serveur proxy vous permet de masquer votre propre adresse IP lorsque vous accédez à un site particulier, ce qui est très pratique si vous êtes banni d'un site ou si vous ne souhaitez pas montrer votre présence pour une autre raison.
  • Compression des données. Avant de transmettre des informations utilisateur final le serveur proxy le compresse, ce qui vous permet d'économiser assez bien le trafic réseau.
  • Restrictions d'accès. Le serveur proxy offre également de très bonnes opportunités en restreignant l'accès, il permet par exemple de refuser l'accès à certains sites, ou de limiter le trafic utilisateurs spécifiques si nécessaire.

Comme vous pouvez le constater, les serveurs proxy et surtout serveurs proxy transparents présentent de nombreux avantages et points forts, donc si vous souhaitez également les utiliser, le proxy transparent Squid peut être un très bon choix pour vous.

Pour commencer, imaginons que nous ayons réseau régulier, accédant à Internet via une passerelle (le serveur proxy Squid est installé ici). Supposons que l'adresse IP de la passerelle soit 192.168.1.1. Tous les autres ordinateurs du réseau reçoivent les paramètres IP via DHCP. Les ordinateurs du réseau sont différents, Windows XP/7, Ubuntu et qui sait quoi. On ne peut pas surveiller tout le monde. Mais il faut compter le trafic, tout en accélérant l'accès à Internet, il faut contrôler (au moins du « fou ») l'accès à Internet, etc. Squid a de larges possibilités pour la journalisation, la restriction d'accès, etc. Par conséquent, nous avons besoin que tous les ordinateurs du réseau ne puissent pas contourner notre serveur proxy Squid. Par conséquent, nous devons dans tous les cas envoyer (fermer, transmettre) la demande ordinateurs clients uniquement via le serveur proxy Squid.

Configuration de la redirection de port

Lorsque les clients du réseau local accèdent à des sites externes, Squid doit intercepter la demande de manière transparente pour le client et la traiter selon ses règles : décider quel contenu diffuser, s'il doit enregistrer l'activité de l'utilisateur et si cet utilisateur peut même accéder à Internet. Notre tâche est de nous assurer qu'il n'est pas nécessaire de définir des paramètres de navigateur sur le client lui-même. Le client s'est simplement connecté au réseau local et travaille déjà via notre serveur proxy et AUCUN autre moyen. Ceux. même si quelqu'un veut contourner notre proxy, il ne pourra plus le faire sans astuces.

Redirection de port dans FreeBSD

Si FreeBSD est installé sur notre passerelle et que le pare-feu par défaut est IPFW, alors pour effectuer cette tâche, nous devons installer la redirection de port sur la passerelle :

# Redirection vers un proxy local
/sbin/ipfw ajoute 0170 fwd 127.0.0.1,3128 tcp de 192.168.1.0/24 à n'importe quel 80

  • 0170 - numéro de règle (dans votre cas, cela peut être n'importe lequel).
  • fwd 127.0.0.1,3128 - où nous enverrons les paquets, - dans notre cas, à notre bien-aimé Squid fonctionnant sur le port 3128 de la passerelle - ...
  • à partir de 192.168.1.0/24 - ... envoyés par les ordinateurs du réseau local...
  • vers n'importe quel 80 - ... vers n'importe quel site Web sur Internet

Maintenant attention ! Cette règle doit être ajoutée AVANT les règles NAT(Network Address Translation) recevra cette demande. Permettez-moi de vous expliquer un peu de manière non académique : que fait NAT ? Dans notre cas, NAT modifie l'adresse source (remplace l'adresse IP locale du client par l'adresse IP externe de la passerelle et se souvient de quel client interne provenait la demande. Pour que Squid traite la demande du client, il n'a pas besoin pour convertir quoi que ce soit - il peut le gérer lui-même. Par conséquent, Squid doit recevoir le package dans sa forme originale et décider lui-même de la marche à suivre.

De plus, NAT et Squid sont toujours des choses différentes, et un paquet adressé, disons, à 2.3.4.5:80 ne contient pas d'informations sur la façon d'accéder à Squid (au port 3128 de la passerelle). Et le paquet sera traité uniquement par NAT. Squid ne verra jamais le colis. Par conséquent, notre tâche consiste simplement à donner à Squid le paquet envoyé par le navigateur de l’utilisateur. Je vais vous expliquer en utilisant une partie de la configuration ipfw comme exemple :

Cmd="ipfw -q add" $skip="skipto 5000" pif="xl1" #interface externe... # Redirection vers le proxy local $cmd 0170 fwd 127.0.0.1,3128 tcp de 192.168.1.0/24 vers n'importe quel 80 # NAT $cmd 0200 détourner l'adresse IP natd de n'importe quel vers n'importe quel via $pif # Autoriser l'instruction keep-state. $cmd 0201 check-state # POP3/POP3S $cmd 0325 $skip tcp de n'importe quel à n'importe quel 110 via $pif setup keep-state $cmd 0326 $skip tcp de n'importe quel à n'importe quel 995 out via $pif setup keep-state # WWW (HTTP/HTTPS/..) $cmd 0350 $skip tcp from any to any 80 out via $pif setup keep-state $cmd 0352 $skip tcp from any to any 443 out via $pif setup keep-state # Ceci est skipto emplacement pour les règles avec état sortantes $cmd 5000 détourner l'adresse IP natd de n'importe quelle sortie via $pif...

Dans la configuration ci-dessus, la demande d'ouverture du site est d'abord traitée par la règle 0170, qui encapsule la demande dans Squid. Squid (comme tout autre programme) répond également aux exigences du pare-feu - seulement pour cela, la règle 0170 ne s'applique pas, mais la règle 0350 permet à Squid d'envoyer une requête à Internet. Pour accéder à Internet sans Squid, vous devez commenter la règle 0170. Dans ce cas, Squid ne recevra rien et toutes les requêtes du navigateur du réseau local seront traitées par la règle 0350.

Redirection de port sous Linux

Si Linux est installé sur notre passerelle, alors la commande ci-dessus ressemblera à ceci :

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

où eth0 est l'interface interne.

Sinon, la signification des redirections, etc. est similaire à celle expliquée pour ipfw. Seules les règles de construction des fichiers de configuration ipfw et iptables diffèrent. Un exemple de règles iptables peut être étudié.

C'est réglé. Nous devons maintenant indiquer à Squid qu'il doit traiter les paquets qui ne lui étaient pas initialement destinés. Allumons le mode de transparence Squid.

Calmar transparent dans squid.conf

Il ne reste plus qu'à configurer Squid en mode invisible, c'est-à-dire recevoir les paquets automatiquement transférés et les traiter. DANS différentes versions Squid en était responsable différentes équipes. La configuration de Squid version 2.6.* ressemble à ceci :

http_port 127.0.0.1:3128 transparent # Squid fonctionne en mode transparent

Veuillez examiner attentivement fichier de configuration squid.conf pour les directives en double - j'ai passé deux heures, je me suis tourné vers le forum pour obtenir de l'aide avec un "problème non standard", alors que je n'ai tout simplement pas prêté attention au fait que la première ligne incluait mode normal Le calmar fonctionne :

http_port 3128 # Squid fonctionne normalement

Presque tout. Redémarrez Squid, appliquez les règles de pare-feu avec la commande de redirection de port ajoutée - désormais, tout ordinateur du réseau local, accédant à Internet via notre passerelle, ne pourra pas contourner notre Squid, qui est devenu transparent pour tout le monde. Essayez maintenant de configurer un proxy sur un ordinateur - l'ordinateur ne devrait pas pouvoir accéder à Internet. Il semble que ce soit ça. Si vous avez des questions ou des conseils, les commentaires sont les bienvenus, d'autant plus que la mise en place de Squid transparent et la redirection de port est généralement un sujet « malade » sur les forums.

Avantages et inconvénients

L'un des avantages est la confiance absolue que toutes les requêtes sur le port 80 (standard pour le Web) seront traitées par Squid. En conséquence, il y aura des journaux, des statistiques pour le patron et pas besoin de tout configurer manuellement.

Les inconvénients comprennent :

  • impossibilité (au moins d'une manière simple) autoriser les utilisateurs à accéder à Internet ;
  • Si Squid plante soudainement, l'accès aux sites sera arrêté. Par conséquent, l'administrateur doit soit être sûr que tout ira bien, soit pouvoir modifier à distance la configuration du pare-feu, soit écrire un script qui vérifie automatiquement si Squid est bloqué sur le port 3128 et, dans le cas contraire, le lance.

La configuration de Squid en mode transparent est terminée. C'est tout maintenant.

Cet article fournit un exemple configuration rapide mise en cache du serveur proxy Squid dans Linux Debian 6. Le résultat de la configuration sera la possibilité d'accéder à Internet via ce serveur via les protocoles : http, https et ftp.

Permettez-moi de faire une réservation tout de suite que le serveur résultant n'est pas parasurtenseur et est potentiellement vulnérable à attaques de réseau.
Le serveur est configuré sur le système d'exploitation Linux Debian 6. Toutes les commandes ci-dessous doivent être exécutées avec les droits de superutilisateur (root).

Immédiatement un avertissement important : autorisation et proxy transparent sont incompatibles ! Vous devrez choisir une chose. Deuxième avertissement : l'autorisation via un proxy limitera l'accès à Internet uniquement via le protocole HTTP. Autres protocoles : FTP, SMTP, POP3 et autres continueront à fonctionner tranquillement via NAT. Bien que cela ne soit pas si critique dans les petites organisations, le plus couramment utilisé (et abusé) est Protocole HTTP, et l’une des tâches de l’administrateur est de restreindre l’accès des employés à Internet via un navigateur.

Si vous utilisez Apteture et téléchargez des packages depuis le réseau, je vous recommande de mettre à jour les listes des packages actuels avant l'installation :

# apt-get mise à jour

Lançons Installation de calmar:

# apt-get install squid3

Une fois l'installation terminée, nous commençons à éditer le fichier de configuration Squid. Je ne sais pas pour vous, personnellement, je trouve plus pratique quand il n'y a rien de superflu dans le fichier de configuration, c'est-à-dire que seuls les paramètres de configuration sont présents. Pour ce faire, sauvegardons la configuration originale de Squid (afin qu'il y ait un endroit pour rechercher les descriptions de tous les paramètres) :

cp /etc/squid/squid.conf /etc/squid/squid.conf.original

et extrayez de la configuration d'origine tout ce qui n'est pas commenté :

chat /etc/squid/squid.conf.original | grep -v "^\(#\|$\)" > /etc/squid/squid.conf

En conséquence, nous aurons une configuration par défaut sans rien de sophistiqué. Mais je recommande quand même fortement de jeter un œil à la configuration originale et de la lire à votre guise – il y a beaucoup de choses intéressantes là-bas !

Bon, enfin, commençons à éditer :

nano /etc/squid/squid.conf

Après l'installation, vous avez besoin petite modification. Ouvrir la configuration dans l'éditeur Fichier calmar, qui doit être situé dans /etc/squid/squid.conf. Dans ce fichier on retrouve les lignes :

Acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16

Ces lignes doivent être commentées. Et ajoutez votre propre ligne avec les paramètres de votre propre réseau local. Cela devrait ressembler à ceci :

# acl localnet src 10.0.0.0/8
# acl localnet src 172.16.0.0/12
# acl localnet src 192.168.0.0/16
acl localnet src 192.168.1.0/24 # Propre réseau local

Dans la dernière ligne, au lieu de 192.168.1.0/24, vous devez remplacer les paramètres de votre réseau.

Juste en dessous du commentaire #TAG : http_access il vous faut trouver la ligne :

Http_access autorise localhost
ou
http_access autoriser le gestionnaire localhost

Immédiatement après cette ligne, ajoutez la ligne :

Http_access autorise localnet
cache_dir ufs /var/cache/squid 2048 16 256
mkdir -p /var/cache/squid
chmod 755 -R /var/cache/squid

Permettant ainsi l'accès au réseau à tous les ordinateurs du réseau local. Après cela, enregistrez le fichier squid.conf et redémarrez le serveur Squid :

# /etc/init.d/squid redémarrage

Si après le redémarrage de squid vous obtenez une erreur (ATTENTION cache_mem est plus grand que l'espace total du cache disque !), réduisez simplement la valeur du paramètre cache_mem à 8 Mo, je le règle à 32.

Si vous avez modifié le fichier de configuration en raison d'erreurs, Squid devrait redémarrer avec succès. Si une erreur se produit, vous pouvez découvrir pourquoi elle s'est produite dans le fichier journal : /var/log/squid/cache.log
Configuration du navigateur pour fonctionner via un serveur proxy

DANS cette possibilité paramètres, notre serveur ne peut pas acheminer automatiquement les requêtes réseau vers le port du serveur proxy. Les navigateurs doivent donc indiquer explicitement l'adresse de notre serveur.

Il est important que le serveur proxy du réseau local dispose d'une adresse IP fixe. Supposons que le vôtre soit 192.168.1.1. Par exemple pour Paramètres Internet L'Explorateur doit ouvrir Outils-Options Internet-Connexions-Paramètres réseau. Dans la fenêtre qui s'ouvre, cochez la case Utiliser un serveur proxy pour connexions locales. Cochez la case Ne pas utiliser de serveur proxy pour adresses locales. Dans le champ Adresse, saisissez l'adresse IP de notre serveur proxy : 192.168.1.1. Dans le champ Port, saisissez le port par défaut utilisé par Squid : 3128.

Après ces paramètres, votre navigateur accédera au réseau via notre nouveau serveur proxy. Dans les autres navigateurs, le paramètre est similaire à celui ci-dessus pour Microsoft Internet Explorer.

Le port du serveur proxy peut être modifié à votre discrétion dans le fichier /etc/squid/squid.conf. Il est donné dans la ligne :

http_port 3128 transparent

Conclusion
L'installation et la configuration d'un serveur proxy de mise en cache basé sur Squid ne sont que la première étape dans la création d'une passerelle productive vers Internet. Un peu plus tard, je vous expliquerai comment mettre en place un « serveur proxy transparent », un pare-feu et comment conserver des statistiques sur les visites du site par les utilisateurs du réseau local.

Il est très important de configurer correctement iptables. La deuxième option est un peu plus basse, je l'aime mieux

À cette étape, je vous suggère de créer un script de configuration, car il sera utile comme outil universel.1 # vim ./setiptables.sh

#!/bin/bash
Réseau local = 1 $
WAN = 2 $
IP=3 $
GW = 4 $
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to $IP:3128
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i $WAN -o $LAN -s $GW/24 -p tcp -m multiport --dport 443,21,22 -j ACCEPT
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1

Nous avons étiqueté les variables (pour plus de commodité), 3 règles pour la table NAT et 1 pour FORWARD.
Nous utilisons les ports 443,21,22 pour contourner le serveur proxy.
En plus paramètres iptables, dans ce script, nous activons le transfert de paquets.
Exécutons-le comme ceci : 1

# sh ./setiptables.sh eth0 eth1 192.168.100.1 192.168.100.0

6) Configurez le chargement automatique des paramètres iptables.
Sauvons les paramètres iptables.

# mkdir -p /usr/local/iptables && iptables-save > /usr/local/iptables/session.ipt

Ajoutez la commande autorun à /etc/rc.local (j'aime Perl, mais d'autres peuvent différer).

# perl -i -pe "print "iptables-restore< /usr/local/iptables/session.ipt\n" if $. == 2" /etc/rc.local

N’oubliez pas non plus le transfert de paquets

# perl -i -pe "print "sysctl -w net.ipv4.ip_forward=1\n" if $. == 3" /etc/rc.local

Deuxième option paramètres du pare-feu iptables

Activons le transfert dans le système. Dans le fichier /etc/sysctl.conf, décommentez la ligne

net.ipv4.ip_forward=1

Bientôt moment actuel nous avons complètement réinitialisé les paramètres du pare-feu (iptables).

Réinitialisation des chaînes :

$ sudo iptables -F
$ sudo iptables -F -t nat
Nous interdisons tous les entrants et autorisons tous les sortants et transferts :
sudo iptables -P INPUT DROP
sudo iptables -P SORTIE ACCEPTER
sudo iptables -P ACCEPTER AVANT
Nous vous permettons d'accepter une réponse à une connexion DÉJÀ établie :
sudo iptables -A ENTRÉE -m état --état RELATED,ÉTABLI -j ACCEPTER
Autoriser le trafic de bouclage :
sudo iptables -A INPUT -i lo -j ACCEPTER
Nous autorisons tout le trafic de notre réseau interne(prenons le sous-réseau 222) :
sudo iptables -A INPUT -s 192.168.222.0/24 -i eth1 -j ACCEPTER
Et, un gage de transparence ! Nous redirigeons tout le trafic http sortant (vers le port 80) vers le port squid 3128 :
iptables -t nat -A PREROUTING -s 192.168.222.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --vers les ports 3128
iptables -t nat -A POSTROUTING -s 192.168.222.0/24 -o eth0 -j SNAT --to-source 192.168.56.39

Nous vérifions Internet sur le client. Je vous rappelle que s'il n'est pas nécessaire de préciser un proxy, vous devez paramétrer la passerelle !
Cependant, après le premier redémarrage, nous comprendrons que tous nos efforts ont été vains.
Apprenons-leur à survivre !
Alors, sauvons tout ce que nous avons fait ici :

iptables-save > /etc/firewall.conf

Cette astuce n'a pas fonctionné pour moi avec sudo (même si en théorie cela devrait...), vous pouvez donc le faire en vous connectant complètement à root (su) et en exécutant la commande, mais sans sudo.
Créons maintenant un script qui force ifupdown à ressusciter notre pare-feu :

nano /etc/network/if-up.d/00-iptables

Insérons-y ce qui suit :

#!/bin/sh
restauration iptables< /etc/firewall.conf

Définissons les droits d'exécution :

chmod +x /etc/network/if-up.d/00-iptables

En général, la configuration d'un serveur proxy transparent est terminée, mais pour que les journaux soient lisibles, nous devons désactiver le support ipv6 (en raison du fait qu'ipv6 n'est pas configuré sur l'adaptateur, il y aura beaucoup d'avertissements) .

Désactivez IPv6 si personne ne l'utilise

Je suggère de refaire un script pour ne pas se tromper.
nano ./ipv6disable.sh

#!/bin/bash
perl -i -pe "print "alias net-pf-10 ipv6 off\n" if $. == 17" /etc/modprobe.d/aliases.conf
perl -i -pe "print "alias net-pf-10 off\n" if $. == 18" /etc/modprobe.d/aliases.conf
perl -i -pe "print "alias ipv6 off\n" if $. == 19" /etc/modprobe.d/aliases.conf
écho 1 | tee /proc/sys/net/ipv6/conf/all/disable_ipv6
echo "liste noire ipv6" | tee -a /etc/modprobe.d/blacklist.conf
STR=$(cat /boot/grub/grub.cfg | sed -n "67p")
STR=$(STR)" ipv6.disable=1"
sed "67d" /boot/grub/grub.cfg > /boot/grub/grub.cfg.backup
cp /boot/grub/grub.cfg.backup /boot/grub/grub.cfg
sed -i 67i\ "$STR" /boot/grub/grub.cfg

DANS aperçu général Que se passe-t-il dans ce script :
Tout d'abord, désactivez le feu ipv6 dans les modules du noyau.
Ensuite, nous spécifions un marqueur dans /proc pour ne pas utiliser ipv6.
Et à la ligne 67 de /boot/grub/grub.cfg nous ajoutons le paramètre ipv6.disable=1.
Ce gadget avec tee et sed est nécessaire pour enregistrer les paramètres dans /boot/grub/grub.cfg, car les périphériques y sont désignés non pas par /dev/sd* mais par UUID.
Même si tout peut toujours être complété à la main.
Maintenant, nous devons attacher le Squidguard
Ainsi, la moitié du travail est déjà fait, il ne reste plus qu'à installer le package SquidGuard et à le configurer. Pour installer, écrivez dans le terminal par le dessous utilisateur root (droits root dans Debian GNU/Linux, vous pouvez l'obtenir avec la commande su, dans Ubuntu nous écrivons sudo avant les commandes) :

apt-get installer Squidguard

Après l'installation, téléchargez la commande blacklists wget depuis le terminal (attention, la taille du fichier est de 24 Mo !) :
wget -c mes_listesnoires.tar.gz

Et décompressez-le dans le répertoire où doivent se trouver les bases de données SquidGuard (les droits d'administrateur sont requis) :

tar zxvf my_blacklists.tar.gz -C /var/lib/squidguard/db

À la suite du déballage, le répertoire /var/lib/squidguard/db/my apparaîtra, contenant de nombreux sous-répertoires de différentes catégories avec des listes de domaines et des adresses de sites indésirables. Cette liste a été compilée par nos soins à basé sur trois listes noires téléchargées depuis http://www.squidguard.org, http://www.shallalist.de et http://www.urlblacklist.com. En conséquence, notre liste contient plus de 3 millions de sites.

Vous devez maintenant configurer une combinaison de Squid et SquidGuard et y connecter des listes noires. Pour ce faire, ajoutez au fichier squid.conf lignes suivantes en ouvrant le fichier dans éditeur nano avec droits d'administrateur :

nano /etc/squid/squid.conf

Ajoutez les lignes à la fin du fichier :

Redirector_bypass activé
programme_de redirection /usr/bin/squidGuard
redirect_enfants 1

mv /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf_original

Téléchargez le fichier de configuration squidGuard.conf depuis notre site Web à l'aide de la commande wget dans le terminal :
wget -c squidGuard.conf

Copiez-le à la place de l'ancien fichier (avec les droits d'administrateur) :

cp squidGuard.conf /etc/squid/squidGuard.conf

Après avoir copié le fichier de configuration, nous lançons la conversion des listes noires de texte que vous avez téléchargées et décompressées au format de base de données Berkeley DB (la commande s'exécutera pendant un certain temps - vous devez attendre qu'elle soit complètement terminée) en exécutant la commande depuis le administrateur:

squidGuard -d -C tout

Si tout est fait correctement, après la commande, le terminal affichera de nombreux messages concernant la création de nouveaux fichiers de base de données, et à la fin de leur série, vous verrez quelque chose comme ceci :

2012-03-16 12:51:53 squidGuard 1.4 a démarré (1331887787.768)
2012-03-16 12:51:53 mise à jour de la base de données effectuée
2012-03-16 12:51:53 squidGuard arrêté (1331887913.657)

Que dira la réussite de la création des bases de données de listes noires ? Ensuite, définissez les droits du serveur Squid sur les fichiers de la base de données en exécutant la commande avec les droits d'administrateur :

chown -R proxy:proxy /var/lib/squidguard/db/

Et redémarrez le serveur Squid en exécutant Debian en tant que root :

/etc/init.d/squid3 redémarrage

Après le redémarrage, le résultat était collaboration Squid et SquidGuard redirigeront les sites indésirables vers le site. Vous pouvez la remplacer par n'importe quelle autre page en changeant l'adresse de la dernière ligne du fichier de configuration /etc/squid/squidGuard.conf.

Modification des entrées dans les listes de domaines et d'URL
Exemple. À côté du fichier domains.db dans le dossier /var/lib/squiguard/db/direction, créez un fichier domains.diff. On y rentre une ou plusieurs lignes, une pour chaque entrée :

Site Web (ce qui signifie supprimer ce domaine de la base de données)
ou +sysadmin -komi.ru (ce qui signifie ajouter ce domaine à la base de données)

Nous donnons des commandes :

(Mettez à jour les bases de données de base de données à partir des fichiers diff. Dans les journaux Squidguard, vous pouvez voir combien de choses ont été ajoutées/supprimées.)

$ squid3 -k reconfigurer

(Relisez les paramètres sans redémarrer.)
Il n'est pas nécessaire de supprimer le fichier domains.diff ou d'en effacer les entrées. Ce fichier sera également utile lors des mises à jour globales de la base de données. Et avec plusieurs mises à jour, il n’y a pas de duplication d’enregistrements dans la base de données.

Vous pouvez créer vos propres règles de redirection en ajoutant ou en excluant des catégories de sites indésirables. Malheureusement, il est impossible d'obtenir une protection à 100 %, car... De nouveaux sites au contenu répréhensible apparaissent constamment. Même si vous mettez constamment à jour les listes noires. Si vous avez besoin d'une protection renforcée, SquidGuard peut être configuré pour fonctionner avec une liste blanche de sites autorisés, interdisant tout le reste - mais ce sera alors complètement ensemble limité sites.

Et il reste un instant ! Mettons des statistiques sur qui, quoi, où et pourquoi, nommé sarg

apt-get installer sarg

Il nécessitera toute une série de packages, et ce n'est pas étonnant, car il a besoin d'un serveur Web pour afficher les résultats.

Nous personnalisons la configuration (/etc/squid/sarg.conf) à notre convenance. Voici les grandes lignes auxquelles il faut prêter attention :

Journal_accès /var/log/squid/access.log
...
rép_sortie /var/www/squid-reports
...
jeu de caractères UTF-8

Créez le dernier répertoire s'il n'existe pas.
Lançons twill (ce serait bien de pousser son lancement dans cron, je ne le décrirai pas ici... pour l'instant)

Hourra! Nous passons de l'intérieur du réseau à notre serveur, admirons les rapports sur http://IP_SERVER/squid-reports/
Tous les gars sont prêts. Si vous avez des questions, posez-les, je vous aiderai de toutes les manières possibles.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :