Safety first: προστάτεψε το WordPress site σου!

23 Ιουνίου 2015, από

συμβουλές για την ασφάλεια του wordpress site

Έχεις αναρωτηθεί ποτέ, ποιες είναι οι πιθανότητες να δεχτεί κακόβουλη επίθεση το WordPress site σου; Ή πόσο προστατευμένο είναι σε μία τέτοια περίπτωση; Για να μπορέσουμε να το απαντήσουμε αυτό, ας μιλήσουμε λίγο με αριθμούς.

Στατιστικές δείχνουν ότι το 24% του internet χρησιμοποιεί WordPress, ενώ παράλληλα αποτελεί τη διασημότερη blogging πλατφόρμα στο διαδίκτυο, με περισσότερα από 70 εκατομμύρια sites να το προτιμούν. Τα ποσοστά αυτά σε συνδυασμό με τον υποστηριζόμενο αριθμό σε plugins (περίπου 40000) και themes που έχουν αναπτυχθεί, αναλογούν σε ένα πολύ μεγάλο πεδίο χρηστών στο διαδίκτυο.

Όπως είναι αναμενόμενο, η μεγάλη του φήμη συνοδεύεται από το αντίστοιχο τίμημα, καθώς βάσει ερευνών, το WordPress παρουσιάζει περίπου 24% περισσότερες πιθανότητες να δεχτεί επίθεση από όλες τις υπόλοιπες CMS πλατφόρμες μαζί, ενώ σε άλλες έρευνες περισσότερο από το 70% των WordPress εγκαταστάσεων, φάνηκε να παρουσιάζει κενά ασφαλείας.

Οι πιθανότητες,επομένως, να δεχτεί κακόβουλη επίθεση και το δικό σου WordPress site είναι αυξημένες και γι’ αυτόν τον λόγο θα πρέπει να έχεις φροντίσει για την ασφάλειά του από πριν, ώστε να παραμείνει προστατευμένο σε μία τέτοια περίπτωση. Στο σημερινό blog post συγκέντρωσα μερικά tips που μπορείς να ακολουθήσεις, για να καλύψεις πιθανά κενά ασφαλείας και να μεγιστοποιήσεις τα επίπεδα προστασίας του.

1. Κράτα ενημερωμένο τον πυρήνα του WordPress

Η ομάδα του WordPress εργάζεται συνεχώς προς την κατεύθυνση της ασφάλειας, παρέχοντας νέες εκδόσεις της πλατφόρμας, όποτε αυτό κρίνεται απαραίτητο. Κάθε φορά, λοιπόν, που ανακοινώνεται μία νέα έκδοση, εμφανίζεται η ανάλογη ειδοποίηση μέσω του “Update now” στο Dashboard σου.

Από την έκδοση 3.7.1 και μετά, το WordPress εφαρμόζει αυτόματα τις ενημερώσεις που αφορούν σε θέματα ασφαλείας και συντήρησης της πλατφόρμας. Επομένως το site σου αναβαθμίζεται στα minor releases του WordPress (π.χ. 3.7.2, 3.7.3, 3.7.4 κλπ), χωρίς να χρειάζεται κάποια ενέργεια από εσένα. Για την εφαρμογή ενημερώσεων σε major releases (π.χ. από 3.4 σε 3.5 ή από 3.5 σε 3.6 κλπ), είναι απαραίτητο να πατήσεις το update link που  εμφανίζεται στο Dashboard και που σε ενημερώνει για τη νέα έκδοση.

Ωστόσο, έχεις τη δυνατότητα να ρυθμίσεις όλες οι αναβαθμίσεις, τόσο για τις minor όσο και τις major εκδόσεις, να εφαρμόζονται αυτόματα χωρίς τη δική σου επέμβαση. Για να το κάνεις αυτό, αρκεί να εντοπίσεις στο wp-config.php αρχείο, να το κατεβάσεις τοπικά στον υπολογιστή σου μέσω κάποιου FTP Client και να το επεξεργαστείς κατάλληλα, αναθέτοντας στη μεταβλητή WP_AUTO_UPDATE_CORE την τιμή true. Με την αλλαγή, ο κώδικας θα είναι της μορφής:

define( ‘WP_AUTO_UPDATE_CORE’, true );

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

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

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

2. Κράτα ενημερωμένα τα εγκατεστημένα Plugins & Themes

Mία σημαντική πηγή κενών ασφαλείας στο site σου αποτελούν τα μη ενημερωμένα plugins και themes. Οι hackers θα αναζητήσουν κενά ασφαλείας σε οποιοδήποτε πρόσθετο είναι εγκατεστημένο στο WordPress σου. Μια καλή πρακτική είναι η εγκατάσταση οποιουδήποτε πρόσθετου από το επίσημο repository του WordPress και όχι από εξωτερικές πηγές.
Ένα πρόσφατο παράδειγμα ήταν το κενό ασφαλείας XSS, για την αντιμετώπιση του οποίου διατέθηκαν νέα updates σε αρκετά plugins.

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

