Sécuriser une VM Homestead avec un firewall : Shorewall

A chaque nouvelle installation de serveur, ou chaque déploiement d’application, une étape importante consiste à ajouter et configurer un firewall.

Homestead est une machine virtuelle qui tourne sur Ubuntu. Ce dernier embarque un pilote pour iptable (UFW) mais je ne le trouve pas assez robuste et pas assez restrictif par défaut.

Shorewall offre cet avantage qu’il est moins verbeux que la création de base des règles Iptables.

Comment installer et configurer Shorewall

Pour simplifier les choses, j’ai créé un petit dépot, avec les fichiers de configuration de base : https://github.com/rikless/homestead-shorewall

Pour faire simple, il faut se connecter en ssh sur votre machine virtuelle et lancer :

sudo aptitude install shorewall
sudo cd /etc/shorewall
sudo git clone https://github.com/rikless/homestead-shorewall.git
sudo cd homestead-shorewall
sudo mv * ../ && cd ../
sudo rm -rf homestead-shorewall README.md
sudo shorewall check
sudo /etc/init.d/shorewall start

Décomposition des fichiers de configuration

 

interfaces : Ce fichier liste les interfaces réseaux de votre serveur. En utilisant Forge + Digital Ocean avec Homestead, par défaut, il y a 2 interfaces : eth0 et eth1 (eth1 correspond à un réseau privé, que nous allons complètement ignorer/bloquer). Il faut les identifier avec un nom plus explicite pour pouvoir réutiliser ces noms dans le fichier zones.

zones : Ce fichier est utilisé par Shorewall pour savoir quelle interface fait quoi : ipv4/ipv6/firewall

rules : Ce fichier contient toutes les règles routage et de filtrage de votre firewall. C’est ici que vous pouvez utiliser le nom que vous avez donné à chaque interface pour dire par exemple : j’autorise toutes les connexions sur le port 80 depuis le net, vers le firewall (parce qu’il agit comme un gardien, et tout le trafic passe par lui avant d’être accepté, re-routé, ou pas).

policy : Là on définit le comportement par défaut. Est-ce que l’on veut autoriser les connexions sortantes, mais refuser toutes les entrantes, pour ensuite appliquer les règles du fichier rules ? Il est important de comprendre que cette politique de fonctionnement est appliquée avant les règles du fichier rules. Dans le cas de notre dépôt, on bloque tout par défaut.

Quelles sont les règles de ce dépôt :

Comme indiqué plus haut, par défaut, le fichier policy bloque tout. Ensuite, grâce au fichier rules, on ouvre les connexions/ports/protocoles suivants :

  • http
  • https
  • ssh (22)
  • dns
  • ntp
  • ssl
  • tcp
  • udp
  • les connexions vers github et bitbucket (pour pouvoir pusher)
  • whois
  • ping

Ouvrir un nouveau port

Pour ajouter une règle, ouvrez simplement le fichier /etc/shorewall/rules avec votre éditeur (et les privilèges super user), et ajoutez une ligne en fin de fichier (sur l’avant dernière ligne, car la dernière ne doit impérativement pas changer) :

ACCEPT  $FW     net     tcp     5555  -       -       -       -

ACCEPT (ou REJECT, ou DROP) les connexions qui partent du firewall, vers internet, sur le protocole TCP, sur le port 5555

Enregistrez, et lancez un shorewall check avant de redémarrer le firewall.

Recherches utilisées pour trouver cet article :новости челябинск мир 74
metrogeek

Laisser un commentaire