.htaccess Μέρος Δεύτερο Ασφάλεια

Χθες αρχίσαμε μια σειρά οδηγών για το καταπληκτικό εργαλείο .htaccess. Για όσους δεν διάβασαν το πρώτο μέρος, το .htaccess είναι ένα μικρό αρχειάκι ρύθμισης του Apache web server. Σήμερα θα δούμε πως μπορούμε να το επεξεργαστούμε για να βελτιώσουμε την ασφάλεια σε μια εγκατάσταση  WordPress.security

Θα αναφέρουμε για άλλη μια φορά τη σημαντικότητα της επεξεργασίας όλων των αρχείων (.php, .sql) που βρίσκονται αποθηκευμένα σε περιβάλλον Linux, με τον editor notepad ++ και όχι με το κλασικό notepad των Windows.

Για να αρχίσουμε με την επεξεργασία του αρχείο θα πρέπει να το κατεβάσετε στον υπολογιστή σας. Αμέσως μετά, και μετά την εγκατάσταση του Notepad plus plus, ένα δεξί κλικ πάνω του θα σας δώσει την επιλογή: Επεξεργασία με Notepad.

Πριν προχωρήσουμε θα πρέπει να κρατήσετε ένα backup στο αρχείο που κατεβάσατε.

Μετά την επεξεργασία του αρχείου υπάρχουν δύο διαφορετικοί τρόποι αποθήκευσης.

Ο ευκολότερος είναι χρησιμοποιώντας το εικονίδιο της δισκέτας saveπου βρίσκεται στην πάνω αριστερή γωνία της εφαρμογής Notepad++.

Ο δεύτερος τρόπος θα σας χρειαστεί αν θέλετε να αποθηκεύσετε το .htaccess σε περιβάλλον Windows με το save as, ή αποθήκευση ως.

Επειδή τα Windows θεωρούν ότι το .htaccess είναι η κατάληξη τύπου αρχείου και ότι της λείπει το όνομα θα σας ζητήσουν να δώσετε κάποιο όνομα στο αρχείο σας. Π.χ. όνομα.htaccess. Μπορείτε να το αποφύγετε χρησιμοποιώντας τα εισαγωγικά.

Έτσι δοκιμάστε να αποθηκεύσετε το αρχείο σας σαν “.htaccess”htaccess 2

Μετά από τα βασικά ας δούμε πως μπορούμε να ασφαλίσουμε το WordPress site μας.

Ας αρχίσουμε προστατεύοντας το ίδιο το .htaccess Την ίδια εντολή μπορείτε να την χρησιμοποιήσετε για να απαγορέψετε την πρόσβαση σε οποιοδήποτε αρχείο επιθυμείτε, αλλάζοντας απλά το όνομα του αρχείου.

<Files .htaccess>
order allow,deny
deny from all
</Files>

Αποκλείστε την πρόσβαση σε πολλά αρχεία μαζί (μπορείτε να προσθέσετε περισσότερα αν χρειάζεστε)

<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

Ας αποκλείσουμε την πρόσβαση περιήγησης στους φακέλους του site

Options All -Indexes
  • Για να την επιτρέψουμε αντί για – χρησιμοποιούμε το +

Δηλαδή:

Options All +Indexes

Φυσικά αφού μιλάμε για ασφάλεια ξεχάστε την παραπάνω εντολή

Αποκλείστε μια IP

<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
</Limit>

 

Ας κλείσουμε ορισμένα κενά τώρα

Αποκλείστε την αποστολή κάθε script με κωδικοποιημένες εντολές base64_encode

RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]

Αποκλείστε τη μέθοδο proc/self/environ

RewriteCond %{QUERY_STRING} proc/self/environ [OR]

Προστατευτείτε από κάθε script που προσπαθεί να αλλάξει τις τιμές των php globals

RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]

Προστασία από κάθε script που προσπαθεί να αλλάξει τιμή στο mosConfig

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

Αποκλείστε κάθε URL που περιέχει το tag <script>

RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]

Αποκλείστε απόπειρες αλλαγής των μεταβλητών _request

RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})

Απενεργοποίηση των ping στο xmlrpc.php

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Αποκλεισμός πρόσβασης στο debug.log

<Files debug.log>
order deny,allow
deny from all
</Files>

Αποκλεισμός ορισμένων SpyBot (μπορείτε να προσθέσετε όσα θέλετε)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^SquigglebotBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SurveyBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^YottaShopping_Bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^webcrawl\.net [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>

Απαγόρευση εκτέλεσης διάφορων scripts

AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

Απενεργοποίηση του Trace Track

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

Αποκλεισμός συνδέσεων με proxy που προσπαθούν να σχολιάσουν

RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:VIA}%{HTTP:FORWARDED}%{HTTP:USERAGENT_VIA}%{HTTP:X_FORWARDED_FOR}%{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}%{HTTP:HTTP_PC_REMOTE_ADDR}%{HTTP:HTTP_CLIENT_IP} !^$
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteRule .* - [F,NS,L]

Απενεργοποίηση με redirect σε 403 “κακών” χαρακτήρων και γνωστών κατασκοπευτικών exploit

<IfModule mod_alias.c>
RedirectMatch 403 \,
RedirectMatch 403 \:
RedirectMatch 403 \;
RedirectMatch 403 \=
RedirectMatch 403 \@
RedirectMatch 403 \[
RedirectMatch 403 \]
RedirectMatch 403 \^
RedirectMatch 403 \`
RedirectMatch 403 \{
RedirectMatch 403 \}
RedirectMatch 403 \~
RedirectMatch 403 \"
RedirectMatch 403 \$
RedirectMatch 403 \<
RedirectMatch 403 \>
RedirectMatch 403 \|
RedirectMatch 403 \.\.
RedirectMatch 403 \%0
RedirectMatch 403 \%A
RedirectMatch 403 \%B
RedirectMatch 403 \%C
RedirectMatch 403 \%D
RedirectMatch 403 \%E
RedirectMatch 403 \%F
RedirectMatch 403 \%22
RedirectMatch 403 \%27
RedirectMatch 403 \%28
RedirectMatch 403 \%29
RedirectMatch 403 \%3C
RedirectMatch 403 \%3E
RedirectMatch 403 \%3F
RedirectMatch 403 \%5B
RedirectMatch 403 \%5C
RedirectMatch 403 \%5D
RedirectMatch 403 \%7B
RedirectMatch 403 \%7C
RedirectMatch 403 \%7D
# COMMON PATTERNS
Redirectmatch 403 \_vpi
RedirectMatch 403 \.inc
Redirectmatch 403 xAou6
Redirectmatch 403 db\_name
Redirectmatch 403 select\(
Redirectmatch 403 convert\(
Redirectmatch 403 \/query\/
RedirectMatch 403 ImpEvData
Redirectmatch 403 \.XMLHTTP
Redirectmatch 403 proxydeny
RedirectMatch 403 function\.
Redirectmatch 403 remoteFile
Redirectmatch 403 servername
Redirectmatch 403 \&rptmode\=
Redirectmatch 403 sys\_cpanel
RedirectMatch 403 db\_connect
RedirectMatch 403 doeditconfig
RedirectMatch 403 check\_proxy
Redirectmatch 403 system\_user
Redirectmatch 403 \/\(null\)\/
Redirectmatch 403 clientrequest
Redirectmatch 403 option\_value
RedirectMatch 403 ref\.outcontrol
# Συγκεκριμένα Exploits
RedirectMatch 403 errors\.
RedirectMatch 403 config\.
RedirectMatch 403 include\.
RedirectMatch 403 display\.
RedirectMatch 403 register\.
Redirectmatch 403 password\.
RedirectMatch 403 maincore\.
RedirectMatch 403 authorize\.
Redirectmatch 403 macromates\.
RedirectMatch 403 head\_auth\.
RedirectMatch 403 submit\_links\.
RedirectMatch 403 change\_action\.
Redirectmatch 403 com\_facileforms\/
RedirectMatch 403 admin\_db\_utilities\.
RedirectMatch 403 admin\.webring\.docs\.
Redirectmatch 403 Table\/Latest\/index\.
</IfModule>

Πιο συγκεκριμένα Request Strings

<IfModule mod_alias.c>
RedirectMatch 403 (https?|ftp|php)\://
RedirectMatch 403 /(https?|ima|ucp)/
RedirectMatch 403 /(Permanent|Better)$
RedirectMatch 403 (\=\\\'|\=\\%27|/\\\'/?|\)\.css\()$
RedirectMatch 403 (\,|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\"\\\")
RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$
RedirectMatch 403 /(contac|fpw|install|pingserver|register)\.php$
RedirectMatch 403 (base64|crossdomain|localhost|wwwroot|e107\_)
RedirectMatch 403 (eval\(|\_vti\_|\(null\)|echo.*kae|config\.xml)
RedirectMatch 403 \.well\-known/host\-meta
RedirectMatch 403 /function\.array\-rand
RedirectMatch 403 \)\;\$\(this\)\.html\(
RedirectMatch 403 proc/self/environ
RedirectMatch 403 msnbot\.htm\)\.\_
RedirectMatch 403 /ref\.outcontrol
RedirectMatch 403 com\_cropimage
RedirectMatch 403 indonesia\.htm
RedirectMatch 403 \{\$itemURL\}
RedirectMatch 403 function\(\)
RedirectMatch 403 labels\.rdf
RedirectMatch 403 /playing.php
RedirectMatch 403 muieblackcat
</IfModule>

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

<IfModule mod_setenvif.c>
# SetEnvIfNoCase User-Agent ^$ keep_out
SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) keep_out
<limit GET POST PUT>
Order Allow,Deny
Allow from all
Deny from env=keep_out
</limit>
</IfModule>

Ανακατεύθυνση κάθε αποκλεισμένης αίτησης στην αρχική με κωδικό σφάλματος 403

RewriteRule ^(.*)$ index.php [F,L]

Απενεργοποίηση του hotlinkng

RewriteEngine On
#Αλλάξτε το ?mysite\.com/ με το domain της σελίδας σας
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#αλλάξτε το /images/no-hotlinking.png με μια δική σας φωτογραφία που αποθαρρύνει τους copycats
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/no-hotlinking.png [L]

Ξεχάσαμε κάτι; Μπορείτε να το προσθέσετε στα σχόλια και εμείς θα το προσθέσουμε στο άρθρο.

Τέλος Δεύτερου Μέρους.

iGuRu.gr The Best Technology Site in Greecefgns

κάθε δημοσίευση, άμεσα στο inbox σας

Προστεθείτε στους 2.098 εγγεγραμμένους.

Written by giorgos

Ο Γιώργος ακόμα αναρωτιέται τι κάνει εδώ....

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:
1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
2. Προκαλεί βλάβη σε ανηλίκους.
3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους .
5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).