This is an old revision of the document!


Laborator 10: Securitate: hardening a server

1. ssh, scp (1.5p)

  • Comenzi/concepte/fișiere
    • ssh
    • ssh-keygen
    • ssh-copy-id
    • nmap
    • scp

Exerciții

  • [01]. Deschideți un terminal cu drepturi de root pe mașina fizică. Folosind netstat, aflați dacă rulează un serviciu de ssh și portul pe care acesta ascultă. Dacă nu este instalat nici un server ssh, instalați-l. (Hint: man netstat, /listening, /numeric, /tcp, /program, sshd openssh-server).
  • [02] Porniți mașina virtuală. Folosind ssh, conectați-vă de pe mașina fizică pe mașina virtuală folosind portul standard 22 și contul student. Deconectați-vă.
  • [03]. De pe mașina fizică (contul student) rulați pe mașina virtuală (contul root), în mod neinteractiv, două comenzi succesive (va trebui să folosiți o singură conexiune ssh pentru ambele comenzi, conexiune corespunzătoare unei singure comenzi ssh):
  • [03].a. prima comandă afișează conținutul fișierului /etc/hostname
  • [03].b. a doua comanda afișează numele utilizatorului curent
  • [03].c. Hint: man ssh, /command
  • [04]. Pe mașina fizică creați în directorul home al utilizatorului student fișierul student.mjolnir.txt care să conțină textul “student@mjolnir: file created”
  • [05]. Copiați, folosind scp, fișierul student.mjolnir.txt de pe mașina fizică pe mașina virtuală în directorul home al utilizatorului root. (Hint: man scp)
  • [06]. Conectați-vă pe mașina virtuală folosind contul de root de pe aceasta și:
  • [06].a. modificați numele fișierului student.mjolnir.txt în root.heimdall.txt
  • [06].b. adăugați în fișierul root.heimdall.txt o a doua linie cu textul “root@heimdall: file updated”
  • [06].c. deconectați-vă de pe mașina virtuală
  • [07]. Fiind conectați pe mașina fizică, copiați fișierul root.heimdall.txt din directorul home al utilizatorului root de pe mașina virtuală în directorul home al utilizatorului student de pe mașina fizică. Afișați conținutul fișierului copiat.
  • [08]. Adăugați pe mașina virtuală utilizatorul nrush cu parola gsr (Hint: useradd, groupadd)
  • [09]. Adăugați pe mașina fizică utilizatorul eyoung cu parola gsr (Hint: useradd, groupadd)
  • [10]. Pe mașina fizică generați, în contul utilizatorului eyoung, o pereche de chei RSA fără passphrase. Salvați cheile în locația implicită (/home/eyoung/.ssh), cu numele implicit. (Hint: man ssh-keygen, /type)
  • [11]. Copiați, de pe mașina fizică, cheia publica generată anterior pe mașina virtuală în home-ul utilizatorului nrush în așa fel încât eyoung să se poata conecta la nrush fără a folosi parola lui nrush. (Hint: ssh-copy-id)
  • [12]. Pe mașina virtuală afișați conținutul directorului /home/nrush/.ssh. Ce fișiere conține?. Ce se află în fișierul authorized_keys ?

2. Configurari server ssh (2p)

  • Comenzi/concepte/fișiere
    • /etc/ssh/sshd_config

Exerciții

  • [01]. Pe mașina virtuală modificați fișierul de configurare al serverului ssh și modificați portul pe care ascultă sshd în 2854. (Hint: /etc/ssh/sshd_config)
  • [02]. Pe mașina virtuală reporniți daemonul de ssh pentru ca schimbările anterioare să fie aplicate. (Hint: /etc/init.d/ssh)
  • [03]. De pe mașina fizică scanați porturile active pe mașina virtuală (scanați porturile între 1-3096) (Hint: man nmap, /PORT SPECIFICATION, /determine service). Va trebui să instalați pachetul nmap. Pe ce port ascultă daemonul de ssh ?
  • [04]. De pe mașina fizică conectați-vă pe mașina virtuală folosind contul student și noul port pe care ascultă sshd (Hint: man ssh). Deconectați-vă.
  • [05]. Pe mașina virtuală modificați fișierul de configurare al serverului de SSH astfel încât să nu fie permisă autentificarea folosind parole (Hint: man sshd_config, /Password).
  • [06]. Reporniți serverul de ssh și conectați-vă cu contul student de pe masina fizică pe contul nrush pe mașina virtuală. S-a realizat autentificarea ?
  • [07]. Pe mașina virtuală modificați fișierul de configurare al serverului de SSH astfel încât să nu fie permisă conectarea prin ssh în contul utilizatorului root (Hint: man sshd_config, /rootlogin). Testați.
  • [08]. Pe mașina virtuală modificați fișierul de configurare al serverului de SSH astfel încât să fie permisă conectarea prin ssh doar în contul utilizatorului student. Reporniți serverul și testați folosind utilizatorii eyoung și nrush (Hint: man sshd_config, /user).

