Aller au contenu

Administration en ligne de commande

Le pare-feu est accessible en ligne de commande en console, via le port série ou via SSH.

Élévation exceptionnelle vers root

Les opérations courantes utilisent la session confinée admin. Pour un diagnostic ou une maintenance nécessitant root, ouvrir un terminal en console ou une session SSH interactive depuis un poste de confiance, puis lancer :

sudo -i

Saisir successivement le mot de passe local du compte admin et le code TOTP du super administrateur central. Le mot de passe local est également nécessaire lorsque la connexion initiale utilise RADIUS ou une identité distante associée à admin. Une authentification sudo précédente n'est pas réutilisée.

Le shell obtenu utilise l'UID 0. Lorsque SELinux est actif, son contexte attendu est pinos_admin_u:sysadm_r:sysadm_t:s0. Vérifier avec :

id -u
id -Z

Cette session donne des pouvoirs étendus, notamment sur SELinux. Quitter le shell avec exit après l'intervention ; cela ne révoque pas les changements effectués ni les processus détachés. Le second facteur ne garantit pas l'intégrité d'une session admin déjà compromise.

L'indisponibilité des journaux ne bloque pas ce parcours de secours. Les deux facteurs restent obligatoires, y compris lorsque SELinux est permissif ou désactivé ; dans ce dernier cas, id -Z ne fournit pas de contexte SELinux.

Si l'heure empêche de valider le TOTP, rétablir la connectivité réseau pour permettre la synchronisation NTP. Il n'existe pas de contournement du second facteur ; si la récupération reste impossible, une réinstallation est nécessaire.

Consultation et contrôle du réseau

Depuis une session admin, utiliser directement les clients NetworkManager nmcli et nmtui, y compris en SSH, sans pkexec ni demande de mot de passe supplémentaire. Pour consulter les interfaces, les paramètres IP et les profils :

nmcli general status
nmcli general permissions
nmcli device status
nmcli device show
nmcli connection show
nmcli monitor

Pour activer ou désactiver une connexion existante, utiliser son UUID affiché par nmcli connection show :

nmcli connection up uuid "UUID"
nmcli connection down uuid "UUID"

Le menu nmtui connect permet également d'activer et de désactiver les connexions. Ces opérations déclenchent le dispatcher PinOS et le démarrage ou l'arrêt des services associés à la cible interface@…. Désactiver la connexion utilisée pour SSH peut interrompre la session.

La création, l'édition et la suppression des profils enregistrés, le changement du nom de machine et la coupure globale via nmcli networking off ne sont pas autorisés par cette règle. Les menus correspondants de nmtui peuvent rester visibles, mais les opérations sont refusées.

L'autorisation NetworkManager network-control couvre aussi certaines modifications de l'interface active, notamment nmcli device modify et device reapply. Elle ne se limite donc pas aux commandes up et down. Ces droits sont également utilisables par les autres clients NetworkManager de la session, dont Cockpit. Les changements ne mettent pas à jour la configuration de référence PinOS et ne constituent pas une configuration persistante après redémarrage.

Diagnostic avec ip

La commande ip est accessible directement à admin pour consulter l'état du réseau et suivre ses changements, sans pkexec ni capacité Linux supplémentaire :

ip -br address
ip -s link show
ip route show table all
ip route get 192.0.2.1
ip rule show
ip neigh show
ip monitor link address route

Interrompre la surveillance avec Ctrl-C.

Pour consulter la table ARP IPv4, utiliser ip -4 neigh show à la place de arp -n. Pour limiter l'affichage à une interface :

ip -4 neigh show
ip -4 neigh show dev enp0s2

Ces commandes affichent les adresses IP des voisins, leurs adresses MAC (lladdr) lorsqu'elles sont connues et leur état. Sans -4, ip neigh show affiche aussi les voisins IPv6 lorsque cette famille est disponible.

Les modifications directes du réseau avec ip sont refusées : changement d'état ou de MTU d'une interface, ajout ou suppression d'adresse, de route, de règle ou de voisin, création d'interface et changement de namespace.

Le processus conserve le domaine pinos_admin_t. L'autorisation de lecture netlink concerne aussi les autres programmes de ce domaine. L'étiquette Debian partagée avec ip permet également l'exécution d'autres outils comme tc, ethtool ou ifconfig, s'ils sont présents, sous les mêmes restrictions. Les droits de contrôle via NetworkManager décrits plus haut restent applicables.

