Πώς θα μπλοκάρω κακόβουλα bots μέσω του αρχείου .htaccess;

Σε αυτό το άρθρο, θα σου δείξουμε, πώς μπορείς να μπλοκάρεις κακόβουλα bots και crawlers μέσω του αρχείου .htaccess.

Σε γενικά πλαίσια, εκτός από bots / crawlers από εταιρίες που έχουν ως σκοπό την χαρτογράφηση της ιστοσελίδας σου (π.χ. Google), υπάρχουν και διάφορα άλλα τα οποία έχουν σαν σκοπό κακόβουλες ενέργειες, όπως κλοπή περιεχομένου, κατακερματισμού του bandwidth, προσθήκης spam σχολίων κ.α.

Bots / crawlers στην ιστοσελίδα σου.
Bots / crawlers στην ιστοσελίδα σου.

Εντοπισμός κακόβουλων bots.

Σε πρώτο επίπεδο, θα πρέπει να αναγνωρίσεις τα κακόβουλα bots. Για τον σχετικό έλεγχο, θα πρέπει να ελέγξεις τα αρχεία καταγραφής (logs).

Cpanel.

Μέσω του cPanel, μπορείς να κατεβάσεις τα αρχεία καταγραφής από την ενότητα Metrics μέσω της επιλογής Raw Access Logs. Στην ίδια ενότητα μπορείς να δεις και την επιλογή Visitors.

Επιλογές Visitors και Raw Access.
Επιλογές Visitors και Raw Access.

Εναλλακτικά, μπορείς να βρεις τα αρχεία καταγραφής, μέσα στον φάκελο logs στην διαδρομή /home/username/logs.

Φάκελος logs.
Φάκελος logs.
Plesk.

Μέσω του Plesk, μπορείς να τα βρεις μέσα στην επιλογή Logs.

Επιλογή Logs.
Επιλογή Logs.

Εναλλακτικά, μπορείς να τα δεις στον φάκελο logs εντός του Home directory.

Φάκελος logs.
Φάκελος logs.

Αφού εντοπίσεις τα κακόβουλα bots, μπορείς να χρησιμοποιήσεις διάφορες μεθόδους για να τα αποκλείσεις, όπως:

  • Αποκλεισμός μέσω URI αιτήματος.
  • Αποκλεισμός μέσω User-Agent.
  • Αποκλεισμός μέσω Referrer.
  • Αποκλεισμός μέσω διεύθυνσης IP.

Σε κάθε περίπτωση, οι παρακάτω κανόνες, θα πρέπει να προστεθούν στο επάνω μέρος του αρχείου .htaccess, έτσι ώστε ο Web Server να τους διαβάζει πρώτους.

Αποκλεισμός του URI αιτήματος.

Έχεις ελέγξει τα αρχεία καταγραφής και βλέπεις πολλές καταγραφές τύπου:

https://testwebsite.com/malwarebot/request/scan=3545
https://www.testwebsites.eu/4732-malwarebot/request/scan354557

Τα παραπάνω αιτήματα, έχουν πιθανότατα διαφορετικούς agents και διευθύνσεις IP. Συνεπώς για να προχωρήσεις σε αποκλεισμό των σχετικών αιτημάτων, θα πρέπει να βρεις τα κοινά μοτίβα που έχουν οι παραπάνω καταγραφές. Κάποια από αυτά είναι τα ακόλουθα:

  • malwarebot
  • request
  • scan

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

Συνεπώς και σύμφωνα με τα παραπάνω, εάν επιθυμείς να αποκλείσεις τα αιτήματα που περιέχουν το ‘malwarebot’ και το ‘scan’ μπορείς να προσθέσεις τον παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos me Query String
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{QUERY_STRING} (malwarebot|scan) [NC]
        RewriteRule (.*) - [F,L]
</IfModule>

Αποκλεισμός του User-Agent.

Από τον έλεγχο στα αρχεία καταγραφής, εντόπισες ότι υπάρχουν κακόβουλα αιτήματα που αναφέρουν στους παρακάτω agents:

  • kakovoulobot
  • crawlerhacker
  • spiderspam

(Τα ονόματα των agents είναι τυχαία.)

Σύμφωνα με το παραπάνω, μπορείς να αποκλείσεις κατευθείαν την πρόσβαση στους agents, προσθέτοντας τον παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos User-Agent
SetEnvIfNoCase User-Agent "kakovoulobot" bad_bots
SetEnvIfNoCase User-Agent "crawlerhacker" bad_bots
SetEnvIfNoCase User-Agent "spiderspam" bad_bots 
<RequireAll>
Require all granted
Require not env bad_bots
</RequireAll>

Στον παραπάνω κανόνα, μπορείς να προσθέσεις και άλλους agents, προσθέτοντας το σύμβολο pipe ( | ).

Αποκλεισμός του Referrer.

Εάν κατά τον έλεγχό σου, εντοπίσεις ότι τα bots που έχουν στοχοποιήσει την ιστοσελίδα σου έχουν κοινό referrer, τότε είναι εύκολο να περιορίσεις την πρόσβασή τους.

Για παράδειγμα, εάν εντοπίσεις από τα αρχεία καταγραφής σου τις παρακάτω εγγραφές από referrers:

(Τα ονόματα των referrers είναι τυχαία.)

Τότε μπορείς να προχωρήσεις σε προσθήκη του παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos Referrer
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTP_REFERER} ^https://(.*)kakovoulobot\.com [NC,OR]
        RewriteCond %{HTTP_REFERER} ^https://(.*)crawlerhacker\.eu [NC,OR]
        RewriteCond %{HTTP_REFERER} ^https://(.*)spiderspam\.org [NC]
        RewriteRule (.*) - [F,L]
</IfModule>
Αποκλεισμός της διεύθυνσης IP.

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

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

Για παράδειγμα, εάν επιθυμείς να προχωρήσεις σε αποκλεισμό μιας IP, μπορείς να προσθέσεις τον παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos dieuthynsis IP
<RequireAll>
    Require all granted
    Require not ip 192.168.1.1
</RequireAll>

Με τον παραπάνω κανόνα, αποκλείεις την IP 192.168.1.1 (η σχετική IP είναι τυχαία, σε αυτό το τμήμα προσθέτεις την IP που βρήκες στα logs).

Εάν επιθυμείς να προχωρήσεις σε αποκλεισμό πολλαπλών IP, μπορείς να προσθέσεις τον παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos IP
<RequireAll>
    Require all granted
    Require not ip 192.168.1.1 192.168.1.15 192.168.1.128
</RequireAll>

Με τον κανόνα παραπάνω, έχεις αποκλείσει τις IP 192.168.1.1, 192.168.1.15 και 192.168.1.128. Μπορείς να προσθέσεις όσες IP θέλεις σύμφωνα με τον κανόνα.

Σε περίπτωση που θέλεις να αποκλείσεις ολόκληρο IP range, μπορείς να προσθέσεις τον παρακάτω κανόνα στο αρχείο .htaccess:

# Apokleismos range IP
<RequireAll>
    Require all granted
    Require not ip 192 192.168 192.168.1
</RequireAll>

Σύμφωνα με το παραπάνω:

  • Στην αρχή, περιορίζεις όλο το range που ξεκινάει με 192.xxx.xxx.xxx.
  • Με την μέση, περιορίζεις όλο το range που ξεκινάει με 192.168.xxx.xxx.
  • Στο τέλος, περιορίζεις όλο το range που ξεκινάει με 192.168.1.xxx.

Σε κάθε περίπτωση, από πλευράς μας στους Shared Hosting διακομιστές, υπάρχουν ήδη σχετικοί κανόνες οι οποίοι προστατεύουν από κακόβουλα bot και crawlers την ιστοσελίδα σου.

Share it!