Manual de uso de PersonalSOC
Aquí se explica cómo usar la aplicación que reúne, de solo lectura y con un botón, los registros y el estado de las defensas de este equipo en un informe que se entiende de un vistazo. Primero se explican las operaciones en pantalla, y la línea de comandos se reúne en un capítulo posterior.
1. Qué es PersonalSOC
PersonalSOC es una aplicación que reúne los registros y el estado de las defensas de este equipo y los resume en hallazgos e informe. Está pensada para que una persona sin personal de seguridad dedicado vea, con pruebas, qué ocurre en su equipo y decida qué hacer a continuación.
Es de solo lectura, así que no cambia ajustes, no borra archivos ni bloquea comunicaciones. El análisis de los registros lo hacen analizadores de procedimiento fijo que no usan ni un LLM ni la red. La integración con LLM es opcional y está desactivada al principio.
Lo que no hace
- Es una herramienta para el único equipo en el que se ejecuta. No hay función para ver varios equipos a la vez.
- Nunca eleva sus privilegios. Un registro que solo puede leer root se muestra como «no legible» y no se usa sudo.
- «Sin detecciones» no es una prueba de seguridad. El riesgo global también es solo una estimación de 0 a 100, no una probabilidad.
- Solo lee un conjunto fijo de fuentes. No se pueden indicar desde la pantalla archivos ni comandos que leer.
2. Instalación e inicio
PersonalSOC es una aplicación aparte de RoamSwitch. Tiene su propio icono y se distribuye junto con RoamSwitch. Los menús de RoamSwitch no tienen acceso a ella; se abre como una aplicación independiente.
| Entorno | Instalación y apertura |
|---|---|
| Mac | El DMG de RoamSwitch incluye PersonalSOC.app. Muévala a la carpeta Aplicaciones y abra «PersonalSOC». Requiere macOS 12 o posterior. |
| Linux (edición cliente) | Se incluye en los paquetes deb, rpm, tarball y AUR de RoamSwitch. Abra «PersonalSOC» desde la lista de aplicaciones, o ejecute personalsoc-app en un terminal. La ventana necesita WebKitGTK 4.1, que deb y rpm instalan automáticamente. En Arch (AUR), instale webkit2gtk-4.1 como dependencia opcional. |
| Linux Server Edition | Solo se incluye el comando. Ejecute personalsoc en un terminal (la app con ventana personalsoc-app no se incluye). Para la operación de la edición de servidor, consulte el Manual de operaciones (Linux Server). |
3. Primera comprobación del estado
Solo lee las fuentes fijas cuando pulsa «Comprobar estado». Las fuentes que no quiera que lea se pueden desactivar en los ajustes.
Pasos
- Abra la aplicación y pulse «Ajustes» en la esquina superior derecha.
- Debajo aparecen las fuentes que se leen en este sistema operativo. Desmarque las que no quiera que se lean.
- Pulse «Guardar» y luego «← Volver» para regresar a la pantalla de inicio.
- Pulse «Comprobar estado». Aparece una barra de progreso y, al terminar, las pestañas de resultados.
Al terminar aparecen los recuentos, por ejemplo «Comprobación completada. 3 detección(es) / 2 IOC». El capítulo siguiente explica las pestañas.
| Entorno | Qué se lee |
|---|---|
| Mac | El registro unificado de macOS (sudo y sshd de las últimas 24 horas) y los ajustes de MCP (Claude Code, Claude Desktop, opencode, Cursor). También lee los registros de acceso de servidores web (el Apache incluido en macOS y nginx y httpd de Homebrew). Leer el registro de lo que Gatekeeper rechazó tarda unos 10 segundos, por lo que está desactivado al principio. |
| Linux | El registro de autenticación (sshd), auditd, los registros de acceso web (nginx / apache, incluidos los registros separados por host virtual), los registros de consultas DNS (dnsmasq / named) y los ajustes de MCP. |
| Ambos | Si RoamSwitch está instalado, también su MCP de solo lectura. Puede desactivarse con la casilla «Obtener el historial de detecciones y el diagnóstico de configuración del MCP de RoamSwitch (solo lectura)». |
4. Cómo leer los resultados
| Pestaña | Qué se ve |
|---|---|
| Panel | Gráficos muestran el indicador del riesgo global (estimación), los recuentos por gravedad, las apariciones por categoría, la evolución en el tiempo y los recuentos de MITRE ATT&CK. |
| Informe | Un informe en Markdown con las fuentes, los hallazgos por categoría y los IOC. «Copiar Markdown» lo copia entero y «Mostrar el origen Markdown» cambia al texto sin formato. |
| Hallazgos | Puede recorrer las detecciones una a una, cada una con su gravedad, confianza, número ATT&CK, recuento y los números de línea del registro que la respaldan. |
| Fuentes | La lista de lo que se comprobó. El estado es «Leído», «No presente», «No legible (permiso)», «Error» o «Desactivado», y las fuentes no legibles o con error no se han comprobado. |
| IOC | La lista de las IP, dominios, URL y hashes encontrados en los registros. Se muestran en forma neutralizada, como 198[.]51[.]100[.]7, para que nada se abra por error. |
| Resumen de entrada para un LLM | Esta pestaña solo aparece cuando la integración con LLM está desactivada. Es un resumen para entregar a un LLM a mano y no contiene líneas de registro sin procesar. Use «Copiar». |
5. Ajustes y ejecución periódica
«Ajustes», arriba a la derecha de la pantalla de inicio, se divide en pestañas por función. Después de cambiar algo, pulse «Guardar» y luego «← Volver» para regresar al inicio.
Idioma de visualización Además de «Automático (según el sistema)», puede elegir japonés, inglés, alemán, español, francés, italiano, coreano, portugués (Portugal), chino simplificado o chino tradicional, cada uno mostrado con su propio nombre.
Ejecución periódica (opcional)
Marque «Comprobar automáticamente a intervalos regulares» y guarde: en Mac se registra como agente de usuario de launchd y en Linux como temporizador de usuario de systemd. El intervalo se elige entre 7 niveles de 15 minutos a 24 horas y al principio es de 1 hora.
Solo se ejecuta personalsoc scan --notify, sin usar root. Solo se notifica cuando hay una detección que no estaba la última vez, y el mensaje contiene solo recuentos (en Linux hace falta notify-send). También puede desactivar la notificación con «Notificar solo si hay una detección que no estaba la última vez».
Desmarque la casilla y guarde, y se elimina el registro.
6. Integración con LLM (opcional)
La integración con LLM es opcional y está desactivada al principio. Una vez activada, tras la comprobación del estado, el comando del LLM elegido hace una investigación adicional y redacta un informe como auditor. Los comandos que se pueden usar son opencode, claude, codex y agy.
Pasos
- Marque «Activar la integración con LLM».
- Elija el «LLM que se usará». Uno que aparezca como «(no instalado)» no tiene comando en este equipo.
- Si hace falta, cambie el modelo y el tiempo límite (segundos). Si deja el modelo vacío, se usa el predeterminado de ese LLM.
- Pulse «Guardar», vuelva al inicio y pulse «Comprobar estado». Tras la comprobación, la investigación del LLM se ejecuta a continuación.
Lo que llega al LLM
- Se entrega el contenido de las detecciones, las líneas de registro que sirven de prueba, las cadenas devueltas por MCP y las notas de las fuentes. Se entregan para que la situación se investigue con precisión.
- Antes de entregarlos, los secretos como claves, tokens y contraseñas se enmascaran y se eliminan los caracteres invisibles.
- PersonalSOC no da al LLM ni una shell ni archivos. El LLM solo solicita lo que quiere investigar, y PersonalSOC ejecuta las herramientas de solo lectura que permite y devuelve los resultados. Hay como máximo 6 rondas de investigación.
- La salida del LLM no se considera fiable y en el informe se trata como una cita. Un LLM puede interpretar una detección como más grave de lo que es, así que compruebe siempre la conclusión en los «Hallazgos».
Sobre la restricción de herramientas
- En la columna «Estado» de la tabla de Ajustes,
opencodeyclaudemuestran «Herramientas bloqueadas». claude se inicia con sus herramientas integradas, servidores MCP y skills desactivados y sin cargar sus propios ajustes. opencode se inicia con todos los permisos denegados. codexyagyno se pueden desactivar de este modo, así que muestran «No se pueden bloquear las herramientas».
7. Usar la línea de comandos
El comando es personalsoc. En Linux está en /usr/bin/personalsoc y en Mac dentro de PersonalSOC.app/Contents/MacOS/.
| Comando | Qué hace |
|---|---|
personalsoc scan | Comprueba automáticamente los registros de este equipo y RoamSwitch (MCP) y muestra las detecciones en una lista. Para los registros que solo root puede leer (autenticación, servidor web, auditd), ejecútelo con sudo. |
personalsoc scan --report | Muestra el informe en Markdown (sin LLM). |
personalsoc scan --llm <name> | Muestra el informe que el LLM redactó como auditor tras investigar con herramientas de solo lectura. name es opencode, claude, codex, agy, etc. |
personalsoc scan --notify | Notifica solo si hay una detección que no estaba la última vez. Es la forma que llama la ejecución periódica. |
personalsoc <type> <file> | Analiza un archivo indicado. type es sshd, auditd, web, dns, unified, mcp, inject o ioc. Si indica - como file, lee la entrada estándar, y también se pueden añadir --report, --brief y --llm. |
--lang <lang> | Se puede añadir a cualquier comando y fija el idioma de visualización, con prioridad sobre el ajuste. Los códigos son ja, en, de, es, fr, it, ko, pt-PT, zh-Hans y zh-Hant. |
--llm es ya el acto explícito de entregar el contenido al LLM, por lo que funciona aunque «Activar la integración con LLM» esté desactivado en Ajustes. Tampoco se pide la confirmación para los LLM cuyas herramientas no se pueden bloquear, así que use codex o agy sabiendo que durante la investigación se pueden leer y enviar archivos.8. Dónde se guardan los datos y actualizaciones
Qué se guarda
| Elemento | Ubicación |
|---|---|
| Ajustes | ~/.config/personalsoc/settings.json (se guarda con permisos que solo usted puede leer y escribir) |
| Registro de las detecciones anteriores (para decidir las notificaciones) | ~/.local/state/personalsoc/last.json (solo hashes que hacen de huella de las detecciones; no se conserva texto de los registros) |
| Registro de la ejecución periódica | En Mac, ~/Library/LaunchAgents/dev.personalsoc.scan.plist (la salida va a ~/Library/Logs/personalsoc-scan.log). En Linux, personalsoc-scan.timer y personalsoc-scan.service en ~/.config/systemd/user/. |
PersonalSOC no guarda en archivos los informes ni los registros recopilados. Para conservarlos, use «Copiar Markdown» en la pantalla o la salida de la línea de comandos. Para añadir un LLM, edite a mano profiles en el archivo de ajustes; no se puede cambiar desde la pantalla.
Actualizaciones
En Mac se actualiza desde «Actualizaciones» en Ajustes. Solo se conecta a lafine.net cuando pulsa «Buscar actualizaciones» y recibe la información de la última versión (un JSON público). No se envía nada sobre este equipo ni sus registros. Si hay una versión más reciente, pulse «Descargar e instalar». La firma del archivo descargado se verifica con la clave pública incrustada en la aplicación, y si falla no se instala nada. Al terminar, la aplicación se reinicia.
En Mac, actualizar RoamSwitch en sí no actualiza PersonalSOC. En Linux no hay función de actualización y PersonalSOC se incluye en las actualizaciones de los paquetes de RoamSwitch.
9. Si algo no funciona
| Síntoma | Causa y solución |
|---|---|
| Una fuente muestra «No legible (permiso)» | Los registros de autenticación, del servidor web y de auditd no se pueden leer sin derechos de administrador. PersonalSOC no eleva sus privilegios; ejecútelo con sudo. Es distinto de «sin detecciones»: ese registro no se ha comprobado. |
| No se puede guardar la ejecución periódica | Si el Mac indica que la aplicación se ejecuta desde una ubicación temporal en cuarentena, mueva PersonalSOC.app a la carpeta Aplicaciones, ábrala de nuevo y guarde otra vez. Si indica que no se encontró el comando personalsoc, personalsoc debe estar en el mismo lugar que la propia aplicación. |
| La investigación con claude falla con «Not logged in» | PersonalSOC inicia claude sin cargar sus propios ajustes (como env y apiKeyHelper en ~/.claude/settings.json). Las configuraciones que se autentican mediante esos ajustes, como un proxy, Bedrock o Vertex, fallan. Si añade a mano "llm_user_settings": ["claude"] al archivo de ajustes, claude se inicia con sus ajustes cargados. Las herramientas y MCP siguen desactivados. |