Diagnostic des sockets avec ss

Depuis une session admin, utiliser directement ss, fourni par iproute2, pour consulter les sockets dans l'espace réseau courant, y compris celles des services. Le processus conserve l'UID admin, sans capacité Linux supplémentaire. Pour les administrateurs habitués à netstat :

Commande habituelle Commande avec ss Informations affichées
netstat -lntu ss -lntu Ports TCP et UDP en écoute
netstat -ant ss -ant Toutes les connexions TCP
netstat -anu ss -anu Toutes les sockets UDP
netstat -xan ss -xan Sockets Unix
netstat -s ss -s Synthèse des sockets, différente des statistiques par protocole de netstat -s

L'option -n affiche les adresses et les ports sous forme numérique. Pour examiner les informations TCP détaillées, utiliser ss -tin. Les filtres permettent de cibler un port, par exemple :

ss -ant '( sport = :443 or dport = :443 )'

L'option -p affiche uniquement les processus accessibles à admin ; elle ne permet pas d'identifier tous les processus propriétaires des sockets des services. La fermeture forcée de sockets avec ss -K et le changement d'espace réseau avec ss -N restent interdits.

Pour remplacer les vues de routage et d'interfaces de netstat, utiliser respectivement ip route show et ip -s link show.

Diagnostic avec ping

Depuis une session admin, utiliser directement ping, fourni par iputils, sans pkexec ni changement d'utilisateur :

ping -c 4 192.0.2.1
ping -I enp0s2 -c 4 192.0.2.1
ping -M do -s 1472 -c 4 192.0.2.1

-I sélectionne l'interface ou l'adresse source. -M do interdit la fragmentation IPv4 pour diagnostiquer la MTU ; la taille -s porte uniquement sur les données ICMP. Une exécution sans -c s'interrompt avec Ctrl-C.

Le programme utilise les sockets ICMP Echo autorisées au groupe admin, sans setuid ni capacité Linux supplémentaire. Avec SELinux actif, il s'exécute dans le domaine Debian ping_t. Les options nécessitant des privilèges, comme le marquage des paquets avec -m, restent indisponibles à admin.

Capture réseau

Depuis une session admin, lancer directement tcpdump pour afficher les paquets, sans pkexec ni changement d'utilisateur. Les interfaces et les filtres BPF sont librement choisis. Par exemple :

tcpdump -ni enp0s2 -c 100
tcpdump -eni enp0s2 -vvv 'vlan 51 and udp port 67'
tcpdump -ni enp0s1 'udp port 500 or udp port 4500'

L'option -n évite la résolution DNS ; sans cette option, la résolution des noms reste autorisée. Interrompre une capture avec Ctrl-C.

Pour enregistrer puis relire une capture :

tcpdump -ni enp0s2 -c 100 -w /var/cache/admin/captures/diagnostic.pcap
tcpdump -nn -r /var/cache/admin/captures/diagnostic.pcap

L'administrateur peut copier ou supprimer les fichiers avec ses outils habituels, ou exporter la capture depuis un poste disposant de SSH :

scp admin@adresse-du-pare-feu:/var/cache/admin/captures/diagnostic.pcap .

/var/cache/admin est un tmpfs indépendant de /run, limité à 128 Mio pour l'ensemble de ses usages. Son contenu disparaît au redémarrage. Exporter les captures à conserver avant de redémarrer et supprimer les fichiers devenus inutiles.

En SELinux enforcing, tcpdump utilise le domaine pinos_tcpdump_t et ne peut créer ses fichiers ordinaires que dans l'espace de captures étiqueté à cet effet. Les programmes externes demandés par -z ne sont pas autorisés. Les redirections du shell restent soumises aux permissions de la session administrateur.

Consultation des journaux

Les journaux du pare-feu sont gérés par le journal de systemd. Ils peuvent donc être consultés aau moyen de la commande journalctl.

La page de manuel est accessible ici.

Voici quelques options utiles de la commande journalctl :

  • -f : laisse défiler les événements (équivalent à un tail -f) ;
  • -u nom-de-service : affiche les événements relatifs au service sytemd nom-de-service.service.

Gestion de la configuration

La commande pinos config est accessible directement depuis la session admin. Il permet de visualiser la révision de configuration, de gérer l'historique des configurations archivées et d'appliquer des configurations.

La commande pinos boot permet également de gérer le chargeur de démarrage (menu, consoles de sortie et versions).

Configuration du pare-feu

