Πέμπτη 7 Ιουνίου 2018

802.1x authentication LDAP , EAP-TTLS (bind as ldap user)


Freeradius είναι ένας RADIUS server που έχει την ιδιότητα να κάνει:
  • authentication(διαδικασία ταυτοποίησης με username και password)
  • authorization(διαδικασία που καθορίζει “ποιος θα πάρει πρόσβαση και που”)
  • accounting(διαδικασία που καταγράφει πληροφορίες ενός συστήματος, δραστηριότητες και πληροφορίες ενός χρήστη μέσα στο δίκτυο).
Στο δίκτυο υπάρχουν κάποια vlans τα οποία χωρίζουν τα groups των εργαζομένων.(sales, support, sysadmins, developers etc.)
Κάθε vlan έχει ξεχωριστά policies. Για να έχει πρόσβαση ένα pc στο δίκτυο, απαιτείται να κάνει authenticate με τα credentials του αντίστοιχου χρήστη που βρίσκεται στον LDAP Server. Αν η διαδικασία πραγματοποιηθεί, τότε ο χρήστης που ανήκει στο x ldap group, θα πρέπει να μπει και στο αντίστοιχο vlan. 

Τα passwords των χρηστών είναι αποθηκευμένα ως SSHA στον LDAP. Οπότε σύμφωνα με τον παρακάτω πίνακα, θα πρέπει να χρησημοποιηθεί είτε PAP protocol , EAP-GTC, ή EAP-TTLS(PAP).Το EAP-TTLS είναι μια μέθοδος η οποία κάνει TLS και Tunneling μεταξύ του Supplicant(end device) - Authentication Server(Freeradius) και έπειτα, μπορεί χρησημοποιήσει το authentication protocol που θελει ο χρήστης (PAP, CHAP, MSCHAP κλπ.)


Δεν θα χρησημοποιήσουμε PAP, γιατί μεταδίδει μη κρυπτογραφημένους κωδικούς μέσω δικτύου και γι αυτό θεωρείται μη ασφαλές. Θα χρησημοποιήσουμε EAP-TTLS(PAP)


Πως λειτουργεί ο freeradius;

O radius client στέλνει ένα access request στον authentication server.
O radius server το λαμβάνει, και σύμφωνα με τα modules που έχει ενεργοποιημένα στο authorized section του default configuration file, το αποδέχεται ή το απορρίπτει. Αν πουμε οτι το module που μπορεί να το εξυπηρετήσει, είναι ενεργοποιημένο, τότε το module θα κοιτάξει τα key- attributes(Pap-Challenge, Chap-Challenge κλπ) του request. Αν δει οτι μπορεί να το αναλάβει, τοτε ο freeradius προχωράει τη διαδικασία πηγαίνοντας στο authenticate section. Εκεί λοιπόν το αντίστοιχο module κοιτάζει το User-Password ή το Nt-Password attribute, και προσπαθεί να το συγκρίνει με το password που βρίσκεται στο directory ή database που συνδέεται ο radius server. Προχωράμε στο post-authentication, όπου εκεί επιβεβαιώνεται το authentication και πλέον το end-device έχει συνδεθεί στο δίκτυο μέσω 802.1x protocol.

Εγκατάσταση και παραμετροποίηση freeradius-ldap module

Πριν ξεκινήσουμε να παραμετροποιούμε τα configuration files του freeradius, θα πρέπει να εγκαταστήσουμε το freeradius-ldap module το οποίο θα χρησημοποιήσουμε για database. Για να ενεργοποιήσουμε το freeradius-ldap module, θα χρειαστεί να κάνουμε symbolic link το module απο το mods-available στο mods-enabled directory.

Ανοίγουμε το ldap module(/etc/freeradius/3.0/mods-available/ldap) και αλλάζουμε τις εξής παραμέτρους:

server = ‘ldap-server’
port = 636
base_dn = ‘dc=example,dc=com’

Στo user section:

base_dn = ‘ou=People,dc=example,dc=com’

Στο group section:

base_dn = ‘ou=Groups,dc=example,dc=com’

Αν το posixGroup object class δεν είναι δηλωμένο στο ldap group τότε πρέπει να κάνουμε comment out το membership_attribute = ‘memberOf’

Αν ο ldap-server ακούει στην πόρτα 389, δεν χρειάζεται να πειράξουμε το tls section
Στο section tls:

ca_file = το public key to ldap



Παραμετροποίηση eap module

default_eap_type = ttls

Στο section ttls:

default_eap_type = ttls
copy_request_to_tunnel = yes
use_tunneled_reply = yes
virtual-server = “ονομα του virtual-server”

