Έχεις κοινή φιλοξενία και ανησυχούμε για την ασφάλεια; Εδώ είναι τι πρέπει να ξέρετε

Διαφήμιση

Διαφήμιση
Διαφήμιση

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

Αλλά τι συμβαίνει όταν δεν γίνεται καλά;

Λοιπόν, αυτό συμβαίνει όταν αρχίζουν να εισέρχονται επικίνδυνα ζητήματα ασφαλείας. Αυτό συμβαίνει όταν ο ιστότοπός σας κινδυνεύει να παραβιαστεί ή τα προσωπικά δεδομένα που κρατάτε διαρρεύσει. Αλλά μην ανησυχείτε. Η μεγάλη πλειοψηφία των οικοδεσπότες Ιστού έχει αξιοπρεπή μέτρα ασφαλείας. Είναι μόνο οι οικοδεσπότες πεζοπορίας-υπογείου, που πρέπει να προσέχετε.

sharedhosting-hacker

Θα εξετάσουμε τα θέματα ασφαλείας που αφορούν την κοινή φιλοξενία. Αλλά πρώτα, ας μιλήσουμε για το τι κάνει την κοινή πλατφόρμα φιλοξενίας ασφαλής.

Τι κάνει ένα ασφαλές οικοδεσπότη Ιστού

Υπάρχουν μερικές ξεχωριστές εκτιμήσεις ασφάλειας που πρέπει να γίνουν όσον αφορά την κοινή φιλοξενία.

  • Κάθε χρήστης του διακομιστή θα πρέπει να απομονώνεται από άλλους χρήστες και δεν θα πρέπει να έχει πρόσβαση ή να τροποποιεί τα αρχεία άλλων χρηστών.
  • Ένα θέμα ευπάθειας ασφαλείας στη λογική μιας ιστοσελίδας που φιλοξενείται στον διακομιστή δεν θα πρέπει να μπορεί να επηρεάσει άλλους χρήστες.
  • Ο διακομιστής ενημερώνεται τακτικά και ενημερώνεται για την αντιμετώπιση των ζητημάτων αρχιτεκτονικής ασφάλειας.
  • Κάθε χρήστης θα πρέπει να έχει τη δική του απομονωμένη πρόσβαση σε βάση δεδομένων και δεν πρέπει να επιτρέπεται να κάνει αλλαγές στις αποθηκευμένες εγγραφές ή τα δικαιώματα πίνακα άλλων χρηστών.

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

Αλλά πρώτα, μια αποκήρυξη

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

Η ασφάλεια είναι, με μια λέξη, μεγάλη. Υπάρχουν πολλοί τρόποι με τους οποίους μπορείτε να συμβιβαστείτε με έναν ιστότοπο. Αυτό είναι διπλό για κοινή φιλοξενία. Η κάλυψή τους σε ένα μόνο άρθρο δεν ήταν ποτέ στις κάρτες.

sharedhosting-disclaimer

Εάν είστε παρανοϊκοί για την ασφάλειά σας, αποκτήστε έναν VPS ή έναν ειδικό διακομιστή. Αυτά είναι περιβάλλοντα στα οποία έχετε (ως επί το πλείστον) απόλυτο έλεγχο σε ό, τι συμβαίνει. Εάν δεν είστε σίγουροι για τα διάφορα είδη web hosting, ελέγξτε έξω αυτή την ανάρτηση Οι διάφορες μορφές φιλοξενίας ιστοσελίδων εξηγούνται [Τεχνολογία εξηγείται] Οι διάφορες μορφές φιλοξενίας ιστοσελίδων εξηγούνται [Τεχνολογία εξηγείται] Διαβάστε περισσότερα από τον συνάδελφό μου, James Bruce.

Θα πρέπει επίσης να τονίσω ότι αυτή η θέση δεν πρέπει να εκληφθεί ως επίθεση στην κοινή φιλοξενία. Μάλλον, είναι μια καθαρά ακαδημαϊκή ματιά στα θέματα ασφάλειας που περιβάλλουν αυτή την κατηγορία της φιλοξενίας ιστοσελίδων.

Κατάλογος Traversal

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

