= Εργασία Εξαμήνου - Ασφαλεία Δικτύων και επικοινωνίων 
Πετρίδου Αναστασία
Α.Μ. (47431) 

:description: Sec
:keywords: doc
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:source-highlighter: highlight
:icons: font
:sectnums: 
:tabs: +



== Υλοποίηση συστήματος για την προσομοίωση Dos/DDos Attack

=== 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
----
image:image/config_swarm.png[] +

Ευρέση των ενεργών host 
----
nmap -sP 172.19.0.*
----
image:image/nmap.png[] +

Συνδεση στον worker_1 
----
ssh docker@172.19.0.3
----
image:image/connect_worker.png[] +

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



== 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.'
----

image:image/ssh_patator.png[] +

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


== Local/Remote SSH Forwarding

Σε αυτό το ερώτημα έχω χρησιμοποιήσει άλλες IP οπώς φαίνεται στην παρακάτω εικόνα

image:image/IPnew.png[] +

Εγκαθιστούμε τον apache στο μηχάνημα μας
----
sudo apt install apache2
----
Τρέχουμε τον server
----
apacherctl start
----
Παρατηρούμε οτι η υπηρέσια μας τρέχει με την εντολή
----
sudo netstat -antlupe
----


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

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

image:image/local_ssh_port.png[] +

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


----
curl localhost:8000
----

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

image:image/local_ssh_port_1.png[] +

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

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

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

----
curl localhost:8002
----

image:image/local_remote_ssh_port.png[] +

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

image:image/local_ssh_port_1.png[] +

== VPN

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

image:image/create-vpn.sh.png[] +

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

----
./create-vpn.sh
----

image:image/vpn-login.png[] +

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

image:image/create-user.sh.png[] +

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

----
./create-user.sh
----

image:image/user-login.png[] +

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


image:image/test.vpn.png[] +

Αντιγράφουμε το 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
----

image:image/success-vpn.png[] +


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

image:image/vpn_connect1.png[] +
