|
|
|
# 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 υπόλοιπο σμήνος.
|
|
|
|
|
|
|
|
**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 **
|
|
|
|
|
|
|
|
|
|
|
|
**my_ip=$(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{print $2}')**
|
|
|
|
|
|
|
|
**my_ip1=$(echo $my_ip | sed 's/.[0-9]$/.*/')**
|
|
|
|
|
|
|
|
**nmap -sP -oG - $my_ip1 | grep Up | cut -d ' ' -f2 | tail -n +2 >> **
|
|
|
|
|
|
|
|
**inventory.yml**
|
|
|
|
|
|
|
|
**ansible-playbook -u docker -i inventory.yml test.yml -f 5 --ask-pass --ask-become-pass**
|
|
|
|
|
|
|
|
|
|
|
|
|