plugin update

Μπορείς και εδώ να ενεργοποιήσεις την αυτόματη εγκατάσταση ενημερώσεων τόσο για τα plugins, όσο και τα themes, με τις αντίστοιχες γραμμές κώδικα στο wp-config.php αρχείο:

add_filter( ‘auto_update_plugin’, ‘__return_true’ );

add_filter( ‘auto_update_theme’, ‘__return_true’ );

3. Εγκατάστησε ένα Security Plugin

Όσο και αν προσέχεις με τις ενημερώσεις, οι επίδοξοι hackers πάντα θα προσπαθούν να βρουν τρόπους για να εισέλθουν στο site σου. Ακόμα και ένα μικρό κενό σε ένα μόνο plugin μπορεί να αποτελέσει backdoor για επίθεση. Καλό θα ήταν, λοιπόν, να εγκαταστήσεις κάποιο security plugin που θα διενεργεί τακτικούς ελέγχους στο site σου και θα εντοπίζει οποιαδήποτε ασυνήθιστη συμπεριφορά.

Ένα πολύ δημοφιλές plugin είναι το Wordfence Security. To συγκεκριμένο plugin σκανάρει τον πηγαίο κώδικα του πυρήνα, των plugins και του theme που έχουν εγκατασταθεί στο site σου και τα συγκρίνει με αυτόν στο repository του WordPress. Σε περίπτωση που εντοπιστεί κάποιο κενό, σε ενημερώνει, ώστε να προβείς στις απαραίτητες ενέργειες αναβάθμισης, και να εξασφαλίσεις τη μέγιστη δυνατή ασφάλεια για τη σελίδα σου.

wordfence plugin

wordfence plugin

4. Απενεργοποίησε το Directory Browsing

Σε περίπτωση που είναι ενεργό το directory browsing, o server μπορεί να επιστρέψει αναλυτική λίστα των αρχείων και των φακέλων της σελίδας σου σε οποιονδήποτε χρήστη, δίνοντάς του τη δυνατότητα να την χαρτογραφήσει αναλυτικά και να εντοπίσει τυχόν ευπάθειες. Θα μπορούσε, για παράδειγμα, να δει τα περιεχόμενα του φακέλου /wp-content/ ο οποίος περιλαμβάνει όλα τα εγκατεστημένα plugins, themes και τα αρχεία που έχεις ανεβάσει στο site σου. Αντίστοιχα, ο φάκελος /wp-includes/, περιλαμβάνει όλα τα αρχεία που υποστηρίζουν την front-end λειτουργικότητα του WordPress.

Για να ελέγξεις αν το directory browsing στο site σου είναι ενεργοποιημένο, αρκεί να επισκεφτείς το url του, προσθέτοντας στο τέλος τυχαίους χαρακτήρες που δεν αντιστοιχούν σε εσωτερική σελίδα ή αρχείο του. Π.χ για την TopHost: http://tophost.gr/rakasjd
Αν η σελίδα που θα ανοίξει είναι η 404, τότε δε χρειάζεται να ανησυχείς.

tophost 404

Αντίθετα, αν προσθέσεις το /wp-includes/ στο τέλος του url και ο server σου επιστρέψει αποτελέσματα όπως της εικόνας παρακάτω, θα πρέπει να ακολουθήσεις κάποια βήματα για να απενεργοποιήσεις το directory browsing μέσω του .htaccess αρχείου.

directory

Αρχικά θα πρέπει να συνδεθείς στο site σου μέσω ενός FTP client. Αφού ανοίξεις τον FTP client, συμπλήρωσε τα πεδία Host (ftp.yoursite.gr), Username και Password όπως σου δόθηκαν από τον hoster σου για να συνδεθείς. Επιβεβαίωσε ότι μπορείς να δεις και τα κρυφά αρχεία, ακολουθώντας τη διαδρομή Server → Force showing hidden files.

ftp filezilla

Στη συνέχεια, κατέβασε το αρχείο .htaccess από τον φάκελο στον οποίο έχει εγκατασταθεί το WordPress, και δημιούργησε ένα ασφαλές αντίγραφο, ώστε να εξασφαλίσεις ότι έχεις το πρότυπο σε περίπτωση που προκύψει κάποιο λάθος με τη διαδικασία. Άνοιξε το αρχείο .htaccess με κάποιον editor (π.χ. σε ένα notepad) και θα δεις ότι μοιάζει κάπως έτσι:

# 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

Ο κώδικας θα είναι πλέον έτσι:

# 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

