# SecureCheck

SecureCheck est une application Python en mode console semi-graphique pour :

- automatiser des contrôles de sécurité Linux ;
- lancer des installations et configurations système par lots ;
- sauvegarder des scénarios réutilisables ;
- précharger un scénario puis l'ajuster avant exécution ;
- centraliser les journaux et rapports d'exécution.

Le projet inclut maintenant une identité visuelle embarquée :

- icône SVG : `securecheck/assets/securecheck-icon.svg`
- dérivés bitmap attendus : `png` / `ico`
- bannière ASCII affichée directement dans la TUI

L'application cible prioritairement Debian et Ubuntu, avec une prise en charge partielle de `dnf` et `pacman` pour les opérations de base.

## Fonctions prises en charge

- Audit Lynis (`lynis audit system --quick`)
- Vérification rootkits (`rkhunter` et `chkrootkit`)
- Rotation des logs SecureCheck
- Mises à jour système et mises à jour automatiques
- Installation et configuration de `zsh`
- Installation d'utilitaires usuels (`ncdu`, `needrestart`, `git`, `curl`, `fail2ban`, `htop`, `nmon`, `duf`, `net-tools`, etc.)
- Installation et configuration automatique de `zram`
- Vérification et configuration du pare-feu
- Vérification / installation de Docker avec configuration de rotation des logs
- Scénarios persistés en JSON
- Tableau d'état avec indicateurs rouge / vert pour services et composants

## Lancement

Depuis le dossier du projet :

```bash
python3 -m securecheck
```

Ou après installation locale :

```bash
pip install .
securecheck
```

## Utilisation

Interface interactive :

- `↑` / `↓` : naviguer
- `Espace` : cocher / décocher une tâche
- `a` : charger le scénario de base
- `s` : sauvegarder la sélection courante
- `l` : charger un scénario
- `d` : afficher le tableau d'état
- `x` : supprimer un scénario utilisateur
- `r` : exécuter la sélection
- `q` : quitter

Mode non interactif :

```bash
python3 -m securecheck --dry-run --tasks system_update,lynis_audit
python3 -m securecheck --scenario baseline_workstation --run
python3 -m securecheck --scenario baseline_workstation
```

## Build d'un exécutable

La cible est un binaire autonome via PyInstaller. Exemple complet :

1. Crée un environnement propre (obligatoire dans cet environnement verrouillé) :
   ```bash
   python3 -m venv .venv
   .venv/bin/pip install --upgrade pip
   .venv/bin/pip install pyinstaller
   ```

2. Lance le script de construction :
   ```bash
   ./build_executable.sh
   ```
   Il appelle PyInstaller avec `run.py` (qui fédère `securecheck.__main__`) et embarque `securecheck/assets`.

3. Le résultat est dans `dist/securecheck` (et `build/` + `securecheck.spec`). Supprime `dist/ build/ securecheck.spec` si tu reconstruis.

> Si PyInstaller ne peut pas être téléchargé (pas de réseau), installe-le via `apt install pyinstaller` ou télécharge-le manuellement avant de relancer le script.

## Emplacements

- Scénarios : `~/.config/securecheck/scenarios.json`
- État utilisateur : `~/.local/state/securecheck`
- Logs système : `/var/log/securecheck` si l'application est lancée avec privilèges, sinon repli dans l'état utilisateur

## Recommandation

Pour les tâches système, lancez l'application avec `sudo` afin d'éviter des interruptions liées aux privilèges :

```bash
sudo -E python3 -m securecheck
```