Les différentes sous-commandes et options sont accessibles via pinos config help.

Gestion du démarrage

La sous-commande pinos boot permet de gérer le chargeur de démarrage. Notamment :

  • pinos boot list : permet de lister les versions installées sur le pare-feu et de visualiser la version qui sera chargée au prochain démarrage ;
  • pinos boot primary <version> : permet de choisir la version qui sera chargée au prochain démarrage ;
  • pinos boot daemons [nom [niveau]] : permet de visualiser et de modifier les paramètres de niveau de journalisation des démons définis dans le chargeur de démarrage.

Info

Les paramètres de niveau de journalisation des démons sont configurables pour chaque démon individuellement et prennent effet au prochain démarrage. Les niveaux disponibles sont : info, warning, error, debug, trace. Une journalisation excessive peut avoir un impact négatif sur les performances du pare-feu et les volumes échangés avec l'infrastructure centrale.

Pour IPsec, utiliser pinos boot daemons ipsec debug pour sélectionner le profil de diagnostic, puis pinos boot daemons ipsec info pour revenir au profil normal. Le paramètre noyau correspondant est ipsec.log_level ; son absence sélectionne info. Le générateur prépare /etc/strongswan.d/90-pinos-logging.conf au démarrage de strongswan.service, y compris sans connexion IPsec configurée.

Niveau bootd Niveau strongSwan Contenu
info, warning, error 1 Fonctionnement général et diagnostics d'erreur
debug 2 Diagnostic détaillé
trace 3 Diagnostic avec dumps hexadécimaux

Les niveaux strongSwan expriment la verbosité, pas la gravité : warning et error conservent donc le profil normal pour ne pas perdre les diagnostics d'échec. Une valeur noyau invalide revient également au profil normal. Le niveau 4, susceptible d'exposer des clés, n'est jamais sélectionné.

Dans journald, les messages strongSwan de niveau 0 ont la priorité notice, ceux de niveau 1 la priorité info, et ceux de niveau 2 ou plus la priorité debug. Les filtres de consultation et de collecte doivent inclure info pour le profil normal et debug pour les profils détaillés ; limiter aux priorités warning et supérieures masque aussi des erreurs strongSwan. Voir la documentation de charon-systemd et les niveaux de journalisation.

Le fichier est créé directement dans /etc/strongswan.d pour hériter du type SELinux standard ipsec_conf_file_t, sans déplacer le credential depuis /run.

Mise à jour

Depuis la session admin, rechercher et afficher les versions disponibles sans élévation exceptionnelle :

pinos version check
pinos version list

La liste indique les versions installées, disponibles, les plus récentes et protégées. Pour obtenir les détails d'une version :

pinos version describe <version>

Pour confirmer la version actuellement en cours d'exécution, vous pouvez consulter le fichier /etc/os-release :

cat /etc/os-release
ID=pinos
ID_LIKE=debian
NAME="PinOS"
VERSION="13"
VERSION_ID=13
DEFAULT_HOSTNAME=ripos
PRETTY_NAME="PinOS 'RIP Edition' 13"
VARIANT="'RIP Edition'"
VARIANT_ID="rip"
IMAGE_ID="pinos-rip"
IMAGE_VERSION="13.1-rc11"

La variable IMAGE_VERSION vous indique la version actuellement en cours d'exécution.

Pour lancer la mise à jour depuis la session admin :

pinos version update

Puis redémarrer le pare-feu pour appliquer la nouvelle version :

systemctl reboot

Cas particulier : configuration d'usine

Pour supprimer toutes les données (journaux, état et configuration), une commande est disponible :

pinos boot factory-reset

Confirmer en appuyant sur la touche y comme indiqué, et redémarrer.

Consultation du journal

Depuis le compte local admin, membre de adm, consulter les journaux sans pkexec :

journalctl -u strongswan.service -n 50 --no-pager
journalctl -u strongswan.service -f

Interrompre le suivi avec Ctrl-C. Les droits Unix, ACL et SELinux restent appliqués ; cette autorisation permet la consultation, pas la modification du journal. Un autre compte du groupe admin doit disposer de ses propres droits de lecture du journal, par exemple via adm. La consultation est aussi disponible dans le tableau de bord Cockpit sans activer l’élévation.

État des tunnels IPsec

Depuis une session admin, consulter l’inventaire IPsec avec :

pinos ipsec

