Mesure 1

Installation d'un proxy

Un proxy est le premier élément que nous mettrons en place pour protéger notre réseau.

Le proxy aura deux rôles

Le proxy que nous installerons est Squid sur notre distribution Debian

Pour installer Squid il vous suffit d'utiliser apt-get :

apt-get install squid3

apt và alors vous installer Squid et toutes ses dépendances et démarrer le service

Configuration de Squid


Votre proxy est dès l'installation opérationnel. Pour le tester, vous pouvez configurer votre navigateur Internet. Dans les options de votre navigateur, choisissez "Avancé", puis "Réseau". Dans paramètres vous pourrez configurer le proxy.

Par défaut Squid écoute sur le port 3128. Vous pouvez le vérifier avec un nmap localhost

Par défaut la configuration de Squid est très restrictive et nous interdit toute navigation

Si vous essayez de vous connectez à Internet, le serveur Squid vous renverra vers une page d'interdiction.

Les fichiers de configuration de Squid se trouve dans /etc/squid3/. Le fichier de configuration principal est squid.conf

Commençons par partir d'un fichier vide :

cd /etc/squid3/
mv squid.conf
> squid.conf

Ensuite nous allons créer notre première ACL :

acl estem src 10.10.221.0/24 # My lan Network

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow estem
http_access deny all

http_port 3128

Pour que squid prenne en charge les modifications de configuration /etc/init.d/squid3 restart

Si vous essayez de naviguer depuis une IP du réseau que vous avez autorisé c'est ok !

Nous allons maintenant interdire certains domaines. Pour celà nous allons ajouter une acl avec les autres acl, puis ajouter une règle de filtrage au début des règles de filtrage.

acl ban_domains dstdomain .facebook.com .youtube.com
http_access deny ban_domains

Rédémarrer votre Squid, vous n'avez plus accès à Facebook et Youtube !

Gestion des sites interdits


Il est difficile de maintenir des règles pour tous les sites à mauvaises connotation.

Heureusement des volontaires font se travail et nous offre le résultat.

Squidguard nous permet de télécharger des règles de filtrage et de les appliquer dans notre Squid

apt-get install squidguard

Ceci installe les scripts de filtrage de SquidGuard MAIS pas les règles

Nous allons télécharger les règle d'une université Française :

cd /root/
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz

Ce fichier de règles est relativement gros (une dizaine de Mo) et contient des milliers de filtres.

Nous allons maintenant décompresser ce fichier et l'incorporer dans les règles de SquidGuard :

tar -xzf blacklists.tar.gz
cp -R blacklists/* /var/lib/squidguard/db/

Nous allons maintenant dire à SquidGuard qu'elles règles nous voulons utiliser :

mv /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.conf.orig > /etc/squidguard.conf

Le contenu de notre squidGuard.conf :

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db
logdir /var/log/squid3

# les règles de filtrage
dest adult {
domainlist adult/domains
urllist adult/urls
expressionlist adult/very_restrictive_expression
}
dest publicite {
domainlist publicite/domains
urllist publicite/urls
}

###Forcer la réécriture de https vers http pour les moteurs de recherche et pouvoir analyser les
mots
rew safesearch {
s@(google..*/search?.*q=.*)@ &safe=active@i
s@(google..*/images.*q=.*)@ &safe=active@i
s@(google..*/groups.*q=.*)@ &safe=active@i
s@(google..*/news.*q=.*)@ &safe=active@i
s@(yandex..*/yandsearch?.*text=.*)@ &fyandex=1@i
s@(search.yahoo..*/search.*p=.*)@ &vm=r&v=1@i
s@(search.live..*/.*q=.*)@ &adlt=strict@i
s@(search.msn..*/.*q=.*)@ &adlt=strict@i
s@(.bing..*/.*q=.*)@ &adlt=strict@i
log block.log
}
#La règle avec les interdictions: !porn !adult !publicite !violence !agressif !aggressive
acl {
default {
pass !adult !publicite all
redirect http://google.fr ##tout ce qui est inderdit est rediriger vers google
}
}

Il nous reste maintenant à dire à Squid d'utiliser ces règles :

ln -s /etc/squidguard/squidGuard.conf /etc/squid3/
chown -R proxy:proxy /var/log/squid3 /var/lib/squidguard
squidGuard -C all

Vous devez également dire à Squid de passer par SquidGuard. Ajouter dans /etc/squid3/squid.conf avant http_port 3128

url_rewrite_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf

Les règles sont maintenant compilés et squidGuard est chargé.

Faire un proxy transparent


Nous avons actuellement un problème. Si l'utilisateur ne configure pas son proxy, il và pouvoir outrepasser les règles de filtrages.

Nous allons devoir configurer un proxy TRANSPARENT

Pour celà notre serveur devra avoir deux cartes réseaux.

Il devra également devenir la passerelle de notre réseau.

Pour qu'un ordinateur Debian devienne une passerelle vous allez devoir router les paquets d'une carte réseau, vers l'autre carte réseau.

Pour celà nous devons activer le "forward" dans le noyau de notre réseau puis traiter les paquets. (eth0 est sur le réseau interne, eth1 est sur le réseau externe)

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth1 -j REJECT

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

Notre machine Linux est maintenant un routeur / firewall !

Il faut maintenant lui dire que quand une requête arrive de l'intérieur pour le port HTTP (80) ou HTTPS(443) on redirige vers Squid

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

Enfin il faut que Squid "sache" qu'il est transparent. Il faut ajouter à votre Squid.conf :

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off

ATTENTION : la configuration ci dessous marche en HTTP. En HTTPS il faut générer des certificats SSL ...

Activation du cache

Actuellement le rôle de cache n'est pas activé. Pour que Squid optimise votre connexion Internet ajoutez à la fin du fichier :

cache_mem 128 MB
maximum_object_size_in_memory 128 KB
cache_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid3 15360 16 256
maximum_object_size 32 MB
cache_swap_low 85
cache_swap_high 90
access_log /var/log/squid3/access.log squid
half_closed_clients off
cache_mgr admin@example.com
hosts_file /etc/hosts
memory_pools off
client_db off

Continuer »