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.