Wordpress Performance Wordpress SEO Wordpress Security Wordpress Themes Wordpress Hosting Mein Setup Das Buch

Security Plugins für WordPress: #8 BBQ/6G

Security Plugins fuer WordPress #8 BBQ:6G

Weitere Artikel der Serie

Grand­sei­g­neur der Firewalls

In der Artikelserie zu den WordPress Security Plugins gab es inzwischen bereits alles. Starke Firewall-Lösungen für viel Geld, sparsame und trotzdem sehr effektive Firewalls und auch viele Plugins, die letztendlich nur dabei halfen die “normalen” Sicherheitseinstellungen abzuhaken, die Anfänger leider oft vergessen oder aufgrund von fehlendem Wissen nicht umsetzten können. Auch VaultPress hilft seit neustem beim Thema WordPress Security. In Teil 8 der WordPress Security Plugins kommt nun der Klassiker, der Grand­sei­g­neur wenn man so möchte, denn die Blacklist und .htaccess Tricks von Jeff Starr sind tatsächlich sehr berühmt und bereits seit Jahren stark verbreitet. Schon bevor sich die ganze Welt offensiv um die Sicherheit ihrer Blogs sorgte, erschuf Jeff Star seine genialen Blocklisten und sein fantastisches BBQ (Block Bad Queries) Plugin für WordPress. Seit mehr als 10 Jahren schraubt der Entwickler außerdem bereits an Firewalls herum und kennt sich bestens innerhalb der WordPress-Szene aus. Zeit sich die aktuelle Blockliste und die neuste Version von BBQ mal ein wenig genauer anzusehen, denn nur auf diesen Release (der lange Beta war) hatte ich gewartet, bevor ich euch das Plugin vorstellen wollte. Jetzt ist es endlich soweit.

BBQ Security Plugin

Das WordPress Plugin BBQ ist für Stammleser gar nicht so neu, denn schon sehr früh stieß ich auf diese geniale Erweiterung und empfahl sie weiter. BBQ basiert auf den Blocklisten von Jeff Starr (dazu gleich mehr) und filtert Zugriffe mit gefährlichen Inhalten oder unnötigen Parametern. Das sorgt erst einmal dafür, dass viele “merkwürdige” Anfragen fortan verschwinden und potenzielle Attacken nicht ausgenutzt werden können, da BBQ den entsprechenden Parameter vorab bereits komplett blockiert oder umleitet. So kontrolliert das WordPress Security Plugin sämtliche Zugriffe und siebt Schadhaftes entsprechend aus. Sehr effektiv, sehr simpel. Nicht umsonst hat die Free Version von BBQ derzeit keine einzige negative Bewertung, nicht umsonst hat Jeff Starr sich einen Nahmen gemacht. Mittlerweile gibt es das Plugin auch als Pro Version, welche Statistiken zeigt und weitere, auch manuelle Filter ermöglicht. Der Preis ist mit 15 Dollar mehr als fair und der Kauf rentiert sich schnell, auch weil es regelmäßige Updates gibt und Jeff Starr eben nicht irgendwer, sondern ein echter WordPress-Profi ist, der es nicht umsonst in meine Liste der wichtigen Persönlichkeiten für Blogger geschafft hat.

6G Firewall für WordPress

Doch das BBQ Plugin für WordPress basiert im Wesentlichen nur auf den bereits erwähnten Blocklisten, die jeder von euch auch selbständig via .htaccess in seinen Blog integrieren kann. Diese Blocklisten gibt es schon seit Jahren und sie werden beständig angepasst, verbessert und immer wieder sinnvoll erweitert. Der große Durchbruch gelang damals mit der 5G Firewall, die so effektiv war, dass auch einige Security Plugins sie kopierten. Die aktuellste hört auf den Namen 6G Firewall und enthält nun auch endlich den finalen Code der 6G Beta, die gerade im Bereich WordPress noch das ein oder andere Problem verursachte. Diese Probleme sind nun behoben und die finale 6G Firewall steht zum Download bereit. Diese beinhaltet so einige wertvolle Zeilen, von denen ich die wichtigsten in den folgenden Absätzen mal etwas aufschlüsseln und erklären möchte. Auch ganz allgemein zur Funktionsweise.

Minimalistische Blockliste

Den größten Vorteil den die 6G Firewall bietet, ist die Einfachheit in ihrer Machart. Simpler und minimaler .htaccess-Code, ohne überflüssigen Ballast und jede Zeile fein sortiert. Das ist, gerade im Vergleich zu manch einem fetten Firewall Plugin für WordPress, eine echte Wohltat. Schließlich sorgt eine Firewall im Idealfall auch für eine bessere Performance, da sie die unsinnigen Hackversuche und Angriffe aussiebt und blockiert, wodurch der Server entlastet wird. Durch die “fette” Machart einiger Plugins, verschwindet dieser Vorteil allerdings oft, oder wird zumindest verschwindet gering. Die 6G Firewall dagegen braucht kein PHP und kein MySQL und kontrolliert sämtliche HTTP Request auf bestimmte Muster oder bekannte Unsicherheiten. Damit erledigt sie das, was auch viele Security Plugins erledigen, nur eben effektiver und mit deutlich weniger Aufwand.

6G Firewall .htaccess

Um die 6G Firewall Blockliste zu verwenden, müsst ihr den Code von unten ganz oben in eure .htaccess integrieren. Die Abschnitte funktionieren dabei vollkommen losgelöst voneinander, ihr könnt je nach Wunsch also auch einzelne Teile entfernen, sollten sie bei euch Probleme verursachen. Allgemein ist es aber ratsam den gesamten Abschnitt zu integrieren, da jeder seinen Sinn und Zweck erfüllt und entsprechend getestet und optimiert wurde.

# 6G FIREWALL/BLACKLIST
# @ https://perishablepress.com/6g/

# 6G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
	RewriteCond %{QUERY_STRING} (127\.0\.0\.1) [NC,OR]
	RewriteCond %{QUERY_STRING} ([a-z0-9]{2000}) [NC,OR]
	RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR]
	RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR]
	RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR]
	RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR]
	RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR]
	RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR]
	RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?)\.php [NC,OR]
	RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REQUEST METHOD]
<IfModule mod_rewrite.c>
	RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REFERRERS]
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_REFERER} ([a-z0-9]{2000}) [NC,OR]
	RewriteCond %{HTTP_REFERER} (semalt.com|todaperfeita) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REQUEST STRINGS]
<IfModule mod_alias.c>
	RedirectMatch 403 (?i)([a-z0-9]{2000})
	RedirectMatch 403 (?i)(https?|ftp|php):/
	RedirectMatch 403 (?i)(base64_encode)(.*)(\()
	RedirectMatch 403 (?i)(=\\\'|=\\%27|/\\\'/?)\.
	RedirectMatch 403 (?i)/(\$(\&)?|\*|\"|\.|,|&|&?)/?$
	RedirectMatch 403 (?i)(\{0\}|\(/\(|\.\.\.|\+\+\+|\\\"\\\")
	RedirectMatch 403 (?i)(~|`|<|>|:|;|,|%|\\|\s|\{|\}|\[|\]|\|)
	RedirectMatch 403 (?i)/(=|\$&|_mm|cgi-|etc/passwd|muieblack)
	RedirectMatch 403 (?i)(&pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ)
	RedirectMatch 403 (?i)\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$
	RedirectMatch 403 (?i)/(^$|(wp-)?config|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php
</IfModule>

# 6G:[USER AGENTS]
<IfModule mod_setenvif.c>
	SetEnvIfNoCase User-Agent ([a-z0-9]{2000}) bad_bot
	SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) bad_bot
	<limit GET POST PUT>
		Order Allow,Deny
		Allow from All
		Deny from env=bad_bot
	</limit>
</IfModule>

# 6G:[BAD IPS]
<Limit GET HEAD OPTIONS POST PUT>
	Order Allow,Deny
	Allow from All
	# uncomment/edit/repeat next line to block IPs
	# Deny from 123.456.789
</Limit>

Die User Agents und IP’s könnt und müsst ihr natürlich euren eigenen Wünschen anpassen, oder diese Abschnitte komplett entfernen. So gibt es in Deutschland einige recht aggressive Bots, die ausgesperrt werden sollten. Hier hilft euch eventuell auch die bekannte IP Bannlinste, die aktualisierte und an Deutschland angepasste Listen für Bad Bots und IP-Adressen liefert.

Performance und Sicherheit

Die Sache mit den Firewalls und Blocklisten läuft am Ende immer auf dasselbe hinaus. Schädliche Bots und Anfragen werden geblockt, wodurch die Last und die Zugriffe auf den Server sinken. Das wiederum bringt eine bessere Performance mit sich und eine entsprechend höhere Sicherheit. Dadurch, das bestimmte Muster außerdem gezielt blockiert werden, wird typischen Attacken schon vorab ein Riegel vorgeschoben. Wer will blockt dann noch ganz bewusst einige IP’s oder spezielle Bots, die in den Logs auffällig oft auftauchen oder nichts Gutes im Schilde führen. Natürlich ist so eine von Hand gepflegte Blockliste über die .htaccess nicht ganz so simpel wie ein Plugin im Stile von NinjaFirewall, sie ist aber effizienter und verzichtet auf überflüssige Umwege. Wer sich damit allerdings nicht auskennt, kann auch das BBQ Pro Plugin verwenden, welches ja ebenfalls die Mechanismen der 6G Firewall nutzt, nur eben über den Weg des klassischen WordPress Plugins. Alles in allem eine sehr saubere und durchdachte Lösung, die sich entweder von Hand, oder aber via Plugin für den eigenen Blog realisieren lässt. Unbedingt mal anschauen!



Wordpress Performance eBook