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 ===
Instalare
Instalați pachetele
fail2ban
si
rsyslog
în
containerul LXC:
apt-get install fail2ban
Configurare
Utilizare
Conectați-vă cu success în containerul LXC
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
Ștergeți intrarea pentru a putea accesa din nou mașina:
iptables -D fail2ban-ssh -s <IP> -j DROP
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. stergeti 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. instalati 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. Adaugat 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 IP la altul, si:
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>