You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
5.7 KiB

# Network Security Project
Η παρούσα εργασία, αφορά την προσομοίωση επίθεσης DDos, αλλά και υπηρεσίες πρόληψης επιθέσεων, όπως VPN και SSH Forwarding.
Στα πλαίσια της εκμάθησης, κεντρικός πυλώνας υλοποίησης ήταν το swarmlab (οδηγίες χρήσης και documentation του διδάσκοντα)
Για την υλοποίηση, ακολουθήθηκαν τα εξής βήματα:
1. Εγκατάσταση Docker
2. Αντιγραφή του swarmlab μέσω clone
3. Δημιουργία swarmlab project
Κατά την πρώτη εκτέλεση οποιασδήποτε διεργασίας, είναι απαραίτητο να δημιουργηθεί το project μέσω των ακόλουθων εντολών.
Για την υλοποίηση της προσομοίωσης και την προσθήκη των υπηρεσιών, δημιουργούμε ένα σμήνος (swarm) μεταβλητού μήκους κατά τη δημιουργία.
Το κάθε σμήνος (Ν nodes) αποτελείται από ένα master και Ν-1 workers.
Εφόσον συνδεθούμε στον master, μπορούμε να ελέγξουμε και τo υπόλοιπο σμήνος.
4 years ago
**mkdir myproject**
**cd myproject**
**../install/usr/share/swarmlab.io/sec/swarmlab-sec create**
Οι εντολές αυτές δε χρειάζεται να εκτελεστούν ξανά, την επόμενη φορά που ο χρήστης θέλει να δημιουργήσει ένα σμήνος.
Στην περίπτωση που έχουμε ήδη κάνει create, απλώς μπαίνουμε στον κατάλογο με **cd swarmlab-sec/myproject**
Σε κάθε περίπτωση ακολουθούν οι εξής εντολές:
* Δημιουργούμε ένα σμήνος x κόμβων, δηλώνοντας τον αριθμό αυτό στο size.
**sudo ../swarmlab-sec/install/usr/share/swarmlab.io/sec/swarmlab-sec up size=5**
* Συνδεόμαστε στον master του σμήνους μας.
**sudo ../swarmlab-sec/install/usr/share/swarmlab.io/sec/swarmlab-sec login**
____________________________________________________________________________________
Για τις ανάγκες της εργασίας, εγκαθιστούμε την Ansible με το script **installAnsible.sh** που περιέχει τις εξής εντολές:
* Ελέγχουμε για updates και εγκαθιστούμε την ansible
**apt update ; apt install ansible -y**
* Περνάμε την εντολή στο ansible.cfg
**sed -i '13i host_key_checking = False' /etc/ansible/ansible.cfg v**
* Eγκαθιστούμε το sshpass
**apt-get install sshpass**
To script τρέχει με τις εντολές
**sudo su (Password:docker)**
και **./installAnsible.sh**
_______________________________________________________________________________________
Με την εντολή login όπως αναφέρθηκε και πιο πάνω, συνδεόμαστε με τον master.
Για να συνδεθούμε σε οποιονδήποτε άλλο κόμβο του σμήνους (worker), χρησιμοποιούμε την εντολή **ssh docker@ip** , όπου ip, εκείνη του εκάστοτε κόμβου.
Έχοντας όμως εκτελέσει τις εντολές ως τώρα, δε γνωρίζουμε καμία ip του σμήνους.
Μεταξύ άλλων, αυτό επιλύεται στο script **run.sh** :
* Το αρχείο inventory.yml, περιέχει τις ip διευθύνσεις του σμήνους. Επομένως, το ανοίγουμε για να τις καταγράψουμε.
**echo "[service]" > inventory.yml**
* Κάνουμε ifconfig και μέσω παραμέτρων εμφωλεύουμε στην μεταβλητή my_ip την ip του κόμβου στον οποίο βρισκόμαστε.
**my_ip=$(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{print $2}')**
* Στη μεταβλητή my_ip1 περνάμε τροποποιημένο το περιεχόμενο της my_ip, αφού έχουμε αλλάξει το τελευταίο ψηφίο της διεύθυνσης σε * .
**my_ip1=$(echo $my_ip | sed 's/.[0-9]$/.*/')**
* Τώρα που έχουμε την ip στην επιθυμητή μορφή, μπορούμε να κάνουμε nmap με την εντολή my_ip1 και να λάβουμε όλες τις ip του σμήνους
**nmap -sP -oG - $my_ip1 | grep Up | cut -d ' ' -f2 | tail -n +2 >>**
* Με αυτό το script, ενημερωνομαστε για τις ip, άρα μπορούμε να συνδεθούμε σε όποιο κόμβο θέλουμε.
Εκτελούνται όμως και άλλες διεργασίες. (a) Tο αποτέλεσμα του nmap, καταγράφεται στο inventory.
**inventory.yml**
(b) Εκτελούμε το αρχείο test.yml - Όλες οι ip που αναφέρονται στο inventory (ip του σμήνους) εκτελούν τις εντολές του test.yml (το οποίο περιέχει μέσα δοκιμαστικές εντολές).
**ansible-playbook -u docker -i inventory.yml test.yml -f 5 --ask-pass --ask-become-pass**
_________________________________________________________________________________
[Videos of our project](https://www.youtube.com/playlist?list=PLaKogpRx0GkiptaxF4vra2EojSecVufVk)
Ανδρέας Ρήγας
Μαρία-Νεφέλη Μαρκοπουλιώτου