Οι περισσότεροι webservers, όπως είναι οι Apache, NGINX και LiteSpeed, έχουν σαν προεπιλογή ενεργοποιημένη την προσπέλαση των καταλόγων των ιστοσελίδων (directory browsing).
Με απλά λόγια, όταν αυτή η λειτουργία είναι ενεργοποιημένη μπορούμε να έχουμε πρόσβαση και να δούμε-προσπελάσουμε όλους τους καταλόγους που απαρτίζουν την ιστοσελίδα μας.
Αν το δούμε μόνο από άποψη ασφάλειας, δίνουμε την δυνατότητα στον οποιονδήποτε, και ειδικότερα σε αυτούς που θέλουν να βλάψουν την ιστοσελίδα μας, να δει και να μάθει ποια είναι η δομή της σελίδας (site structure) και τι ακριβώς περιέχει.
Αυτοί που έχουν εμπειρία στο να εκμεταλλεύονται τέτοιες καταστάσεις -συνηθισμένος όρος είναι ο hacker αλλά ο σωστός όρος είναι crackers – τους ανοίγεται ο δρόμος να ανακαλύψουν πολύ εύκολα ποια exploits υπάρχουν στην σελίδα σας, στα themes και στα plugins που χρησιμοποιείται αν έχετε κάποιο CMS.
Ας δούμε λοιπόν τι μπορούμε να κάνουμε για όλα αυτά, και ας βάλουμε σαν παράδειγμα το πιο γνωστό CMS, το WordPress.
Αν ακολουθήσετε τον σύνδεσμο: https://site.gr/wp-includes/ (όπου site.gr είναι το όνομα της σελίδας σας) και σας εμφανίσει μία λίστα από καταλόγους/φακέλους, τότε το directory browsing είναι ενεργοποιημένο.
Σημείωση: ελπίζω να έχετε ενεργοποιήσει το πρωτόκολλο ασφαλείας στην σελίδα σας και να χρησιμοποιείτε το https.
Σε μία τέτοια περίπτωση, θα δείτε κάτι αντίστοιχο με αυτό:
Βασικά στοιχεία για τον τρόπο λειτουργίας των webservers
Αν ένας κατάλογος περιέχει ένα αρχείο με όνομα index.php ή index.htm ή index.html, τότε ο webserver όταν κάποιος επισκεφθεί αυτό τον κατάλογο, έχει σαν βασική ρύθμιση να φορτώσει αυτό το αρχείο.
Έτσι, αν υπάρχει κάποιο τέτοιο αρχείο μέσα στον κατάλογο, τότε ο επισκέπτης δεν θα μπορεί να δει τα περιεχόμενο του καταλόγου αφού θα μεταφερθεί και θα δει όσα υπάρχουν μέσα στο αρχείο index.
Στο βασικό κατάλογο της ιστοσελίδας (basic directory), όπου αναφερόμαστε στον κατάλογο που περιέχει όλα τα αρχεία της ιστοσελίδας, πάντα υπάρχει ένα index αρχείο, είτε έχετε εγκαταστήσει κάποιο CMS είτε είναι κατασκευασμένο από κάποιον για τον συγκεκριμένο σκοπό.
Γιατί να απενεργοποιήσουμε την προσπέλαση των καταλόγων;
Κάπου εδώ θα σχηματιστεί στο μυαλό σας η παραπάνω ερώτηση, “γιατί;”.
Η απάντηση δόθηκε λίγο πιο πάνω: είναι ζήτημα ασφαλείας. Αν το εξετάσουμε σύμφωνα με το παράδειγμα μας, οι κατάλογοι wp-content και wp-includes του WordPress περιέχουν πολύ σημαντικά και ευαίσθητα δεδομένα, που δεν πρέπει να είναι σε κοινή θέα.
Όπως αναφέραμε και πιο πάνω, γίνεται παιχνιδάκι για τους επιτήδειους να μάθουν και να βρουν το πως να καταστρέψουν την ιστοσελίδα μας!
Πως το απενεργοποιούμε
Για να λύσουμε αυτό το πρόβλημα, χρειαζόμαστε πρόσβαση στον βασικό κατάλογο της ιστοσελίδας, είτε μέσω ftp είτε μέσω κάποιου file manager από τα διαχειριστικά cPanel ή Plesk.
Αυτό που μας ενδιαφέρει είναι το αρχείο .htaccess. (Τα παρακάτω λειτουργούν για Apache, NGINX και LiteSpeed)
Αν δεν υπάρχει το αρχείο, τότε η διαδικασία είναι πολύ απλή: δημιουργούμε ένα αρχείο με το παραπάνω όνομα, τοποθετούμε μέσα του την γραμμή Options All -Indexes και το ανεβάζουμε στο βασικό κατάλογο της ιστοσελίδας.
Στην περίπτωση όμως που υπάρχει ήδη το αρχείο, πρέπει να είμαστε πιο προσεκτικοί. Αν ακολουθήσουμε τυφλά την παραπάνω διαδικασία μπορεί να αντικαταστήσουμε το ήδη υπάρχον αρχείο, που είναι ζωτικης σημασίας για ένα CMS και φυσικά για το WordPress, και να καταστρέψουμε την ιστοσελίδα.
Αν λοιπόν υπάρχει ήδη το αρχείο αυτό, θα ακολουθήσουμε την πάγια τακτική των administrators: δημιουργούμε αντίγραφο ασφαλείας – κοινώς backup.
Αφού δημιουργήσουμε το απαραίτητο backup αρχείο, μπορούμε να προβούμε σε αλλαγές. Ανοίξτε το .htaccess με έναν απλό editor (π.χ. Notepad) ή με τον editor που προσφέρει το διαχειριστικό panel, και προχωρήστε στην τελευταία γραμμή του αρχείου.
Εκεί μπορείτε να προσθέσετε την εντολή που είδαμε και πιο πάνω: Options All -Indexes
Σε μια εγκατάσταση του WordPress θα βρεί κανείς το αρχείο αυτό να έχει την παρακάτω μορφή:
1 2 3 4 5 6 7 8 9 10 11 12 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress Options All -Indexes |
Τώρα μπορείτε να αποθηκεύσετε το αρχείο, και είτε να το ανεβάσετε στον βασικό κατάλογο είτε να αφήσετε τον editor του διαχειριστικού panel να κάνει τις αλλαγές.
Αν κάτι πάει στραβά, μπορείτε να αντικαταστήσετε άμεσα το αρχείο αυτό με το backup που κάνατε πιο πριν, βεβαιωθείτε ότι επανήλθαν όλα σε κανονική κατάσταση και δοκιμάστε ξανά (κρατήστε όμως το backup).
Όταν θα έχει γίνει σωστά η αλλαγή, οι κατάλογοι που πριν ήταν προσπελάσιμοι, τώρα θα επιστρέφουν το μήνυμα 403 Access Forbidden ή σε κάποιες περιπτώσεις 404 Page Not Found:
Επίλογος
Το directory browsing είναι κάτι που το ξεχνούν τελείως ακόμα και οι webmasters. Άλλωστε είναι κάτι που έχουν απενεργοποιήσει αρκετοί από τους παρόχους.
Δημιουργείται όμως ένα κενό ασφαλείας που μπορεί να κάνει περίπατο την δουλειά ενός επιτήδειου. Το καλό είναι ότι μπορούμε να το διορθώσουμε πολύ εύκολα!
Πηγές
- www.thesitewizard.com – How to Prevent a Directory Listing of Your Website with .htaccess
- www.wpsuperstars.net – How To Disable Directory Browsing In WordPress
- www.htaccess-guide.com – Disable directory listings
- httpd.apache.org – Options Directive

agathan
Αποφοίτησα απο το τμήμα Εφαρμοσμένων Μαθηματικών
του Πανεπιστημίου Κρήτης. Κάτα την διάρκεια εργάστηκα στην
τεχνική υποστήριξη του τμήματος. Ακολούθησε το
μεταπτυχιακό μου, Msc In Applied Mathematics at University Of Delaware. Ύστερα δούλεψα για μερικά χρόνια σαν web developer (CMS and what not) και SEO/Google Ads engineer.
Και τώρα είμαστε στο GeekD, μια λέξη που περιγράφει όλα τα παραπάνω.
"All we have to decide is what to do with the time that is given us."
-Gandalf The Grey, JRR Tolkien

Latest posts by agathan (see all)
- Αφιλόξενος πλανήτης Αφροδίτη: θα μπορούσε να υπάρχει ζωή; - 1 Οκτωβρίου 2020
- Τα ιπτάμενα αυτοκίνητα αρχίζουν να γίνονται πραγματικότητα - 13 Σεπτεμβρίου 2020
- Η ιστορική εκτόξευση της SpaceX που θα μεταφέρει αστροναύτες στον ISS - 26 Μαΐου 2020
Αφήστε ένα σχόλιο