Μετάβαση στο περιεχόμενο

Ρυθμίσεις cookies

Επιλέξτε ανά κατηγορία ποια cookies επιτρέπετε. Μπορείτε να αλλάξετε την επιλογή σας οποιαδήποτε στιγμή μέσω των Ρυθμίσεων cookies στο κάτω μέρος κάθε σελίδας. Δήλωση απορρήτου

Απαραίτητα

Πάντα ενεργά

Χρειάζονται για τη σύνδεση, για να διατηρείται το καλάθι σας και για να θυμόμαστε τις επιλογές σας. Είναι πάντα ενεργά.

Ποια cookies;
  • weboke_sessie, weboke_klant, weboke_remember: η συνεδρία σας και η παραμονή σε σύνδεση
  • weboke_basket: το καλάθι σας
  • wkBtwIncl: εμφάνιση τιμών με ή χωρίς ΦΠΑ
  • wok_cookies: η επιλογή σας για τα cookies, 12 μήνες

Μετρούν ποια διαφήμιση οδηγεί σε επίσκεψη ή παραγγελία, ώστε να μην πληρώνουμε για διαφημίσεις που δεν αποδίδουν.

Ποια cookies;
  • Google Ads μέσω Google Tag Manager (_gcl_au, _gcl_aw), έως 90 ημέρες
  • OpenAI Ads, διαφημίσεις στο ChatGPT
  • wok_aff: μέσω ποιου συνεργάτη ήρθατε σε εμάς (πρόγραμμα συνεργατών), 60 ημέρες

4,6

Χώρα και γλώσσα

Κάθε χώρα έχει τη δική της ιστοσελίδα, με τιμές και ΦΠΑ της χώρας αυτής.

Προβολή

Ο ιστότοπός σας: https, HSTS και headers ασφαλείας

Ενότητα 4: Email, ιστότοπος και domain · Χρόνος ανάγνωσης: 11 λεπτά

Στόχος μαθήματος: Μετά από αυτό το μάθημα θα μπορείτε να ελέγξετε τη βασική ασφάλεια του ιστοτόπου σας: έγκυρο πιστοποιητικό, ανακατεύθυνση σε https, HSTS με σωστό max-age, τους σημαντικότερους headers ασφαλείας και την ενημέρωση του CMS σας.
Βασικές έννοιες: πιστοποιητικό TLS, https, ανακατεύθυνση σε https, HSTS, max-age, includeSubDomains, preload, HTTP header, Content-Security-Policy, X-Content-Type-Options, frame-ancestors, X-Frame-Options, Referrer-Policy

Τι συμβαίνει όταν κάποιος ανοίγει τον ιστότοπό σας

Όταν ένας πελάτης πληκτρολογεί example.com στη γραμμή διευθύνσεων, ο browser ζητά τη σελίδα από τον web server σας. Αυτή η επικοινωνία γίνεται μέσω HTTP. Στο https υπάρχει γύρω της μια κρυπτογραφημένη σύνδεση: το TLS. Για αυτό ο ιστότοπός σας χρειάζεται ένα πιστοποιητικό TLS (συχνά αναφέρεται ακόμη ως πιστοποιητικό SSL). Το πιστοποιητικό αποδεικνύει ότι ο server πραγματικά ανήκει στο example.com και η κρυπτογράφηση εξασφαλίζει ότι κανείς στη διαδρομή δεν μπορεί να διαβάσει ή να αλλάξει κάτι. Αυτό είναι σημαντικό σε δημόσιο wifi, όπου δεν γνωρίζετε ποιος διαχειρίζεται το δίκτυο (μάθημα 5.3).

Σε κάθε απάντηση, ο server στέλνει, εκτός από την ίδια τη σελίδα, και μια σειρά από headers: σύντομες γραμμές με πληροφορίες και οδηγίες για τον browser. Δεν τις βλέπετε στην οθόνη, αλλά καθορίζουν σε μεγάλο βαθμό πόσο ασφαλής είναι η συμπεριφορά του browser απέναντι στον ιστότοπό σας. Ένα μέρος αυτών των headers είναι headers ασφαλείας. Σε αυτό το μάθημα θα περάσουμε από τα τέσσερα επίπεδα: πιστοποιητικό, ανακατεύθυνση, HSTS και headers. Στη συνέχεια θα δούμε εν συντομία την ενημέρωση του ίδιου του ιστοτόπου σας.

