A production-ready Linux security auditing toolkit with a Typer CLI.
Project description
Sentinel
Sentinel is a local-first Linux security auditing and hardening toolkit designed to give developers and system administrators clear, actionable insight into their system’s security posture.
It combines a CLI with a lightweight local dashboard to make Linux security simple, visible, and actionable without relying on cloud services or telemetry.
Features
-
Security Scanning
- Open ports and exposed services
- SSH configuration auditing
- Firewall status and rules
- File permission checks
- Authentication log analysis
-
System Hardening (WIP)
- Safe, reversible security configurations
- SSH hardening (disable root login, password auth)
- Firewall setup and defaults
- Secure system recommendations
-
Security Scoring
- Simple, understandable score (0–100)
- Severity-based issue classification
- Clear recommendations for improvement
-
Auth Log Monitoring
- Failed login detection
- Brute-force attempt indicators
-
Permission Auditing
- World-writable file detection
- Sensitive file misconfigurations
-
Local Dashboard (Planned)
- Visualize system security in real-time
- Track trends and historical data
- Fully local — no external connections
-
JSON Reporting
- Machine-readable reports
- Easy integration with other tools
-
Privacy First
- No telemetry
- No cloud dependency
- Runs entirely on your machine
Philosophy
Sentinel is built around a few core principles:
- Local-first security — your data stays on your system
- Transparency over automation — nothing changes without your consent
- Secure defaults — highlight real risks, not noise
- Developer-friendly — simple CLI, clean output, easy to extend
Installation
python3 -m pip install -e .
Install as a CLI
From the project root:
python3 -m pip install -e .
sentinel scan
Install (Recommended)
Using pipx
After publishing to PyPI:
sudo apt install pipx -y
pipx ensurepath
pipx install sentinel-linux
sentinel scan
Local development with pipx
From the project root:
pipx install --editable .
sentinel scan
Usage
Run a full security scan
sentinel scan
Show detailed per-module results
sentinel scan --verbose
Emit JSON for automation
sentinel scan --json
View system security status
sentinel status
Output full JSON report
sentinel report
Run in module mode
python3 -m sentinel scan
python3 -m sentinel status
python3 -m sentinel report
Report storage
Sentinel writes the latest JSON report to a user-writable location:
$XDG_DATA_HOME/sentinel/latest_report.json
If XDG_DATA_HOME is unset, Sentinel falls back to:
~/.local/share/sentinel/latest_report.json
Example Output
[+] Checking firewall...
[+] Checking SSH configuration...
[+] Checking open ports...
[+] Checking auth logs...
[+] Checking file permissions...
Security Score: 72/100
Warnings:
- Firewall is disabled
- SSH password authentication is enabled
- Port 3306 is exposed
Recommendations:
- Enable UFW
- Disable SSH password authentication
- Restrict database ports to localhost
Project Structure
sentinel/
├── sentinel/
│ ├── cli.py
│ ├── scanner.py
│ ├── scorer.py
│ ├── reporter.py
│ ├── utils.py
│ ├── modules/
│ │ ├── ports.py
│ │ ├── firewall.py
│ │ ├── ssh_audit.py
│ │ ├── auth_logs.py
│ │ └── permissions.py
│ └── dashboard/
│ └── app.py
├── tests/
├── requirements.txt
└── README.md
Dashboard (Coming Soon)
Sentinel will include a lightweight local dashboard that provides:
- Security score visualization
- Detailed findings by category
- Historical trends
- Real-time alerts
The dashboard will run locally and consume the same reports generated by the CLI from Sentinel's user data directory.
Roadmap
- Hardening commands (
sentinel harden) - Fail2Ban integration
- Docker/container security checks
- Systemd service auditing
- CVE/package vulnerability checks
- Dashboard UI
- Historical tracking and scoring trends
Contributing
Contributions are welcome!
If you'd like to contribute:
- Open an issue for bugs or feature requests
- Submit a pull request with improvements
- Help expand detection modules
Disclaimer
Sentinel provides security insights and recommendations, but it does not guarantee complete system security. Always review changes before applying hardening actions.
License
MIT License
Support
If you find this project useful, consider giving it a star.
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 sentinel_linux-0.1.0.tar.gz.
File metadata
- Download URL: sentinel_linux-0.1.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92f86696126b9c1e3d1dcfab48d573799c4b30b2a38acecfd878402eeefdaa7a
|
|
| MD5 |
6e7cec0d412e36969a5912d862f81c7e
|
|
| BLAKE2b-256 |
c7320ecc82011c2ff27ac943c08c089d1c3f06d7520168157fbfac249896daed
|
File details
Details for the file sentinel_linux-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sentinel_linux-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09b048d8d7f73960ae04343c2742c404d7b0593ba8fcc76eb79af4db550ae728
|
|
| MD5 |
c993f028e319d3a362cb1f54ce3b4f9b
|
|
| BLAKE2b-256 |
5c8c830421ad2492e5aef321e73a18cbadaeb3409b5206c91fe8a88ac8457931
|