This is an old revision of the document!


Securitate

Idei

  • Security vs. usability
  • Provide predictable behaviour.
  • Expect the worst, do your best.
  • Privacy, Authentication, Integrity, Trust
  • Whom or what do we trust?
  • Principle of least privilege
  • Security through obscurity
  • Honey pots and sacrificial lambs
  • You are going to get hacked.

Demo-uri

Gnu Privacy Guard

  • Acest exercițiu se va desfășura în perechi de câte 2, pe masina locala
  • Daca nu este deja instalat, rulati:
    sudo apt-get install gnupg
  • Generați o perechi de chei publică/privată cu comanda:
    gpg --gen-key
  • Alegeți opțiunile default (Enter sau numărul opțiunii).
  • Completați rubricile cerute cu numele vostru, o adresă de email și un comentariu.
  • După aceea, exportați cheia voastră publică astfel:
    gpg --armor --export email-ul_introdus_mai_sus > userul_de_pe_swarm.gpg
  • Copiați fișierul generat mai sus pe swarm, în ~/public_html:
    scp <userul de pe swarm>.gpg <userul de pe swarm>@swarm.cs.pub.ro:~/public_html
  • Acum, aflați userul de pe swarm al colegului cu care rezolvați exercițiul și deschideți în browser:
    http://swarm.cs.pub.ro/~<user-ul colegului>/
  • De aici, salvați fișierul .gpg cu numele său în folderul vostru de lucru.
  • Pentru a importa cheia colegului, executați în folderul în care ați salvat cheia acestuia:
    gpg --import <fișierul salvat anterior>
  • Pentru a vedea dacă a fost importată cu succes cheia acestuia, executați:
    gpg --list-keys
  • Creați un document cu un nume aleator și un text aleator.
  • În folderul cu acest fișier, executați:
    gpg --output <numele documentului>_encr --encrypt --recipient <email-ul colegului> <numele documentului>
  • Copiați fișierul <numele documentului>_encr în folderul ~/public_html de pe swarm.
  • Acum, accesați din nou în browser adresa colegului și copiați documentul creat de el, ce conține encr.
  • Inspectați documentul. Ce observați?
  • Salvați documentul. În folderul cu acesta, rulați:
    gpg --output <un nume nou pentru document>_decr --decrypt <documentului de la coleg>
  • Inspectați din nou documentul. Acum se poate citi. === iptables ===
  • Acest exercițiu se desfășoară pe mașina locală.
  • Toate exercițiile ce urmeaza se executa ca root.
  • Pentru ca bloca accesul la un anumit site, se execută:
    iptables -F
    iptables -A INPUT -s rosedu.org -j DROP
    iptables -A OUTPUT -d rosedu.org -j DROP
  • Examinați regulile din iptables:
    iptables -L -n
  • Încercați să vă conectați la rosedu.org. Merge?
  • Următoarea parte a exercițiului se desfășoară pe containerul LXC.
  • Accesati din browserul masinii locale:
    http://houdini.cs.pub.ro:4<id container>80

    Ar trebui sa vedeti o pagina HTML aleatoare.

  • Acum, pe container, executati:
    iptables -F
    iptables -A INPUT -p tcp --destination-port 80 -j DROP
  • Încercați să vă conectați reaccesati link-ul de mai sus. Ce observați?
  • Salvați următorul script într-un fișier numit firewall.sh:
    #!/bin/bash
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i eth+ -p udp -j DROP
    iptables -A INPUT -i eth+ -p tcp -m tcp --syn -j DROP
    iptables -A INPUT -i lo -j ACCEPT
  • În folderul unde ați salvat, executați:
    chmod +x firewall.sh
  • Executați scriptul:
    ./firewall.sh
  • Listați iarăși conținutul iptables. === fail2ban ===
  1. Instalare
    • Instalați pachetele fail2ban si rsyslog în containerul LXC:
      apt-get install fail2ban rsyslog
  2. Configurare
    • Inspectați următoarele fișiere:
      • /etc/fail2ban/filter.d/sshd.conf - identifică evenimente
      • /etc/fail2ban/action.d/iptables-allports.conf - acțiune care blochează toate porturile pentru un anumit IP
      • /etc/fail2ban/jail.conf - secțiunea [ssh] - mapează filtrele cu acțiunile asociate
        • Configurați fail2ban să baneze un IP după 3 încercări eșuate:
          [ssh]
          enabled = true
          port    = ssh
          filter  = sshd
          logpath  = /var/log/auth.log
          maxretry = 3
    • Restartați fail2ban:
      sudo /etc/init.d/fail2ban restart
  3. Utilizare
    • Conectați-vă cu success în containerul LXC
      • Atenție: s-ar putea ca în urma exercițiului de mai sus să fiți deja blocați de iptables - dacă nu merge să vă conectați, accesați containerul de pe swarm.
    • Verificați tabela iptables:
      iptables -L -n
    • De pe mașina locală, logați-vă în container prin ssh, dar introduceți o parolă greșită de 3 ori:
      $ ssh -p<port> root@houdini.cs.pub.ro
      root@houdini.cs.pub.ro's password: 
      Permission denied, please try again.
      root@houdini.cs.pub.ro's password: 
      Permission denied, please try again.
      root@houdini.cs.pub.ro's password: 
      Permission denied (publickey,password).
    • Încercați din nou să vă conectați prin ssh. Ce observați?
    • În containerul LXC verificați intrările iptables
      iptables -L -n
      • Intrarea a fost introdusă de fail2ban, conform configurărilor de mai sus
    • Ștergeți intrarea pentru a putea accesa din nou mașina:
      iptables -D fail2ban-ssh -s <IP> -j DROP
      • <IP> este IP-ul facultății, care a fost banat.
    • Verificați dacă vă puteți loga acum prin ssh, folosind parola corectă.

openswan

Toate operatiile se vor efectua pe masina locala si se va lucra in echipe de cate 2.

  1. Ștergeți toate regulile din iptables
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
  2. Instalați pachestul openswan
    apt-get install openswan
  3. Adaugati urmatoarele linii in fisierul /etc/ipsec.conf:
    conn host-to-host
        type=tunnel
        authby=secret
        left=<IP left>
    #   leftnexthop=%defaultroute
        right=<IP right> 
    #   rightnexthop=%defaultroute
        auto=add
  4. Adaugati in fisierul /etc/ipsec.secrets urmatoarea linie:
    leftIP rightIP : PSK "cheia secreta aleasa de voi"
  5. Adaugati conexiunea ipsec: ipsec auto --add host-to-host
  6. Ridicati tunelul (este suficient ca unul dintre cei doi sa dea aceasta comanda pentru a ridica tunelul):
    ipsec auto --up host-to-host
  7. Pentru a verifica conexiunea securizata, dati ping de la un o adresă IP la alta.
  8. Dati comanda urmatoare pentru a verifica securizarea conexiunii: (urmariti sa vedeti pachete cu protocolul ESP):
    tcpdump -ni eth1 -X -v host <IP-ul vostru> 
sesiuni/sysadmin/securitate.1374252525.txt.gz · Last modified: 2013/07/19 19:48 by mvasilescu