Σε καθαρά αγγλικά; Λοιπόν, ας φανταστούμε ότι η Alice και ο Bob χρησιμοποιούν τον ίδιο διακομιστή για να φιλοξενήσουν τους ιστοτόπους τους. Τα αρχεία της Alice αποθηκεύονται στο / var / www / alice, ενώ τα αρχεία του Bob μπορούν να βρεθούν στο / var / www / bob. Επιπλέον, ας υποθέσουμε ότι υπάρχει ένας άλλος φάκελος στον εξυπηρετητή (/ usr / crappyhosting / myfolder) που περιέχει ένα μη κρυπτογραφημένο αρχείο plaintext (θα το ονομάσουμε pwd.txt) που περιέχει τα ονόματα χρήστη και τους κωδικούς πρόσβασης του συστήματος.

sharedhosting-server

Με μένα μέχρι τώρα; Καλός. Τώρα, ας φανταστούμε ότι ο ιστότοπος του Bob διαχειρίζεται αρχεία PDF που παράγονται τοπικά και το τοπικό αρχείο αναφέρεται στη διεύθυνση URL. Κάτι όπως:

 http://example.com/file?=report.pdf 

Τι θα συμβεί αν αντικαταστήσω την 'report.pdf' με ορισμένες παραμέτρους UNIX που αλλάζουν τον κατάλογο;

 http://example.com/file?=../alice/ 

Εάν ο διακομιστής έχει ρυθμιστεί λανθασμένα, αυτό θα σας επιτρέψει να δείτε τη ρίζα του εγγράφου της Alice. Ενδιαφέρουσες, αλλά, ενδιαφέρουμε πολύ περισσότερο για αυτό το ζουμερό αρχείο διαβατηρίων. Κωδικοί πρόσβασης Accio !

 http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt 

Είναι πραγματικά τόσο εύκολο. Αλλά πώς θα το αντιμετωπίσουμε; Αυτό είναι εύκολο.

Έχετε ποτέ ακούσει μια λίγο γνωστή χρησιμότητα Linux που ονομάζεται chroot ; Ίσως έχετε ήδη μαντέψει τι κάνει. Θέτει τη ρίζα του Linux / UNIX σε έναν αυθαίρετο φάκελο, καθιστώντας έτσι αδύνατη την έξοδο από τους χρήστες. Αποτελεσματικά, σταματά τις επιθέσεις κατάταξης καταλόγων στα κομμάτια τους.

shared-chroot

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

Χρησιμοποιείτε το δικό σας κοινόχρηστο διακομιστή φιλοξενίας και δεν χρησιμοποιείτε chroot για την προστασία των χρηστών σας; Είναι βέβαιο ότι η συσσώρευση των περιβαλλόντων σας μπορεί να είναι δύσκολη. Ευτυχώς, υπάρχει μια πληθώρα plugin που το καθιστούν εύκολο. Ρίξτε μια ματιά στο mod_chroot, ειδικότερα.

Εντολή έγχυσης

Ας επιστρέψουμε στην Αλίκη και τον Μπομπ. Γνωρίζουμε λοιπόν ότι η διαδικτυακή εφαρμογή του Bob έχει μερικές ... Ahem ... θέματα ασφάλειας σε αυτό. Ένα από αυτά είναι το τρωτό σημείο της ένεσης εντολών, το οποίο σας επιτρέπει να εκτελέσετε αυθαίρετες εντολές συστήματος Ένας γρήγορος οδηγός για να ξεκινήσετε με τη γραμμή εντολών Linux Ένας γρήγορος οδηγός για να ξεκινήσετε με τη γραμμή εντολών Linux Μπορείτε να κάνετε πολλά εκπληκτικά πράγματα με εντολές στο Linux και δεν είναι πραγματικά δύσκολο να μάθεις. Διαβάστε περισσότερα .

Ο ιστότοπος του Bob σας επιτρέπει να εκτελέσετε ένα ερώτημα whois σε έναν άλλο ιστότοπο ο οποίος στη συνέχεια εμφανίζεται στο πρόγραμμα περιήγησης. Υπάρχει ένα τυποποιημένο πλαίσιο εισαγωγής HTML το οποίο δέχεται ένα όνομα τομέα και στη συνέχεια εκτελεί την εντολή συστήματος whois. Αυτή η εντολή εκτελείται καλώντας την εντολή system () PHP.

Τι θα συμβεί αν κάποιος εισάγει την ακόλουθη τιμή;

 example.com && cd ../alice/ && rm index.html 

Λοιπόν, ας το σπάσουμε. Κάποια από αυτά μπορεί να σας είναι γνωστά εάν έχετε διαβάσει τον οδηγό μας "Ξεκινώντας τον Οδηγό για το Linux" Οδηγός Ξεκινώντας Οδηγός Linux Ξεκινώντας Οδηγός για το Linux Οδηγός Ξεκινώντας τον Newbie για το Linux! Ίσως έχετε ακούσει για το Linux, το ελεύθερο λειτουργικό σύστημα ανοιχτού κώδικα που σπρώχνει εναντίον της Microsoft. Διαβάστε το Περισσότερα Ηλεκτρονικό βιβλίο, το οποίο δημοσιεύσαμε στο παρελθόν το 2010, ή εξετάσαμε το Cheat Sheet του Linux Command Line.

Πρώτον, θα εκτελέσει ερώτημα whois στο example.com. Στη συνέχεια θα άλλαζε τον τρέχοντα κατάλογο εργασίας στη ρίζα του εγγράφου της Alice. Στη συνέχεια θα αφαιρέσει το αρχείο που ονομάζεται 'index.html' που είναι η σελίδα ευρετηρίου στον ιστότοπό της. Αυτό δεν είναι καλό. Οχι κύριε.

sharedhosting-linux

Έτσι, ως διαχειριστές συστημάτων, πώς μπορούμε να μετριάσουμε αυτό; Λοιπόν, επιστρέφοντας στο προηγούμενο παράδειγμα, μπορούμε πάντα να βάλουμε κάθε χρήστη στο δικό του απομονωμένο, απολυμασμένο, chrooted περιβάλλον.

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

Εξετάζοντας την PHP ειδικότερα, μπορείτε να καταργήσετε τη λειτουργικότητα με το επίσημο πακέτο εργαλείων Runkit - PHP για την τροποποίηση της λειτουργικότητας της γλώσσας. Υπάρχει πληθώρα τεκμηρίωσης εκεί έξω. Διαβάστε σε αυτό.

Μπορείτε επίσης να τροποποιήσετε το αρχείο ρυθμίσεων της PHP (php.ini) για να απενεργοποιήσετε τις λειτουργίες που συχνά υποβάλλονται σε κατάχρηση από τους hackers. Για να το κάνετε αυτό, ανοίξτε ένα τερματικό στον διακομιστή σας και ανοίξτε το αρχείο php.ini σε ένα πρόγραμμα επεξεργασίας κειμένου. Μου αρέσει να χρησιμοποιώ το VIM, αλλά το NANO είναι επίσης αποδεκτό.

Βρείτε τη γραμμή που αρχίζει με disable_functions και προσθέστε τους ορισμούς των λειτουργιών που θέλετε να απαγορεύσετε. Σε αυτή την περίπτωση, θα ήταν exec, shell_exec και σύστημα, αν και αξίζει να σημειωθεί ότι υπάρχουν και άλλες ενσωματωμένες λειτουργίες που είναι εκμεταλλεύσιμες από τους hackers.

 disable_functions = exec, shell_exec, σύστημα 

Γλωσσικές και ερμηνευτικές επιθέσεις

Ας δούμε λοιπόν την PHP. Αυτή είναι η γλώσσα που εξουσιοδοτεί έναν εκπληκτικό αριθμό ιστοτόπων. Έρχεται επίσης με μια σειρά από ιδιοσυγκρασίες και περίεργες συμπεριφορές. Σαν αυτό.

Η PHP χρησιμοποιείται συνήθως σε συνδυασμό με τον διακομιστή ιστού Apache. Ως επί το πλείστον, είναι αδύνατο να φορτώσετε πολλαπλές εκδόσεις της γλώσσας με αυτήν τη διαμόρφωση.

sharedhosting-phlephant

Γιατί αυτό είναι ένα πρόβλημα; Λοιπόν, ας φανταστούμε ότι η δικτυακή εφαρμογή του Bob δημιουργήθηκε αρχικά το 2002. Αυτό ήταν πολύ καιρό πριν. Αυτό ήταν πίσω όταν Michelle Branch ήταν ακόμα topping τα γραφήματα, Michael Jordan εξακολουθούσε να παίζει για τους Ουάσιγκτον Wizards και PHP ήταν μια πολύ διαφορετική γλώσσα.

Αλλά ο ιστότοπος του Bob εξακολουθεί να λειτουργεί! Χρησιμοποιεί μια ολόκληρη δέσμη διακοπτόμενων και ξεπερασμένων λειτουργιών PHP, αλλά λειτουργεί! Χρησιμοποιώντας μια σύγχρονη έκδοση της PHP θα έσπαγε αποτελεσματικά τον ιστοχώρο του Bob και γιατί θα έπρεπε ο Bob να ξαναγράψει την ιστοσελίδα του για να καλύψει τις ιδιοτροπίες του web host του;

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

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

Δεν είναι ασυνήθιστο να βλέπεις μικρότερους, ανεξάρτητους οικοδεσπότες να χρησιμοποιούν παλαιότερες εκδόσεις της PHP, ενδεχομένως εκθέτοντας τους χρήστες σε κινδύνους ασφαλείας.

Γιατί είναι αυτό κακό; Κατ 'αρχάς, θα εκθέσει τους χρήστες σε έναν αριθμό κινδύνων ασφαλείας. Όπως και τα περισσότερα μεγάλα πακέτα λογισμικού, η PHP ενημερώνεται διαρκώς για να αντιμετωπίσει την πληθώρα αδυναμιών ασφάλειας που ανακαλύπτονται συνεχώς (και αποκαλύπτονται).

Επιπλέον, αυτό σημαίνει ότι οι χρήστες δεν μπορούν να χρησιμοποιήσουν τις πιο πρόσφατες (και τις μεγαλύτερες) λειτουργίες γλώσσας. Σημαίνει επίσης ότι οι λειτουργίες που έχουν αποσυρθεί για κάποιο λόγο παραμένουν. Στην περίπτωση της γλώσσας προγραμματισμού PHP, αυτό περιλαμβάνει τις γοητευτικές (και πρόσφατα καταργημένες) λειτουργίες mysql_ που χρησιμοποιούνται για την αλληλεπίδραση με το MySQL Relational Database System και το dl (), το οποίο επιτρέπει στους χρήστες να εισάγουν τις δικές τους επεκτάσεις γλώσσας.

Ως χρήστης, θα πρέπει να μπορείτε να δείτε ποια έκδοση του διερμηνέα εκτελείται στην υπηρεσία σας. Εάν είναι ξεπερασμένη ή περιέχει πολλές αδυναμίες ασφαλείας, επικοινωνήστε με τον κεντρικό υπολογιστή σας.

Τι γίνεται με sysadmins; Έχετε μερικές επιλογές εδώ. Η πρώτη (και η πιο ελπιδοφόρα) είναι να χρησιμοποιήσετε το Docker για καθέναν από τους χρήστες σας. Το Docker σας επιτρέπει να τρέχετε πολλαπλά, απομονωμένα περιβάλλοντα ταυτόχρονα, όπως και μια εικονική μηχανή, αν και δεν χρειάζεται να τρέξετε άλλο λειτουργικό σύστημα. Ως αποτέλεσμα, αυτό είναι γρήγορο. Πραγματικά, πραγματικά γρήγορα.

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

Αυτό έχει επίσης το πλεονέκτημα ότι είναι γλωσσική αγνωστικιστική. PHP, Python, Ruby. Οτιδήποτε. Είναι όλα τα ίδια.

Δεν έχετε εφιάλτες.

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

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

Μια καλή αρχή είναι με τη νέα λειτουργικότητα επικύρωσης φόρμας HTML5. Έχουμε μιλήσει γι 'αυτό πριν από τον οδηγό HTML5. Συλλογικά, μπορούμε να κάνουμε τους ιστότοπους πιο ασφαλείς, καθώς είμαστε καλύτεροι, πιο συνειδητοί προγραμματιστές.

Όπως πάντα, είμαι επάνω για να ακούσω τις σκέψεις σας. Αφήστε μου ένα σχόλιο παρακάτω.

Photo Credit: Ο καθένας χρειάζεται έναν χάκερ (Alexandre Dulaunoy), ένα αυτοκόλλητο στο παράθυρο ταξί (Cory Doctorow), ένα δωμάτιο διακομιστή (Torkild Retvedt), Linux βιβλία και περιοδικά (library_mistress), PHP Elephant (Markus Tacker)

In this article