Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
technique:adminsys:secu:firewall [2021/09/06 17:34] – qduchemi | technique:adminsys:secu:firewall [2023/06/10 19:08] (Version actuelle) – qduchemi |
---|
{{indexmenu_n>10}} | {{indexmenu_n>10}} |
# Pare-feu | # Filtrer le trafic autorisé : pare-feu |
| |
Pour filtrer les accès au strict minimum sur les machines de Picasoft, on utilise un firewall. | Pour filtrer les accès au strict minimum sur les machines de Picasoft, on utilise un firewall. |
| |
## Firewall basique avec ufw | ## Firewall basique avec ufw |
| |
| <bootnote> |
| Sur Debian 11, `iptables` est disponibles en deux versions : une moderne (nft) et une ancienne (legacy). La version moderne n'est plus compatible avec `ufw`, qui construit des règles `iptables`. |
| |
| Beaucoup de gens critiquent `ufw`, et à raison. En revanche, pour ce qu'on en fait, et pour simplifier l'administration système et l'intégration des nouvelles personnes dans l'équipe technique, on décide de garder un système de pare-feu simple et homogène. Il faut donc utiliser l'ancienne version. |
| |
| Exécuter la commande : |
| |
| ``` |
| update-alternatives --set iptables /usr/sbin/iptables-legacy |
| ``` |
| |
| sur les machines qui font tourner Debian 11 pour utiliser l'ancienne version d'`iptables`. |
| </bootnote> |
| |
### Installation | ### Installation |
# Autorisation du SSH | # Autorisation du SSH |
ufw allow in 22 | ufw allow in 22 |
| # Autorisation pour le web |
| ufw allow in 80 |
| ufw allow in 443 |
# On ouvre la socket Docker sur le réseau | # On ouvre la socket Docker sur le réseau |
ufw allow in 2376 | ufw allow in 2376 |
``` | ``` |
| |
<bootnote warning>Remarquer que l'on n'ouvre pas les accès aux ports 80/443, parce que les services web de Picasoft sont derrière un conteneur Docker, [[technique:docker:general:traefik|Traefik]]. `ufw` n'est donc pas en mesure de filtrer les paquets à destination d'un conteneur Docker.</bootnote> | <bootnote question>Heu, c'est [[technique:tech_team:traefik|Traefik]] qui gère les services web, donc Docker, et tu nous as dit que ça bypassait `ufw`... Ça sert à quoi d'autoriser les ports `80` et `443` ?</bootnote> |
| |
| Pour un cas très spécifique : lorsque vous essayez d'accéder à un conteneur depuis un autre conteneur situé sur la même machine avec son URL publique. Si le conteneur `A` (`a.picasoft.net`) et `B` (`b.picasoft.net`) tournent sur la même machine, alors sans ces règles : |
| |
| ```bash |
| docker exec -it A bash |
| $ curl b.picasoft.net |
| ``` |
| |
| sera bloqué. La magie de Docker et d'`iptables`... |
| |
## Configuration (hyperviseurs) | ### Configuration (hyperviseurs) |
| |
Sur la plupart des machines, l'idée va être d'autoriser uniquement les accès aux ports SSH, DNS et Proxmox. On pourra ouvrir d'autres ports si nécessaires, mais ça ne devrait pas arriver trop souvent, les services tournant sur les machines virtuelles. | Sur la plupart des machines, l'idée va être d'autoriser uniquement les accès aux ports SSH, DNS et Proxmox. On pourra ouvrir d'autres ports si nécessaires, mais ça ne devrait pas arriver trop souvent, les services tournant sur les machines virtuelles. |
<bootnote warning>La plupart des règles sont en IPv4 **et** en IPv6, il faut faire deux fois l'opération, en commençant par le numéro le plus haut pour éviter les erreurs.</bootnote> | <bootnote warning>La plupart des règles sont en IPv4 **et** en IPv6, il faut faire deux fois l'opération, en commençant par le numéro le plus haut pour éviter les erreurs.</bootnote> |
| |
### Filtrage IP vers Docker | ## Filtrage IP vers Docker |
| |
[[technique:adminsys:secu:fail2ban|fail2ban]] s'occupe déjà de bannir les adresses IP qui essayent de se connecter trop de fois en SSH. Mais l'analyse de logs est compliquée, et parfois certaines IP vont consulter de manière répétée des URL inexistantes sur nos services, essayer de forcer les connexions... Difficile de déterminer l'origine de ces comportements, mais lorsqu'ils sont répétés et viennent de la même IP, il peut être pertinent de bloquer les IP. | [[technique:adminsys:secu:fail2ban|fail2ban]] s'occupe déjà de bannir les adresses IP qui essayent de se connecter trop de fois en SSH. Mais l'analyse de logs est compliquée, et parfois certaines IP vont consulter de manière répétée des URL inexistantes sur nos services, essayer de forcer les connexions... Difficile de déterminer l'origine de ces comportements, mais lorsqu'ils sont répétés et viennent de la même IP, il peut être pertinent de bloquer les IP. |