This shows you the differences between two versions of the page.
gsr:laboratoare:laborator-10 [2017/01/09 19:13] alexandru.carp |
gsr:laboratoare:laborator-10 [2017/01/09 19:18] (current) alexandru.carp |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 10: Securitate: hardening a server ====== | ====== Laborator 10: Securitate: hardening a server ====== | ||
- | ===== 2. Configurari server ssh (2p) ===== | + | ===== 1. PAM ===== |
- | + | ||
- | *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'') | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep Port | + | |
- | Port 2854 | + | |
- | </code></solution> | + | |
- | + | ||
- | *[02]. Pe **mașina virtuală** reporniți daemonul de ssh pentru ca schimbările anterioare să fie aplicate. (Hint: ''/etc/init.d/ssh'') | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# /etc/init.d/ssh restart | + | |
- | Restarting OpenBSD Secure Shell server: sshd. | + | |
- | + | ||
- | root@heimdall:~# netstat -lntp | + | |
- | Active Internet connections (only servers) | + | |
- | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name | + | |
- | tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1363/exim4 | + | |
- | tcp 0 0 0.0.0.0:2854 0.0.0.0:* LISTEN 2047/sshd | + | |
- | tcp 0 0 0.0.0.0:54118 0.0.0.0:* LISTEN 751/rpc.statd | + | |
- | tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 736/rpcbind | + | |
- | tcp6 0 0 ::1:25 :::* LISTEN 1363/exim4 | + | |
- | tcp6 0 0 :::2854 :::* LISTEN 2047/sshd | + | |
- | tcp6 0 0 :::111 :::* LISTEN 736/rpcbind | + | |
- | tcp6 0 0 :::35092 :::* LISTEN 751/rpc.statd | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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 ? | + | |
- | <solution -hidden -en><code> | + | |
- | root@mjolnir:~# apt-get install nmap | + | |
- | [...] | + | |
- | + | ||
- | root@mjolnir:~# nmap -sV -p1-3096 heimdall.local | + | |
- | + | ||
- | Starting Nmap 5.21 ( http://nmap.org ) at 2011-11-16 21:44 EET | + | |
- | Nmap scan report for heimdall.local (192.168.48.128) | + | |
- | Host is up (0.00031s latency). | + | |
- | Not shown: 3094 closed ports | + | |
- | PORT STATE SERVICE VERSION | + | |
- | 111/tcp open rpcbind | + | |
- | 2854/tcp open ssh OpenSSH 5.9p1 Debian 1 (protocol 2.0) | + | |
- | MAC Address: 00:0C:29:5A:9C:6C (VMware) | + | |
- | Service Info: OS: Linux | + | |
- | + | ||
- | Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . | + | |
- | Nmap done: 1 IP address (1 host up) scanned in 6.56 seconds | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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ă. | + | |
- | <solution -hidden -en><code> | + | |
- | student@mjolnir:~$ ssh student@heimdall.local -p 2854 | + | |
- | Linux heimdall 3.0.0-1-686-pae #1 SMP Sat Aug 27 16:41:03 UTC 2011 i686 | + | |
- | + | ||
- | The programs included with the Debian GNU/Linux system are free software; | + | |
- | the exact distribution terms for each program are described in the | + | |
- | individual files in /usr/share/doc/ * /copyright. | + | |
- | + | ||
- | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | + | |
- | permitted by applicable law. | + | |
- | You have new mail. | + | |
- | Last login: Wed Nov 16 21:25:25 2011 from mjolnir.local | + | |
- | + | ||
- | student@heimdall:~$ logout | + | |
- | Connection to heimdall.local closed. | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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). | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep PubkeyAuthentication | + | |
- | PubkeyAuthentication yes | + | |
- | + | ||
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep PasswordAuthentication | head -n 1 | + | |
- | PasswordAuthentication no | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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 ? | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# /etc/init.d/ssh restart | + | |
- | Restarting OpenBSD Secure Shell server: sshd. | + | |
- | + | ||
- | student@mjolnir:~$ ssh nrush@heimdall.local -p 2854 | + | |
- | Permission denied (publickey). | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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. | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep PermitRootLogin | head -n 1 | + | |
- | PermitRootLogin no | + | |
- | + | ||
- | root@heimdall:~# /etc/init.d/ssh restart | + | |
- | Restarting OpenBSD Secure Shell server: sshd. | + | |
- | + | ||
- | student@mjolnir:~$ ssh root@heimdall.local -p 2854 | + | |
- | Permission denied (publickey). | + | |
- | </code></solution> | + | |
- | + | ||
- | *[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). | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep AllowUsers | + | |
- | AllowUsers student | + | |
- | + | ||
- | root@heimdall:~# /etc/init.d/ssh restart | + | |
- | Restarting OpenBSD Secure Shell server: sshd. | + | |
- | + | ||
- | student@mjolnir:~$ ssh nrush@heimdall.local -p 2854 | + | |
- | Permission denied (publickey). | + | |
- | + | ||
- | eyoung@mjolnir:~$ ssh nrush@heimdall.local -p 2854 | + | |
- | Permission denied (publickey). | + | |
- | + | ||
- | student@mjolnir:~$ ssh student@heimdall.local -p 2854 | + | |
- | Linux heimdall 3.0.0-1-686-pae #1 SMP Sat Aug 27 16:41:03 UTC 2011 i686 | + | |
- | + | ||
- | The programs included with the Debian GNU/Linux system are free software; | + | |
- | the exact distribution terms for each program are described in the | + | |
- | individual files in /usr/share/doc/ * /copyright. | + | |
- | + | ||
- | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | + | |
- | permitted by applicable law. | + | |
- | You have new mail. | + | |
- | Last login: Wed Nov 16 21:45:31 2011 from mjolnir.local | + | |
- | </code></solution> | + | |
- | ===== 3. Tunelare (1p) ===== | + | |
- | + | ||
- | ==== Exerciții ==== | + | |
- | + | ||
- | *[01]. Reconfigurați serverul ssh de pe mașina virtuală pentru a asculta conexiuni pe portul 22. | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /etc/ssh/sshd_config | grep Port | + | |
- | Port 22 | + | |
- | + | ||
- | root@heimdall:~# /etc/init.d/ssh restart | + | |
- | Restarting OpenBSD Secure Shell server: sshd. | + | |
- | </code></solution> | + | |
- | + | ||
- | *[02]. Instalați în mașina virtuală serverul web apache (Hint: apt-cache search apache | grep ^apache). | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# apt-get update | + | |
- | [...] | + | |
- | + | ||
- | root@heimdall:~# apt-get install apache2 | + | |
- | [...] | + | |
- | </code></solution> | + | |
- | *[03]. Pe mașina virtuală instalați pachetul elinks. | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# apt-get install elinks | + | |
- | [...] | + | |
- | </code></solution> | + | |
- | *[04]. Pe mașina virtuală verificați că serverul apache rulează, folosind: | + | |
- | *[04].a. netstat | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# netstat -tlnp | grep apache | + | |
- | tcp6 0 0 :::80 :::* LISTEN 3095/apache2 | + | |
- | </code></solution> | + | |
- | *[04].b. comanda elinks 127.0.0.1 | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# elinks 127.0.0.1 | + | |
- | + | ||
- | http://127.0.0.1/ | + | |
- | It works! | + | |
- | + | ||
- | This is the default web page for this server. | + | |
- | + | ||
- | The web server software is running but no content has been added, yet. | + | |
- | </code></solution> | + | |
- | *[05]. Editați conținutul fișierului /var/www/html/index.html și puteți în el textul: “heimdall web server is up”. | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# cat /var/www/index.html | + | |
- | <html><body><h1>It works!</h1> | + | |
- | <p>heimdall web server is up.</p> | + | |
- | </body></html> | + | |
- | </code></solution> | + | |
- | *[06]. Verificați aplicarea modirficărilor anterioare folosind elinks | + | |
- | <solution -hidden -en><code> | + | |
- | root@heimdall:~# elinks 127.0.0.1 | + | |
- | + | ||
- | http://127.0.0.1/ | + | |
- | It works! | + | |
- | + | ||
- | heimdall web server is up. | + | |
- | </code></solution> | + | |
- | *[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. | + | |
- | <solution -hidden -en><code> | + | |
- | student@mjolnir:~$ ssh -f -N -L 8181:heimdall.local:80 student@heimdall.local | + | |
- | </code> | + | |
- | [se accesează http://localhost:8181 într-un browser] | + | |
- | </solution> | + | |
- | ===== 4. PAM (2.5p) ===== | + | |
- | + | ||
- | *Comenzi/concepte/fișiere | + | |
- | * /etc/pam.d/system-auth | + | |
- | + | ||
- | <note important> | + | |
- | Acest set de exerciții se desfășoară pe mașina fizică | + | |
- | </note> | + | |
- | + | ||
- | ==== Exerciții ==== | + | |
*[01]. Instalați modulul de PAM cracklib (Hint: ''cracklib''). | *[01]. Instalați modulul de PAM cracklib (Hint: ''cracklib''). | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# apt-get install libpam-cracklib | root@heimdall:~# apt-get install libpam-cracklib | ||
[...] | [...] | ||
- | </code></solution> | + | </code> |
*[02]. Configurați cracklib în așa fel încât (Hint: ''/etc/pam.d/common-password'', ''man pam_cracklib'', /examples): | *[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].a. parolele utilizatorilor să aibă minim 12 caractere (Hint: ''man pam_cracklib'', /minlen) | ||
Line 215: | Line 14: | ||
*[02].d. parolele utilizatorilor să aibă minim 4 litere mici (Hint: ''man pam_cracklib'', /lcredit) | *[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) | *[02].e. parolele utilizatorilor să aibă minim 3 caractere speciale (Hint: ''man pam_cracklib'', /ocredit) | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# cat /etc/pam.d/common-password | grep cracklib | root@heimdall:~# cat /etc/pam.d/common-password | grep cracklib | ||
password requisite pam_cracklib.so retry=3 difok=3 minlen=12 dcredit=-3 ucredit=-2 lcredit=-4 ocredit=-3 | password requisite pam_cracklib.so retry=3 difok=3 minlen=12 dcredit=-3 ucredit=-2 lcredit=-4 ocredit=-3 | ||
- | </code></solution> | + | </code> |
*[03]. Autentificați-vă ca utilizator student și încercați să schimbați parola curentă cu: | *[03]. Autentificați-vă ca utilizator student și încercați să schimbați parola curentă cu: | ||
Line 224: | Line 23: | ||
*[03].b. o parolă care să nu corespundă cerințelor de mai sus | *[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 | *[03].c. o parolă care să corespundă cerințelor de mai sus | ||
- | <solution -hidden -en><code> | + | <code> |
student@heimdall:~$ passwd | student@heimdall:~$ passwd | ||
Changing password for student. | Changing password for student. | ||
Line 235: | Line 34: | ||
Retype new password: | Retype new password: | ||
passwd: password updated successfully | passwd: password updated successfully | ||
- | </code></solution> | + | </code> |
*[04]. Instalați modulul de PAM mkhomedir (Hint: ''libpam-modules''). | *[04]. Instalați modulul de PAM mkhomedir (Hint: ''libpam-modules''). | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# apt-get install libpam-modules | root@heimdall:~# apt-get install libpam-modules | ||
[...] | [...] | ||
- | </code></solution> | + | </code> |
*[05]. Configurați mkhomedir astfel încât la prima autentificare a unui utilizator să îi fie creat directorul home, dacă acesta nu era creat deja. (Hint: http://www.debian-administration.org/articles/403, ''man pam_mkhomedir'') | *[05]. Configurați mkhomedir astfel încât la prima autentificare a unui utilizator să îi fie creat directorul home, dacă acesta nu era creat deja. (Hint: http://www.debian-administration.org/articles/403, ''man pam_mkhomedir'') | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# cat /etc/pam.d/common-session| grep session | root@heimdall:~# cat /etc/pam.d/common-session| grep session | ||
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 | session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 | ||
- | </code></solution> | + | </code> |
*[06].a. Adăugați utilizatorul jonas.quinn fără a îi crea un director home. | *[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 ? | *[06].b. Autentificați-vă ca jonas.quinn. A fost creat directorul home al acestuia ? | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# groupadd jonas.quinn | root@heimdall:~# groupadd jonas.quinn | ||
Line 274: | Line 72: | ||
drwxr-xr-x 3 nrush nrush 4096 Nov 16 21:53 nrush | drwxr-xr-x 3 nrush nrush 4096 Nov 16 21:53 nrush | ||
drwxr-xr-x 3 student student 4096 Oct 18 19:15 student | drwxr-xr-x 3 student student 4096 Oct 18 19:15 student | ||
- | </code></solution> | + | </code> |
- | ===== 5. Criptarea datelor. GNU Privacy Guard (GPG) (3p) ===== | + | |
- | *Comenzi/concepte/fișiere | + | ===== 2. Criptarea datelor. GNU Privacy Guard (GPG) ===== |
- | *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. | *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''. | *Dacă utilizatorul nu are chei GPG create, va fi generat directorul ''~/.gnupg''. | ||
- | <solution -hidden -en><code> | + | <code> |
student@mjolnir:~$ gpg --list-keys | student@mjolnir:~$ gpg --list-keys | ||
gpg: directory `/home/student/.gnupg' created | gpg: directory `/home/student/.gnupg' created | ||
Line 296: | Line 85: | ||
gpg: keyring `/home/student/.gnupg/pubring.gpg' created | gpg: keyring `/home/student/.gnupg/pubring.gpg' created | ||
gpg: /home/student/.gnupg/trustdb.gpg: trustdb created | gpg: /home/student/.gnupg/trustdb.gpg: trustdb created | ||
- | </code></solution> | + | </code> |
- | ==== Breviar ==== | ||
Operații uzuale cu chei GPG: | Operații uzuale cu chei GPG: | ||
Line 359: | Line 146: | ||
gpg --verify -r "Gogu <gogu@gogu.com>" info.dat.asc | gpg --verify -r "Gogu <gogu@gogu.com>" info.dat.asc | ||
</code> | </code> | ||
- | |||
- | ==== Exerciții ==== | ||
<note important> | <note important> | ||
Line 366: | Line 151: | ||
</note> | </note> | ||
*[01]. Creați utilizatorii locali ''laurentiu'' și ''mihai''. | *[01]. Creați utilizatorii locali ''laurentiu'' și ''mihai''. | ||
- | <solution -hidden -en><code> | + | <code> |
root@mjolnir:~# groupadd laurentiu | root@mjolnir:~# groupadd laurentiu | ||
Line 378: | Line 163: | ||
root@mjolnir:~# echo "mihai:gsr" | chpasswd | root@mjolnir:~# echo "mihai:gsr" | chpasswd | ||
- | </code></solution> | + | </code> |
*[02]. Autentificat ca ''laurentiu'': | *[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].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'') | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --gen-key | laurentiu@mjolnir:~$ gpg --gen-key | ||
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. | gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. | ||
Line 451: | Line 236: | ||
uid Laurentiu <laurentiu@gsr.cs.pub.ro> | uid Laurentiu <laurentiu@gsr.cs.pub.ro> | ||
sub 2048R/2DFDA0A8 2011-11-16 | sub 2048R/2DFDA0A8 2011-11-16 | ||
- | </code></solution> | + | </code> |
*[02].b. Afișați cheile disponibile. (Hint: ''gpg --list-keys'') | *[02].b. Afișați cheile disponibile. (Hint: ''gpg --list-keys'') | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --list-keys | laurentiu@mjolnir:~$ gpg --list-keys | ||
/home/laurentiu/.gnupg/pubring.gpg | /home/laurentiu/.gnupg/pubring.gpg | ||
Line 461: | Line 246: | ||
uid Laurentiu <laurentiu@gsr.cs.pub.ro> | uid Laurentiu <laurentiu@gsr.cs.pub.ro> | ||
sub 2048R/2DFDA0A8 2011-11-16 | sub 2048R/2DFDA0A8 2011-11-16 | ||
- | </code></solution> | + | </code> |
*[02].c. Exportați cheia publică generată anterior în format armor în cadrul fișierului ''laur.pub''. (Hint: ''gpg --export'') | *[02].c. Exportați cheia publică generată anterior în format armor în cadrul fișierului ''laur.pub''. (Hint: ''gpg --export'') | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --export --armor --output laur.pub 6F2EB1B5 | laurentiu@mjolnir:~$ gpg --export --armor --output laur.pub 6F2EB1B5 | ||
Line 470: | Line 255: | ||
total 4 | total 4 | ||
-rw-r--r-- 1 laurentiu laurentiu 1723 Nov 16 22:21 laur.pub | -rw-r--r-- 1 laurentiu laurentiu 1723 Nov 16 22:21 laur.pub | ||
- | </code></solution> | + | </code> |
*[03]. Autentificat ca ''mihai'': | *[03]. Autentificat ca ''mihai'': | ||
*[03].a. Copiați fișierul ''laur.pub'' din home-ul utilizatorului ''laurentiu'' în home-ul propriu. | *[03].a. Copiați fișierul ''laur.pub'' din home-ul utilizatorului ''laurentiu'' în home-ul propriu. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ cp /home/laurentiu/laur.pub . | mihai@mjolnir:~$ cp /home/laurentiu/laur.pub . | ||
- | </code></solution> | + | </code> |
*[03].b. Importați cheia publică a utilizatorului ''laurentiu''. | *[03].b. Importați cheia publică a utilizatorului ''laurentiu''. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ gpg --import laur.pub | mihai@mjolnir:~$ gpg --import laur.pub | ||
gpg: directory `/home/mihai/.gnupg' created | gpg: directory `/home/mihai/.gnupg' created | ||
Line 490: | Line 275: | ||
gpg: Total number processed: 1 | gpg: Total number processed: 1 | ||
gpg: imported: 1 (RSA: 1) | gpg: imported: 1 (RSA: 1) | ||
- | </code></solution> | + | </code> |
*[03].c. Listați cheile GPG proprii utilizatorului ''mihai''. | *[03].c. Listați cheile GPG proprii utilizatorului ''mihai''. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@merlin:~$ gpg --list-keys | mihai@merlin:~$ gpg --list-keys | ||
mihai@mjolnir:~$ gpg --list-keys | mihai@mjolnir:~$ gpg --list-keys | ||
Line 501: | Line 286: | ||
uid Laurentiu <laurentiu@gsr.cs.pub.ro> | uid Laurentiu <laurentiu@gsr.cs.pub.ro> | ||
sub 2048R/2DFDA0A8 2011-11-16 | sub 2048R/2DFDA0A8 2011-11-16 | ||
- | </code></solution> | + | </code> |
*[03].d. Folosiți ''dd'' pentru a genera fișierul ''gpg-test.dat'' cu dimensiunea de 1KB. Folosiți ''/dev/urandom'' pentru input. | *[03].d. Folosiți ''dd'' pentru a genera fișierul ''gpg-test.dat'' cu dimensiunea de 1KB. Folosiți ''/dev/urandom'' pentru input. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ dd if=/dev/urandom of=gpg-test.dat bs=1K count=1 | mihai@mjolnir:~$ dd if=/dev/urandom of=gpg-test.dat bs=1K count=1 | ||
1+0 records in | 1+0 records in | ||
1+0 records out | 1+0 records out | ||
1024 bytes (1.0 kB) copied, 0.000195263 s, 5.2 MB/s | 1024 bytes (1.0 kB) copied, 0.000195263 s, 5.2 MB/s | ||
- | </code></solution> | + | </code> |
*[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].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''. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ gpg --encrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --output gpg-test.enc gpg-test.dat | mihai@mjolnir:~$ gpg --encrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --output gpg-test.enc gpg-test.dat | ||
gpg: 2DFDA0A8: There is no assurance this key belongs to the named user | gpg: 2DFDA0A8: There is no assurance this key belongs to the named user | ||
Line 531: | Line 316: | ||
-rw-r--r-- 1 mihai mihai 1373 Nov 16 22:25 gpg-test.enc | -rw-r--r-- 1 mihai mihai 1373 Nov 16 22:25 gpg-test.enc | ||
-rw-r--r-- 1 mihai mihai 1723 Nov 16 22:23 laur.pub | -rw-r--r-- 1 mihai mihai 1723 Nov 16 22:23 laur.pub | ||
- | </code></solution> | + | </code> |
*[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''. | *[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''. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ gpg --encrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test-armor.enc gpg-test.dat | mihai@mjolnir:~$ gpg --encrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test-armor.enc gpg-test.dat | ||
gpg: 2DFDA0A8: There is no assurance this key belongs to the named user | gpg: 2DFDA0A8: There is no assurance this key belongs to the named user | ||
Line 554: | Line 339: | ||
-rw-r--r-- 1 mihai mihai 1373 Nov 16 22:25 gpg-test.enc | -rw-r--r-- 1 mihai mihai 1373 Nov 16 22:25 gpg-test.enc | ||
-rw-r--r-- 1 mihai mihai 1723 Nov 16 22:23 laur.pub | -rw-r--r-- 1 mihai mihai 1723 Nov 16 22:23 laur.pub | ||
- | </code></solution> | + | </code> |
*[04]. Autentificat ca ''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].a. Copiați fișierele ''gpg-test.dat'', ''gpg-test.enc'' și ''gpg-test-armor.enc'' din home-ul utilizatorului ''mihai''. | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ cp /home/mihai/gpg-test* . | laurentiu@mjolnir:~$ cp /home/mihai/gpg-test* . | ||
- | </code></solution> | + | </code> |
*[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].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''. | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --decrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --output gpg-test.dec gpg-test.enc | laurentiu@mjolnir:~$ gpg --decrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --output gpg-test.dec gpg-test.enc | ||
Line 584: | Line 369: | ||
laurentiu@mjolnir:~$ cmp gpg-test.dat gpg-test.dec | laurentiu@mjolnir:~$ cmp gpg-test.dat gpg-test.dec | ||
- | </code></solution> | + | </code> |
*[04].c. Executați pasul anterior pentru fișierul ''gpg-test-armor.enc'' cu ieșirea în fișierul ''gpg-test-armor.dec''. | *[04].c. Executați pasul anterior pentru fișierul ''gpg-test-armor.enc'' cu ieșirea în fișierul ''gpg-test-armor.dec''. | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --decrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test-armor.dec gpg-test-armor.enc | laurentiu@mjolnir:~$ gpg --decrypt -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test-armor.dec gpg-test-armor.enc | ||
Line 609: | Line 394: | ||
laurentiu@mjolnir:~$ cmp gpg-test-armor.dec gpg-test.dat | laurentiu@mjolnir:~$ cmp gpg-test-armor.dec gpg-test.dat | ||
- | </code></solution> | + | </code> |
*[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''. | *[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''. | ||
- | <solution -hidden -en><code> | + | <code> |
laurentiu@mjolnir:~$ gpg --sign -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test.dat.asc gpg-test.dat | laurentiu@mjolnir:~$ gpg --sign -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor --output gpg-test.dat.asc gpg-test.dat | ||
gpg: WARNING: recipients (-r) given without using public key encryption | gpg: WARNING: recipients (-r) given without using public key encryption | ||
Line 629: | Line 414: | ||
-rw-r--r-- 1 laurentiu laurentiu 1373 Nov 17 22:15 gpg-test.enc | -rw-r--r-- 1 laurentiu laurentiu 1373 Nov 17 22:15 gpg-test.enc | ||
-rw-r--r-- 1 laurentiu laurentiu 1719 Nov 17 21:58 laur.pub | -rw-r--r-- 1 laurentiu laurentiu 1719 Nov 17 21:58 laur.pub | ||
- | </code></solution> | + | </code> |
*[05]. Autentificat ca ''mihai'': | *[05]. Autentificat ca ''mihai'': | ||
*[05].a. Copiați fișierul ''gpg-test.dat.asc'' din home-ul utilizatorului ''laurentiu''. | *[05].a. Copiați fișierul ''gpg-test.dat.asc'' din home-ul utilizatorului ''laurentiu''. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ cp /home/laurentiu/gpg-test.dat.asc . | mihai@mjolnir:~$ cp /home/laurentiu/gpg-test.dat.asc . | ||
- | </code></solution> | + | </code> |
*[05].b. Verificați fișierul de semnătură folosind cheia importată anterior. | *[05].b. Verificați fișierul de semnătură folosind cheia importată anterior. | ||
- | <solution -hidden -en><code> | + | <code> |
mihai@mjolnir:~$ gpg --verify -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor gpg-test.dat.asc | mihai@mjolnir:~$ gpg --verify -r "Laurentiu <laurentiu@gsr.cs.pub.ro>" --armor gpg-test.dat.asc | ||
gpg: Signature made Wed 16 Nov 2011 10:31:09 PM EET using RSA key ID 6F2EB1B5 | gpg: Signature made Wed 16 Nov 2011 10:31:09 PM EET using RSA key ID 6F2EB1B5 | ||
Line 645: | Line 430: | ||
gpg: There is no indication that the signature belongs to the owner. | gpg: There is no indication that the signature belongs to the owner. | ||
Primary key fingerprint: E465 241F FBE9 36A2 4E8E 4E0D E73F 2C5A 6F2E B1B5 | Primary key fingerprint: E465 241F FBE9 36A2 4E8E 4E0D E73F 2C5A 6F2E B1B5 | ||
- | </code></solution> | + | </code> |
- | ===== 6. Intrusion Prevention: Fail2ban (1p) ===== | + | ===== 3. Intrusion Prevention: Fail2ban ===== |
- | + | ||
- | *Comenzi/concepte/fișiere | + | |
- | * /etc/fail2ban/jail.conf | + | |
- | + | ||
- | + | ||
- | ==== Exerciții ==== | + | |
*[01]. Pe **mașina virtuală** instalați ''fail2ban''. | *[01]. Pe **mașina virtuală** instalați ''fail2ban''. | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# apt-get install fail2ban | root@heimdall:~# apt-get install fail2ban | ||
[...] | [...] | ||
- | </code></solution> | + | </code> |
*[02]. Pe **mașina virtuală** configurați fail2ban astfel încât (reporniți serviciul de fail2ban după realizarea configurărilor): | *[02]. Pe **mașina virtuală** configurați fail2ban astfel încât (reporniți serviciul de fail2ban după realizarea configurărilor): | ||
Line 665: | Line 444: | ||
*[02].c. să folosească un timp de ban de 300 de secunde | *[02].c. să folosească un timp de ban de 300 de secunde | ||
*[02].d. Hint: ''/etc/fail2ban/jail.conf'', ''bantime'' | *[02].d. Hint: ''/etc/fail2ban/jail.conf'', ''bantime'' | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# cat /etc/fail2ban/jail.conf | root@heimdall:~# cat /etc/fail2ban/jail.conf | ||
[...] | [...] | ||
Line 680: | Line 459: | ||
root@heimdall:~# /etc/init.d/fail2ban restart | root@heimdall:~# /etc/init.d/fail2ban restart | ||
Restarting authentication failure monitor: fail2ban. | Restarting authentication failure monitor: fail2ban. | ||
- | </code></solution> | + | </code> |
*[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. | *[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. | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# cat /etc/ssh/sshd_config | grep PasswordAuthentication | head -n 1 | root@heimdall:~# cat /etc/ssh/sshd_config | grep PasswordAuthentication | head -n 1 | ||
PasswordAuthentication yes | PasswordAuthentication yes | ||
Line 691: | Line 470: | ||
root@heimdall:~# /etc/init.d/ssh restart | root@heimdall:~# /etc/init.d/ssh restart | ||
Restarting OpenBSD Secure Shell server: sshd. | Restarting OpenBSD Secure Shell server: sshd. | ||
- | </code></solution> | + | </code> |
*[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]. 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].a. De ce credeți că s-a blocat conexiunea ssh după introducerea parolei a treia oară ? | ||
- | <solution -hidden -en><code> | + | <code> |
student@mjolnir:~$ ssh nrush@heimdall.local | student@mjolnir:~$ ssh nrush@heimdall.local | ||
nrush@heimdall.local's password: | nrush@heimdall.local's password: | ||
Line 703: | Line 482: | ||
nrush@heimdall.local's password: | nrush@heimdall.local's password: | ||
Permission denied (publickey,password). | Permission denied (publickey,password). | ||
- | </code></solution> | + | </code> |
*[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 ? | *[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 ? | ||
- | <solution -hidden -en><code> | + | <code> |
student@mjolnir:~$ ssh nrush@heimdall.local -vvv | student@mjolnir:~$ ssh nrush@heimdall.local -vvv | ||
OpenSSH_5.9p1 Debian-1, OpenSSL 1.0.0e 6 Sep 2011 | OpenSSH_5.9p1 Debian-1, OpenSSL 1.0.0e 6 Sep 2011 | ||
Line 712: | Line 491: | ||
debug2: ssh_connect: needpriv 0 | debug2: ssh_connect: needpriv 0 | ||
debug1: Connecting to heimdall.local [192.168.48.128] port 22. | debug1: Connecting to heimdall.local [192.168.48.128] port 22. | ||
- | </code></solution> | + | </code> |
*[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''. | *[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''. | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# iptables -L | root@heimdall:~# iptables -L | ||
Chain INPUT (policy ACCEPT) | Chain INPUT (policy ACCEPT) | ||
Line 730: | Line 509: | ||
DROP all -- mjolnir.local anywhere | DROP all -- mjolnir.local anywhere | ||
RETURN all -- anywhere anywhere | RETURN all -- anywhere anywhere | ||
- | </code></solution> | + | </code> |
*[06]. Ștergeți din chain-ul fail2ban-ssh prima regulă care blochează accesul stației mjolnir.local. Hint: ''iptables -D fail2ban-ssh 1'' | *[06]. Ștergeți din chain-ul fail2ban-ssh prima regulă care blochează accesul stației mjolnir.local. Hint: ''iptables -D fail2ban-ssh 1'' | ||
- | <solution -hidden -en><code> | + | <code> |
root@heimdall:~# iptables -D fail2ban-ssh 1 | root@heimdall:~# iptables -D fail2ban-ssh 1 | ||
- | </code></solution> | + | </code> |
*[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**. | *[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**. | ||
- | <solution -hidden -en><code> | + | <code> |
student@mjolnir:~$ ssh nrush@heimdall.local | student@mjolnir:~$ ssh nrush@heimdall.local | ||
nrush@heimdall.local's password: | nrush@heimdall.local's password: | ||
Line 748: | Line 527: | ||
permitted by applicable law. | permitted by applicable law. | ||
Last login: Wed Nov 16 21:40:02 2011 from mjolnir.local | Last login: Wed Nov 16 21:40:02 2011 from mjolnir.local | ||
- | </code></solution> | + | </code> |
/* | /* |