3. Tunelare (1p)

Exerciții

  • [01]. Reconfigurați serverul ssh de pe mașina virtuală pentru a asculta conexiuni pe portul 22.
  • [02]. Instalați în mașina virtuală serverul web apache (Hint: apt-cache search apache | grep ^apache).
  • [03]. Pe mașina virtuală instalați pachetul elinks.
  • [04]. Pe mașina virtuală verificați că serverul apache rulează, folosind:
  • [04].a. netstat
  • [04].b. comanda elinks 127.0.0.1
  • [05]. Editați conținutul fișierului /var/www/html/index.html și puteți în el textul: “heimdall web server is up”.
  • [06]. Verificați aplicarea modirficărilor anterioare folosind elinks
  • [07]. Pe mașina fizică creați un tunel SSH care să aibă un capat pe stația fizica pe portul 8181 și celălalt capăt pe stația virtuala pe portul 80. Testați funcționarea tunelului utilizând un browser și mergând la adresa localhost:8181.

4. PAM (2.5p)

  • Comenzi/concepte/fișiere
    • /etc/pam.d/system-auth

Acest set de exerciții se desfășoară pe mașina fizică

Exerciții

  • [01]. Instalați modulul de PAM cracklib (Hint: cracklib).
  • [02]. Configurați cracklib în așa fel încât (Hint: /etc/pam.d/common-password, man pam_cracklib, /examples):
  • [02].a. parolele utilizatorilor să aibă minim 12 caractere (Hint: man pam_cracklib, /minlen)
  • [02].b. parolele utilizatorilor să aibă minim 3 cifre (Hint: man pam_cracklib, /dcredit)
  • [02].c. parolele utilizatorilor să aibă minim 2 litere mari (Hint: man pam_cracklib, /ucredit)
  • [02].d. parolele utilizatorilor să aibă minim 4 litere mici (Hint: man pam_cracklib, /lcredit)
  • [02].e. parolele utilizatorilor să aibă minim 3 caractere speciale (Hint: man pam_cracklib, /ocredit)
  • [03]. Autentificați-vă ca utilizator student și încercați să schimbați parola curentă cu:
  • [03].a. o parolă de 1 caracter
  • [03].b. o parolă care să nu corespundă cerințelor de mai sus
  • [03].c. o parolă care să corespundă cerințelor de mai sus
  • [04]. Instalați modulul de PAM mkhomedir (Hint: libpam-modules).
  • [06].a. Adăugați utilizatorul jonas.quinn fără a îi crea un director home.
  • [06].b. Autentificați-vă ca jonas.quinn. A fost creat directorul home al acestuia ?

5. Criptarea datelor. GNU Privacy Guard (GPG) (3p)

  • Comenzi/concepte/fișiere
    • GPG, PGP
    • cheie publică, cheie secretă
    • criptare, decriptare
    • semnare, verificare
    • ASCII armor
    • keyring

Tutorial

  • Folosiți gpg –list-keys pentru a lista cheile GPG curente ale utilizatorului student.
    • Dacă utilizatorul nu are chei GPG create, va fi generat directorul ~/.gnupg.

Breviar

Operații uzuale cu chei GPG:

  • generarea de chei
gpg --gen-key
  • editare de chei
gpg --edit-key <user-id>
  • ștergere de chei
gpg --delete-keys <user-id>
gpg --delete-secret-keys <user-id>
gpg --delete-secret-and-public-keys <user-id>
  • listare chei
gpg --list-keys
gpg --list-public-keys
gpg --list-secret-keys
  • exportare chei
gpg --export --armor --output my.pub <keyid>
gpg --export-secret-keys ...
  • importare chei
gpg --import my.pub
  • criptare (folosind cheia publică)
gpg --encrypt -r "Gogu <gogu@gogu.com>" --output info.dat.enc info.dat
gpg --encrypt -r "Gogu <gogu@gogu.com>" --armor --output info-armor.dat.enc info.dat
  • decriptare (folosind cheia privată)
gpg --decrypt -r "Gogu <gogu@gogu.com>" --output info.dat.dec info.dat.enc
  • semnare (folosind cheia privată)
gpg --sign -r "Gogu <gogu@gogu.com>" info.dat
gpg --sign --armor -r "Gogu <gogu@gogu.com>" info.dat
  • verificare (folosind cheia publică)