Παραμετροποίηση default configuration
Στο authorize section, κάνουμε comment τα εξής:

cui
auth_log
chap
mschap
digest
wimax
IPASS 
suffix
ntdomain
unix
files
-sql
smbpasswd
daily

Στο authenticate section, αφήνουμε μόνο τo eap




Παραμετροποίηση virtual-server(inner-tunnel)

Στο authorize section αφήνουμε comment out:

files
-ldap
expiration
logintime

και προσθέτουμε:

if (User-Password) {
update control {
Auth-Type := ldap
}
}
Στο authenticate section κάνουμε comment out το section
Auth-Type LDAP {
ldap
}

και comment το eap.



Σάββατο 25 Ιουνίου 2016

Δίνοντας IPv6 σε Virtual Machines KVM μέσω libvirt

Καθώς έφτιαχνα το δίκτυο σπίτι μου, παράλληλα έψαχνα διάφορα θεματάκια για το ipv6. Σκεφτόμουν, πως θα μπορούσα να εκμεταλλευτώ αυτό το ipv6 ::/56 prefix που μου δίνει ο πάροχος Internet. Μιλάμε για πάρα πολλές διευθύνσεις, αν και εγώ χρησιμοποιώ 10-15 σε ένα το τοπικό δίκτυο. Αποφάσισα να ψάξω να βρω για το πως θα μοιράσω Ipv6 διευθύνσεις στα KVM Guests. O λόγος απλά ήταν για να μάθω πως γίνεται, να εξοικειωθώ λίγο με την ipv6 μιας και θα είναι το πρωτόκολλο ίντερνετ του μέλλοντος "οταν εξαντηθούν οι ipv4 ας πούμε", και το virtualization.
Αρχικά το πρώτο πράγμα που πρέπει να κάνουμε είναι να χωρίσουμε σωστά το prefix έτσι ώστε να μην βρίσκονται διευθυνσεις του router μας μέσα σε αυτό γιατί θα έχουμε θεματάκια. Αφού έχουμε καταλήξει πως θα χωρίσουμε το δίκτυο, παμε να βάλουμε ένα route στο router με destination address πχ το 2001:db8:ca2::/64 και το gateway απο την οποία θα βγαίνουν. Στη συνέχεια, πάμε στο network configuration αρχείο του libvirt και προσθέτουμε το εξής που ακριβώς δείχνει στο documentation της επίσημης σελίδας.
με προβλήματα όπως το να υπάρχουν διευθύνσεις του
 <ip family="ipv6" address="2001:db8:ca2::1" prefix="64" />
 </ip>

Στο address βάζουμε την διεύθυνση που θα πάρει το virbr0 interface και θα παίξει τον ρόλο του ρούτερ για τα υπόλοιπα vms. Στο prefix απλά βάζουμε το length των bits που υα καταλαμβάνει η διεύθυνση.
Μόλις γίνει και αυτό, έχουμε 2 επιλογές.
  1. 'H θα μπούμε σε κάθε vm και θα δώσουμε static ipv6 και routes
  2. Η τα vms θα πάρουν αυτόματα dynamic ips δίνοντας τα routes στο configuration file to network του libvirt και θα τα κάνει advertise στα vms. 
