Web2py som en læringsplattform for Cybersikkerhet - itnett/FTD02H-N GitHub Wiki

For å bruke Web2py i praksis for å lære og praktisere cybersikkerhet, kan du sette opp forskjellige scenarier og laboratorieøvelser:

🛡️ Lab Scenario 1: Implementer Grunnleggende Sikkerhetsprinsipper

  • Oppgave: Lag en Web2py-applikasjon som sikrer brukerdata.
  • Krav:
    • Bruk Web2py’s innebygde autentiserings- og autorisasjonsverktøy.
    • Sikre skjemaer mot XSS (Cross-Site Scripting) og CSRF (Cross-Site Request Forgery).
    # `models/db.py`
    from gluon.tools import Auth
    auth = Auth(db)
    auth.define_tables(username=True)
    

🔍 Lab Scenario 2: Simuler Angrep og Forsvar

  • Oppgave: Simuler et SQL-injeksjonsangrep og implementer forsvarsmekanismer.
  • Krav:
    • Bruk @auth.requires() dekoratør for å beskytte kritiske funksjoner.
    • Bruk Web2py’s inndatafiltrering og datavalidering for å forhindre SQL-injeksjon.
    # `controllers/default.py`
    def secure_query():
        user_input = request.vars.user_input or ''
        sanitized_input = db.escape(user_input)  # Beskytter mot SQL-injeksjon
        db(db.auth_user.username == sanitized_input).select()
    

📊 Lab Scenario 3: Risikostyring og Sikkerhetsovervåking

  • Oppgave: Implementer overvåking og logging for å identifisere mistenkelig aktivitet.
  • Krav:
    • Bruk logging for å overvåke brukeraktivitet og systemhendelser.
    • Lag et system for sanntidsovervåking av innloggingsforsøk og uvanlige aktiviteter.
    # `controllers/default.py`
    import logging
    logger = logging.getLogger("web2py.app.security_logs")
    def log_user_activity():
        logger.info(f"Bruker: {auth.user.username} - Aktivitet: {request.function}")
    

📜 Lab Scenario 4: Etterlevelse av Lover og Regler

  • Oppgave: Lag en modul som evaluerer sikkerhetspraksis mot GDPR og andre relevante regler.
  • Krav:
    • Implementer funksjoner som overvåker datainnsamling og bruk.
    • Gjør vurderinger basert på sjekklister for etterlevelse.

🤝 Lab Scenario 5: Delta i Sikkerhetsprosjekter

  • Oppgave: Deltakelse i teamprosjekter som utvikler sikkerhetsfunksjoner, og utveksle synspunkter.
  • Krav:
    • Samarbeid med andre for å bygge et sikkerhetsmodul for en webapplikasjon.
    • Diskuter og forbedre sikkerhetstiltak basert på nye trusselbilder og best practices.

Bruk Web2py til å praktisere disse scenariene, og utvikle ferdigheter innen cybersikkerhet ved å implementere reelle sikkerhetsfunksjoner og forsvarsmekanismer. 🌐🔒

Her er forslag til neste moduler for å bruke Web2py som en læringsplattform for cybersikkerhet:

🔒 Modul 6: Implementering av Nettverkssikkerhet

  • Læringsmål: Forstå nettverkssikkerhetsprotokoller (HTTPS, SSL/TLS) og implementer disse i Web2py.
  • Oppgaver:
    • Bruk SSL for å sikre kommunikasjon.
    • Sett opp HTTPS ved hjelp av selvsignerte eller offentlige sertifikater.

📊 Modul 7: Brukeradministrasjon og Tilgangskontroll

  • Læringsmål: Forstå tilgangskontrollmodeller som RBAC (Role-Based Access Control).
  • Oppgaver:
    • Implementer RBAC ved å bruke Web2py's innebygde autentiseringssystem.
    • Konfigurer roller og tillatelser for ulike brukertyper.

🧰 Modul 8: Sikkerhetstesting og Evaluering

  • Læringsmål: Utfør penetrasjonstesting på Web2py-applikasjoner.
  • Oppgaver:
    • Bruk verktøy som OWASP ZAP eller Burp Suite for å teste applikasjonen.
    • Analyser resultatene og forbedre sikkerheten basert på funnene.

📑 Modul 9: Risikoanalyse og Overvåking

  • Læringsmål: Utfør risikoanalyse og overvåkning av Web2py-applikasjonen.
  • Oppgaver:
    • Implementer loggføring og overvåking av brukeraktivitet.
    • Utfør risikovurderinger og utarbeid en risikohåndteringsplan.

Disse modulene vil hjelpe deg med å dypere forstå cybersikkerhet gjennom praktisk bruk av Web2py som en læringsplattform! 🌍🔐

Her er mer konkrete moduler for å bruke Web2py som en læringsplattform for cybersikkerhet:

Modul 6: Implementering av Nettverkssikkerhet

📚 Teori:

  • Forstå protokollene HTTPS og SSL/TLS, som sikrer kommunikasjon mellom server og klient.
  • HTTPS bruker SSL/TLS for å kryptere data og autentisere serveren.

🧑‍🏫 Opplæring:

  • Konfigurer Web2py for å bruke HTTPS ved å sette opp SSL.

🖥️ Kode:

  1. Generer et SSL-sertifikat:
    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
    
  2. Konfigurer Web2py til å bruke SSL:
    • Rediger wsgihandler.py:
    from gluon.main import HttpServer
    HttpServer(ssl_certificate='cert.pem', ssl_private_key='key.pem').start()
    