gpg --verify -r "Gogu <gogu@gogu.com>" info.dat.gpg
gpg --verify -r "Gogu <gogu@gogu.com>" info.dat.asc

Exerciții

Acest set de exerciții se desfășoară pe mașina fizică

  • [01]. Creați utilizatorii locali laurentiu și mihai.
  • [02]. Autentificat ca laurentiu:
  • [02].a. Generați o pereche de chei de criptare (prima opțiune la –gen-key) cu opțiunile implicite (2048 biți, cheia nu expiră, un nume/e-mail la alegere, un passphrase la alegere). (Hint: gpg –gen-key)
  • [02].b. Afișați cheile disponibile. (Hint: gpg –list-keys)
  • [02].c. Exportați cheia publică generată anterior în format armor în cadrul fișierului laur.pub. (Hint: gpg –export)
  • [03]. Autentificat ca mihai:
  • [03].a. Copiați fișierul laur.pub din home-ul utilizatorului laurentiu în home-ul propriu.
  • [03].b. Importați cheia publică a utilizatorului laurentiu.
  • [03].c. Listați cheile GPG proprii utilizatorului mihai.
  • [03].d. Folosiți dd pentru a genera fișierul gpg-test.dat cu dimensiunea de 1KB. Folosiți /dev/urandom pentru input.
  • [03].e. Folosiți GPG pentru a cripta fișierul gpg-test.dat în fișierul de ieșire gpg-test.enc. Folosiți cheia/UID-ul utilizatorului laurentiu.
  • [03].f. Folosiți GPG pentru a cripta fișierul în format armor cu ieșirea în gpg-test-armor.enc. Folosiți cheia/UID-ul utilizatorului laurentiu.
  • [04]. Autentificat ca laurentiu:
  • [04].a. Copiați fișierele gpg-test.dat, gpg-test.enc și gpg-test-armor.enc din home-ul utilizatorului mihai.
  • [04].b. Folosiți GPG pentru a decripta fișierul gpg-test.enc în fișierul de ieșire gpg-test.dec folosind cheia/UID-ul creat. Comparați (folosind diff sau cmp) fișierul gpg-test.dec și gpg-test.dat.
  • [04].c. Executați pasul anterior pentru fișierul gpg-test-armor.enc cu ieșirea în fișierul gpg-test-armor.dec.
  • [04].d. Semnați fișierul gpg-test.dat în format armor folosind cheia/UID-ul creat. Fișierul de ieșire va fi gpg-test.dat.asc.
  • [05]. Autentificat ca mihai:
  • [05].a. Copiați fișierul gpg-test.dat.asc din home-ul utilizatorului laurentiu.
  • [05].b. Verificați fișierul de semnătură folosind cheia importată anterior.

6. Intrusion Prevention: Fail2ban (1p)

  • Comenzi/concepte/fișiere
    • /etc/fail2ban/jail.conf

Exerciții

  • [01]. Pe mașina virtuală instalați fail2ban.
  • [02]. Pe mașina virtuală configurați fail2ban astfel încât (reporniți serviciul de fail2ban după realizarea configurărilor):
  • [02].a. să fie activ pentru autentificările încercate prin ssh
  • [02].b. să permită un număr maxim de 3 încercări
  • [02].c. să folosească un timp de ban de 300 de secunde
  • [02].d. Hint: /etc/fail2ban/jail.conf, bantime
  • [03]. Pe mașina virtuală reconfigurați serverul de SSH astfel încât să fie permise autentificările pe bază de parolă. Eliminați restricția de autentificare doar în contul utilizatorului student.
  • [04]. De pe mașina fizică încercați să vă autentificați pe mașina virtuală prin ssh folosind contul nrush. Introduceți de 3 ori la rând parola utilizatorului root in mod greșit.
  • [04].a. De ce credeți că s-a blocat conexiunea ssh după introducerea parolei a treia oară ?
  • [04]. Folosind ssh în mod verbose, încercați din nou să vă conectați de pe mașina fizică pe mașina virtuală folosind contul nrush. Ce observați ?
  • [05]. Conectați-vă la mașina virtuală în contul de root folosind interfața vmware. Afișați toate regulile iptables existente în acest moment. Hint: iptables -L.
  • [06]. Ștergeți din chain-ul fail2ban-ssh prima regulă care blochează accesul stației mjolnir.local. Hint: iptables -D fail2ban-ssh 1
  • [07]. De pe mașina fizică încercați să vă autentificați din nou pe mașina virtuală folosind contul nrush. Introduceți parola în mod corespunzător.
gsr/laboratoare/laborator-10.1483981938.txt.gz · Last modified: 2017/01/09 19:12 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0