Επίπεδο 1: ένα έγκυρο πιστοποιητικό

Ένα πιστοποιητικό είναι εντάξει όταν πληροί τρεις προϋποθέσεις:

  1. δεν έχει λήξει·
  2. έχει εκδοθεί από έναν αξιόπιστο εκδότη (μια αρχή πιστοποίησης που αναγνωρίζουν οι browsers, όπως το Let's Encrypt ή έναν εμπορικό φορέα)·
  3. ισχύει για ακριβώς το όνομα που ανοίγει ο επισκέπτης: example.com αλλά και www.example.com αν χρησιμοποιείτε και τα δύο.

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

Σημαντικό να γνωρίζετε: ένα λουκέτο δεν λέει τίποτα για την αξιοπιστία του ιστοτόπου. Λέει μόνο ότι η σύνδεση είναι κρυπτογραφημένη και ότι το πιστοποιητικό αντιστοιχεί στο όνομα που φαίνεται στη γραμμή διευθύνσεων. Ιστότοποι phishing στο mijnbank-veilig.example έχουν εξίσου καλά ένα λουκέτο. Γι' αυτό στο μάθημα 3.2 μαθαίνετε να διαβάζετε το domain.

Επίπεδο 2: πάντα ανακατεύθυνση σε https

Ένα πιστοποιητικό από μόνο του δεν αρκεί. Όποιος ανοίγει το http://example.com, για παράδειγμα μέσω παλιού συνδέσμου ή πληκτρολογώντας μόνο το όνομα, πρέπει να μεταφέρεται αυτόματα στην έκδοση https. Αυτό ονομάζεται ανακατεύθυνση (redirect, συνήθως με κωδικό κατάστασης 301).

Μια σωστή σειρά είναι η εξής:

http://example.com      ->  https://example.com
https://example.com     ->  https://www.example.com   (μόνο αν χρησιμοποιείτε το www ως κύρια διεύθυνση)
http://www.example.com  ->  https://www.example.com

Προσέξτε την πρώτη γραμμή: ανακατευθύνετε πρώτα από http σε https στο ίδιο όνομα και μόνο μετά, αν χρειάζεται, στο www. Έτσι ο browser μπορεί να λάβει την οδηγία HSTS και από το γυμνό όνομα. Το internet.nl ελέγχει ακριβώς αυτό.

Ένα συχνό λάθος είναι η διπλή ανακατεύθυνση: και στο panel φιλοξενίας και σε ένα plugin ή στο .htaccess. Αυτό μπορεί να προκαλέσει ατέρμονο βρόχο ("πάρα πολλές ανακατευθύνσεις"). Χρησιμοποιήστε ένα μόνο σημείο.

Επίπεδο 3: HSTS

Η ανακατεύθυνση έχει ένα αδύναμο σημείο: το πρώτο αίτημα εξακολουθεί να γίνεται μη κρυπτογραφημένα μέσω http. Ένας επιτιθέμενος στο ίδιο δίκτυο μπορεί να υποκλέψει αυτό το αίτημα και να κρατήσει τον επισκέπτη σε μια πλαστή, μη κρυπτογραφημένη έκδοση. Για αυτό υπάρχει το HSTS (HTTP Strict Transport Security, RFC 6797).

Με το HSTS, ο ιστότοπός σας στέλνει μέσω https έναν header:

Strict-Transport-Security: max-age=31536000; includeSubDomains

Ο browser θυμάται τότε: "αυτόν τον ιστότοπο να τον ανοίγω μόνο μέσω https, για τα επόμενα 31.536.000 δευτερόλεπτα (έναν χρόνο)". Αν ο επισκέπτης πληκτρολογήσει αργότερα http://example.com, ο browser το μετατρέπει μόνος του σε https, ακόμη πριν σταλεί οτιδήποτε μέσω του δικτύου. Το αδύναμο πρώτο αίτημα εξαφανίζεται.

ΣτοιχείοΣημασία
max-age=Πόσο καιρό το θυμάται ο browser, σε δευτερόλεπτα. Το internet.nl θεωρεί τουλάχιστον έναν χρόνο (max-age=31536000) επαρκές· μια σύντομη περίοδος δεν προστατεύει τα άτομα που επισκέπτονται τον ιστότοπό σας μόνο περιστασιακά.
includeSubDomainsΙσχύει και για όλα τα subdomains, όπως shop.example.com και mail.example.com.
preloadΖητάτε την ένταξη στη λίστα που είναι ενσωματωμένη στους browsers (hstspreload.org). Τότε προστατεύεται ακόμη και η πρώτη επίσκεψη. Απαιτήσεις: μεταξύ άλλων max-age τουλάχιστον ενός έτους, includeSubDomains και όλα τα subdomains σε https. Η αφαίρεση από τη λίστα διαρκεί πολύ.
max-age=0Διαγράφει την αποθηκευμένη οδηγία.

Τρία πράγματα που πρέπει να γνωρίζετε πριν ενεργοποιήσετε το HSTS:

  • Πρώτα πρέπει το https να λειτουργεί παντού. Ένας browser που έχει αποθηκεύσει το HSTS και βλέπει σφάλμα πιστοποιητικού, δεν δίνει στον επισκέπτη κανένα κουμπί για να συνεχίσει (RFC 6797, παράγραφος 12.1). Αν λήξει το πιστοποιητικό σας ή δεν ισχύει για το www, ο ιστότοπός σας γίνεται απρόσιτος για αυτούς τους επισκέπτες μέχρι να διορθωθεί.
  • Το includeSubDomains επηρεάζει τα πάντα κάτω από το domain σας. Ένα παλιό subdomain χωρίς πιστοποιητικό, για παράδειγμα μια σελίδα εκτυπωτή ή κάμερας στο camera.example.com, δεν θα μπορεί πλέον να ανοίξει.
  • Χτίστε το σταδιακά. Ξεκινήστε με σύντομο max-age (για παράδειγμα μία ημέρα), ελέγξτε ότι όλα λειτουργούν και αυξήστε σταδιακά έως τον έναν χρόνο. Περιμένετε σε κάθε βήμα όλη την περίοδο.

Έναν header HSTS που φτάνει μέσω απλού http, ο browser τον αγνοεί. Τον βλέπετε δηλαδή μόνο στην απάντηση https.

Επίπεδο 4: headers ασφαλείας

Εκτός από το HSTS υπάρχουν μερικοί ακόμη headers που λένε στον browser τι επιτρέπεται και τι όχι να κάνει με τις σελίδες σας. Δεν χρειάζεται να τους έχετε όλους τέλειους, αλλά οι τρεις πρώτοι είναι απλοί και χωρίς κίνδυνο.

HeaderΕνάντια σε τιΚαλή τιμή
X-Content-Type-OptionsΟ browser προσπαθεί να μαντέψει μόνος του τι είδους αρχείο είναι, με αποτέλεσμα μια ανεβασμένη «εικόνα» να μπορεί να εκτελεστεί ως script.nosniff (η μόνη έγκυρη τιμή)
Content-Security-Policy: frame-ancestors ... ή X-Frame-OptionsClickjacking: ένας άλλος ιστότοπος φορτώνει αόρατα τη σελίδα σας μέσα σε ένα frame και κάνει τους επισκέπτες να κάνουν κλικ στα κουμπιά σας χωρίς να το αντιλαμβάνονται.frame-ancestors 'self' ή 'none'· ο παλαιότερος header X-Frame-Options: SAMEORIGIN ή DENY
Referrer-PolicyΌταν γίνεται κλικ προς άλλον ιστότοπο, ο browser στέλνει μαζί τη διεύθυνση της προηγούμενης σελίδας. Εκεί μπορεί να υπάρχουν ευαίσθητες πληροφορίες, όπως ένας όρος αναζήτησης ή ένας αριθμός παραγγελίας.no-referrer ή same-origin (αυστηρό), strict-origin-when-cross-origin (συνηθισμένο, το internet.nl δίνει εδώ μια προειδοποίηση)
Content-Security-Policy (πλήρης)Περιορίζει από ποια σημεία επιτρέπεται να φορτώνουν scripts, στυλ και εικόνες. Κάνει πολύ πιο δύσκολη την εισαγωγή κακόβουλων scripts (XSS).Εξατομικευμένη ρύθμιση ανά ιστότοπο. Αποφεύγετε τα unsafe-inline, unsafe-eval και τα wildcards.

Μια πλήρης Content-Security-Policy είναι η πιο ισχυρή, αλλά και η πιο δύσκολη: ένας πολύ αυστηρός κανόνας μπορεί να χαλάσει τα στατιστικά σας, το κουμπί πληρωμής σας ή το παράθυρο συνομιλίας σας. Με την παραλλαγή Content-Security-Policy-Report-Only μπορείτε πρώτα να μετρήσετε τι θα μπλοκαριζόταν, χωρίς να χαλάσει τίποτα. Αφήστε αυτό στον κατασκευαστή του ιστοτόπου σας ή ξεκινήστε μόνο με το frame-ancestors.

Να δείτε τους headers μόνοι σας

Ανοίξτε τον ιστότοπό σας σε έναν browser, πατήστε F12 (ή επιλέξτε «Επιθεώρηση»), πηγαίνετε στην καρτέλα Δίκτυο, φορτώστε ξανά τη σελίδα και κάντε κλικ στο πρώτο αίτημα. Κάτω από «Headers απάντησης» (Response Headers) βλέπετε όλα όσα στέλνει ο server. Με τη γραμμή εντολών μπορείτε επίσης:

curl -sI https://example.com/

Ο ίδιος ο ιστότοπος: CMS, plugins και θέματα

Οι καλύτεροι headers δεν βοηθούν αν το λογισμικό πίσω από τον ιστότοπό σας είναι ευάλωτο. Οι περισσότεροι παραβιασμένοι ιστότοποι μικρών επιχειρήσεων δεν παραβιάστηκαν μέσω του web server, αλλά μέσω ενός ξεπερασμένου plugin, ενός θέματος που δεν έχει ενημερωθεί εδώ και χρόνια ή ενός αδύναμου κωδικού πρόσβασης διαχειριστή.

  • Ενεργοποιήστε τις αυτόματες ενημερώσεις για το CMS σας (για παράδειγμα WordPress, Joomla ή άλλο σύστημα) και για τα plugins όπου αυτό είναι δυνατό.
  • Αφαιρέστε plugins και θέματα που δεν χρησιμοποιείτε· η απενεργοποίηση δεν αρκεί, τα αρχεία παραμένουν εκεί.
  • Χρησιμοποιήστε για τη σύνδεση διαχειριστή έναν ισχυρό, μοναδικό κωδικό πρόσβασης και έλεγχο ταυτότητας δύο παραγόντων (ενότητα 2) και περιορίστε τον αριθμό των προσπαθειών σύνδεσης.
  • Διατηρήστε την έκδοση PHP (ή άλλης γλώσσας) του πακέτου σας σε έκδοση που εξακολουθεί να λαμβάνει ενημερώσεις (μάθημα 5.1).

Στην πράξη: έτσι μοιάζει

Στο DirectAdmin, το panel που χρησιμοποιεί το WebOké, ενεργοποιείτε πρώτα στο domain σας την επιλογή Secure SSL και μετά την επιλογή Force SSL with https redirect. Στο ίδιο σημείο υπάρχει ένας διακόπτης για το HSTS· ενεργοποιήστε τον μόνο αφού το πιστοποιητικό λειτουργεί για όλα τα ονόματα. Σε άλλους παρόχους λειτουργεί παρόμοια, ή το ρυθμίζετε στις επιλογές του CMS σας.

Αν ο ιστότοπός σας λειτουργεί σε Apache ή LiteSpeed, μπορείτε να τοποθετήσετε τους headers και στο .htaccess:

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Content-Security-Policy "frame-ancestors 'self'"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Προσθέστε το includeSubDomains μόνο όταν είστε σίγουροι ότι κάθε subdomain διαθέτει https. Μετά από κάθε αλλαγή, ελέγξτε με το τεστ ιστοτόπου του internet.nl ή με τα εργαλεία προγραμματιστή του browser σας.

Σύνοψη

  • Ένα λουκέτο σημαίνει: κρυπτογραφημένο και σωστό όνομα. Δεν σημαίνει: αξιόπιστο.
  • Ανακατευθύνετε πάντα το http σε https, πρώτα στο ίδιο όνομα, και από ένα μόνο σημείο.
  • Το HSTS κάνει τον browser να θυμάται ότι ο ιστότοπός σας λειτουργεί μόνο μέσω https· το internet.nl θεωρεί επαρκές ένα max-age τουλάχιστον ενός έτους (31536000). Ενεργοποιήστε το μόνο όταν το https λειτουργεί παντού και χτίστε το σταδιακά.
  • Τα X-Content-Type-Options: nosniff, frame-ancestors (ή X-Frame-Options) και Referrer-Policy είναι απλά· μια πλήρης Content-Security-Policy απαιτεί εξατομικευμένη ρύθμιση.
  • Οι ενημερώσεις του CMS, των plugins και των θεμάτων σας είναι τουλάχιστον εξίσου σημαντικές με τους headers.

Κουίζ

1. Τι ακριβώς αποτρέπει το HSTS;



2. Ενεργοποιείτε το Strict-Transport-Security: max-age=31536000; includeSubDomains. Μία εβδομάδα αργότερα λήγει το πιστοποιητικό του shop.example.com. Τι αντιλαμβάνονται οι τακτικοί επισκέπτες;



3. Ποιο max-age θεωρεί το internet.nl ως ελάχιστο επαρκές για το HSTS;



4. Ενάντια σε τι προστατεύει το Content-Security-Policy: frame-ancestors 'self';



5. Βλέπετε ένα λουκέτο στο mijnbank-veilig.example στη γραμμή διευθύνσεων. Τι γνωρίζετε με βεβαιότητα από αυτό;



Άσκηση

Άσκηση A4.2: Έλεγχος https, HSTS και headers της ιστοσελίδας σας. Συμπληρώστε το domain name του ιστοτόπου σας (αν δεν έχετε, χρησιμοποιήστε το internet.nl). Το πρόγραμμα ανοίγει το http:// και το https:// του domain σας και ελέγχει το πιστοποιητικό, την ανακατεύθυνση σε https, το HSTS και τους headers ασφαλείας. Λαμβάνετε για κάθε σημείο πράσινο, πορτοκαλί ή κόκκινο με εξήγηση.

Άσκηση A4.2: Έλεγχος https, HSTS και headers της ιστοσελίδας σας

Συμπληρώστε το όνομα domain της ιστοσελίδας σας (αν δεν έχετε, χρησιμοποιήστε το internet.nl). Το πρόγραμμα ανοίγει το http:// και το https:// του domain σας και ελέγχει το πιστοποιητικό, την προώθηση προς https, το HSTS και τα headers ασφαλείας. Στη συνέχεια συμπληρώστε το max-age του HSTS.



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

Άσκηση D4.2: Ενημέρωση και τακτοποίηση του ιστότοπού σας. Συνδεθείτε στη διαχείριση του ιστοτόπου σας, ελέγξτε την έκδοση του CMS, των plugins και των θεμάτων σας, αφαιρέστε ό,τι δεν χρησιμοποιείτε και ενεργοποιήστε αυτόματες ενημερώσεις όπου αυτό είναι δυνατό. Σημειώστε τη λίστα ελέγχου και απαντήστε στην ερώτηση αναστοχασμού.

Άσκηση D4.2: Ενημέρωση και τακτοποίηση του ιστότοπού σας

Έτσι το αντιμετωπίζετε: (1) Συνδεθείτε στη διαχείριση του ιστότοπού σας (ή ζητήστε από τον κατασκευαστή της ιστοσελίδας σας να το κάνετε αυτό μαζί). (2) Σημειώστε την έκδοση του CMS σας και δείτε αν υπάρχουν διαθέσιμες ενημερώσεις. (3) Δημιουργήστε ένα αντίγραφο ασφαλείας (μάθημα 6.1), εγκαταστήστε τις ενημερώσεις του CMS, των plugins και των θεμάτων. (4) Αφαιρέστε plugins και θέματα που δεν χρησιμοποιείτε. (5) Ενεργοποιήστε τις αυτόματες ενημερώσεις όπου είναι δυνατόν. (6) Ελέγξτε ποιοι λογαριασμοί διαχειριστή υπάρχουν και αφαιρέστε λογαριασμούς ατόμων που δεν εργάζονται πλέον εκεί. (7) Ενεργοποιήστε τον έλεγχο ταυτότητας δύο παραγόντων (2FA) για κάθε λογαριασμό διαχειριστή.




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

Περαιτέρω ανάγνωση

Τα βήματα στα άρθρα του WebOké ισχύουν για το περιβάλλον του WebOké· σε άλλους παρόχους λειτουργεί παρόμοια.

Μια στιγμή…

Ρυθμίστε τα domains σας

Ρυθμίστε για κάθε domain τους nameservers, τη σύνδεση με το hosting σας και ποιος θα είναι ο κάτοχος.

Φόρτωση των domains σας…