Αποθήκευσε την αλλαγή και  ανέβασε το αρχείο μέσω του FTP client στο directory από το οποίο το κατέβασες.

Για να ελέγξεις τα αποτελέσματα, αρκεί να επισκεφτείς ξανά κάποιο από τα wordpress directories (/wp-includes/, /wp-admin/ , /wp-content/ ) για να επιβεβαιώσεις ότι ο server δεν επιστρέφει πλέον τους φακέλους και τα αρχεία του WordPress site σου.

5. “Καθάρισε” το site σου

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

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

Φρόντισε, λοιπόν, να διαγράψεις όσα plugins και themes δε χρειάζεσαι πλέον στο site σου!

6. Χρησιμοποίησε 2-Level Authentication για να συνδεθείς στο WordPress σου

Λόγω του αριθμού επιθέσεων, είναι ευρέως διαδεδομένη στο διαδίκτυο η χρήση 2 διαφορετικών επιπέδων πιστοποίησης κατά τη διαδικασία του login σε κάποιο site. Στη συγκεκριμένη μέθοδο, χρησιμοποιείς μία εξωτερική συσκευή, συνήθως το smartphone σου, το οποίο δημιουργεί ένα μοναδικό προσωρινό κωδικό, τον οποίο μπορείς να χρησιμοποιήσεις για μερικά δευτερόλεπτα σε δεύτερο επίπεδο, για να ολοκληρώσεις τη σύνδεση στο site σου.

Αντίστοιχη λειτουργικότητα έχουμε πραγματοποιήσει στην TopHost για τη σύνδεση στο myTophost Panel. Μπορείς να ενεργοποιήσεις το 2-Level Authentication με χρήση plugins. Το  Wordfence Security που αναφέρθηκε νωρίτερα, το παρέχει στην χρεώσιμη έκδοσή του. Εναλλακτικά, σου προτείνω και το πολύ διαδεδομένο Google Authenticator.

7. Άλλαξε τα δικαιώματα σε αρχεία και φακέλους

Ένα από τα συνήθη σφάλματα είναι επίσης η ανάθεση 777 δικαιωμάτων σε αρχεία και φακέλους του site σου. Δικαιώματα με πλήρη δυνατότητα ανάγνωσης, εκτέλεσης και εγγραφής από οποιονδήποτε χρήστη, αποτελεί ένα από τα μεγαλύτερα κενά ασφαλείας. Για να προστατέψεις το WordPress Site σου, θα πρέπει να αναθέσεις:

  • δικαιώματα 775(rwx rwx r-x ) στους φακέλους
  • δικαιώματα 664 (rw- rw- r– ) στα αρχεία.

Αν χρησιμοποιείς τον FileZilla, δες εδώ πώς μπορείς να αλλάξεις τα συγκεκριμένα permissions.

8. Κάποιες επιπλέον ενέργειες

Τέλος, όπως έχουμε δει και σε προηγούμενο blog post με τα πιο συνηθισμένα λάθη που γίνονται στο WordPress, είναι σημαντικό:

  • να επιλέξεις έναν αξιόπιστο web host, που να παρέχει τις τελευταίες εκδόσεις σε PHP και mySQL και που χρησιμοποιεί υπηρεσίες ελέγχου πάνω σε θέματα ασφαλείας στον server.
  • να λαμβάνεις τακτικά αντίγραφα ασφαλείας. Είναι πολύ σημαντικό να μεριμνείς προσωπικά για το backup στο site σου, ακόμη κι αν ο web host που έχεις επιλέξει, προσφέρει αυτήν την υπηρεσία. Ακόμα και αν το site σου δεχθεί επίθεση, η επαναφορά θα είναι πολύ πιο άμεση, εφόσον διατηρείς κάποιο αντίγραφο.
  • να μεταβάλεις τις προεπιλεγμένες ρυθμίσεις του WordPress και να αλλάξεις το username σου από admin σε κάτι πιο προσωπικό, εξασφαλίζοντας παραλληλα ένα δυνατό password με αλφαριθμητικούς χαρακτήρες.

Ανάτρεξε στο συγκεκριμένο post για να μάθεις πώς να εφαρμόσεις τα παραπάνω βήματα.

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

Σου άρεσε αυτό το blog post;

Τότε σίγουρα θα λατρέψεις τα επόμενα! Συμπλήρωσε το email σου για να μη χάσεις ούτε ένα.;

Κάνε δωρεάν την εγγραφή σου και στο εξής θα λαμβάνεις ενημερώσεις για τα νέα post του Τοp.Host Blog. Οποιαδήποτε στιγμή θελήσεις μπορείς να αφαιρέσεις το email σου από τη λίστα παραληπτών. Μάθε περισσότερα στην Πολιτική Απορρήτου.

Μπες στη συζήτηση

Πες μας τη γνώμη σου!