Manuel d'utilisation de PersonalSOC
Ce manuel explique comment utiliser l'application qui rassemble, en lecture seule et d'un seul bouton, les journaux et l'état des défenses de cet appareil dans un rapport lisible d'un coup d'œil. Les opérations à l'écran viennent d'abord, la ligne de commande est regroupée dans un chapitre plus loin.
1. Qu'est-ce que PersonalSOC
PersonalSOC est une application qui rassemble les journaux et l'état des défenses de cet appareil et les résume en constats et en rapport. Elle est conçue pour qu'un particulier, sans personnel de sécurité dédié, voie preuves à l'appui ce qui se passe sur son appareil et décide de la suite.
Elle est en lecture seule : elle ne modifie aucun réglage, ne supprime aucun fichier et ne bloque aucun trafic. L'analyse des journaux est faite par des analyseurs à procédure fixe, qui n'utilisent ni LLM ni réseau. L'intégration LLM est facultative et désactivée au départ.
Ce qu'elle ne fait pas
- C'est un outil pour l'unique appareil sur lequel elle tourne. Il n'y a pas de fonction pour voir plusieurs appareils ensemble.
- Elle n'élève jamais ses privilèges. Un journal que seul root peut lire est affiché comme « illisible », et sudo n'est pas utilisé.
- « Aucune détection » n'est pas une preuve de sécurité. Le risque global n'est lui aussi qu'une estimation de 0 à 100, pas une probabilité.
- Elle ne lit qu'un ensemble fixe de sources. On ne peut pas indiquer depuis l'écran de fichiers ou de commandes à lire.
2. Installation et lancement
PersonalSOC est une application distincte de RoamSwitch. Elle a sa propre icône et est livrée avec RoamSwitch. Les menus de RoamSwitch n'offrent pas d'accès : on l'ouvre comme une application à part.
| Environnement | Installation et ouverture |
|---|---|
| Mac | Le DMG de RoamSwitch contient PersonalSOC.app. Déplacez-la dans le dossier Applications, puis ouvrez « PersonalSOC ». macOS 12 ou ultérieur est requis. |
| Linux (édition client) | Elle est livrée avec les paquets deb, rpm, tarball et AUR de RoamSwitch. Ouvrez « PersonalSOC » depuis la liste des applications, ou lancez personalsoc-app dans un terminal. La fenêtre nécessite WebKitGTK 4.1, installé automatiquement avec deb et rpm. Sous Arch (AUR), installez webkit2gtk-4.1 comme dépendance facultative. |
| Linux Server Edition | Seule la commande est incluse. Lancez personalsoc dans un terminal (l'application à fenêtre personalsoc-app n'est pas incluse). Pour l'exploitation de l'édition serveur, consultez le Manuel d'exploitation (Linux Server). |
3. Première vérification de l'état
Il ne lit les sources fixes que lorsque vous appuyez sur « Vérifier l'état ». Vous pouvez désactiver dans les réglages les sources que vous ne voulez pas qu'il lise.
Marche à suivre
- Ouvrez l'application et appuyez sur « Réglages » en haut à droite.
- En dessous figurent les sources lues sur ce système. Décochez celles que vous ne voulez pas faire lire.
- Appuyez sur « Enregistrer », puis sur « ← Retour » pour revenir à l'accueil.
- Appuyez sur « Vérifier l'état ». Une barre de progression apparaît, puis les onglets de résultats s'affichent à la fin.
À la fin, les nombres s'affichent, par exemple « Vérification terminée. 3 détection(s) / 2 IOC ». Le chapitre suivant explique les onglets.
| Environnement | Ce qui est lu |
|---|---|
| Mac | Le journal unifié de macOS (sudo et sshd des dernières 24 heures) et les réglages MCP (Claude Code, Claude Desktop, opencode, Cursor). Il lit aussi les journaux d'accès des serveurs web (l'Apache fourni avec macOS, ainsi que nginx et httpd de Homebrew). La lecture du relevé des refus de Gatekeeper prend environ 10 secondes ; elle est donc désactivée au départ. |
| Linux | Le journal d'authentification (sshd), auditd, les journaux d'accès web (nginx / apache, y compris les journaux séparés par hôte virtuel), les journaux de requêtes DNS (dnsmasq / named) et les réglages MCP. |
| Les deux | Si RoamSwitch est installé, son MCP en lecture seule s'y ajoute. La case « Récupérer l'historique des détections et le diagnostic de configuration depuis le MCP de RoamSwitch (lecture seule) » permet de le désactiver. |
4. Lire les résultats
| Onglet | Ce que vous voyez |
|---|---|
| Tableau de bord | Des graphiques montrent la jauge du risque global (estimation), le nombre par gravité, les occurrences par catégorie, l'évolution dans le temps et les nombres MITRE ATT&CK. |
| Rapport | Un rapport Markdown qui regroupe les sources, les constats par catégorie et les IOC. « Copier le Markdown » le copie en entier, et « Afficher la source Markdown » passe au texte brut. |
| Constats | Vous pouvez parcourir les détections une à une, chacune avec sa gravité, son niveau de confiance, son numéro ATT&CK, son nombre et les numéros des lignes de journal qui l'étayent. |
| Sources | La liste de ce qui a été vérifié. L'état est « Lu », « Absent », « Illisible (autorisation) », « Échec » ou « Désactivé » ; les sources illisibles ou en échec n'ont pas été vérifiées. |
| IOC | La liste des IP, domaines, URL et hachages trouvés dans les journaux. Ils s'affichent sous une forme neutralisée comme 198[.]51[.]100[.]7, pour que rien ne soit ouvert par erreur. |
| Résumé à fournir à un LLM | Cet onglet n'apparaît que lorsque l'intégration LLM est désactivée. C'est un résumé à remettre à un LLM à la main, sans lignes de journal brutes. Utilisez « Copier ». |
5. Réglages et exécution périodique
« Réglages », en haut à droite de l'accueil, est divisé en onglets par fonction. Après une modification, appuyez sur « Enregistrer », puis sur « ← Retour » pour revenir à l'accueil.
Langue d'affichage Outre « Automatique (selon le système) », vous pouvez choisir japonais, anglais, allemand, espagnol, français, italien, coréen, portugais (Portugal), chinois simplifié ou chinois traditionnel, chacun affiché sous son propre nom.
Exécution périodique (facultatif)
Cochez « Vérifier automatiquement à intervalles réguliers » et enregistrez : un agent utilisateur launchd est créé sur Mac, un timer utilisateur systemd sous Linux. L'intervalle se choisit parmi 7 paliers entre 15 minutes et 24 heures, et vaut 1 heure au départ.
Seule la commande personalsoc scan --notify s'exécute, sans root. Une notification n'est envoyée que s'il y a une détection absente la dernière fois, et son texte ne contient que des nombres (sous Linux, notify-send est nécessaire). La case « Notifier seulement s'il y a une détection absente la dernière fois » permet aussi de couper la notification.
Décochez la case et enregistrez : l'inscription est supprimée.
6. Intégration LLM (facultatif)
L'intégration LLM est facultative et désactivée au départ. Une fois activée, après la vérification de l'état, la commande du LLM choisi mène une enquête supplémentaire et rédige un rapport en tant qu'auditeur. Les commandes utilisables sont opencode, claude, codex et agy.
Marche à suivre
- Cochez « Activer l'intégration LLM ».
- Choisissez le « LLM à utiliser ». Un LLM indiqué « (non installé) » n'a pas de commande sur cet appareil.
- Si besoin, modifiez le modèle et le délai (secondes). Si le modèle reste vide, la valeur par défaut de ce LLM est utilisée.
- Appuyez sur « Enregistrer », revenez à l'accueil et appuyez sur « Vérifier l'état ». Après la vérification, l'enquête du LLM enchaîne aussitôt.
Ce qui parvient au LLM
- Sont transmis le contenu des détections, les lignes de journal qui servent de preuves, les chaînes renvoyées par MCP et les remarques sur les sources. Ils sont transmis pour que la situation soit examinée avec précision.
- Avant la transmission, les secrets tels que clés, jetons et mots de passe sont masqués et les caractères invisibles sont retirés.
- PersonalSOC ne donne au LLM ni shell ni fichiers. Le LLM ne fait que demander ce qu'il veut examiner ; PersonalSOC exécute les outils en lecture seule qu'il autorise et renvoie les résultats. Il y a au plus 6 tours d'enquête.
- La sortie du LLM n'est pas considérée comme fiable et figure dans le rapport comme une citation. Un LLM peut lire une détection comme plus grave qu'elle n'est ; vérifiez donc toujours la conclusion dans les « Constats ».
À propos de la restriction des outils
- Dans la colonne « État » du tableau des réglages,
opencodeetclaudeaffichent « Outils verrouillés ». claude est lancé avec ses outils intégrés, ses serveurs MCP et ses skills désactivés, sans charger vos propres réglages. opencode est lancé avec toutes les permissions refusées. codexetagyne peuvent pas être bridés de cette façon ; ils affichent donc « Outils non verrouillables ».
7. Utiliser la ligne de commande
La commande est personalsoc. Sous Linux, elle se trouve dans /usr/bin/personalsoc ; sur Mac, dans PersonalSOC.app/Contents/MacOS/.
| Commande | Ce qu'elle fait |
|---|---|
personalsoc scan | Vérifie automatiquement les journaux de cet appareil et RoamSwitch (MCP) et affiche les détections sous forme de liste. Pour les journaux que seul root peut lire (authentification, serveur web, auditd), lancez-le avec sudo. |
personalsoc scan --report | Affiche le rapport Markdown (sans LLM). |
personalsoc scan --llm <name> | Affiche le rapport que le LLM a rédigé en tant qu'auditeur après avoir enquêté avec des outils en lecture seule. name vaut opencode, claude, codex, agy, etc. |
personalsoc scan --notify | Notifie seulement s'il y a une détection absente la dernière fois. C'est la forme appelée par l'exécution périodique. |
personalsoc <type> <file> | Analyse un fichier indiqué. type vaut sshd, auditd, web, dns, unified, mcp, inject ou ioc. Si vous indiquez - pour file, la commande lit l'entrée standard, et --report, --brief et --llm peuvent aussi être ajoutés. |
--lang <lang> | Peut s'ajouter à toute commande et fixe la langue d'affichage, avec priorité sur le réglage. Les codes sont ja, en, de, es, fr, it, ko, pt-PT, zh-Hans et zh-Hant. |
--llm est en soi l'acte explicite de transmettre le contenu au LLM ; elle fonctionne donc même si « Activer l'intégration LLM » est désactivé dans les réglages. La confirmation pour les LLM aux outils non verrouillables n'est pas demandée non plus ; n'utilisez donc codex ou agy qu'en sachant que des fichiers peuvent être lus et envoyés pendant l'enquête.8. Emplacements de stockage et mises à jour
Ce qui est enregistré
| Élément | Emplacement |
|---|---|
| Réglages | ~/.config/personalsoc/settings.json (enregistré avec des droits de lecture et d'écriture réservés à vous seul) |
| Relevé des détections précédentes (pour décider des notifications) | ~/.local/state/personalsoc/last.json (uniquement des hachages servant d'empreintes des détections ; aucun texte de journal n'est conservé) |
| Enregistrement de l'exécution périodique | Sur Mac, ~/Library/LaunchAgents/dev.personalsoc.scan.plist (la sortie va dans ~/Library/Logs/personalsoc-scan.log). Sous Linux, personalsoc-scan.timer et personalsoc-scan.service dans ~/.config/systemd/user/. |
PersonalSOC n'enregistre ni les rapports ni les journaux collectés dans des fichiers. Pour en conserver un, utilisez « Copier le Markdown » à l'écran ou la sortie de la ligne de commande. Pour ajouter un LLM, modifiez à la main profiles dans le fichier de réglages ; l'écran ne permet pas de le changer.
Mises à jour
Sur Mac, la mise à jour se fait depuis « Mises à jour » dans les réglages. L'application ne se connecte à lafine.net que lorsque vous appuyez sur « Rechercher des mises à jour », et reçoit les informations sur la dernière version (un JSON public). Rien sur cet appareil ni sur ses journaux n'est envoyé. S'il existe une version plus récente, appuyez sur « Télécharger et installer ». La signature du fichier téléchargé est vérifiée avec la clé publique intégrée à l'application ; en cas d'échec, rien n'est installé. L'application redémarre ensuite.
Sur Mac, la mise à jour de RoamSwitch lui-même ne met pas PersonalSOC à jour. Sous Linux, il n'y a pas de fonction de mise à jour ; PersonalSOC est inclus dans les mises à jour des paquets RoamSwitch.
9. En cas de problème
| Symptôme | Cause et remède |
|---|---|
| Une source affiche « Illisible (autorisation) » | Les journaux d'authentification, du serveur web et d'auditd ne sont pas lisibles sans les droits d'administrateur. PersonalSOC n'élève pas ses privilèges ; lancez-le donc avec sudo. C'est différent de « aucune détection » : ce journal n'a pas été vérifié. |
| L'exécution périodique ne peut pas être enregistrée | Si le Mac indique que l'application s'exécute depuis un emplacement temporaire en quarantaine, déplacez PersonalSOC.app dans le dossier Applications, rouvrez-la et enregistrez de nouveau. S'il indique que la commande personalsoc est introuvable, personalsoc doit se trouver au même endroit que l'application elle-même. |
| L'enquête avec claude échoue avec « Not logged in » | PersonalSOC lance claude sans charger vos propres réglages (comme env et apiKeyHelper dans ~/.claude/settings.json). Les configurations qui s'authentifient par ces réglages, par exemple avec un proxy, Bedrock ou Vertex, échouent. Si vous ajoutez à la main "llm_user_settings": ["claude"] au fichier de réglages, claude est lancé avec vos réglages chargés. Ses outils et le MCP restent désactivés. |