diff --git a/README.md b/README.md deleted file mode 100644 index aeb3b02..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# sec - diff --git a/ergasia.html b/ergasia.html new file mode 100644 index 0000000..9e03721 --- /dev/null +++ b/ergasia.html @@ -0,0 +1,887 @@ + + + + + + + + +Εργασία Εξαμήνου + + + + + + +
+
+
+
+


+
+
+ + + + + +
+ + +
+

Προσοχή !!! Πριν την συνέχιση της ανάγνωσης πρέπει να εκτελέσετε τις παρακάτω εντολές για την διατήρηση της ψυχικής ηρεμίας :

+
+
+

sudo apt-get remove vim
+sudo apt-get purge vim
+sudo apt-get install nano
+
+"I’ve been using VIM for about 2 years now mostly because i dont know how to exit it…​"

+
+
+
+ +
+
+
+

1. Docker

+
+
+

1.1. Τι είναι το Docker

+
+
+
    To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα που υλοποιεί Virtualization σε επίπεδο Λειτουργικού Συστήματος.
+Ουσιαστικά το Docker προσφέρει δυνατότητες ανάπτυξης εφαρμογών στα Containers του. Το Docker χρησιμοποιεί τεχνολογιές του πυρήνα του Linux όπως τα cgroups (ομάδες λογαριασμών που ελέγχεται το ποσοστό χρήσης του υλικού του υπολογιστή μας), namespaces (το namespaces δημιουργεί ανεξάρτητα πακέτων πόρων και διεργασιών) έτσι ώστε τα ανεξάρτητα software containers που δημιουργεί να εκτελούνται στο ίδιο λειτουργικό σύστημα. Έτσι αποφεύγεται η χρήση επιπλέον υπολογιστικών πόρων που θα απαιτούσε μια εικονική μηχανή (virtual machine).
+
+
+
+
+

1.2. Δημιουργία εικονικών δικτύων στο Docker

+
+
+
+

Για την δημιουργία δικτύων προς χρήση μέσα στα containers του Docker εκτελούμε σε ένα τερματικό την πακάτω εντολή : +
+
+docker network create --driver=bridge --subnet=subnet_IP/Preffix Network_Name

+
+
+
+
+
+

1.3. Δημιουργία δικτύων στους containers

+
+
+
+

Στην συνέχεια με την παρακάτω εντολή καθορίζουμε σε ποια δίκτυα θα συνδεθούν τα container που θέλουμε: +
+
+docker network connect Network_Name Container_Name

+
+
+
+
+

1.3.1. Σύνδεση με το Internet

+
+
+
+

Για την σύνδεση κάποιου container με το internet θα πρέπει να ρύθμίσουμε ως Gateway τον Host υπολογιστή μας +
+
+ip route add default via Host_Network_IP dev interface

+
+
+
+
+
+

1.3.2. Επικοινωνία Δικτύων A→ B και B→A

+
+ + + + + +
+ + +Για την επικοινωνία των δικτύων θα χρειαστεί να ρυθμίσουμε το Shorewall +
+
+
+
+
+

Με την βοήθεια του προγράμματος nano και όχι VIM ανοίγουμε το αρχείο:

+
+
+

/etc/shorewall/zones

+
+
+

Στην συνέχεια συμπληρώνουμε στα κατάλληλα πεδία τις απαραίτητες ρυθμίσεις όπως:
+Στο πεδίο ZONE θα είναι η ονομασία του δικτύου που θέλουμε να ελεγξουμε.
+Στο πεδίο TYPE Καθορίζουμε τον τύπου της ζώνης.
+# ZONE      TYPE      OPTIONS      IN_OPTIONS      OUT_OPTIONS
+     fw         firewall
+     net         ipv4
+     loc         ipv4
+    dmz        ipv4

+
+
+
+
+ + + + + +
+ + +Επειδή το shorewall ταιριάζει τις διευθύνσεις απο τα πακέτα με την σειρά που είναι δηλωμένα στο αρχείο σε περίπτωση που έχουμε εμφωλευμένες ζώνες καλό θα ήταν να εξασφαλίσουμε ότι η κύρια ζώνη είναι μετα απο τις υποζώνες ! +
+
+
+
+
+
+
+

Στην συνέχεία με την χρήση του προγράμματος nano ανοίγουμε το αρχέιο:

+
+
+

/etc/shorewall/policy

+
+
+

