From cb839b8fb6f025654b740acb73d1b0608e541a2b Mon Sep 17 00:00:00 2001 From: JohnKampe Date: Mon, 20 Jan 2020 16:32:11 +0000 Subject: [PATCH] Ergasia_ADE_Christoforidou_Kamperakis --- ergasia_ADE.adoc | 145 +++++++++++++++++++++++++++++++++++++++++++++++ tunneling.png | Bin 0 -> 37815 bytes 2 files changed, 145 insertions(+) create mode 100644 ergasia_ADE.adoc create mode 100644 tunneling.png diff --git a/ergasia_ADE.adoc b/ergasia_ADE.adoc new file mode 100644 index 0000000..e94280c --- /dev/null +++ b/ergasia_ADE.adoc @@ -0,0 +1,145 @@ += Εργασία ΑΔΕ - Καμπεράκης Ιωάννης 47254 & Χριστοφορίδου Μαρία 47131 +// Metadata: +:description: Sec +:keywords: doc +:data-uri: +:toc: right +:toc-title: Πίνακας περιεχομένων +:toclevels: 4 +:source-highlighter: highlight +:icons: font +:sectnums: + + + +{empty} + +[[cheat-clone]] + +== Μέρος Α: Δημιουργία και ρύθμιση των δικτύων. + +NOTE: Το **Docker** είναι μια πλατφόρμα που πακετάρει μια εφαρμογή και όλα της τα dependencies μαζί σε μορφή containers, δηλαδή απομονωμένες Περιοχές Χρήστη (User Spaces). Το πακετάρισμα αυτό σε containers που παρέχει το docker δίνει στην εφαρμογή τη δυνατότητα να δουλεύει σε οποιοδήποτε περιβάλλον. Έτσι αποφεύγεται η χρήση επιπλέον υπολογιστικών πόρων που θα απαιτούσε μια Εικονική Μηχανή (Virtual Machine). + +=== Δημιουργία Docker Container +[source,bash] +---- +swarmalb-sec create +swarmlab-sec up size=5 +swarmlab-sec login +sudo su +ssh docker@ +sudo su +---- +Έτσι έχουμε συνδεθεί στο master. + +=== Δημιουργία Εικονικών Δικτύων στο Docker +Δημιουργούμε τα δίκτυα που μας χρειάζονται. +[source,bash] +---- +docker network create --driver=bridge --subnet= +---- + +=== Σύνδεση των Eικονικών Ηosts στα Παραπάνω Δίκτυα +Χρησιμοποιούμε την εντολή όσες φορές χρειάζεται για όσα δίκτυα και hosts θέλουμε. +[source,bash] +---- +docker network connect +---- + +=== Σύνδεση Δικτύων με το Internet +Συνδεόμαστε σε όλους τους hosts των δικτύων μας για να τους δώσουμε σαν default gateway τον master. +[source,bash] +---- +swarmlab-sec login +sudo su +ssh docker@ +sudo su +ip route add default via dev +---- + +=== Επικοινωνία Δικτύων Α και Β +Ανοίγουμε το αρχείο /etc/shorewall/rules και προσθέτουμε τις ανάλογες γραμμές έτσι ώστε τα δίκτυα μας να έχουν επικοινωνία στην πόρτα 80 ως εξής: + + +.#/etc/shorewall/rules# +[source,bash] +---- +ACCEPT netA netB tcp 80 +ACCEPT netB netA tcp 80 +---- + +=== Ρύθμιση των Περιεχομένων των Rules, Interfaces, Zones, Policy, Masq και Resolv.conf +[source,bash] +---- +nano /etc/shorewall/rules +nano /etc/shorewall/interfaces +nano /etc/shorewall/zones +nano /etc/shorewall/policy +nano /etc/resolv.con (ορίζουμε το nameserver) +---- +{empty} + + +== Μέρος Β: Tunneling +NOTE: Το **SSH Tunneling** είναι μία μέθοδος δημιουργίας ασφαλών απομακρυσμένων συνδέσεων και μεταφοράς αρχείων πάνω από μη-έμπιστα δίκτυα με μια κρυπτογραφημένη SSH σύνδεση. Προσφέρει έναν τρόπο να μεταφερθεί με ασφάλεια κίνηση οποιασδήποτε εφαρμογής με χρήση port forwarding(tunneling TCP/IP ports over SSH). Αυτό σημαίνει πως η κίνηση δεδομένων της εφαρμογής κατευθύνεται σε μία ασφαλή SSH σύνδεση ώστε να μην μπορεί να υποκλαπεί κατά τη διάρκεια της μεταφοράς. Επίσης, προσφέρει πρόσθετη ασφάλεια σε εφαρμογές legacy που δεν υποστηρίζουν κρυπτογράφηση. + +Για να δημιουργήσουμε αυτή τη σηράγγωση πρέπει πρώτα να γίνει σύνδεση του υπολογιστή μας (HOST) από τη θύρα 9000 με τη θύρα 8080 του MASTER και στη συνέχεια άλλη μια σύνδεση του MASTER με τη θύρα 80 του WORKER ο οποίος θα παρέχει το service που χρειαζόμαστε. + +image::tunneling.png[] + +[source,bash] +---- +ssh -tL 9000:localhost:8080 @ ssh -L 8080:localhost:80 @ +---- +{empty} + + +== Μέρος Γ: VPN + +NOTE: Ένα **Εικονικό Ιδιωτικό Δίκτυο** (συνήθως αναφέρεται σαν **VPN**, Virtual Private Network) είναι ένα δίκτυο που χρησιμοποιεί κατά κύριο λόγο δημόσια τηλεπικοινωνιακή υποδομή, όπως το Διαδίκτυο, και δίνει τη δυνατότητα σε απομακρυσμένους χρήστες να έχουν πρόσβαση σε ένα κεντρικό οργανωτικό δίκτυο. Συνήθως απαιτεί από τους απομακρυσμένους χρήστες του δικτύου πιστοποίηση, και συχνά ασφαλίζει τα δεδομένα με τεχνολογίες κρυπτογράφησης για να εμποδιστεί η διάδοση των ιδιωτικών πληροφοριών σε μη εξουσιοδοτημένους τρίτους. Έτσι, δίνει τη δυνατότητα στους χρήστες να στέλνουν και να λαμβάνουν δεδομένα σε κοινόχρηστα ή δημόσια δίκτυα σαν να ήταν απευθείας συνδεδεμένες οι υπολογιστικές τους συσκευές με το ιδιωτικό δίκτυο. + +Δημιουργούμε ένα VPN από την πλευρά του worker και φτιάχνουμε ένα χρήστη με τον οποίο θα συνδεθεί ο host μας στο VPN. + +=== Δημιουργία Δικτύου που θα Παρέχει το VPN + +[source,bash] +---- +docker network create --attachable=true --driver=bridge --subnet= --gateway= +---- + +=== Εκτέλεση του Container + +[source,bash] +---- +docker run --net=none -it -v : --rm ovpn_genconfig -u udp:// \ -N -d -c -p "route " -e "topology subnet" -s +---- + +=== Δημιουργία Κλειδιών για Σύνδεση Χρήστη + +[source,bash] +---- +docker run --net=none -v : --rm -it ovpn_initpki +---- + +=== Δημιουργία VPN + +[source,bash] +---- +docker run --detach --name -v : --net= --ip= -p :/udp --cap-add=NET_ADMIN +---- + +=== Δημιουργία Χρήστη + +[source,bash] +---- +docker run -v : --rm -it easyrsa build-client-full nopass +---- + +=== Αποστολή Ρυθμίσεων Χρήστη σε Αρχείο + +[source,bash] +---- +docker run -v : --log-driver=none --rm ovpn_getclient > +---- + +IMPORTANT: Το παραπάνω αρχείο πρέπει να αποσταλεί από τον host στον χρήστη του VPN ώστε να μπορεί να συνδεθεί. Για την πραγματοποίηση της σύνδεσης, ο χρήστης θα πρέπει να εκτελέσει την εντολή openvpn --config . + + + diff --git a/tunneling.png b/tunneling.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9b7afcaf718ecb8c2212780d116d6754f5af39 GIT binary patch literal 37815 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

{U8v+oXwXZCYa&JZ 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 literal 0 HcmV?d00001