Beruflich Dokumente
Kultur Dokumente
net
WHITE BOOK
SMOOTHWALL EXPRESS 3.0
THINK OPEN
THINK SECURE
**
AOUT 2009
Le présent document a été réalisé au sein de la société alpha-Engineering
(http://www.alpha-engineering.net) en vue d’expliquer le fonctionnement de la distribution
SmoothWall Express 3.0 qui est une distribution Open Source. L’élaboration de ce document
s’est faite en plusieurs étapes comme montré dans le tableau représenté ci-dessous :
□ □
Page 2
Page 3
Page 4
Page 5
Page 6
Interface Green : Désigne l’interface réseau (carte réseau) de Smoothwall Express qui
sera directement reliée au réseau interne câblé de l’entreprise.
Interface Red : Désigne l’interface de Smoothwall Express qui sera reliée à Internet.
Interface Purple : Désigne l’interface réseau sans fil de Smoothwall Express.
Interface Orange : Désigne l’interface de Smoothwall Express qui sera reliée à la zone
démilitarisée (partie du réseau de l’entreprise où l’on isole les serveurs). Cette zone
est sauf exception câblée…
La figure suivante pourrait éclaircir encore plus sur la signification de ces différents
termes :
Il faut noter aussi que ces appellations ne sont pas propres à la communauté Smoothwall. On
utilise généralement ces mêmes termes quelque soit le pare-feu.
Page 7
Page 8
Remarques :
La configuration réseau retenue sur l’image VMware de Smoothwall Express est
l’architecture Green +Red (voir plus haut)
Les logins et mot de passe sont normalement configurés lors de l’installation de
Smoothwall Express. Les login et mots de passes pour l’image VMware sont :
Login : "root" et mot de passe "happydays" pour l’authentification en mode
console
Login : "admin" et mot de passe "happydays" pour l’authentification en
mode graphique (page web)
La connexion à Smoothwall Express via un navigateur web se fait sur le port 81 (si on
accède via le protocole http) ou bien via le port 441 (si on accède via le protocole
https).
Page 9
Page 10
Observations :
Smoothwall Express protège la machine qui l’héberge et les réseaux auxquels elle est reliée.
En effet, les ports ouverts ne présentent pas de failles majeures. Le service secure shell ainsi
que les deux services de connexions web nécessitent une authentification. Le service DNS ne
présente quant à lui pas de risques pour la machine ou les réseaux auxquels elle est reliée. Si
on ajoute à cela les règles par défaut de pare-feu (voir plus loins), on verra bien que c’est une
solution de sécurité complète…
En revanche on trouve des chaines explicités telle que la chaîne ipsec dont la définition est:
Chain ipsec (3 references)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:isakmp
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
La définition de ces chaînes sert surement à indexer les règles du pare-feu et donc à
améliorer les performances du point de vue temps de réponse...
Page 11
Page 13
Page 14
Page 15
Page 16
Sans cette authentification, nous n’aurons pas accès à la page d’accueil de Smoothwall
Express.
Page 17
On aperçoit sur cette page les services disponibles et leur status. S’ils sont en marche, alors la
case en face du nom du service est colorée en vert. Sinon, la case est colorée en gris.
Page 18
L’onglet About>traffic graphs permet de visualiser les graphes décrivant le trafic réseau sur
chacune des interfaces de Smoothwall Express. On y retrouve aussi des statistiques sur le
débit courant, le débit par heure, par jour et d’autres informations de ce genre.
Page 19
L’onglet About>bandwidth bars montre l’état de la bande passante consommée sur les
interfaces réseau de Smoothwall Express en temps réel.
L’onglet About>traffic monitor quant à lui permet de visualiser en temps réel l’évolution de la
bande passante (graphe de bande passante).
Page 20
L’onglet About>my smoothwall enfin montre des informations sur le système d’exploitation
Smoothwall Express installé sur la machine…
Cet onglet présente les différentes options qu’offre le proxy web de Smoothwall Express. On
peut y apercevoir l’adresse du proxy distant (remote proxy), la taille du cache, les paramètres
d’authentification du proxy et ainsi de suite…
Page 21
L’onglet Services>im proxy présente les options de proxy de messagerie instantannée (instant
messaging proxy).
L’onglet Services>sip proxy permet de paramètrer le proxy SIP (Session Initiation Protocol)
qui sert pour la gestion de sessions.
Page 22
Page 23
L’onglet Services>dynamic dns sert à attribuer des noms de domaines à certains services
offerts par l’entreprise et accessible via Internet. Ceci est surtout nécessaire lorsque le
fournisseur d’accès internet affecte des adresses ip dynamiques à l’abonnement de
l’entreprise…
L’option Services>static dns sert quant à elle à affecter une fois pour toute un nom de
domaine à une adresse ip.
Page 24
L’onglet Services>ids permet d’activer l’ids de Smoothwall Express et de le mettre à jour. Cet
ids n’est autre qu Snort… Pour activer Snort il faudra s’inscrir dans le site officiel de Snort et
obtenir le Oink code. Ensuite, il suiffit d’entrer le Oink code obtenu et de cliquer sur save et
update. Le téléchargement de règles de l’ids commence alors.
Page 25
L’onglet Networking>incoming sert à définir les règles de pare-feu pour le trafic entrant
(depuis les adresses IP externes) aux ports des machines du réseau local.
Page 26
L’onglet Networking>outgoing sert à controller le trafic sortant, c'est à dire l'accès des
machines locales à des services externes.
Page 27
L’onglet Networking>ipblock sert à ajouter des règles restrictives de pare-feu pour des
adresses IP ou des adresses de réseaux.
Page 28
L’onglet Networking>timed access sert à configurer des temps d'accès pour des machines du
réseau interne. Ceci sert à limiter par exemple le temps de connexion Internet au temps de
travail.
L’onglet Networking>qos sert à éditer les paramètres de qualité de service du réseau tels que
vitesses de téléchargement optimale, priorité du trafic en fonction des protocoles.
Page 29
L’onglet Networking>advanced sert à configurer les options des paquets ICMP provenant à la
machine Smoothwall.
L’onglet Networking>ppp sert à configurer les options des communications basées sur le
protocole point-to-point.
Page 30
L’onglet VPN>control sert à activer/stopper les connections par réseaux Virtuels Privés à
travers Internet (interface Red).
Page 31
Page 32
Page 33
Page 34
L’onglet Tools>ip informations permet de consulter l'outil whois afin d'obtenir des
informations concernant une adresse IP ou un nom de domaine.
L’onglet Tools>ip tools permet d'utiliser deux outils classiques de test de connectivité à savoir
ping et traceroute.
Page 35
L’onglet Maintenance>updates sert à chercher des mises à jour pour Smoothwall Express.
Page 36
L’onglet Maintenance>passwords permet de définir des mots de passe pour les utilisateus
admin et dial.
Page 37
L’onglet Maintenance>backup permet de créer une disquette de restoration (ou une image
de restauration).
Page 38
Page 39
use Socket;
&showhttpheaders();
&getcgihash(\%cgiparams);
my %settings;
&readhash("${swroot}/ethernet/settings", \%settings );
On déduit de ce script que les paramètres passés à la page lors de la validation (comme par
exemple le paramètre GREEN_ADDRESS) seront affecté aux variables (par exemple la variable
GREEN_ADDRESS) contenues dans le fichier : /var/smoothwall/ethernet/settings.
En fait, l'interface web de Smoothwall Express agit sur les fichiers qui se trouvent sous
/var/smoothwall/
Nous détaillons dans ce qui suit le fonctionnement de chaque onglet de l’interface graphique.
9.1. index.cgi
Ce fichier est relatif à la page d’accueil. Les fichiers qu’il manipule sont
/var/smoothwall/ppp/settings, /var/smoothwall/modem/settings,
/var/smoothwall/ethernet/settings, /var/smoothwall/red/active, var/smoothwall/red/dial-
on-demand, /var/Smoothwall/banners/available, /var/Smoothwall/patches/available,
/var/Smoothwall/patches/installed et /dev/isdninfo. Tous ces fichiers sont exécutes en
lecture seule (pas de modifications) afin de tirer les infos continues dans la page d’accueil.
Page 40
9.3. advstatus.cgi
Ce fichier correspond à l'onglet About>advanced. Il permet de visualiser des informations sur
les états de mémoires, disque... Pour ce faire, le script exécute les commandes système :
− /usr/bin/free -ot : pour avoir une description sur l'état de la mémoire.
− df -h: pour avoir une description sur l'état du disque (partitions, taille...)
− df -i: pour avoir une description sur l'utilisation des inodes.
− /usr/bin/w: pour voir les utilisateurs et le temps de connexion.
− ifconfig -a : permet de voir les configuratrions de toutes les interfaces réseaux définies.
− /bin/lsmod: pour voir tout les modules chargés sur la machine Smoothwall.
− /bin/uname -a: pour avoir toutes les informations sur le noyau
9.4. graphs.cgi
Ce script correspond à l'onglet About>traffic graphs. Il utilise le fichier
/var/smoothwall/ethernet/settings pour découvrir la configuration réseau (interface Red,
Green...). Il ouvre aussi le fichier /var/log/trafficstats pour avoir les informations nécessaires
sur les statistiques de trafic. En fonction de ces statistiques, les deux graphes de la page
seront élaborés.
Les commandes rrdtool last /var/lib/rrd/green.rrd et /var/lib/rrd/green.rrd sont en outre
exécutées afin d'obtenir (respectivement) les dates des dernieres mises à jour de la page
(Last update) et des données de la page (update with data).
A noter que les graphes de la page graphs.cgi ont des liens vers les pages
graphs.cgi?i=nom_interface_du_graphe. Ces scripts reprennent le même esprit pour
dessiner les graphes et afficher les informations nécessaires aux interfaces. En réalité, ça sera
le même script (graphs.cgi) exécuté avec en paramètres le nom de l'interface...
9.5. bandwidthbars.cgi
Correspond à l'onglet About>bandwidth bars. Ce script utilise le fichier
/var/smoothwall/ethernet/settings pour découvrir la configuration réseau.
C'est la fonction realtime_graphs qui prend en entrée le contenu du fichier
/var/log/quicktrafficstats qui dessine les graphes (à partir des paramètres de ce dernier
fichier). La fonction javascript updatepage rafraîchit les graphes toute les secondes.
Page 41
9.7. register.cgi
Correspond à l'onglet About>my smoothwall. Ce script utilise le fichier
/var/smoothwall/main/ownership pour s'identifier auprès de la communauté Smoothwall.
Si l'enregistrement a eu lieu (et donc le fichier /var/smoothwall/notregistered inexistant).
9.8. proxy.cgi
Correspond à l'onglet Services>web proxy. Ce script utilise les fichiers
/var/smoothwall/ethernet/settings et /var/smoothwall/main/settings afin de récupérer les
configurations nécessaires. Ce script exécute la commande
/usr/bin/smoothwall/writeproxy.pl pour enregistrer les paramètres de la page dans le
fichier /var/smoothwall/proxy/settings.
9.9. im.cgi
Ce script correspond à l'onglet Services>improxy. Il utilise les fichiers
/var/smoothwall/ethernet/settings et /var/smoothwall/main/settings afin de récupérer les
différentes configurations. La commande /usr/bin/smoothwall/writeim.pl est utilisée afin
d'enregistrer les paramètres saisis dans le fichier /var/smoothwall/im/settings.
9.10. p3scan.cgi
Ce script correspond à l'onglet Services>pop3 proxy. Il modifie le fichier
/var/smoothwall/p3scan/settings en y écrivant le contenu suivant: VALID=yes et
ENABLE=on si on a choisi d'activer le proxy pop3 ou bien VALID=yes simplement si le proxy
est désactivé.
La commande /usr/bin/smoothwall/writep3scan.pl sert à redémarrer p3scan. Le fichier
/var/smoothwall/clamav/settings est aussi modifié par ce script.
9.11. sipproxy.cgi
Script correspondant à l'onglet Services>sip porxy. Utilise la commande
/usr/bin/smoothwall/writesiproxdconf.pl afin de sauvegarder les différents paramètres
saisis sur le fichier /var/smoothwall/sipproxy/settings.
9.12. dhcp.cgi
Correspond à l'onglet Services>dhcp. Utilise les fichiers /var/smoothwall/ethernet/settings
et /var/smoothwall/dhcp/staticconfig afin de récupérer la configuration courante. La
commande /usr/bin/smoothwall/writedhcp.pl permet d'enregistrer la configuration dhcp.
Les fichiers cibles sont
9.13. ddns.cgi
Correspond à l'onglet Services>dynamic dns. Utilise (et modifie) le fichier
/var/smoothwall/ddns/config. C'est La commande /usr/bin/smoothwall/setddns.pl -f qui
sert à enregistrer les paramètres dns saisis.
Page 42
9.15. ids.cgi
Ce script correspond à l'onglet Services>ids. Il modifie le fichier
/var/smoothwall/snort/settings (y enregistre le Oink code et l'état de l'ids: activé ou pas). La
commande /usr/bin/oinkmaster.pl -C est exécutée avec
/usr/lib/smoothwall/oinkmaster.conf pour obtenir les règles.
9.16. remote.cgi
Ce script correspond à l'onglet Services>remote access. Il modifie le fichier
/var/smoothwall/remote/settings en modifiant les variables ENABLE_SECURE_ADMIN et
ENABLE_SSH à ON ou OFF.
9.17. time.cgi
Ce script correspond à l'onglet Services>time. Il utilise le dossier /usr/share/zoneinfo/posix
afin d'y sélectionner les paramètres du flux horaire (liste des fichiers tels que Africa/Tunis...).
La commande /usr/bin/smoothcom settime paramètres sert à enregistrer les paramètres de
temps.
9.18. portfw.cgi
Script correspondanrt à l'onglet Networking>incoming. Il modifie le fichier
/var/smoothwall/portfw/config.
9.19. outgoing.cgi
Script correspondanrt à l'onglet Networking>outging. Il modifie les fichiers
/var/smoothwall/outgoing/config et /var/smoothwall/outgoing/machineconfig. Le fichier
/var/smoothwall/ethernet/settings est utilisé pour récuprérer la configuration réseau.
9.20. dmzholes.cgi
Ce script correcpond à l'onglet Networking>internal. Il modifie
/var/smoothwall/dmzholes/config.
9.21. xtaccess.cgi
Ce script correspond à la page Networking>external access. Il modifie
/var/smoothwall/xtaccess/conf.
9.22. ipblock.cgi
Ce script correspond à la page Networking>ipblock. Il modifie
/var/smoothwall/ipblock/config.
Page 43
9.24. traffic.cgi
Ce script correspond à la page Networking>qos. Il utilise les fichiers
/var/smoothwall/ethernet/settings et /var/smoothwall/traffic/settings. Notez toutefois
que pour les priorités une échelle de 0 à 1 est définie. 0 correspond à la valeur 0 et 1 à la
valeur maximale que la bandepassante peut atteinde. Les priorités sont définies comme suit:
normal => [0.4,0.9]
high => [0.2, 0.9]
low => [0.15, 0.4]
slow => [0.01, 0.02]
smoothadmin => [0.05, 0.95]
webcache => [0.05, 0.95]
smallpkt => [0.05, 0.1]
localtraffic => [0.05, 0.95]
9.25. advnet.cgi
Script correspondant à l'onglet Networking>advanced. Il agit sur le fichier
/var/smoothwall/advnet/settings.
9.26. pppsetup.cgi
Ce script correspond à l'onglet Networkiong>ppp de l'interface web de Smoothwall Express
3.0. Il modifie les fichiers /var/smoothwall/isdn/settings, /var/smoothwall/adsl/settings,
/var/smoothwall/red/active, /var/smoothwall/ppp/settings,
/var/smoothwall/adsl/mgmt.o, /var/smoothwall/ppp/settings-$parametres_saisis et
/var/smoothwall/ppp/secrets. Le fichier /var/smoothwall/ethernet/settings est utilisé
pour la récupération de la configuration réseau.
9.27. interfaces.cgi
Cet onglet sert à modifier les paramètres des différenets interfaces réseau. Pour ce, il se base
sur l'utilisation de la commande /sbin/ifconfig. Le fichier
/var/smoothwall/ethernet/settings est utilisé par ce script aussi.
9.28. vpnmain.cgi
Correspond à l'onglet VPN>control. Ce script modifie sur /var/smoothwall/vpn/config et
/var/smoothwall/vpn/settings. La commande /usr/bin/smoothwall/writeipsec.pl est
exécutée afin d'activer l'utilisation des VPN IPsec. Le fichier /proc/net/ipsec_eroute est aussi
utilisé par cet onglet.
9.29. vpn.cgi/vpnconfig.dat
Ce script correspond au deuxième onglet du menu VPN. Il manipule le fichier
/var/smoothwall/vpn/config. La commande exécutée afin de redémarrer le tunneling par
ipsec est : /usr/bin/smoothwall/writeipsec.pl
Page 44
9.31. logs.cgi/proxylog.dat
Script correspondant à la page Logs>web proxy. La récupération des logs se fait à partir du
fichier /var/log/squid/access.log.
9.32. logs.cgi/firewalllog.dat
Ce Script sert à l'intéraction avec la page Logs>firewall. La récupération des logs de cette
page se fait à partir du fichier /var/log/messages.
9.33. logs.cgi/idslog.dat
Le script logs.cgi/idslog.dat recupère les logs à partir du fichier /var/log/snort/alert. Il les
affiche ensuite sur la page Logs>ids.
9.34. logs.cgi/imviewer.cgi
Script correspondant à la page Logs>instant messages. Il récupère les logs à partir du dossier
/var/log/imspector/. Il parcoure les fichiers de ce dossier qui correspondent aux différents
protocoles de messagerie instantannée.
9.35. logs.cgi/pop3log.dat
Script correspondant à la page Logs>email. Ce script récupère les logs à partir du fichier
/var/log/maillog.
9.36. ipinfo.cgi
Ce script exécute la commande /usr/bin/whois –nocgi adresseIP_ou_Nom_de_domaine. Il
correspond à l'onglet Tools>ip information.
9.37. iptools.cgi
Script correspondant à l'onglet Tools>ip tools. Il utilise la commande /bin/traceroute -n
adresse_entrrée_en_paramètre ou ping -n -c 5 adresse_entrrée_en_paramètre selon le
choix effectué sur l'interface par l'utilisateur.
9.38. updates.cgi
Script correspondant à l'onglet Maintenance>updates. Il manipule le fichier
/var/smoothwall/patches/available pour savoir si des mises à jours sont disponibles. Si tel
est le cas, alors pour chaque mise à jour un fichier qui porte son nom est créé sous
/var/patches/. Ce fichier aura comme nom le nom du patch. Il prendra en entrée
/var/patches/nom_du_patch/patch.tar.gz. La commande /usr/bin/md5sum
/var/patches/nom_du_patch/patch.tar.gz est exécutée pour vérifier l'intégrité du fichier. La
commande cd /var/patches/$$ && /bin/tar xvfz patch.tar.gz > /dev/null est exécutée
ensuite, puis la commande /usr/bin/setuids/installpackagenom_du_patch pour l'installation
du package. Enfin un fichier /var/smoothwall/patches/installed sera créé pour lister les
mises à jours effectuées et une mise à jour du fichier /var/smoothwall/patches/available.
Page 45
9.40. alcateladslfw.cgi
Ce script correspond à l'onglet Maintenance>speedtouch usb firmware. Il enregistre le fichier
fichier spécifié à l'interface sur /var/smoothwall/adsl/mgmt.o.
9.41. changepw.cgi
Ce script correspond à l'onglet Maintenance>passwords. Il exécute la commande
/usr/bin/htpasswd -m -b /var/smoothwall/auth/users admin paramètre1_saisi afin
d'enregistrer le mot de passe de l'administrateur et la commande /usr/bin/htpasswd -m -b
/var/smoothwall/auth/users dial paramètre2_saisi pour enregistrer le mot de passe de
l'utilisateur "dial".
9.42. backup.img
Ce script correspond à l'onglet Maintenance>backup. Il exécute d'abord la commande
/etc/rc.d/backupscript puis /usr/bin/tar -C /var/smoothwall/backup -cWf /dev/fd0 si on a
choisi de créer une disquette de restauration ou /usr/bin/tar -C /var/smoothwall/backup -cf
/var/smoothwall/tmp/backup.img si on a choisi de créer une image de restauration;
9.43. preferences.cgi
Script qui modifie /var/smoothwall/main/uisettings en forçant la valeur de MENU à off/on.
Page 46
Page 47
− Guardian active response qui permet d'installer les fonctionnalités d'ips sur la machine
Smoothwall.
− Squid Analysis Report Generator (SARG) est un outil qui génére des rapports permettant
l'analyse du trafic (voir les sites les plus visités à partir du réseau de l'entreprise...)
− Smoothwall Express Mail Filter: sert à filtrer les mails en utilisant le protocole SMTP en
détectant des virus et des spams.
− Zerina: permet d'installer OpenVPN sur Smoothwall.
Conclusion
Smoothwall Express intègre les diverses fonctionnalités nécessaires pour un pare-feu
(filtrage web, connexion à un ids, logs de pare-feu...). Il offre une interface graphique
conviviale et légère (l'utilisation de javascript y est pour quelque chose...). Une explication
des fonctionnalités offertes par chaque onglet de l'interface est en outre disponible
immédiatement sur l'onglet (pas besoin d'aller voir l'aide, à moins qu'il y est besoin d'une
aide détaillée..). La supervision du trafic en temps réel est un plus non négligeable par
rapport à d'autres pare-feu existants (graphes et barres de bande passante...). Les règles de
pare-feu sont en outre indexées grâce à la définition de chaînes autres que les chaînes
classique d'iptables (INPUT, OUTPUT, FORWARD, NAT...). Ceci a surement des conséquences
Page 48
Page 49
Page 50