Στα πεδία του αρχείου γραφουμε τις πολιτικές που θέλουμε να εφαρμόσουμε στα πακέτα που καταφθάνουν στην διεπαφή. Στο πεδίο SOURCE την πηγή, στο πεδίο DEST τον προορισμό και εάν ταιριάξει με κάποιο πακέτο τότε εφαρμόζεται η πολιτή που έχουμε καθορίσει στο πεδίο POLICY

+
+
+

Οι πολιτικές που μπορούν να εφαρμοστούν είναι:
+ACCEPT Με το Accept δέχεται τα πακέτα.
+DROP Με το Drop απορρίπτει τα πακέτα (χωρίς ενημέρωση του αποστολέα).
+REJECT Με το Reject απορρίπτει τα πακέτα (και στέλνει ενημέρωση στον αποστολέα).

+
+
+

#      SOURCE      DEST      POLICY      LOGLEVEL      LIMIT
+             loc              net        ACCEPT
+             net              all         DROP             info
+             all                all         REJECT           info

+
+
+
+
+


+
+
+
+
+

Εν συνεχεία κάνοντας πάλι χρήση του προγράμματος nano ανοίγουμε το αρχείο :

+
+
+

/etc/shorewall/rules

+
+
+

Στο πεδίο ACTION γράφουμε την επιτρεπόμενη ενέργεια για τα δίκτυα που αντιστοιχίζονται με κάποια απο τις εγγραφές.
+Στο πεδίο Source γράφουμε το δίκτυο της πηγής μας.
+Στο πεδίο Dest γράφουμε τοδίκτυο προορισμού.
+Στο πεδίο PROTO γράφουμε το είδος του πρωτοκόλλου που θα χρησιμοποιήσουμε.
+Στο πεδίο DEST_PORT την θύρα προορισμού.
+Στο πεδίο SOURCE_PORT την θύρα της πηγής.

+
+
+ + + + + +
+ + +Τα ονόματα των πεδίων δεν είναι αναγκάιο ούτε να υπάρχουν ούτε να έχουν αυτήν την ονομασία !!
+
+
+
+

# ACTION       SOURCE        DEST        PROTO        DEST_PORT        SOURCE_PORT
+    ACCEPT            FW              net             udp                   53
+    ACCEPT            net              FW             udp                   53
+    ACCEPT            FW              net             tcp                    80
+    ACCEPT            net              FW             tcp                    80

+
+
+
+
+


+
+
+
+
+

Τέλος (λογικά θα το έχεις καταλάβει μέχρι τώρα) κάνοντας χρήση του προγράμματος nano ανοίγουμε το αρχείο :

+
+
+

/etc/shorewall/interfaces

+
+
+

Στο πεδίο ZONE γράφουμε την ονομασία της ζώνης που καθορίσαμε στο αρχείο ZONES
+Στο πεδίο ΙΝΤ γράφουμε την διεπαφή που θέλουμε να αντιστοιχίσουμε με την εκάστοτε ζώνη.
+Στο πεδίο BROADCAST εάν βάλουμε την επιλογή detect τότε το shorewall θα ψάξει μόνο του να βρει την broacast διευθυνση του δικτύου.
+Στο πεδίο OPTIONS μορούμε να βάλουμε διάφορες επιλογές για την διεπαφή της εγγραφής.

+
+
+ + + + + +
+ + +Τα ονόματα των πεδίων δεν είναι αναγκάιο ούτε να υπάρχουν ούτε να έχουν αυτήν την ονομασία !!
+
+
+
+

# ZONE      INT      BROADCAST      OPTIONS      
+      net        eth0          
+      loc         eth0          detect
+      dmz       eth0        

+
+
+
+
+


+

+
+
+
+
+
+
+

2. SSH

+
+
+

2.1. Τι είναι το SSH.

+
+
+
    To SSH (Secure Shell) παρέχει στους χρήστες ένα ασφαλές, κρυπτογραφημένο μηχανισμό για σύνδεση , εκτέλεση εντολών και μεταφορά αρχείων.
+Το SSH χρησιμοποιεί συνήθως την θύρα 22 για την σύνδεση ανάμεσα στον υπολογιστή σας και έναν άλλο υπολογιστή ή συσκευή στο Internet ή στο τοπικό σας δίκτυο.
+Ένα κλασσικό παράδειγμα χρήσης του είναι διαχειριστές μίας εταιρείας να συνδέονταθ εξ'αποστάσεως για τον ελέγχου για τη διαχείριση των υπολογιστών των επιχειρήσεων τους.
+
+
+
+
+