🔍 Forklaring:

  • Dette sikrer at data som sendes mellom brukeren og serveren er kryptert, og beskytter mot man-in-the-middle-angrep.

Modul 7: Brukeradministrasjon og Tilgangskontroll

📚 Teori:

  • Lær om RBAC (Role-Based Access Control), som styrer tilgang basert på brukernes roller.

🧑‍🏫 Opplæring:

  • Bruk Web2py’s autentiseringssystem for å konfigurere roller og rettigheter.

🖥️ Kode:

  1. Definer roller:

    # `models/db.py`
    auth.settings.everybody_group_id = None
    auth.add_group('admin', 'Administrator')
    auth.add_group('user', 'Regular User')
    
  2. Beskytt en funksjon:

    # `controllers/default.py`
    @auth.requires_membership('admin')
    def admin_dashboard():
        return dict(message="Welcome, Admin!")
    

🔍 Forklaring:

  • Dette sikrer at bare brukere med spesifikke roller får tilgang til sensitive funksjoner.

Modul 8: Sikkerhetstesting og Evaluering

📚 Teori:

  • Penetrasjonstesting evaluerer sikkerheten til applikasjoner ved å simulere angrep.

🧑‍🏫 Opplæring:

  • Bruk OWASP ZAP eller Burp Suite for å teste applikasjonen mot XSS, SQL-injeksjon, og andre sårbarheter.

🖥️ Kodeeksempel:

  • Ingen kode trengs direkte; bruk sikkerhetstestingverktøy for å identifisere svakheter.

🔍 Forklaring:

  • Testresultatene gir innsikt i sikkerhetsproblemer som må adresseres.

Modul 9: Risikoanalyse og Overvåking

📚 Teori:

  • Risikostyring involverer å identifisere, analysere, og redusere risiko.

🧑‍🏫 Opplæring:

  • Implementer logging og overvåking i Web2py for å oppdage uvanlig aktivitet.

🖥️ Kode:

  1. Loggføring av aktiviteter:
    # `controllers/default.py`
    import logging
    logger = logging.getLogger("web2py.security")
    def log_user_activity():
        logger.info(f"User {auth.user.username} performed {request.function}")
    

🔍 Forklaring:

  • Logger hjelper med å overvåke aktiviteter og identifisere mulige angrep.

Konklusjon:

Disse modulene gir deg en praktisk tilnærming til cybersikkerhet med Web2py, hvor du lærer ved å implementere reelle sikkerhetsmekanismer og teste applikasjoner. 🌍🔒

For å sette opp et gyldig SSL-sertifikat på Web2py og Proxmox ved bruk av Let's Encrypt, kan du følge denne veiledningen:

Trinn 1: Installer Certbot

Certbot er et verktøy som hjelper deg med å generere og automatisere SSL-sertifikater fra Let's Encrypt.

  1. På Ubuntu/Debian-serveren:
    sudo apt update
    sudo apt install certbot
    

Trinn 2: Generer SSL-sertifikatet

  • For Web2py (kjører på port 80):

    sudo certbot certonly --standalone -d yourdomain.com
    
  • For Proxmox:

    sudo apt install certbot
    sudo certbot certonly --standalone -d proxmox.yourdomain.com
    

Trinn 3: Konfigurer SSL i Web2py

  • Rediger wsgihandler.py:
    HttpServer(ssl_certificate='/etc/letsencrypt/live/yourdomain.com/fullchain.pem',
               ssl_private_key='/etc/letsencrypt/live/yourdomain.com/privkey.pem').start()
    

Trinn 4: Konfigurer SSL i Proxmox

  1. Plasser sertifikatet i Proxmox-serveren.
  2. Rediger /etc/pve/local/pve-ssl.key og /etc/pve/local/pve-ssl.pem med de nye sertifikatfilene.

Trinn 5: Automatiser Sertifikatfornyelse

  • Legg til en cron-jobb for automatisk fornyelse:
    sudo crontab -e
    
    Legg til:
    0 0 * * * /usr/bin/certbot renew --quiet
    

Andre Tjenester

  • Følg lignende trinn for andre tjenester; installer Certbot, generer sertifikater, og konfigurer tjenestene til å bruke dem.

Dette vil sikre at dine lokale servere og tjenester er sikret med gyldige SSL-sertifikater fra Let's Encrypt!

For lokale servere som ikke er tilgjengelige fra internett (f.eks., web2py-ct1.lab.local), kan du bruke Let's Encrypt sammen med DNS-01-validering, eller opprette et selvsignert SSL-sertifikat.

Metode 1: Selvsignert SSL-sertifikat

  1. Generer et selvsignert sertifikat:
    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
    
  2. Konfigurer Web2py til å bruke sertifikatet:
    • Rediger wsgihandler.py:
    HttpServer(ssl_certificate='cert.pem', ssl_private_key='key.pem').start()
    
  3. Legg til sertifikatet i nettleserens klarerte sertifikater for å unngå advarsler.

Metode 2: DNS-01 Validering med Let's Encrypt

  1. Bruk DNS-01 validering via Certbot til å få et gyldig sertifikat.
    certbot certonly --manual --preferred-challenges dns -d web2py-ct1.lab.local
    
  2. Følg instruksjonene for å legge til en DNS TXT-post til din DNS-tjeneste.

Begge metodene kan sikre dine lokale servere effektivt! 🌍🔒