A comprehensive, enterprise-grade security hardening solution for Ubuntu and Debian-based systems, implementing DISA STIG, CIS Benchmark, and NSA guidelines.
- SSH Hardening: Modern cryptography, key-based authentication, rate limiting
- Firewall Configuration: UFW with advanced rules and rate limiting
- Kernel Hardening: Sysctl security parameters, module restrictions
- Password Policies: STIG/CIS compliant complexity and aging requirements
- Audit System: Comprehensive auditd rules for compliance
- File Integrity Monitoring: AIDE configuration and automated checks
- Mandatory Access Control: AppArmor or SELinux support
- USB Device Control: USBGuard implementation
- Secure Boot: GRUB password protection and secure boot configuration
- Encrypted Credential Vault: Secure storage for sensitive data using age encryption
- CrowdSec Integration: Community-based threat intelligence and blocking
- Cloudflare OPKSSH SSO: Zero Trust SSH authentication support
- Compliance Reporting: HTML reports with STIG/CIS control validation
- Advanced Recovery: Multi-level recovery mechanisms with integrity checking
- Service Hardening: Systemd service security restrictions
- Network Segmentation: VLAN configuration support
- OS: Ubuntu 18.04+ or Debian 12.0+
- Architecture: x86_64 (amd64)
- Memory: Minimum 1GB RAM
- Disk Space: Minimum 5GB free space
- Network: Internet connectivity for package installation
- Privileges: Root or sudo access required
- wget, curl, git
- openssl, mailutils
- auditd, ufw, fail2ban
- aide, apparmor-utils
- Additional tools based on enabled features
# Clone the repository
git clone https://github.com/captainzero93/DISA-STIG-CIS-LINUX-HARDENING-.git
cd DISA-STIG-CIS-LINUX-HARDENING-
# Make installer executable id needed
chmod +x install.sh
# Run installer as root
sudo ./install.sh# Create directories
sudo mkdir -p /opt/security-hardening/lib
sudo mkdir -p /etc/security-hardening
sudo mkdir -p /var/log/security-hardening
# Copy files
sudo cp enhanced_security_hardening.sh /opt/security-hardening/
sudo cp -r lib/*.sh /opt/security-hardening/lib/
sudo cp dependencies.txt /opt/security-hardening/lib/
sudo cp conf/security_config.conf /etc/security-hardening/
# Set permissions
sudo chmod 755 /opt/security-hardening/enhanced_security_hardening.sh
sudo chmod -R 644 /opt/security-hardening/lib
# Create symlink
sudo ln -s /opt/security-hardening/enhanced_security_hardening.sh /usr/local/bin/security-hardening# Run with default (advanced) profile
sudo security-hardening
# Run with specific profile
sudo security-hardening --profile basic
sudo security-hardening --profile intermediate
sudo security-hardening --profile advanced
# Dry run (preview changes without applying)
sudo security-hardening --dry-run --verbose
# Use custom configuration
sudo security-hardening --config /path/to/config.conf| Option | Description |
|---|---|
-v, --verbose |
Enable verbose output |
-d, --dry-run |
Preview changes without applying |
-p, --profile PROFILE |
Select profile (basic/intermediate/advanced) |
-c, --config FILE |
Use custom configuration file |
-e, --email EMAIL |
Set email for security reports |
-b, --backup-dir DIR |
Custom backup directory |
-sb, --skip-backup |
Skip backup creation |
-sf, --skip-firewall |
Skip firewall configuration |
-sa, --skip-audit |
Skip audit configuration |
-6, --enable-ipv6 |
Enable IPv6 support |
-r, --restore |
Restore backup from specified directory or default |
-h, --help |
Show help message |
Essential security hardening for general-purpose systems:
- SSH hardening
- Basic firewall rules
- Password policies
- Kernel security parameters
- Audit logging
Standard security for production environments:
- Everything from Basic
- Fail2ban intrusion prevention
- File integrity monitoring (AIDE)
- AppArmor mandatory access control
- CrowdSec threat intelligence
Maximum security for high-risk environments:
- Everything from Intermediate
- USB device control
- Network segmentation support
- Cloudflare OPKSSH SSO
- Encrypted credential vault
- Comprehensive compliance reporting
- Service hardening
Edit /etc/security-hardening/security_config.conf:
# Core settings
SECURITY_EMAIL="admin@example.com"
AUTOMATIC_UPDATES=true
BACKUP_ENABLED=true
# Security features
FIREWALL_ENABLED=true
AUDIT_ENABLED=true
PASSWORD_POLICY_STRICT=true
FILE_INTEGRITY_MONITORING=true
# Advanced features
CROWDSEC_ENABLED=true
OPKSSH_ENABLED=false
CREDENTIAL_VAULT_ENABLED=true
COMPLIANCE_REPORTING=true
# Network settings
IPV6_ENABLED=false
NETWORK_SEGMENTATION=falseConfigure email for security reports:
sudo security-hardening --email admin@example.com --profile advancedEnable weekly security checks:
# Enable systemd timer
sudo systemctl enable --now security-hardening.timer
# Check timer status
sudo systemctl status security-hardening.timer
# View timer schedule
sudo systemctl list-timers security-hardening.timer# Verify firewall status
sudo ufw status verbose
# Check audit rules
sudo auditctl -l
# Verify SSH configuration
sudo sshd -T | grep -E "permitrootlogin|passwordauthentication"
# Check fail2ban status
sudo fail2ban-client status
# View AppArmor profiles
sudo aa-status
# Check kernel parameters
sudo sysctl -a | grep -E "net.ipv4|kernel"Generate HTML compliance report:
sudo security-hardening --profile advanced --email admin@example.com
# Report saved to /root/security_backup_*/compliance_report_*.html-
Boot into recovery mode
-
Mount root filesystem as read-write
-
Restore SSH configuration:
cp /root/security_backup_*/etc/ssh/sshd_config /etc/ssh/ systemctl restart ssh
# Temporarily disable firewall
sudo ufw disable
# Add required rules
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Re-enable firewall
sudo ufw enable-
Boot from live USB
-
Mount system partition
-
Restore GRUB configuration:
cp /mnt/root/security_backup_*/etc/default/grub /mnt/etc/default/ chroot /mnt update-grub
# Basic recovery (restart services)
sudo /opt/security-hardening/enhanced_security_hardening.sh --recovery basic
# Intermediate recovery (restore from backup)
sudo /opt/security-hardening/enhanced_security_hardening.sh --recovery intermediate
# Full recovery (complete rollback)
sudo /opt/security-hardening/enhanced_security_hardening.sh --recovery full- Main log:
/var/log/security_hardening.log - Audit logs:
/var/log/audit/audit.log - Firewall logs:
/var/log/ufw.log - Fail2ban logs:
/var/log/fail2ban.log - CrowdSec logs:
/var/log/crowdsec.log
This suite implements controls from:
- DISA STIG: Defense Information Systems Agency Security Technical Implementation Guides
- CIS Benchmarks: Center for Internet Security Benchmarks
- NSA Guidelines: National Security Agency Hardening Guidelines
- NIST 800-53: Security and Privacy Controls
- PCI DSS: Payment Card Industry Data Security Standard (relevant controls)
cd DISA-STIG-CIS-LINUX-HARDENING-
git pull origin main
sudo ./install.sh- Review logs weekly:
/var/log/security_hardening.log - Update AIDE database monthly:
sudo aideinit --yes --force - Review compliance reports quarterly
- Test recovery procedures semi-annually
- Update CrowdSec collections:
sudo cscli hub update && sudo cscli hub upgrade
- Always test in a non-production environment first
- Ensure you have console/physical access before running
- Create backups before applying hardening
- Some changes require system restart
- SSH settings may lock you out if misconfigured
- Review all settings in dry-run mode first
Edit /etc/audit/rules.d/audit.rules and add your rules:
-w /etc/custom/app -p wa -k custom_app
-w /var/www/html -p wa -k web_contentCreate profiles in /etc/apparmor.d/:
sudo aa-genprof /usr/bin/custom-app
sudo aa-enforce /etc/apparmor.d/usr.bin.custom-appAdd custom UFW rules:
sudo ufw allow from 192.168.1.0/24 to any port 3306
sudo ufw allow 8080/tcp comment 'Custom web app'Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see LICENSE file for details.
- DISA for STIG guidelines
- CIS for security benchmarks
- NSA for hardening guides
- The open-source security community
- Added encrypted credential vault
- Enhanced SSH hardening with modern cryptography
- Improved compliance reporting
- Advanced recovery mechanisms
- Service hardening with systemd
- CrowdSec integration
- Cloudflare OPKSSH SSO support
- Enhanced audit rules
- Initial public release
- Core hardening features
- Three-tier profile system