Να επισημάνω ότι πρέπει το ipv6.forawarding=1 να είναι uncommented (χωρίς # μπροστά)

Όταν γίνουν αυτά κάνουμε restart to libvirt και reboot τα vms.

*Λόγω περιορισμού χρόνου δεν μπορούσα να τα γράψω πιο αναλυτικά. Αν έχετε απορίες μπορείτε να μου στείλετε και είμαι στην ευχάριστη θέση να σας βοηθήσω!

Κυριακή 6 Δεκεμβρίου 2015

IPv4, IPv6 & Neighbor Discovery Protocol

Συνέχεια ακούμε για IPv6.....

Τι είναι αυτό τελικά; Γιατί βγήκε;

Ας τα πάρουμε με τη σειρά όμως....
IP(Internet Protocol) είναι το πρωτόκολλο επικοινωνίας πάνω στο οποίο έχει χτιστεί το διαδίκτυο. Μέχρι στιγμής οι πάροχοι υπηρεσιών Internet , δίνουν σε κάθε πελάτη κατά μέσο όρο μία διεύθυνση IP, ώστε να μπορέσoυν να βγουν στο διαδίκτυο με μια public . Οι διευθύνσεις αυτές μέχρι στιγμής είναι IPv4, που σημαίνει ότι δίνει 32bit (4x8) διευθύνσεις. Πχ 192.168.10.10 (11000000.10101000.00001010.00001010).Λόγω του ότι οι διευθύνσεις αυτές, έχουν περιοριστεί στον κόσμο και κάποια στιγμή θα τελειώσουν, για εξοικονόμηση των public ips τα routers κάνουν ΝΑΤ(Network Address Translation). Με λίγα λόγια, το router φτιάχνει ένα τοπικό δίκτυο, και χειροκίνητα ή με τη βοήθεια ενός dhcp-server, αναθέτουμε σε κάθε συσκευή μια local IP. Όταν μια συσκευή θέλει να πάρει public ip για να βγεί στο διαδίκτυο, τότε το ρουτερ μεταφράζει την local ip της συσκευής στην public του router. Aυτή η διαδικασία γίνεται συνεχώς για όλες τις συσκευές του τοπικού δικτύου, φροντίζοντας να εξυπηρετούνται συνεχώς όλες οι συσκευές με την ίδια public ip.
Πλέον όμως, έχουν βγει και οι IPv6 διευθύνσεις. 128bit δηλαδή  3.4×10^38 διαφορετικές διευθύνσεις. Τέρμα το ΝΑΤ. Αυτό σημαίνει ότι για 80 χρόνια από τώρα, δεν θα υπάρχει πρόβλημα περιορισμού των διευθύνσεων.  Κάθε συσκευή στο δίκτυο, παίρνει τη δική της διεύθυνση IPv6. Πχ (2101:6db7:72β3:0142:1010:8a2e:1370:8534). Δεν μπαίνω σε άλλες λεπτομέρειες..... Λίγο πολύ καταλάβατε.....Έτσι θέλω να πιστεύω.

Ένα πρόβλημα που αντιμετώπισα από τι στιγμή που άλλαξα router και έβαλα Mikrotik, ήταν το IPv6.
Προφανώς δεν ήθελε απλά να αλλάξω μόνο το username της DSL connection όπως γίνεται στα περισσότερα, αλλά να χρησιμοποιήσω το πρωτόκολλο Neighbor Discovery(IPv6 ND). Με τη βοήθεια του Neighbor Discovery Protocol, οι συσκευές που συνδέονται σε ένα δίκτυο IPv6  μπορούν να δώσουν αυτόματα στον εαυτό τους μία IPv6 διεύθυνση.Αυτό γίνεται με αποστέλλοντας ICMPv6Internet Control Message Protocol version 6 ) στον router  ζητώντας του να τους στείλει τις παραμέτρους διαμόρφωσης τους.Ο router ανταποκρίνεται σε αυτήν την αίτηση με ένα πακέτο διαφήμισης του router, το οποίο περιέχει τις παραμέτρους διαμόρφωσης του Επιπέδου Internet (Internet Layer). Ο ISP σου σου δίνει ένα ipv6 prefix π.χ.(2a22:2129:a020:8d00::/64).
 Για να πάρουν οι συσκευές IPv6 πρέπει αυτό το prefix να προστεθεί σε μια καινούρια διεύθυνση που θα δημιουργήσουμε επιλέγοντας τα interfaces του router που συνδέονται συσκευές.


Τετάρτη 18 Νοεμβρίου 2015

Τι είναι το AXFR και που χρησημοποιείται...

AXFR είναι ένας μηχανισμός, για αντιγραφή δεδομένων σε DNS Servers.  Για παράδειγμα,ας πούμε ότι στο giorgos.gr έχω δύο dns servers, ns1.giorgos.gr και ns2.giorgos.gr. Αν τροποποιήσω τα δεδομένα του giorgos.gr στον ns1.giorgos.gr, το AXFR θα τραβήξει τα δεδομένα και θα τα αντιγράψει και στον ns2.giorgos.gr.

Υπάρχουν και άλλα εργαλεία αντιγραφής δεδομένων για dns servers, όπως rsync, scp, αλλά είναι στην κρίση του διαχειριστή, ποιο θα χρησιμοποιήσει.

H παρακάτω εικόνα δείχνει πως δουλεύει...

Τρίτη 17 Νοεμβρίου 2015

Διαδικασία του SSL/TLS Handshake

Τι είναι το TLS/SSL?

To TLS(Transport Layer Security) και το SSL (Secure Socket Layer) αναφέρονται ως SSL. Είναι πρωτόκολλα κρυπτογραφίας και είναι σχεδιασμένα για να παρέχουν ασφάλεια στην επικοινωνία, σε ένα δίκτυο υπολογιστών. Πολλές εκδόσεις των πρωτοκόλλων χρησιμοποιούνται σε προγράμματα για web browsing, emails, VOIP και απευθείας μηνύματα.

Ο κύριος στόχος του TLS πρωτοκόλλου, είναι να παρέχει ιδιωτικότητα και ακεραιότητα των δεδομένων μεταξύ δύο υπολογιστών που επικοινωνούν μεταξύ τους.

Αυτή όμως η επικοινωνία γίνεται εκτελώντας μια διαδικασία του TLS πρωτοκόλλου που λέγεται "Handshake"

Κάθε επικοινωνία που εφαρμόζει τα πρωτόκολλα  TLS/SSL,  ξεκινάει το "Handshake" μια διαπραγμάτευση και από τις δύο μεριές, η οποία καθορίζει με ασφάλεια συγκεκριμένες ενέργειες που πρέπει να γίνουν, έτσι ώστε να δημιουργηθεί μια ασφαλή και κρυπτογραφιμένη επικοινωνία μεταξύ αυτών.

Η διαδικασία handshake λειτουργεί με τον εξής τρόπο:

Αρχικά ο client στέλνει ένα μήνυμα στο server που λέει, ότι θέλει να δημιουργήσει μια επικοινωνία μεταξύ τους, δείχνοντας του τα cipher suites (εργαλεία κρυπτογραφίας), και τις εκδόσεις TLS/SSL που είναι πρόθημος ο client να χρησημοποιήσει.

Ο server ανταποκρίνεται στο μήνυμα του client, λέγοντας του  ότι θα χρησιμοποιήσουν ένα συγκεκριμένο εργαλείο κρυπτογράφησης(που διαθέτουν και οι δυο), επίσης θα χρησιμοποιήσει την ίδια έκδοση TLS/SSL που χρησιμοποιήσει ο client και στη συνέχεια ο server του δείχνει το πιστοποιητικό του συμπεριλαμβάνοντας και το public key του.

Ο client επιβεβαιώνει το πιστοποιητικό του server, και παίρνει το public key. Με τη χρήση του public key, o client κρυπτογραφεί το λεγόμενο "pre-master key" και το στέλνει στον server.

O server λαμβάνοντας το "pre-master key" χρησιμοποιεί το ιδιωτικό του κλειδί (private key) για να το αποκρυπτογραφήσει.

Πλέον o server και o client χρησιμοποιούν το pre-master key για να υπολογίσουν το "shared secret key".

Ο client στέλνει ένα κρυπτογραφημένο μήνυμα με τις κατάλληλες προδιαγραφές(δηλαδή να μπορεί να αποκρυπτογραφηθεί και απο τον server) το οποίο δημιουργήθηκε με το "shared secret key".

Ο server αποκρυπτογραφεί και επαληθεύει το μήνυμα. Εάν δουλεύει, ο server θα απαντήσει με ενα κρυπτογραφημένο μηνυμα στον client, κρυπτογραφώντας το με το shared secret key.

Τέλος ο client και ο server χρησιμοποιούν την κρυπτογραφημένη σύνδεση με το shared secret key, και προστατεύουν την επικοινωνία τους για όσο διαρκεί το session.

Δευτέρα 26 Οκτωβρίου 2015

Domain Name System

Σήμερα θα εξηγήσουμε πως λειτουργεί το DNS.

Όταν κάνεις μια αναζήτηση στον υπολογιστή σου για μια σελίδα, το πρώτο πράγμα που θα κάνει το pc σου, είναι να κοιτάξει το local DNS cache το οποίο αποθηκεύει πληροφορίες τις οποίες ο υπολογιστής είχε πρόσφατα ανακτήσει.

Άν οι πληροφορίες δέν έχουν αποθηκευτεί τοπικά, ο υπολογιστής, επικοινωνεί με τους recursive DNS servers. Είναι ειδικοί servers που εκτελούν ένα DNS query. Οι Recursive servers, έχουν τα δικά τους caches (προσωρινές μνήμες), έτσι η επεξεργασία συνήθως τελειώνει εκεί και οι πληροφορίες επιστρέφονται στον χρήστη.

Άν δεν βρεθούν εκεί, κάνουν αίτημα στους root nameservers. Ένας nameserver είναι ένα pc που που απαντάει σε αιτήματα σχετικά με domains και διευθύνσεις IP. Οι root nameservers, λειτουργούν σαν έναν τηλεφωνικό κέντρο. Δεν ξέρει να απαντήσει αλλά μπορεί να κατευθύνει τα αιτήματα σε κάποιον server που ξέρει.

