An alternative security hardener
A comprehensive security hardening tool for Linux systems that automates the implementation of security best practices and compliance requirements.
- File system permissions hardening
- SSH configuration security
- Firewall rules management
- System controls (sysctl) optimization
- Password policy enforcement
- Audit logging configuration
- Service hardening
- User account security
- Network security
- Kernel module control
- Security tools installation
- PAM configuration
- Time synchronization
- Process accounting
- Boot security
- Python 3.8 or higher
- Root access on the target system
- Debian/Ubuntu-based Linux distribution
- Required Python packages:
ruamel.yaml>=0.17.0
- Clone the repository:
git clone https://github.com/yourusername/system-hardening.git
cd system-hardening- Install required packages:
pip install -r requirements.txt- Make the runner script executable:
chmod +x run_hardening.pyThe tool uses YAML configuration for defining hardening rules. The default configuration file is located at system_hardening_config.yaml.
Example configuration structure:
file_permissions:
critical_files:
/etc/shadow:
mode: "0400"
owner: "root"
group: "shadow"
ssh_config:
settings:
PermitRootLogin: "no"
PasswordAuthentication: "no"- File Permissions: Define permissions for critical system files
- SSH Configuration: SSH daemon security settings
- Firewall Rules: UFW firewall configuration
- System Controls: Kernel parameter optimization
- Password Policies: Password requirements and restrictions
- Audit Logging: System auditing configuration
- Service Management: Service enablement and configuration
- Security Tools: Required security package installation
Run with default configuration:
sudo ./run_hardening.pySpecify custom configuration file:
sudo ./run_hardening.py --config /path/to/config.yaml--dry-run: Test configuration without making changes--output-dir: Specify directory for logs and reports--log-level: Set logging verbosity (DEBUG, INFO, WARNING, ERROR)--skip-backup: Skip backup creation before modifications--sections: Run specific hardening sections only--timeout: Set maximum execution time--no-rollback: Disable automatic rollback on failure--report-format: Choose output format (json, yaml, text)
Example:
sudo ./run_hardening.py --dry-run --sections ssh_config firewall --log-level DEBUGThe tool generates:
- Detailed execution logs (
system_hardening_[timestamp].log) - Results report (
hardening_results_[timestamp].[format]) - Configuration backups (
[filename].backup_[timestamp])
Log files are stored in /var/log/system_hardening by default.
- Automatic backup creation
- Dry run capability
- Timeout protection
- Failure rollback
- Detailed logging
- Root requirement check
- Configuration validation
- Always run with
--dry-runfirst - Review logs after execution
- Test in a non-production environment
- Maintain configuration backups
- Regular security audits
- Monitor system behavior after hardening
The tool provides detailed error messages and logs. Common issues:
- Permission denied: Run with sudo/root
- Configuration errors: Check YAML syntax
- Missing dependencies: Install required packages
- Service conflicts: Check service dependencies
- Network issues: Verify network connectivity
- Create method in
SystemHardenerclass:
def harden_new_feature(self) -> HardeningResult:
try:
# Implementation
return HardeningResult(
HardeningStatus.SUCCESS,
"Successfully hardened new feature"
)
except Exception as e:
return HardeningResult(
HardeningStatus.FAILED,
f"Error: {str(e)}"
)- Add configuration section:
new_feature:
setting1: value1
setting2: value2- Update
harden_system()method.
Add validation methods to ConfigurationHandler:
def _validate_new_feature(self, config: Dict[str, Any]) -> None:
# Validation logic
pass- Regular updates
- Configuration review
- Backup strategy
- Emergency rollback plan
- Compliance requirements
- User training
- Security monitoring
- Fork the repository
- Create feature branch
- Commit changes
- Push to branch
- Submit pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Security best practices from CIS Benchmarks
- Industry standard hardening guidelines
- Community contributions and feedback
For issues and questions:
- Submit GitHub issues
- Check documentation
- Review common problems
- Contact maintainers