Rivex security posture collection agent (cross-platform)
Project description
rivex-agent
Agent collecteur multi-plateforme pour la plateforme de surveillance de posture de securite Rivex. Collecte logs systeme, version OS, niveaux de patchs, ports ouverts, permissions de fichiers sensibles et remonte le tout vers le serveur central chiffre.
Version et changelog (obligatoire a chaque changement de code)
- Choisir le prochain numéro (souvent +1 sur le patch :
0.7.x). - Mettre a jour :
agent_launcher.py(APP_VERSION),pyproject.toml,config.json(défaut),core/config_manager.pysi c’est la source du défaut de version,test/unit/test_protection.py(payload d’exemple) si la version y figure,src/server/frontend/public/agent/version.json(téléchargement dashboard), badge agent dans leREADMEa la racine du depot. - Rédiger une section dans
CHANGELOG.md(ce repertoire) : date, intitulé des correctifs / fonctionnalités , lignepip install rivex-agent==...en bas de section si publie sur PyPI.
Composant PMEs : s installe sur chaque machine (serveur Linux ou poste Windows) pour alimenter le score de securite en temps reel du dashboard.
Installation
A. Via PyPI (recommande pour developpeurs / tests)
pip install rivex-agent
rivex-agent --version
B. Installation systeme (service au demarrage)
Linux (root requis) :
pip install rivex-agent
sudo rivex-agent --install
# => /opt/rivex-agent/ + systemd unit + symlink /usr/local/bin/rivex-agent
sudo systemctl status rivex-agent
Windows (admin requis) :
pip install rivex-agent
rivex-agent --install # UAC prompt automatique
Get-Service RivexAgent
C. Binaire autonome (sans Python)
Telecharger depuis le dashboard Rivex ou la page releases :
- Linux :
rivex-agent-linux-x86_64 - Windows :
rivex-agent-windows-x86_64.exe
Binaires PyInstaller sans dependance externe. Fonctionnement identique a la version pip.
Apres --update, l'installation des paquets listes dans
requirements-linux.txt / requirements-windows.txt utilise python3
(ou python) du PATH, car le binaire n'est pas un interpreteur Python.
En cas d'echec ou d'absence sur le PATH, definir
RIVEX_PIP_PYTHON=/usr/bin/python3 (ou equivalent).
D. Mode portable (developpement)
git clone https://gitlab.com/rivex/pa4a
cd pa4a/src/agent
python agent_launcher.py --version
Tous les modes partagent la meme CLI. Seuls les chemins de config / logs different (voir "Chemins" ci-dessous).
Commandes principales
| Commande | Description |
|---|---|
rivex-agent --enroll --url https://rivex.example.com --c "srv-prod" |
Enregistre une nouvelle machine (cle d org). Rattachement / re-activation : --enroll --enroll_key <cle fiche> |
rivex-agent --scan |
Effectue un scan complet et envoie le payload |
rivex-agent --sync |
Synchronise l etat avec le serveur |
rivex-agent --status |
Affiche l etat local |
rivex-agent --diagnostic |
Rapport complet (config, log, deps systeme, etc.) |
rivex-agent --install |
Installe comme service systeme (root/admin) |
rivex-agent --uninstall [--purge] |
Retire l installation |
rivex-agent --install_status |
Etat de l installation (JSON) |
rivex-agent --check_system_deps |
Audit des outils OS requis |
rivex-agent --install_system_deps |
Installe les outils OS manquants |
rivex-agent --check_protection |
Verifie l integrite des fichiers critiques |
rivex-agent --patch <source> |
Applique un patch de remediation (file / URL) |
rivex-agent --propose-update |
Verifie une MAJ et notifie (sans appliquer) ; propose l'installation si lance en session root interactive. Le mode service execute cette sonde a chaque demarrage. |
rivex-agent --help |
Aide complete groupee par categorie |
rivex-agent -v / --version |
Affiche la version de l agent (build / APP_VERSION) |
Statuts sur le serveur (admin)
Si l administrateur suspend l agent, la sync echoue en 403 tant que l agent
n est pas reactive ; le token local reste valide. En cas de revocation,
le serveur regenere le token : rivex-agent --enroll --enroll_key avec la cle de la fiche machine (saisie explicite en CLI si l agent est en statut local revoked).
Voir documentation/agent/etat-cote-serveur.md (depot) et la doc serveur.
Canal socket temps reel (v0.9.0+)
Depuis la v0.9.0, l agent maintient un canal TCP+TLS persistant vers le
socket-server du backend. Les commandes (scan, sync, patch, reboot...)
arrivent en push instantane (latence < 50 ms) au lieu d attendre le pull HTTP.
- Configuration : section
socketdeconfig.json;hostvide => derive automatiquement deserver_url(meme hote que l API HTTP, port socket dedie, valeur par defaut possible depuisagent/version.json). - Authentification : trame HELLO signee HMAC avec le
agent_token(meme schema que les requetes HTTP signees, methodeSOCKET/ chemin/hello). - TLS : le certificat serveur du listener est signe par une sous-CA socket
(pas la racine PKI). Le PEM d ancrage (
socket-ca.pem) est servi en HTTPS sous/agent/; l agent le telecharge et installe automatiquement apres install (siserver_urlest deja dans le template), apres enrôlement, lors des--updateet au demarrage du service si l empreinte SHA256 annoncee dansagent/version.jsonchange.config.socket.ca_pathpointe vers une copie locale (ex./etc/rivex-agent/socket-ca.pemen installation Linux). Si vide et sans fichier installe : truststore OS (souvent insuffisant pour un cert interne). - Reconnexion : automatique, backoff exponentiel borne + jitter
(plafond
config.socket.max_backoff_seconds, defaut 60 s). - Fallback HTTP : si la socket est indisponible, le pull HTTP
/api/agent/commands/pullreste actif. Aucune intervention requise. - Pare-feu sortant (Linux / UFW) : le port utilisé pour la règle
ufw allow out <port>/tcpest d’abord celui annoncé dansagent/version.json(socket_port), puisconfig.socket.port(resolve_effective_socket_port). Après--install, post-enrôlement et--update(agent enrôlé), l’agent tente d’activer UFW si besoin (règle SSH entrant requise avantufw --force enable), puis d’appliquer la règle etufw reload. Idem aprèsclose_port/ufw denyen remédiation. Avec--install_system_deps, si le paquetufwest installé, tentative d’activation renvoyée dans le JSON (ufw_enable). - Apres
--update(Linux, installation systemd officielle) : tentative desystemctl restart rivex-agent.servicepour recharger le processus.
{
"socket": {
"enabled": true,
"host": "",
"port": 8443,
"ca_path": "/etc/rivex-agent/socket-ca.pem",
"insecure": false,
"use_tls": true,
"max_backoff_seconds": 60
}
}
Elevation automatique
Les actions --install, --uninstall, --service-run, --patch,
--install_system_deps, --update, --set_scan_interval,
--enable_auto_scan, --disable_auto_scan declenchent une elevation
automatique :
- Linux : re-exec via
sudo -E - Windows : UAC prompt via
ShellExecuteW runas
Si deja admin, aucune invite n apparait.
Chemins
| Mode | Config | Runtime | Logs |
|---|---|---|---|
| Portable | .runtime/config.json |
.runtime/ |
.runtime/logs/ |
| Installe Linux | /etc/rivex-agent/config.json (seed) + /var/lib/rivex-agent/.runtime/config.json (live) |
/var/lib/rivex-agent/.runtime/ |
/var/log/rivex-agent/ |
| Installe Windows | %ProgramData%\Rivex\Agent\config.json (seed) + .runtime\config.json (live) |
%ProgramData%\Rivex\Agent\.runtime\ |
%ProgramData%\Rivex\Agent\logs\ |
Compatibilite
- Python 3.9 - 3.12
- Linux : Debian / Ubuntu / RHEL / Fedora / Arch (detection auto du gestionnaire
de paquets avec priorite
apt-get>yum>pacman>dnf) - Windows : 10 / 11 / Server 2016+
Mise a jour automatique (--update)
--update telecharge et applique la derniere version selon le mode d installation
(pip / binaire PyInstaller / portable). Prerequis :
- Version plancher : la MAJ auto fonctionne depuis 0.9.6 (installations pip) et 0.10.1 (binaires ; 0.11.2 minimum sous Windows a cause du verrou de service). Un binaire installe avant 0.10.1 embarque l ancien updater et doit etre remplace une fois manuellement. Les versions 0.12.0+ sont a jour cote code.
- Cote serveur : les artefacts (tarball, binaires) et leurs empreintes
.sha256doivent etre publies dansagent/(servis par le dashboard). Un binaire sans SHA-256 verifiable est refuse (securite). Utiliser le script de release :python src/agent/scripts/build_release.py [--binaries-dir dist/](les binaires PyInstaller se generent sur une machine dediee Windows/Linux).
Support
Documentation complete : _agent_explication.md (FR).
Changelog : CHANGELOG.md.
Issues / support : https://gitlab.com/rivex/pa4a/-/issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rivex_agent-0.17.1.tar.gz.
File metadata
- Download URL: rivex_agent-0.17.1.tar.gz
- Upload date:
- Size: 155.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56f9d6dcd0447755ef4a74d7a842ae6cf20ff832ba9806fbe47d63d3b75362d1
|
|
| MD5 |
d00bcf25d5410cd2a2e346d510c2d8d5
|
|
| BLAKE2b-256 |
c51b22bc203d8b432d619859cc6d3862aa28c0e07710fadcbfe2c52844f3476e
|
File details
Details for the file rivex_agent-0.17.1-py3-none-any.whl.
File metadata
- Download URL: rivex_agent-0.17.1-py3-none-any.whl
- Upload date:
- Size: 160.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74c26efb52359677a05c2b90b4610c51c35b9d723100a3188d3d90373ff782b6
|
|
| MD5 |
ec648e3a74819baf34324ec5babd89d4
|
|
| BLAKE2b-256 |
b8b4ab82626319f70d4c33909eb7ae8d56652d67d77a706e646e48e16eef367a
|