Security Team Training Program

Security Team Training Program

Develop comprehensive training for your team:

#!/usr/bin/env python3
# /usr/local/bin/security-training-tracker.py

import json
import datetime
from pathlib import Path

class SecurityTrainingProgram:
    def __init__(self):
        self.training_modules = {
            "fundamentals": {
                "title": "Web Server Security Fundamentals",
                "duration": "4 hours",
                "topics": [
                    "Understanding HTTP/HTTPS protocols",
                    "Web server architecture (Apache/Nginx)",
                    "Common vulnerabilities (OWASP Top 10)",
                    "Basic security configurations",
                    "SSL/TLS fundamentals"
                ],
                "labs": [
                    "Configure basic Apache security",
                    "Set up Nginx with SSL",
                    "Implement security headers"
                ]
            },
            "advanced_config": {
                "title": "Advanced Security Configuration",
                "duration": "6 hours",
                "topics": [
                    "ModSecurity and WAF implementation",
                    "Advanced SSL/TLS configuration",
                    "Rate limiting and DDoS protection",
                    "Reverse proxy security",
                    "SELinux/AppArmor integration"
                ],
                "labs": [
                    "Configure ModSecurity rules",
                    "Implement rate limiting",
                    "Set up secure reverse proxy"
                ]
            },
            "incident_response": {
                "title": "Security Incident Response",
                "duration": "8 hours",
                "topics": [
                    "Incident detection and classification",
                    "Evidence collection procedures",
                    "Containment strategies",
                    "Recovery procedures",
                    "Post-incident analysis"
                ],
                "labs": [
                    "Incident response simulation",
                    "Log analysis workshop",
                    "Forensics basics"
                ]
            },
            "monitoring": {
                "title": "Security Monitoring and Auditing",
                "duration": "4 hours",
                "topics": [
                    "Log analysis techniques",
                    "Security monitoring tools",
                    "Automated scanning",
                    "Compliance auditing",
                    "Performance impact analysis"
                ],
                "labs": [
                    "Set up ELK stack",
                    "Configure automated scanning",
                    "Create custom alerts"
                ]
            }
        }
        
        self.skill_assessment = {
            "beginner": {
                "description": "Basic understanding of web servers",
                "requirements": ["fundamentals"],
                "next_level": "intermediate"
            },
            "intermediate": {
                "description": "Can configure and maintain secure web servers",
                "requirements": ["fundamentals", "advanced_config"],
                "next_level": "advanced"
            },
            "advanced": {
                "description": "Expert in web server security",
                "requirements": ["fundamentals", "advanced_config", 
                               "incident_response", "monitoring"],
                "next_level": "expert"
            },
            "expert": {
                "description": "Can lead security initiatives and mentor others",
                "requirements": ["all_modules", "real_world_experience"],
                "next_level": None
            }
        }
        
    def create_training_plan(self, team_member, current_level):
        """Create personalized training plan"""
        plan = {
            "team_member": team_member,
            "current_level": current_level,
            "created_date": datetime.datetime.now().isoformat(),
            "modules": [],
            "timeline": []
        }
        
        # Determine required modules
        level_info = self.skill_assessment[current_level]
        required_modules = level_info["requirements"]
        
        # Create timeline
        start_date = datetime.datetime.now()
        for i, module_key in enumerate(required_modules):
            if module_key in self.training_modules:
                module = self.training_modules[module_key]
                scheduled_date = start_date + datetime.timedelta(weeks=i*2)
                
                plan["modules"].append({
                    "module_id": module_key,
                    "title": module["title"],
                    "scheduled_date": scheduled_date.isoformat(),
                    "duration": module["duration"],
                    "status": "scheduled"
                })
                
        return plan
        
    def generate_lab_environment(self, module_id):
        """Generate lab environment setup script"""
        if module_id not in self.training_modules:
            return None
            
        module = self.training_modules[module_id]
        
        setup_script = f"""#!/bin/bash
# Lab Environment Setup for: {module['title']}
# Generated: {datetime.datetime.now()}

echo "Setting up lab environment..."

# Create isolated environment
LAB_DIR="/tmp/security-lab-$USER"
mkdir -p "$LAB_DIR"
cd "$LAB_DIR"

# Install required packages
apt update
apt install -y apache2 nginx git curl openssl

# Create test certificates
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\
    -keyout test.key -out test.crt \\
    -subj "/C=US/ST=State/L=City/O=Training/CN=lab.local"

# Set up test sites
mkdir -p /var/www/lab
echo "<h1>Security Lab</h1>" > /var/www/lab/index.html

# Configure Apache for lab
cat > /etc/apache2/sites-available/lab.conf << 'EOF'
<VirtualHost *:80>
    ServerName lab.local
    DocumentRoot /var/www/lab
    
    # Intentionally insecure for training
    Options Indexes FollowSymLinks
    AllowOverride All
</VirtualHost>
EOF

a2ensite lab
systemctl restart apache2

echo "Lab environment ready!"
echo "Access the lab at: http://lab.local"
echo
echo "Lab Objectives:"
"""
        
        # Add lab-specific objectives
        for i, lab in enumerate(module.get("labs", []), 1):
            setup_script += f"echo \"{i}. {lab}\"\n"
            
        return setup_script
        
    def track_progress(self, team_member, module_id, status, score=None):
        """Track training progress"""
        progress_file = Path(f"/var/training/progress/{team_member}.json")
        progress_file.parent.mkdir(parents=True, exist_ok=True)
        
        if progress_file.exists():
            with open(progress_file, 'r') as f:
                progress = json.load(f)
        else:
            progress = {
                "team_member": team_member,
                "modules_completed": [],
                "current_level": "beginner",
                "total_score": 0
            }
            
        # Update progress
        module_record = {
            "module_id": module_id,
            "completed_date": datetime.datetime.now().isoformat(),
            "status": status,
            "score": score
        }
        
        progress["modules_completed"].append(module_record)
        
        if score:
            progress["total_score"] += score
            
        # Check for level advancement
        completed_modules = [m["module_id"] for m in progress["modules_completed"]]
        current_requirements = self.skill_assessment[progress["current_level"]]["requirements"]
        
        if all(req in completed_modules for req in current_requirements):
            next_level = self.skill_assessment[progress["current_level"]]["next_level"]
            if next_level:
                progress["current_level"] = next_level
                print(f"Congratulations! {team_member} advanced to {next_level} level!")
                
        # Save progress
        with open(progress_file, 'w') as f:
            json.dump(progress, f, indent=2)
            
        return progress
        
    def generate_skill_matrix(self):
        """Generate team skill matrix"""
        team_skills = {}
        progress_dir = Path("/var/training/progress")
        
        if progress_dir.exists():
            for progress_file in progress_dir.glob("*.json"):
                with open(progress_file, 'r') as f:
                    progress = json.load(f)
                    
                team_skills[progress["team_member"]] = {
                    "level": progress["current_level"],
                    "modules_completed": len(progress["modules_completed"]),
                    "total_score": progress["total_score"]
                }
                
        return team_skills

# Example usage
if __name__ == "__main__":
    training = SecurityTrainingProgram()
    
    # Create training plan for a team member
    plan = training.create_training_plan("john.doe", "beginner")
    print(json.dumps(plan, indent=2))
    
    # Generate lab environment
    lab_script = training.generate_lab_environment("fundamentals")
    with open("/tmp/setup-lab.sh", "w") as f:
        f.write(lab_script)
    
    # Track progress
    training.track_progress("john.doe", "fundamentals", "completed", 85)
    
    # Generate skill matrix
    skills = training.generate_skill_matrix()
    print("\nTeam Skill Matrix:")
    print(json.dumps(skills, indent=2))