Configuration firewall shorewall avec une interface et un réseau local

J’ai mis pas mal de temps à configurer mon firewall basé sur netfilter (iptables) sur mon serveur linux en utilisant Shoreline Firewall plus connu sous le terme shorewall. En effet la plupart des configurations type qu’on peut trouver sur internet sont basées sur des machines standalone ou avec plusieurs cartes réseau avec dmz et fonction routeur. Or même si j’aurais bien voulu mettre en place ce type de topologie, l’emplacement physique de ma box et de mes machines me l’interdit. De fait la topologie de mon réseau local ressemble à ça:

personal-networkAutour de ma box j’ai monté un réseau local via le courant électrique et 4 prises CPL situées dans plusieurs pièces différentes. On retrouve le serveur pour tous les autres clients qu’ils soient branchés en RJ45/CPL ou en wifi. Pour rappel sur mon serveur poweredge T310 on trouve les services suivants:

  • serveur de fichier basé sur NFS
  • serveur d’authentification basé sur OpenLDAP
  • serveur de mail en réception (dovecot/POP3s) et émission (sendmail) le tout avec tout l’arsenal antispam/antivirus (SpamAssassin et ClamAV)
  • serveur local Apache+Mysql
  • serveur multimedia pour kodi/xbmc
  • serveur de connexion sécurisée avec OpenSSH

Bien que le serveur dispose de deux interfaces réseau, je me sers que d’une seule interface, ça serait trop lourd de doubler le réseau pour qu’il fasse office de firewall pour les autres PC clients. Du coup je ne protège que le serveur et non pas les postes clients qui bénéficient de leur protection propre et de celle apportée par la box. L’idée est donc que seules les machines de mon réseau local puisse accéder aux services de mon serveur et on rejette tout le reste.

Niveau configuration de shorewall, cela donne cela, tous les fichiers se trouvent sous /etc/shorewall, voilà en ce qui concerne le fichier zones

# Shorewall version 4 – Zones File
#
# For information about this file, type « man shorewall-zones »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
lan ipv4

la zone fw correspond au serveur qui fait office de firewall, la zone lan correspond indifféremment à internet et au réseau local. Voilà maintenant le fichier interfaces

# Shorewall version 4 – Interfaces File
#
# For information about entries in this file, type « man shorewall-interfaces »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
###############################################################################
###############################################################################
#ZONE INTERFACE OPTIONS
lan eno2 –

ma carte réseau utilisée est définie par eno2, ma carte eno1 est non utilisée, la commande ifconfig -a permet de connaître le nom de ses interfaces réseau. le fichier hosts est quant à lui vide (ou presque)

# Shorewall version 4 – Hosts file
#
# For information about entries in this file, type « man shorewall-hosts »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-hosts.html
#
###############################################################################
#ZONE HOST(S) OPTIONS

le fichier policy définit les règles par défaut

# Shorewall version 4 – Policy File
#
# For information about entries in this file, type « man shorewall-policy »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
###############################################################################
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
fw lan ACCEPT
lan all DROP info
all all REJECT info

en gros toutes les trames du serveur vers internet sont acceptées et toutes les autres sont rejetées, il faut donc définir quelques exceptions avec le fichier rules que voici

# Shorewall version 4 – Rules File
#
# For information on the settings in this file, type « man shorewall-rules »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT(S) PORT(S) DEST LIMIT GROUP
ACCEPT fw lan icmp
ACCEPT lan:192.168.1.0/24 fw tcp 22,25,80,111,389,995,2049,3306,10000
ACCEPT lan:192.168.1.0/24 fw udp 111,2049
ACCEPT lan:192.168.1.0/24 fw icmp
DNS(ACCEPT) fw lan

On autorise les machines du réseau local qui ont pour adresse 192.168.1.X à accéder au serveur sur le port 22 (OpenSSH), 25 (SMTP), 80 (Apache/httpd), 111 (portmapper), 389 (OpenLDAP), 995 (POP3s), 2049 (NFS), 3306 (MySQL) et 10000 (Webmin). On autorise également les requêtes DNS du serveur vers internet et on autorise également les ping.

Maintenant le serveur peut être encore atteint via les postes clients et ceux-ci doivent également être protégés. J’ai limité au strict minimum le trafic de et vers internet toujours avec shorewall. Exemple avec un client connecté via une interface RJ45 qui peut être pingué, fichier zones

# Shorewall version 4 – Zones File
#
# For information about this file, type « man shorewall-zones »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-zones.html
#
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
net ipv4
fw firewall

fichier interface

# Shorewall version 4 – Interfaces File
#
# For information about entries in this file, type « man shorewall-interfaces »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-interfaces.html
#
###############################################################################
###############################################################################
#ZONE INTERFACE OPTIONS
net eno1 detect

fichier host vide, fichier policy

# Shorewall version 4 – Policy File
#
# For information about entries in this file, type « man shorewall-policy »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-policy.html
#
###############################################################################
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
fw net ACCEPT
net all DROP info
all all REJECT info

et fichier rules

# Shorewall version 4 – Rules File
#
# For information on the settings in this file, type « man shorewall-rules »
#
# The manpage is also online at
# http://www.shorewall.net/manpages/shorewall-rules.html
#
######################################################################################################################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
# PORT(S) PORT(S) DEST LIMIT GROUP
ACCEPT net fw icmp 8 –

Laisser un commentaire