2.2. Δημιουργια SSH Tunneling

+
+
+
+

Για την επίλυση του ερωτήματος θα πρέπει να γίνουν δύο συραγγώσεις δεσμέυοντας τις ζητούμες θύρες για κάθε μία απο αυτές .
+Η πρώτη σύράγγωση θα είναι μεταξύ του υπολογιστή μας προς ένα conτainer (master) .
+Στην συνέχεια πρέπει να δημιουργηθεί μία δευτερη συράγγωση απο το container (master) προς ένα άλλο container του σμήνους, στο οποίο θα πρέπει να βρίσκεται ο HTTP server (apache2).

+
+
+

ssh -t -L 9000:localhost:8080 user@IP_Address ssh -L 8080:localhost:80 user@IP_address

+
+
+ + + + + +
+ + +Για τις ports του παραδέιγματος το λειτουργικό σύστημα δεν μας άφησε να τις δεσμέυσουμε, στην πράξη χρησιμοποιήσαμε ports μη δεσμευμένες απο το σύστημα, εκτός της 80 !!! +
+
+
+
+
+
+ssh edited +
+
+
+


+

+
+
+
+
+
+

3. Virtual Private Network (VPN)

+
+
+

3.1. Τι είναι το VPN

+
+
+
To VPN είναι ένα εικονικό δίκτυο το οποιο προσφέρει ιδιωτική επικοινωνία πάνω σε ένα δημόσιο δίκτυο π.χ διαδίκτυο. Το VPN παρέχει δυνατότητες κρυπτογράφησης της επικοινωνίας και την χρήση διαπιστευτηρίων για την κάθε σύνδεση. Θα μπορούσαμε να πούμε οτι το VPN είναι μία ποιο οικονομική εναλλακτικη των μισθωμένων γραμμών .
+
+
+
+
+

3.2. Δημιουργια VPN server, χρήστη και σύνδεση του στον server

+
+

3.2.1. Network Create

+
+
+
+

docker network create --attachable=true --driver=bridge --subnet=subnet_IP/Preffix --gateway=Gateway_IP Network_Name

+
+
+
+
+
+

3.2.2. Container Configuration

+
+
+
+ + + + + +
+ + +Δημιουργούμε έναν φάκελο η χρησιμοποιούμε έναν ήδη υπάρχουν στον οποίο θα αποθηκευτούν οι ρυθμίσεις του VPN server για να γίνει η αντιγραφή τους στον container που θα τον εγκαταστήσουμε.
+Για το παράδειγμά μας θα υποθέσουμε οτι ο φάκελος αυτός είναι:
+
+
+
+

/home/username/vpn_data

+
+
+


+docker run --net=none -it -v /home/username/vpn_data:/etc/openvpn --rm registry.vlabs.uniwa.gr:5080/myownvpn ovpn_genconfig -u udp://Host_IP_Address:Port -N -d -c -p "route container Network_Address Subnet_Mask" -e "topology subnet" -s 10.65.0.0/16 (οι διευθύνσεις που θα εκχωρηθούν στους χρήστες που σύνδεόνται στον VPN Server).

+
+
+
+
+
+

3.2.3. Key Creation

+
+
+
+

Με την παρακάτω εντολή δημιουργούμε το Private Key του VPN server μας:

+
+
+

docker run --net=none -v /home/username/vpn_data:/etc/openvpn --rm -it registry.vlabs.uniwa.gr:5080/myownvpn ovpn_initpki

+
+
+
+
+
+

3.2.4. Create VPN

+
+
+
+

docker run --detach --name VPN_Server_NAME -v /home/username/vpn_data:/etc/openvpn --net=Docker_network_name --ip=VPN_Server_container_IP  -p 1112:1194/udp --cap-add=NET_ADMIN registry.vlabs.uniwa.gr:5080/myownvpn

+
+
+
+
+
+

3.2.5. User Creation

+
+
+
+

Με την παρακάτω εντολή δημιουργούμε έναν χρήστη με το όνομα της επιλογής μας χωρίς κωδικό πρόσβασης:

+
+
+

docker run -v /home/username/vpn_data:/etc/openvpn --rm -it registry.vlabs.uniwa.gr:5080/myownvpn easyrsa build-client-full VPN_username nopass

+
+
+
+
+


+
+

+
+
+

Any Question’s ???

+
+
+


+

+
+
+
+187 +
+
+
+
+
+
+
+ + + \ No newline at end of file