pare-feu proxmox : un flux ICMP devient une regle, au lieu d etre saute
Le type ICMP (echo-request) etait range parmi les ports derives et le flux saute : le ping de supervision n avait pas de regle, et web-frontal-01 passe en REJECT est devenu mort pour Icinga. icmp_type dans le devis, icmp-type vers l API. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4ce296f3d5
commit
35831608d0
2 changed files with 25 additions and 2 deletions
20
CHANGELOG.md
20
CHANGELOG.md
|
|
@ -1,5 +1,25 @@
|
||||||
# CHANGELOG — Set-OPS
|
# CHANGELOG — Set-OPS
|
||||||
|
|
||||||
|
## 2026-09-28 (11) — Première VM filtrée par Proxmox, et le ping de supervision qu'aucune règle ne portait
|
||||||
|
|
||||||
|
**Activée : `web-frontal-01` de Technolibre** (`--vm 123603101`), pare-feu `enable=1`,
|
||||||
|
`policy_in=REJECT`, groupes `cli-metrique`, `srv-debian`, `srv-web-frontal`. Vérifié flux par
|
||||||
|
flux : SSH du poste, rapports de santé et de sauvegarde acceptés, `node_exporter` joint par
|
||||||
|
`obs-01`, SSH depuis la flotte (autorisé par `srv-debian`, déclaré), port 80 ouvert à l'edge
|
||||||
|
seul (rien n'y écoute encore : aucun site). Icinga : tout vert — sauf un critique NOUVEAU.
|
||||||
|
|
||||||
|
**`ping4` : 100 % de pertes.** Le ping de supervision EST déclaré (`serveur_debian`,
|
||||||
|
`echo-request` depuis `serveur_icinga`), mais `_ports()` ne garde que les nombres : le type
|
||||||
|
ICMP était rangé parmi les « ports dérivés » et le flux sauté. Aucune règle, donc `REJECT`.
|
||||||
|
`_cibles()` rend désormais un flux ICMP en règle `proto: icmp` + `icmp_type`, que
|
||||||
|
l'applicateur transmet (`icmp-type`) et compare. Appliqué : `srv-debian` des deux locataires
|
||||||
|
accepte `echo-request` depuis `srv-icinga` ; `ping4` revenu OK (0,20 ms).
|
||||||
|
|
||||||
|
**Vérifié avant d'aller plus loin** : le « sans source » `serveur_icinga:5665` que recense le
|
||||||
|
devis est le flux de `serveur_backup`, qu'aucun locataire ne porte — les rapports passifs,
|
||||||
|
eux, ont leurs règles (`cli-backup`, `srv-debian`). Et le recensement ne déclare plus sauté
|
||||||
|
un flux ICMP qu'il rend.
|
||||||
|
|
||||||
## 2026-09-28 (10) — Le pare-feu est-ouest de Proxmox ne filtrait aucune VM des locataires
|
## 2026-09-28 (10) — Le pare-feu est-ouest de Proxmox ne filtrait aucune VM des locataires
|
||||||
|
|
||||||
**Mesuré.** Pare-feu du datacenter actif, `firewall=1` sur les cartes des 26 VM de Chezlepro
|
**Mesuré.** Pare-feu du datacenter actif, `firewall=1` sur les cartes des 26 VM de Chezlepro
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ def construire(tenants: list[tuple[str, str, dict]]) -> dict:
|
||||||
if pairs == ["localhost"]:
|
if pairs == ["localhost"]:
|
||||||
continue # boucle locale : aucune regle inter-noeud
|
continue # boucle locale : aucune regle inter-noeud
|
||||||
if not _resoudre_sources(data, fl.get("pair"), tous, ips):
|
if not _resoudre_sources(data, fl.get("pair"), tous, ips):
|
||||||
sans_source.append(f"{groupe}:{','.join(_ports(fl))}")
|
sans_source.append(f"{groupe}:{','.join(str(c.get('dport') or c.get('icmp_type')) for c in _cibles(fl))}")
|
||||||
continue
|
continue
|
||||||
# UNE REGLE PAR ROLE SOURCE. Un flux dont le pair liste quatre roles
|
# UNE REGLE PAR ROLE SOURCE. Un flux dont le pair liste quatre roles
|
||||||
# donne quatre regles, chacune renvoyant a l'IPSet de son role : la
|
# donne quatre regles, chacune renvoyant a l'IPSet de son role : la
|
||||||
|
|
@ -245,7 +245,10 @@ def construire(tenants: list[tuple[str, str, dict]]) -> dict:
|
||||||
# Sans cette regle, la premiere VM passee en `policy_in=REJECT` se ferme
|
# Sans cette regle, la premiere VM passee en `policy_in=REJECT` se ferme
|
||||||
# derriere l'outil qui vient de la configurer. Meme source unique que
|
# derriere l'outil qui vient de la configurer. Meme source unique que
|
||||||
# les nftables et la frontiere : l'intrant `nftables_admin_ssh`.
|
# les nftables et la frontiere : l'intrant `nftables_admin_ssh`.
|
||||||
if "22" in _ports(fl) and admin_de(nom):
|
# `_ports` seulement pour TCP/UDP : appele sur un flux ICMP, il rangeait le
|
||||||
|
# type parmi les « ports derives sautes » — un flux pourtant rendu.
|
||||||
|
if (str(fl.get("protocole", "tcp")).lower() != "icmp"
|
||||||
|
and "22" in _ports(fl) and admin_de(nom)):
|
||||||
utilises.add(f"t{n['index']}-admin")
|
utilises.add(f"t{n['index']}-admin")
|
||||||
regles.append({
|
regles.append({
|
||||||
"action": "ACCEPT", "sens": "IN",
|
"action": "ACCEPT", "sens": "IN",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue