Το προφίλ μας στο Google Plus
0

Οι δικτυακές γέφυρες, αλλά από την αρχή

Στον κόσμο των δικτύων υπάρχουν κάποιες τεχνολογίες για τις οποίες ναι μεν μπορεί κάποτε να έχεις ακούσει κάτι, ωστόσο ποτέ δεν τους έχεις δώσει σημασία για πάνω από 8 δευτερόλεπτα. Κι όμως, αν τύχει και μάθεις καλύτερα σε τι αφορούν, τότε συναρπάζεσαι από τις πιθανές εφαρμογές και η άποψή σου για το τι είναι, π.χ., τοπικό δίκτυο, αλλάζει για πάντα. Νομίζετε ότι υπερβάλλουμε; Ελάτε μαζί μας σε μια ξενάγηση σ’ ένα τοπίο όπου επικρατούν οι γέφυρες — και μετά τα ξαναλέμε :)

Το modem που έχετε στο σπίτι σας κατά πάσα πιθανότητα είναι και δρομολογητής (router). Είναι μάλιστα τόσο συνηθισμένα τα επονομαζόμενα modem/routers, που συχνά μιλάμε μόνο για modem ή μόνο για router και στην πραγματικότητα εννοούμε μια συσκευή που ενσωματώνει τις λειτουργίες και των δύο. Μερικά χρόνια πριν, πάντως, δεν ήταν καθόλου παράξενο να βάζει κάποιος νέα σύνδεση Ίντερνετ, κι από τον ISP να παίρνει ένα σκέτο (DSL) modem. Αν ο ίδιος κάποιος ήθελε Ίντερνετ για έναν υπολογιστή και μόνο, τότε λίγο –αν όχι καθόλου– ενδιαφερόταν για το ότι διαθέτει ένα απλό μοντεμάκι, χωρίς δυνατότητες routing (και χωρίς firewall). Αν όμως κάποια στιγμή επιθυμούσε να μοιράσει το Ίντερνετ σε περισσότερα από ένα μηχανήματα, τότε είτε αγόραζε έναν ξεχωριστό router –ενδεχομένως και με δυνατότητες wireless–, είτε μετέτρεπε έναν ολόκληρο υπολογιστή σε router. Σε κάθε περίπτωση, η ιδέα είναι ότι στην πρώτη γραμμή έχουμε το modem, το οποίο βλέπει απευθείας το Ίντερνετ, πίσω από το modem έχουμε τον router, που είναι αυτόνομη συσκευή ή υπολογιστής, ενώ πίσω από τον router έχουμε έναν ή περισσότερους υπολογιστές ή συσκευές, οι οποίοι χάρη στον router μπορούν να επικοινωνούν μεταξύ τους αλλά και να βγαίνουν στο Ίντερνετ μοιραζόμενοι, ουσιαστικά, μία και μόνο σύνδεση.

Στον δρόμο προς το Internet. Διόρθωση: Σε έναν δρόμο προς το Internet.

Στο δρόμο προς το Internet, οι υπολογιστές ενός τoπικού δικτύου συναντούν ένα wireless access point (WAP) κι ένα switch. Μετά καταλήγουν όλοι στον router, εκείνος μιλάει με το modem κι αυτό, με τη σειρά του, διατηρεί τη σύνδεση στο Internet. Στην πλειονότητα των οικιακών τοπικών δικτύων, το WAP κατά πάσα πιθανότητα ενσωματώνεται από τον router, ενώ στη θέση του switch έχουμε μια γέφυρα η οποία, υπό μία έννοια, ομαδοποιεί το WAP με τα Ethernet ports του router. Επίσης, ο router μάλλον ενσωματώνει και το modem. Αν τώρα σκοπεύετε να γυρίσετε την πλάτη στη συσκευή “όλα σ’ ένα” που σας έδωσε ο ISP σας και να φτιάξετε τον δικό σας υπέρ-router, τότε κατά πάσα πιθανότητα θα στήσετε κι ένα bridge. Λεπτομέρειες επ’ αυτού στο άρθρο που αρχίζει από τη σελίδα 40.

Σημείωση. Η έως τώρα εισαγωγή αν όχι παράξενη μάλλον φαντάζει περιττή, για ένα άρθρο με θέμα το bridging. Κρίνεται όμως από τον γράφοντα ως απαραίτητη για μια ομαλή προσέγγιση στο όλο θέμα, ειδικά από τη στιγμή που το περιοδικό το διαβάζουν και φίλοι χωρίς τις γνώσεις που για άλλους θεωρούνται δεδομένες. Προς τους φίλους που τώρα μαθαίνουν, λοιπόν, συστήνουμε υπομονή, επιμονή και φυσικά διαρκή πειραματισμό. Τους υποσχόμαστε ότι, πολύ πιο σύντομα απ’ όσο φαντάζονται, θα είναι σε θέση να καταλαβαίνουν πολλά περισσότερα απ’ όσα καταλαβαίνουν αυτή τη στιγμή. Στους υπόλοιπους φίλους, συστήνουμε απλά υπομονή :P

Το bridge που υλοποιεί το modem/router που έχουμε από τον ISP μας, όπως φαίνεται από το web panel της συσκευής. Όπως βλέπετε, γεφυρώνει τέσσερα Ethernet ports και το wireless access point.

Το bridge που υλοποιεί το modem/router που έχουμε από τον ISP μας, όπως φαίνεται από το web panel της συσκευής. Όπως βλέπετε, γεφυρώνει τέσσερα Ethernet ports και το wireless access point.

Σήμερα, πάντως, είναι σχεδόν βέβαιο ότι όλοι διαθέτουμε modem που ταυτόχρονα είναι και router. Πιθανώς μάλιστα ενσωματώνει κι ασύρματο access point (wireless access point ή WAP), ενώ πέρα από τη θύρα WAN, πάνω στην οποία έχουμε το καλώδιο της ιντερνετικής σύνδεσης, υπάρχουν μία ή και περισσότερες θύρες LAN για τους ενσύρματους πελάτες (clients). Αν τώρα το modem/router έχει μία μόνο θύρα LAN, αλλά εμείς θέλουμε να συνδέσουμε περισσότερους από έναν υπολογιστές ενσύρματα, τότε στην εν λόγω θύρα βάζουμε ένα switch. Ένα τυπικό switch διαθέτει τέσσερις θύρες, άρα αμέσως αμέσως πάνω στο modem/router μπορούμε να έχουμε έως και τέσσερις ενσύρματα συνδεδεμένους υπολογιστές — και μην ξεχνάτε και τις συσκευές που συνδέονται ασύρματα.

Πάρτε τώρα ένα modem/router που δεν έχει WAP αλλά διαθέτει περισσότερες από μία θύρες LAN (συγκεκριμένα, πρόκειται για Ethernet ports). Ακόμη και σ’ αυτό μπορούμε να προσθέσουμε ένα ή περισσότερα switches, καταλαβαίνουμε όμως ότι για αρκετές περιπτώσεις/σενάρια δεν είναι απαραίτητο. Ας αφήσουμε λοιπόν τα switches στην άκρη κι ας αναλογιστούμε το εξής: Η συμπεριφορά όλων των Ethernet ports του modem/router, παραπέμπει στη συμπεριφορά ενός switch. Είναι μάλιστα λογικό να υποθέσουμε ότι η συσκευή έχει ενσωματωμένο κάποιο switch, ωστόσο αυτό δεν ισχύει: Μπορεί όλες μαζί οι θύρες πράγματι να συμπεριφέρονται ως ένα switch, στην πραγματικότητα όμως είναι μόνο λογικά γεφυρωμένες. Με τον όρο “λογικά”, εννοούμε ότι δεν υπάρχει κάποιο έξτρα hardware που τις γεφυρώνει: Το λειτουργικό σύστημα του modem/router τρέχει κατάλληλο λογισμικό, το οποίο αναλαμβάνει να κάνει το εν λόγω γεφύρωμα. Αν και, διαισθητικά τουλάχιστον, καταλαβαίνουμε τι περίπου είναι αυτό το γεφύρωμα (bridging) που ξαφνικά βάλαμε στην κουβέντα μας, προφανώς δεν έχουμε ακόμα εξηγήσει επαρκώς περί τίνος πρόκειται. Σε λίγο θα το κάνουμε, όμως προς το παρόν λάβετε υπόψη ότι bridging δεν γίνεται μόνο μεταξύ network interfaces του ίδιου τύπου (π.χ., Ethernet interfaces). Πράγματι, κάλλιστα μπορούμε να έχουμε γεφυρωμένα κάποια Ethernet interfaces μαζί με ένα ή περισσότερα wireless interfaces. Στην πραγματικότητα, αυτό ακριβώς συμβαίνει σε κάθε (modem) router που είναι wireless access point κι έχει τουλάχιστον ένα Ethernet port: Όλα τα network interfaces για τους πελάτες, είναι πράγματι γεφυρωμένα. Το γεγονός αυτό ίσως φαίνεται κι από το web panel του router σας.

Σχηματική αναπαράσταση μιας συσκευής bridge, που γεφυρώνει τρία διαφορετικά τοπικά δίκτυα. Τα bridges είναι πιο εξειδικευμένα από τα routers και λειτουργούν στα δύο πρώτα επίπεδα του μοντέλου OSI (physical layer και data link layer), ακριβώς κάτω από το επίπεδο όπου λαμβάνει χώρα το routing (network layer).

Σχηματική αναπαράσταση μιας συσκευής bridge, που γεφυρώνει τρία διαφορετικά τοπικά δίκτυα. Τα bridges είναι πιο εξειδικευμένα από τα routers και λειτουργούν στα δύο πρώτα επίπεδα του μοντέλου OSI (physical layer και data link layer), ακριβώς κάτω από το επίπεδο όπου λαμβάνει χώρα το routing (network layer).

Σε κάθε περίπτωση, όλοι οι υπολογιστές ή/και οι συσκευές που συνδέονται ενσύρματα ή ασύρματα πάνω στον ίδιο router, έχουν διευθύνσεις IP της αυτής μορφής, δηλαδή διευθύνσεις από το ίδιο subnet (π.χ., 192.168.1.x ή 10.0.0.x). Τις διευθύνσεις IP είναι πολύ πιθανό να τις μοιράζει αυτόματα ο λεγόμενος DHCP server της συσκευής. Όπως και να ‘χει, η δρομολόγηση ή/και το μοίρασμα διευθύνσεων γίνονται από ένα κοινό, εικονικό network interface: Είναι αυτό του λεγόμενου bridge interface, το οποίο “ενώνει” όλα τα άλλα network interfaces, ασχέτως αν είναι wireless ή wired. Και μια τελευταία παρατήρηση: Δεν είναι υποχρεωτικό ότι, σε κάθε router, όλα τα network interfaces για τους clients είναι γεφυρωμένα μεταξύ τους. Μπορεί, π.χ., να στήσετε τον δικό σας router με το pfSense ή με το OpenBSD (εντελώς τυχαία παραδείγματα) και να μη γεφυρώσετε τίποτε ή να φτιάξετε παραπάνω από μία γέφυρες (bridge groups, όπως ονομάζονται). Πάντως σε έναν απλό, τυπικό (οικιακό) router, θα υπάρχει ένα και μόνο bridge.

Το bridging, λίγο πιο κοντά

Γενικά, μπορούμε να πούμε ότι το bridging ορίζεται ως η τεχνική που επιτρέπει σε δύο ή περισσότερα τοπικά δίκτυα (LANs) να συγκροτούν ένα ευρύτερο, ενιαίο δίκτυο. Παρατηρήστε ότι το routing είναι κάτι γενικότερο, αφού αυτό επιτρέπει σε δύο ή περισσότερα δίκτυα να επικοινωνούν μεταξύ τους παραμένοντας, όμως, εντελώς ανεξάρτητα. Πράγματι, το bridging λαμβάνει χώρα στα δύο πρώτα επίπεδα του μοντέλου OSI (physical layer και data link layer), ακριβώς κάτω από το επίπεδο όπου λαμβάνει χώρα το routing (network layer). Το bridging επιτυγχάνεται από hardware ή από software. Τα πρακτικά παραδείγματα που δείχνουμε στο άρθρο της σελίδας 40, αφορούν αποκλειστικά σε υλοποιήσεις software.

Στο σημείο αυτό, λογικό είναι ν’ αναρωτηθεί κάποιος το εξής: Αντί να έχουμε ένα bridge μεταξύ δύο ή περισσότερων δικτύων, γιατί να να μη φτιάξουμε από την αρχή ένα μεγαλύτερο δίκτυο, που να περιλαμβάνει τα επί μέρους; Υπάρχουν διάφοροι λόγοι — και παραθέτουμε τρεις από τους κυριότερους.

Αξιοπιστία. Μια οποιαδήποτε βλάβη σ’ ένα (σχετικά) μεγάλο τοπικό δίκτυο, θα έχει ως αποτέλεσμα την αδυναμία επικοινωνίας μεταξύ όλων των μελών του. Αν, από την άλλη, έχουμε δύο ή περισσότερα γεφυρωμένα δίκτυα, τότε πιθανή βλάβη σε κάποιο δίκτυο δεν θα επηρεάσει αρνητικά τη δυνατότητα επικοινωνίας μεταξύ των μελών άλλων δικτύων.

Επιδόσεις. Όσο μεγαλώνει ένα δίκτυο, μ’ άλλα λόγια όσα περισσότερα μηχανήματα και συσκευές συμμετέχουν σ’ αυτό, τόσο περισσότερο μειώνονται οι επιδόσεις του. Μια καλή πρακτική είναι να οργανώνουμε μηχανήματα και συσκευές σε ξεχωριστά δίκτυα, ώστε η ενδοδικτυακή κίνηση πακέτων να είναι σχεδόν πάντα μεγαλύτερη από τη διαδικτυακή. Βεβαίως, ακριβώς επειδή σε πάμπολλες περιπτώσεις είναι επιθυμητή και αυτή η διαδικτυακή επικοινωνία, τα επιμέρους δίκτυα γεφυρώνονται.

Εγκαταστήσατε το λειτουργικό της αρεσκείας σας στον ωραιότατο --αλλά και πανίσχυρο-- router που φτιάχνετε, ολοκληρώσατε και τις βασικές ρυθμίσεις. Μένει να στήσετε και το bridging, ώστε σε οποιαδήποτε από τα διαθέσιμα Ethernet ports κι αν συνδέετε κάποιον client, αυτός να παίρνει IP από το κοινό pool που διαχειρίζεται ο DHCP server του router. Φυσικά, όλοι οι clients θα μπορούν να επικοινωνούν μεταξύ τους και να βγαίνουν στο Internet -- εκτός βέβαια κι αν προσθέσετε κάποιον περιοριστικό κανόνα στο firewall.

Εγκαταστήσατε το λειτουργικό της αρεσκείας σας στον ωραιότατο –αλλά και πανίσχυρο– router που φτιάχνετε, ολοκληρώσατε και τις βασικές ρυθμίσεις. Μένει να στήσετε και το bridging, ώστε σε οποιαδήποτε από τα διαθέσιμα Ethernet ports κι αν συνδέετε κάποιον client, αυτός να παίρνει IP από το κοινό pool που διαχειρίζεται ο DHCP server του router. Φυσικά, όλοι οι clients θα μπορούν να επικοινωνούν μεταξύ τους και να βγαίνουν στο Internet — εκτός βέβαια κι αν προσθέσετε κάποιον περιοριστικό κανόνα στο firewall.

Ασφάλεια. Αναλόγως του περιβάλλοντος, εντός του ίδιου οργανισμού είναι πολύ καλή ιδέα να ‘χουμε ξεχωριστά δίκτυα για χρήστες που κάνουν εντελώς διαφορετικές εργασίες ή/και έχουν εντελώς διαφορετικούς ρόλους. Σε μια εταιρεία, π.χ., είναι πιθανό να συναντήσουμε ένα μικρό (ενσύρματο ή/και ασύρματο) δίκτυο για τους επισκέπτες, άλλο ένα για τη γραματεία, άλλο για όσους εμπλέκονται με τον στρατηγικό σχεδιασμό (aka “τα αφεντικά” ή “οι από πάνω”), ξεχωριστό δίκτυο για το marketing, άλλο για το λογιστήριο κ.ο.κ. Ορισμένα ή και όλα από αυτά τα διαφορετικά δίκτυα είναι πιθανό να επικοινωνούν μεταξύ τους, έστω και υπό περιορισμούς. (Στο παιχνίδι, βλέπετε, μπαίνουν και τα firewalls.)

Πώς δουλεύει το bridging;

Ο ρόλος ενός bridge interface, ασχέτως αν υλοποιείται από hardware ή software, είναι να γεφυρώνει ιδεατά δύο ή περισσότερα network interfaces, καθένα από τα οποία ορίζει ένα διαφορετικό δίκτυο. Το bridge πετυχαίνει αυτή τη λογική σύνδεση προωθώντας επιλεκτικά κάποια frames από ένα οποιοδήποτε δίκτυο στα άλλα δίκτυα (του ίδιου bridge group). Δικαιούμαστε να φανταζόμαστε ότι τα bridges συγγενεύουν με τα hubs, αρκεί να έχουμε κατά νου ότι τα bridges είναι πολύ πιο έξυπνα. Πράγματι, ένα δημοφιλές είδος bridge είναι το λεγόμενο learning bridge, το οποίο παρακολουθεί διαρκώς τα headers των εισερχόμενων frames κι έτσι μαθαίνει, σιγά σιγά, ποιοι υπολογιστές βρίσκονται σε καθένα από τα δίκτυα που γεφυρώνει.

Παρακολουθήστε λίγο πώς αντιδρά ένα learning bridge, όταν βλέπει ένα εισεργόμενο frame. Το πρώτο πράγμα που κάνει είναι να ψιλο-εκνευριστεί, αφού ησυχία δεν βρίσκει και κάθε λίγο και λιγάκι βρίσκεται κάποιος που το “τρέχει”. Πιστό ωστόσο στο καθήκον του, ξεφυσά και σημειώνει το δίκτυο από το οποίο προέρχεται το frame, καθώς και τη διεύθυνση του υπολογιστή ο οποίος το έστειλε. Αν τώρα το bridge δεν έχει ιδέα για το πού είναι το δίκτυο μέσα στο οποίο βρίσκεται ο υπολογιστής για τον οποίο προορίζεται το frame, λέει κάτι σαν “ουφ, αμάν πια μ’ αυτή την αβεβαιότητα” και προωθεί το frame σ’ όλα ανεξαιρέτως τα δίκτυα που γεφυρώνει. Αν, πάλι, κοιτάζοντας τις σημειώσεις του, δει ότι το frame είναι να πάει σε συγκεκριμένο δίκτυο, διαφορετικό απ’ αυτό που ξεκίνησε, τότε χαρούμενο που δεν θα προκαλέσει περιττή αύξηση της κυκλοφορίας στέλνει το frame απευθείας προς τα εκεί που πρέπει. Αν, τέλος, το frame δεν είναι για να φύγει από το δίκτυο από το οποίο ξεκίνησε το ταξίδι του, τότε το bridge θα χαμογελάσει σκανδαλιάρικα και θα το απορρίψει. “Ααααα, δεν ξέρω, το μηχάνημα για το οποίο προορίζεται το frame είχε κάθε ευκαιρία να το δει και να το πάρει και να το βράσει! Αν τώρα κοιμόταν ή δεν-ξέρω-κι-εγώ-τι, δικό του πρόβλημα”, λέει, κι ελπίζει στα επόμενα δέκα χιλιοστά του δευτερολέπτου να μπορέσει να πάρει έναν υπνάκο που τόσο πολύ θα ήθελε.

Με ή χωρίς τις μεταφορές σε καθημερινές καταστάσεις, νομίζουμε ότι η λειτουργία αλλά και η αποστολή των bridges έχουν πλέον γίνει κατανοητές.

Σημειώστε και κάτι τελευταίο, που αφορά στην ασφάλεια. Ορισμένες υλοποιήσεις bridges, πριν προωθήσουν ένα frame κοιτάζουν πρώτα αν περιλαμβάνει ένα IPv4 ή IPv6 datagram. Αν πράγματι περιλαμβάνει, τότε το πακέτο υπόκειται και στους ελέγχους του όποιου firewall. Χάρη στα bridges και στα firewalls, λοιπόν, είναι δυνατόν να φτιάχνουμε περίπλοκους κανόνες ώστε, π.χ., μόνο ένα μηχάνημα από το λογιστήριο να μπορεί να φτάνει στα μηχανήματα του τμήματος μάρκετινγκ κ.ο.κ.

Στην πράξη

Πηγαίνετε τώρα στο άρθρο που αρχίζει από τη σελίδα 40, ώστε να δείτε πώς υλοποιούμε bridges κάτω από δύο διαφορετικά λειτουργικά συστήματα, το pfSense και το OpenBSD, τα οποία αμφότερα είναι άριστα για τη δημιουργία πανίσχυρων κι εξαιρετικά ευέλικτων routers/firewalls.

Υπάρχει εξάλλου και μια χρήση του bridging που αποδεικνύεται ιδιαίτερα βολική σε όσους ασχολούνται με το penetration testing ή έστω σε εκείνους που παίζουν κι εξερευνούν, αν μη τι άλλο για ν’ αποδεικνύουν σε γνωστούς και φίλους ότι δεν είναι τόσο ασφαλείς όσο νομίζουν. Πολλά περισσότερα επ’ αυτού στο άρθρο που ξεκινά από τη σελίδα 64 του παρόντος τεύχους, στο οποίο συζητάμε για το λεγόμενο wireless bridging και βλέπουμε, αναλυτικά και βήμα προς βήμα, πόσο εύκολες καθιστά τις επιθέσεις Man-in-The-Middle. Πραγματοποιούμε βεβαίως και σχετική επίδειξη, μέσα από το Kali Linux.

Καλή σας διασκέδαση!

Το bridging κατά πάσα πιθανότητα το έχετε δει εν δράσει στον hypervizor που χρησιμοποιείτε -- ακόμη κι αν δεν έχετε δώσει τη δέουσα προσοχή.

Το bridging κατά πάσα πιθανότητα το έχετε δει εν δράσει στον hypervizor που χρησιμοποιείτε — ακόμη κι αν δεν έχετε δώσει τη δέουσα προσοχή. Στο screenshot βλέπουμε τις ρυθμίσεις δικτύωσης ενός VirtualBox VM. Ο Adapter 1 είναι τύπου “Bridged”, γεγονός που σημαίνει ότι με το που ενεργοποιείται η εικονική μηχανή το VirtualBox γεφυρώνει αυτόματα τον εικονικό με κάποιον από τους φυσικούς network adapters του host computer. Πρακτικό αποτέλεσμα: Το VM θα ανήκει στο ίδιο τοπικό δίκτυο που ανήκει ο host και θα βλέπει τον φυσικό router που επίσης βλέπει ο host.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων