Διαφήμιση

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

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

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

Συνιστούμε Η κοινή φιλοξενία του InMotion Hosting με χώρο αποθήκευσης SSD.

sharedhosting-hacker

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

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

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

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

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

Πρώτον, μια αποποίηση ευθυνών

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

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

sharedhosting-αποποίηση ευθυνών

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

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

Διαδρομή καταλόγου

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

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

κοινόχρηστος διακομιστής

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

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

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

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

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

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

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

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

κοινόχρηστο chroot

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

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

Ένεση εντολών

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

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

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

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

Λοιπόν, ας το σπάσουμε. Μερικά από αυτά μπορεί να σας γνωρίζουν εάν έχετε διαβάσει το δικό μας «Ξεκινώντας οδηγός για Linux» Ξεκινώντας με Linux και UbuntuΣας ενδιαφέρει να μεταβείτε σε Linux... αλλά από πού ξεκινάς; Είναι συμβατός με τον υπολογιστή σας; Θα λειτουργήσουν οι αγαπημένες σας εφαρμογές; Εδώ είναι όλα όσα πρέπει να γνωρίζετε για να ξεκινήσετε με το Linux. Διαβάστε περισσότερα e-book, το οποίο είχαμε δημοσιεύσει στο παρελθόν το 2010, ή έχουμε ρίξει μια ματιά στο δικό μας Φύλλο εξαπάτησης γραμμής εντολών Linux.

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

sharedhosting-linux

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

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

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

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

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

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

Επιθέσεις με βάση τη γλώσσα και διερμηνέα

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

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

sharedhosting-phpelephant

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

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

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

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

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

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

Επιπλέον, σημαίνει ότι οι χρήστες δεν μπορούν να χρησιμοποιήσουν τις πιο πρόσφατες (και καλύτερες) λειτουργίες γλώσσας. Σημαίνει επίσης ότι παραμένουν λειτουργίες που έχουν καταργηθεί για κάποιο λόγο. Στην περίπτωση του Γλώσσα προγραμματισμού PHP Μάθετε να χτίζετε με PHP: Ένα μάθημα CrashΗ PHP είναι η γλώσσα που χρησιμοποιούν το Facebook και η Wikipedia για την εξυπηρέτηση δισεκατομμυρίων αιτημάτων καθημερινά. η de-facto γλώσσα που χρησιμοποιείται για τη διδασκαλία προγραμματισμού Ιστού σε άτομα. Είναι υπέροχα απλό, αλλά εξαιρετικά δυνατό. Διαβάστε περισσότερα , αυτό περιλαμβάνει τις γελοία τρομερές (και πρόσφατα καταργημένες) λειτουργίες mysql_ που χρησιμοποιούνται για την αλληλεπίδραση με το Σύστημα Σχεσιακής Βάσης Δεδομένων MySQL και dl (), το οποίο επιτρέπει στους χρήστες να εισάγουν τη δική τους γλώσσα επεκτάσεις.

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

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

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

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

Μην έχετε εφιάλτες

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

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

Ένα καλό ξεκίνημα είναι με τη νέα λειτουργία επικύρωσης φόρμας HTML5. Το συζητήσαμε προηγουμένως στον οδηγό HTML5. Συλλογικά, μπορούμε να κάνουμε τους ιστότοπους πιο ασφαλείς με το να είμαστε καλύτεροι, πιο ευσυνείδητοι προγραμματιστές.

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

Δικαιώματα φωτογραφίας: Όλοι χρειάζονται χάκερ (Alexandre Dulaunoy), Αυτοκόλλητο Παράθυρο Ταξί (Cory Doctorow), Δωμάτιο διακομιστή (Torkild Retvedt), Βιβλία και περιοδικά Linux (library_mistress), PHP Elephant (Markus Tacker)

Ο Matthew Hughes είναι προγραμματιστής λογισμικού και συγγραφέας από το Λίβερπουλ της Αγγλίας. Σπάνια βρέθηκε χωρίς ένα φλιτζάνι ισχυρό μαύρο καφέ στο χέρι του και λατρεύει απολύτως το Macbook Pro και την κάμερα του. Μπορείτε να διαβάσετε το ιστολόγιό του στο http://www.matthewhughes.co.uk και ακολουθήστε τον στο twitter στο @matthewhughes.