Umfassender Webseitenschutz mit Jeff Starrs 6G Firewall für .htaccess

Veröffentlicht am:

Ich habe mit dem Titel des Artikels etwas übertrieben. Das muss erlaubt sein. Aber mit der 6G Firewall von Jeff Starr Erweiterung für die .htaccess Datei des Apache Webservers macht eure Webseite etwas sicherer gegenüber unerwünschten Anfragen von außen. Oder wie es der Meister persönlich schreibt:

6G is an easy-to-use, cost-effective way to secure your site against malicious HTTP activity. It helps to protect against evil exploits, ill requests, and other nefarious garbage, such as XSS attacks, SQL/PHP injections, cache poisoning, response splitting, dual-header exploits, and more

Jeff Starr auf https://perishablepress.com/6g/ (abgerufen am 06.03.2023)

Diese Sammlung von Sicherheitsmaßnahmen greift bereits auf der Serverebene, ist kostenlos erhältlich und darf auch auf kommerziellen Webseiten eingesetzt werden.

Wen ihr einen WordPress Blog betreibt und dort Gebrauch von der .htaccess macht (was definitiv der Fall ist, wenn ihr „sprechende“ Permalinks verwendet), müsst ihr das folgende Code Snippet noch vor dem WordPress Block platzieren. Die Anweisungen für WordPress erkennt ihr an diesen auskommentierten Phrasen:

 # BEGINN WORDPRESS
 ... 
# END WORDPRESS)

Erstellt eine Sicherung der originalen .htaccess Datei und speichert diese auf eurem PC ab. Dann bearbeitet die gültige Datei und fügt diesen Code Snippet ein:

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

# 6G:[QUERY STRING]
<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|move|put|trace|track) [NC]
	RewriteRule .* - [F]
</IfModule>

# 6G:[REFERRER]
<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 STRING]
<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)(~|`|<|>|:|;|,|%|\\|\{|\}|\[|\]|\|)
	RedirectMatch 403 (?i)/(=|$&|_mm|cgi-|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 AGENT]
<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
	
	# Apache < 2.3
	<IfModule !mod_authz_core.c>
		Order Allow,Deny
		Allow from all
		Deny from env=bad_bot
	</IfModule>

	# Apache >= 2.3
	<IfModule mod_authz_core.c>
		<RequireAll>
			Require all Granted
			Require not env bad_bot
		</RequireAll>
	</IfModule>
</IfModule>

Jeff Starr tüftelt seit vielen Jahren an dieser .htaccess Erweiterung. Der Regelsatz ist hinreichend erprobt (auch wenn es immer false positives geben wird) und wird einen Großteil der schadhaften Anfragen an ihrer Ausführung hindern.

Mittlerweile wurde auch die Version 7G veröffentlicht und kann im Apache Webserver implementiert werden.

Es besteht immer ein gewisses Risiko, dass sich unerfahrenen Blogbetreiber von der Bezeichnung „Firewall“ und dem impliziten Sicherheitsversprechen irritieren lassen und in trügerischer Sicherheit wiegen. Firewall klingt schließlich nach „Aktivieren und Sicher sein“.
Sicherheit ist nie ein bloßer Zustand, kein ja oder nein. Sicherheit ist ein andauernder und immerwährender Prozess. In diesem Prozess werden viele kleine und große Bausteine kombiniert und Maßnahmen umgesetzt, um bekannte Gefahren und Bedrohungen möglichst abzuwehren. Die allein seligmachende Software gibt es so nicht.

Ich kann den Einsatz der 6G Firewall Regeln nur empfehlen. In Verbindung mit weiteren Maßnahmen macht ihr es den Schadprogrammen und bösen Menschen schwerer, eure Webseite zu gefährden.

Bitte beachten Sie: die Informationen in diesem Artikel wurden zum Zeitpunkt seiner Erstellung nach bestem Wissen und Gewissen zusammengetragen, aufbereit und niedergeschrieben.
Diese können heute, abhängig vom Zeitpunkt der Veröffentlichung und des behandelnden Themas, überholt und ungültig sein.
Es obliegt den Lesern, diese Inhalte mit dem aktuellen Wissensstand abzugleichen.

Artikel online seit: 8 Jahren 8 Monaten 23 Tagen
Letzte Änderung: 06.03.2023