Οι root nameservers θα κοιτάξουν το πρώτο μέρος του domain, διαβάζοντας απο δεξιά προς τα αριστερά  home-trials.blogspot.gr και προωθούν το αίτημα στο TLD (Top Level Domain) για το gr μιας και το έχουμε στο παράδειγμά μας. Αυτοί οι nameservers, δεν έχουν τις πληροφορίες που χρειαζόμαστε αλλά μπορούν να μας αναφέρουν τους servers που έχουν πληροφορίες.

Στη συνέχεια οι nameservers  κάνουν το επόμενο ερώτημα home-trials.blogspot.gr και κατευθύνουν το ερώτημα στους authorative nameservers που είναι υπεύθυνοι  για το συγκεκριμένο domain. Οι authorative nameservers είναι οι υπεύθυνοι που ξέρουν όλες τις πληροφορίες σχετικά με το domain που αποθηκεύονται στο DNS records. Υπάρχουν πολλά ήδη records όπου ο καθένας περιέχει διαφορετικό τύπο πληροφοριών π.χ (Α, ΑΑΑΑ, CNAME, PTR, NS, SOA). Για παράδειγμα, θέλουμε να ξέρουμε την ip απο home-trials.blogspot.gr, έτσι ρωτάμε τον authorative nameserver για την διεύθυνση του  record (A).

O recursive ανακτά το A record απο τον authority nameserver και το αποθηκεύει στη local cache του. Αν κάποιος άλλος κάνει αναζήτηση της συγκεκριμένης διεύθυνσης, οι recursive servers θα έχουν ήδη απαντήσει και δεν χρειάζεται να ξαναγίνει η παραπάνω διαδικασία. Όλα τα records έχουν κάτι σαν ημερομηνία λήξης, ωστόσο ο recursive server θα χρειαστεί να ρωτήσει για τα records  για σιγουρευτεί αν όντως είναι ενημερωμένα. Αφού πάρουν απάντηση, ο recursive server επιστρέφει το A record στο PC μας. Το PC μας αποθηκεύει το record στην  cache του, διαβάζει την ip του record και περνάει πληροφορίες στον browser. Tέλος o browser ανοίγει connection στον webserver για να λάβει το website.

Σάββατο 3 Οκτωβρίου 2015

Μικρή εισαγωγή σε Proxy Server

Πρίν κάνω τις δοκιμές μου, και στήσω proxy  θα ήθελα να κάνω μια μικρή εισαγωγή στην έννοια αυτή.

Τι είναι proxy server;

Proxy Server ή αλλιώς διακομιστής μεσολάβησης είναι ένα (PC ή Virtual Machine ή ένα λογισμικό) που τρέχει  και παίζει το ρόλο του ενδιάμεσου μεταξύ ενός server και μιας τελικής συσκευής.(πχ. ένας υπολογιστής από τον οποίο ένας χρήστης ζητάει μια ιστοσελίδα από το διαδίκτυο).
Τα βασικά πλεονεκτήματα που έχει ένας proxy server είναι τα εξής:
  • Γρήγορη Μνήμη (Cache)
  • Ανώνυμη Πλοήγηση Χρηστών (Anonymizer)
  • Έλεγχος διακινούμενου Περιεχομένου (Content Management)
  • Φιλτράρισμα Κίνησης Δικτύου (Filtering)
Όταν λέμε Γρήγορη Μνήμη (Cache) εννοούμε ότι, όταν ένας proxy server δέχεται ένα αίτημα από έναν client για μια ιστοσελίδα ας πούμε, κοιτάζει το cache των προηγούμενων ιστοσελίδων και ελέγχει αν η ιστοσελίδα που ζητείται, υπάρχει στην κρυφή μνήμη.Αν η ιστοσελίδα βρεθεί, τότε ο proxy θα την επιστρέψει στον client χωρίς να γίνει αίτημα και να κατέβει από το διαδίκτυο. Αν όμως δεν βρεθεί, τότε ο proxy λειτουργεί ως client, και ζητάει την ιστοσελίδα του server στον  Internet.

 Οι proxies χρησιμοποιούνται για νόμιμους και παράνομους σκοπούς. Σε επιχειρήσεις χρησιμοποιούνται για τη διευκόλυνση της ασφάλειας, για διαχειριστικούς ελέγχους, ή cache services. Σε προσωπική χρήση, οι proxies, χρησιμοποιούνται συνήθως για προστασία ιδιωτικού απορρήτου ή ανώνυμη περιήγηση στο internet.

Τσίρκας Γεώργιος