Cette commande est accessible à root et aux membres du groupe admin, sans pkexec ni activation de privilèges supplémentaires. Elle affiche les connexions configurées, leurs associations de sécurité IKE SA et leurs CHILD SA, ainsi que le certificat d’authentification associé à chaque connexion.

Exemple pour une connexion avec deux CHILD SA :

IPsec: available · synchronized

connection_1
  Authentication certificate: CN=site-paris · expires 2027-06-15T00:00:00Z
  IKE #12 · ESTABLISHED · IKEv2 · age 2 h 14 min 0 s (at collection)
    Name       : connection_1
    Identities : paris.example.net → lyon.example.net
    Addresses  : 192.0.2.10 → 198.51.100.20
    Observed   : 2026-10-19T10:00:00Z

    CHILD #120 · bureaux · INSTALLED
      Networks : 10.10.0.0/24 → 10.20.0.0/24
      Traffic  : ↓ 125.0 MiB · ↑ 87.0 MiB (local inbound / outbound)
      Packets  : ↓ 150000 · ↑ 100000

    CHILD #121 · serveurs · INSTALLED
      Networks : 10.11.0.0/24 → 10.21.0.0/24
      Traffic  : ↓ 940.0 MiB · ↑ 412.0 MiB (local inbound / outbound)
      Packets  : ↓ 800000 · ↑ 400000

1 connections · 1 IKE SAs · 2 CHILD SAs

Chaque connexion est présentée dans sa propre section. Plusieurs IKE SA peuvent coexister pour une connexion, notamment lors d’un renouvellement. Chaque CHILD SA a ses propres réseaux protégés et compteurs :

  • ESTABLISHED indique que l’association IKE est établie et que l’authentification a réussi ;
  • INSTALLED indique que la CHILD SA et ses associations de sécurité sont installées. Cet état ne garantit pas à lui seul la connectivité de bout en bout : vérifier aussi les compteurs, le routage et les règles du pare-feu ;
  • ↓ désigne le trafic entrant et ↑ le trafic sortant, du point de vue du pare-feu local ;
  • Observed indique la date de collecte en UTC. La durée et les compteurs correspondent à cette collecte, et la date d’expiration du certificat est également affichée en UTC.

Une connexion configurée peut être affichée sans IKE SA. Les CHILD configurés sans SA observée sont signalés avec des réseaux inconnus. Un certificat absent, ambigu ou indisponible est indiqué explicitement. Le certificat affiché est associé à la configuration de la connexion ; il ne prouve pas quel certificat a été utilisé par une SA établie avant un renouvellement de certificat.

Fraîcheur de l’inventaire

La commande affiche une lecture ponctuelle de l’état conservé par le moniteur ipsecmond. Le moniteur actualise cet état à la réception d’événements strongSwan et effectue un inventaire périodique toutes les 30 secondes par défaut. Relancer pinos ipsec permet de consulter son dernier état, sans forcer une nouvelle collecte.

L’en-tête distingue la disponibilité et la synchronisation du moniteur :

  • available : la liaison avec strongSwan et les abonnements sont opérationnels ;
  • synchronized : l’inventaire des SA est réconcilié ;
  • unavailable ou not synchronized : la disponibilité ou la synchronisation n’est pas assurée. Les valeurs conservées peuvent être périmées ; consulter les avertissements et diagnostics affichés.

La fraîcheur des statistiques est indiquée séparément. Une lecture réussie peut donc afficher des données périmées ou un inventaire vide ; un code de retour nul ne garantit pas que les tunnels fonctionnent.

Sortie JSON

Pour une utilisation dans un script :

pinos ipsec --json

L’option -j est équivalente. La sortie contient l’ensemble de l’inventaire avec des clés en snake_case, notamment connections, ike_sas, child_sas, authentication_certificate, ca_certificates et fingerprint_sha256. Les clés available, synchronized, configuration_valid et statistics_valid permettent de vérifier la disponibilité et la fraîcheur avant d’exploiter les valeurs.

Les champs inconnus restent absents ; une valeur zéro ou un tableau vide présent est une valeur connue. Les horodatages JSON sont en microsecondes Unix, les durées en secondes et les compteurs d’octets et de paquets sont des entiers. Les champs de délai signés, comme rekey_in_seconds, peuvent être négatifs.

La commande consulte uniquement l’état IPsec. Le changement de configuration reste effectué par injection du fichier XML PinOS et redémarrage du pare-feu. Pour suivre les changements depuis l’interface web, consulter la section Tunnels IPsec du tableau de bord.