HowTo: CMSms Sicherheit Topic is solved

Deutschsprachiger Support für CMS Made Simple
LeisureLarry

HowTo: CMSms Sicherheit

Post by LeisureLarry »

Da ich mich derzeit mit der Optimierung meiner CMS-Installation im Umfeld von gemietetem Webspace (also Fremd-Hosting) beschäftige, möchte ich hier einmal Vorschläge zusammentragen, wie man diese sicherer machen kann. Die meisten Tips stammen derzeit aus dem nicht deutschsprachigen Teil des Forums.

Schritt 1 (Stand 13.03.2008):

Denkt Euch ein sicheres Admin-Kennwort aus und benutzt sinnvoller Weise nicht den Benutzernamen admin, administrator oder den Benutzernamen aus diesem bzw. anderen Foren. Ein einigermaßen sicheres Kennwort enthält Groß- und Kleinbuchstaben, Zahlen und eventuell sogar Sonderzeichen. Es sollte eine Länge von mindestens 8 Zeichen haben.

http://aktuell.de.selfhtml.org/artikel/gedanken/passwort/index.htm

Falls Ihr keine Idee für ein sicheres Kennwort haben solltet, so lasst Euch eines auf der nachfolgenden Website vorschlagen. Leider werden hierbei keine Sonderzeichen verwendet, weswegen die Kennwörter bei den beiden nachfolgenden Kennwortprüfungen nicht immer gut abschneiden!

https://www.passpub.com/mnemonic.php

Wer einer Website zur Erstellung nicht traut, kann auch ein entsprechendes Programm herunterladen. Das nachfolgend verlinkte Windows-Tool hört sich beispielsweise ganz brauchbar an:

http://www.gaijin.at/dlpg.php

Eine Prüfung Eures Kennworts bietet beispielsweise das Anmeldeformular eines Google-Kontos oder Microsofts Password checker. Gebt einfach Euer Kennwort ein und nehmt Euch die Angabe zur Passwortstärke zu Herzen, sofern diese nicht 'Strong' bzw. 'Best' ist. 100 Prozent sicher ist Euer Kennwort aber selbst dann nicht, ein Knacken dauert halt nur extrem lang.

https://www.google.com/accounts/NewAccount?service=analytics&hl=de
http://www.microsoft.com/protect/yourself/password/checker.mspx

Einen Hinweis darauf wie diese Prüfungen funktionieren, bietet eine Aufgabenstellung der Microsoft 'Winter Scripting Games 2008'.

http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/deu/aevent5.mspx

Hinweis: Ich habe die Angaben mal als Kommentar zu diesem Beitrag hinzugefügt, damit sie nicht verloren gehen.

Schritt 2 (Stand 21.02.2008):

Umbenennen des Ordners admin per FTP und Anpassung Eurer config.php. ACHTUNG: Man benötigt Schreibrechte für die config.php, also beispielsweise chmod 666.

Code: Select all

$config['admin_dir'] = 'xyz';
Ergänzung: Löscht die Angabe zum Admin-Ordner komplett aus Eurer robots.txt in Eurem CMS-Hauptordner. Verseht besser den neuen Admin-Ordner mit einem zusätzlichen .htpasswd/.htaccess-Schutz. Dies verhindert ebenfalls eine Indexierung der Admin-URL, aber ohne jedem zu zeigen wie sie ist (Stichwort robots.txt für jeden Besucher lesbar).

Schritt 3:

Nur noch Leserechte auf die config.php erteilen. Per FTP den chmod der config.php beispielsweise auf 444 ändern.

Schritt 4:

Ergänzt die .htaccess-Datei im Hauptordner Eures CMS und fügt den nachfolgenden Code ganz am Anfang ein.

Code: Select all

# BEGIN Optional settings

# Turns off directory browsing
# not absolutely essential, but keeps people from snooping around without 
# needing empty index.html files everywhere
Options -Indexes

# Deny access to config.php
# This can be useful if php ever breaks or dies
# Use with caution, this may break other functions of CMSms that use a config.php
# file.  This may also break other programs you have running under your CMSms
# install that use config.php.  You may need to add another .htaccess file to those
# directories to specifically allow config.php.
<Files "config.php">
order allow,deny
deny from all
</Files>

# No sense advertising what we are running
ServerSignature Off

# END Optional Settings
Schritt 5 (Stand 21.02.2008):

Erstellt eine neue .htaccess-Datei für Euer lib-Verzeichnis.

Code: Select all

order deny,allow
deny from all
<Files ~ ".*\.css|.*\.js|.*\.gif|.*\jpe?g|editor.php|thumbs.php|images.php|editorFrame.php$">
Order deny,allow
Allow from all
</Files>
Ergänzung: Ich bräuchte eine Rückmeldung, wo es hiermit eventuell noch Probleme gibt.

Schritt 6:

Erstellt eine neue .htaccess-Datei für Euer uploads-Verzeichnis.

Code: Select all

<Files *.php>
    Order deny,allow
    Deny from All
</Files>
Schritt 7 (Neu):

Deinstalliert und löscht den Modul-Manager und installiert statt dessen lieber Eure Module mittels FTP. Denn dann benötigt Euer modules-Verzeichnis nur noch den chmod 755. Gleiches gilt eventuell für den Theme-Manager, keine Ahnung wo der Dateien hinspeichert, da er bei mir sofort runtergeflogen ist.

Schritt 8 (Neu):

Verschleiert Eure Email-Adresse gegenüber Spam-Bots mittels Smarty.

Code: Select all

E-Mail: <a href="{cms_selflink href="kontakt"}">{'test@example.com'|escape:'mail'|escape:'hexentity'}</a>
ACHTUNG: Keine Ahnung wie Tiny oder FCK darauf reagieren, da ich meinen Inhalt direkt über HTML-Eingaben pflege. Zusätzlich sollte man überlegen, ob man nicht auch andere persönliche Daten so schützen will (beispielsweise Telefonnummer).

Code: Select all

Telefon: {'NUMMER'|escape:'hexentity'}
Schritt 9 (Neu):

Sperrt die bekanntesten Spam-Bots mittels .htaccess aus.

Code: Select all

# Spambots nach User_agent aussperren
RewriteCond %{HTTP_USER_AGENT} ^.*Whacker.*$ [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*TurnitinBot.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*JoBo.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*adressendeutschland.*$
RewriteRule ^.* - [F]
Hinweis: Fügt den Code in Euer .htaccess im CMS-Hauptordner direkt unter RewriteEngine on ein.

Schritt 10 (Neu):

Vermeidet die Benutzung des Tags {cms_version}. Oder wenn Ihr es wie ich als Werbung anseht, immer den aktuellsten Release-Stand installiert zu haben, dann habt ihn auch immer installiert, d.h. lasst Euch beispielsweise mittels Announcement-Mailingliste darüber informieren und installiert ihn so schnell wie möglich.

http://www.cmsmadesimple.org/support/mailing-lists

Schritt 11 (Neu 11.06.2008):

Erstellt eine neue .htaccess-Datei für Euer tmp-Verzeichnis.

Code: Select all

<Files *.php>
    Order deny,allow
    Deny from All
</Files>
Anmerkung: Keine Ahnung wie bei den jüngsten Fällen php-Dateien in dem tmp-Ordner erstellt werden konnten. Aber da es keine Notwendigkeit gibt sie dort ausführen zu können, verbieten wir dies einfach einmal.
Last edited by LeisureLarry on Tue Dec 16, 2008 9:26 am, edited 1 time in total.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Weiterführende Infos auch für das Eigenhosting findet Ihr unter den nach nachfolgenden Adressen:

http://wiki.cmsmadesimple.org/index.php/How_to#How_to_Secure_CMSMS_system_-_Small_Guide (Wiki)
http://forum.cmsmadesimple.org/index.php/topic,19660.0.html (Englisch)
http://forum.cmsmadesimple.org/index.php/topic,19684.0.html (Französisch)

Nicht CMMms spezifisch, aber trotzdem interessant:

http://forum.ovh.com/showthread.php?t=19263 (Französisch)
Last edited by LeisureLarry on Thu Mar 20, 2008 2:24 pm, edited 1 time in total.
User avatar
lollipop27
Forum Members
Forum Members
Posts: 237
Joined: Wed Sep 12, 2007 4:09 pm
Location: Germany

Re: HowTo: CMS ms Sicherheit

Post by lollipop27 »

Habe ich auch gerade festgestellt
LeisureLarry wrote: Ist derzeit fehlerhaft, da die Anweisung(en) leider den IFRAME-Zugang zur Bildverwaltung deaktivieren.
aber ich habs mal dringelassen (brauche diese funktion eh nie...)

falls ich was feststelle melde ich mich :)
cyberman

Re: HowTo: CMS ms Sicherheit

Post by cyberman »

Saubere Arbeit - werd das Thema sticky machen und als Anregung für eine neue Seite auf cmsmadesimple.de nehmen :).

Kleine Ergänzung:
LeisureLarry wrote: Schritt 2:

Umbenennen des Ordners admin per FTP und Anpassung Eurer config.php. ACHTUNG: Man benötigt Schreibrechte für die config.php, also beispielsweise chmod 666.

Code: Select all

$config['admin_dir'] = 'xyz';
Gleichzeitig sollte das Administrationsverzeichnis in der robots.txt entsprechend geändert werden.
Schritt 4:

Ergänzt die .htaccess-Datei im Hauptordner Eures CMS und fügt den nachfolgenden Code ganz am Anfang ein.

Code: Select all

# BEGIN Optional settings

# Turns off directory browsing
# not absolutely essential, but keeps people from snooping around without 
# needing empty index.html files everywhere
Options -Indexes

# Deny access to config.php
# This can be useful if php ever breaks or dies
# Use with caution, this may break other functions of CMSms that use a config.php
# file.  This may also break other programs you have running under your CMSms
# install that use config.php.  You may need to add another .htaccess file to those
# directories to specifically allow config.php.
<Files "config.php">
order allow,deny
deny from all
</Files>

# No sense advertising what we are running
ServerSignature Off

# END Optional Settings
Hier evtl. noch folgendes einfügen

Code: Select all

RewriteEngine on

# Spambots nach User_agent aussperren

RewriteCond %{HTTP_USER_AGENT} ^.*Whacker.*$ [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*FileHound.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*TurnitinBot.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*JoBo.*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*adressendeutschland.*$
RewriteRule ^.* - [F]
Diese Rewrite Anweisung bewirkt, dass der USER_AGENT vom Webserver abgefragt wird. Sollte der User-Agent wie der Name eines Spider-Programms lauten, wird ein 403 (Forbidden) Fehler gesendet.

Der obigen Code schliesst die schlimmsten Spider aus. Eine (wesentlich) umfangreichere Liste gibts hier

http://www.spywareinfo.com/harvest_project/spambots.txt

Quelle: http://www.modrewrite.de/13.13.0.0.1.0.phtml

Und passend zum Thema Spider - niemals eine Email-Adresse im Klartext veröffentlichen. Entweder eine Kontaktmöglichkeit über ein spamsicheres Kontaktformular anbieten oder die Email-Addi mit dem Smarty {mailto}-Tag verschlüsseln
* Smarty {mailto} function plugin
*
* Purpose:  automate mailto address link creation, and optionally
*          encode them.
* Input:
*        - address = e-mail address
*        - text = (optional) text to display, default is address
*        - encode = (optional) can be one of:
*                * none : no encoding (default)
*                * javascript : encode with javascript
*                * javascript_charcode : encode with javascript charcode
*                * hex : encode with hexidecimal (no javascript)
*        - cc = (optional) address(es) to carbon copy
*        - bcc = (optional) address(es) to blind carbon copy
*        - subject = (optional) e-mail subject
*        - newsgroups = (optional) newsgroup(s) to post to
*        - followupto = (optional) address(es) to follow up to
*        - extra = (optional) extra tags for the href link
Schritt 5:

Erstellt eine neue .htaccess-Datei für Euer lib-Verzeichnis.

Code: Select all

<Files *.*>
    Order deny,allow
    Deny from All
    Allow from 127.0.0.1
</Files>
Vermutlich sollte auch etwas in der Art ins /tmp- und /modules-Verzeichnis, insbesondere, wenn man sich die Module via ModulManager herunter lädt, wofür die entsprechenden Schreibrechte benötigt werden.

Unter Umständen (serverabhängig - austesten!) kann man auch die Rechte der Verzeichnisse /tmp, /uploads und /module von 777 auf 755 setzen
cyberman

Re: HowTo: CMS ms Sicherheit

Post by cyberman »

Auch im englischen Forum gibts dazu gerade einen interessanten Thread

http://forum.cmsmadesimple.org/index.ph ... 660.0.html
mike-r

Re: HowTo: CMS ms Sicherheit

Post by mike-r »

cyberman wrote: Gleichzeitig sollte das Administrationsverzeichnis in der robots.txt entsprechend geändert werden.
Ich glaube, einer der Gründe des Umbenennens ist "security by obscurity", da wäre ein solcher Eintrag kontraproduktiv.

Günstig wäre in dem Zusammenhang noch ein Extra-verzeichnisschutz des admin via htaccess/htpasswd, dann ist für Crawler und Bots dort eh Schluss (wenn sie tatsächlich durch Zufall oder "Dummheit" der Owner dort landen) und sie können nix indizieren.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Zu Schritt 1:

Dies ist tatsächlich nur Sicherheit durch Verschleierung und somit sollte man eher den ganzen Eintrag zum Admin-Ordner aus der robots.txt rausnehmen, anstatt dort für jeden Besucher sichtbar den neuen Admin-Ordner mitzuteilen.

Besser ist es, den neuen Admin-Ordner mittels .htpasswd und .htaccess gegen eine Suchmaschinen-Indexierung zu schützen. Dies geht übrigends wunderbar ohne größere Kenntnisse von der Materie beim Hoster all-inkl über deren KAS-System unter Tools.


Zu Schritt 4:

Die Ergänzung von cyberman gefällt mir sehr gut. Man sollte jedoch beachten, daß man die Ergänzung unter dem schon im Standard-Fall vorhandenen RewriteEngine on einfügt.

Die anderen Hinweise zum Thema Spam-Bots nehme ich mal als neuen Schritt auf, ebenso wie ein paar Übersetzungen aus dem englischen Beitrag.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Zu Schritt 5:

Habe eine Verbesserung gepostet, mit der die mir bekannten Probleme nicht mehr auftreten.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Ein paar Ergänzungen/Korrekturen gemacht und neue Schritte hinzugefügt.
User avatar
lollipop27
Forum Members
Forum Members
Posts: 237
Joined: Wed Sep 12, 2007 4:09 pm
Location: Germany

Re: HowTo: CMS ms Sicherheit

Post by lollipop27 »

@LeisureLarry

Es wird zwar jetzt der Image Browser angezeigt... aber ohne styles.... vorschläge woran das liegen kann? ...
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Hab den Code korrigiert, der css-Code wird leider auch aus dem lib-Ordner geladen.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

Dies ist ein Aufgabenszenario für die 'Winter Scripting Games 2008' von Microsoft

Bei dieser Aufgabe erstellen Sie ein Skript, das die Sicherheit eines Kennworts bestimmen kann. Die Kennwortsicherheit wird ermittelt, indem das Kennwort den nachfolgend aufgeführten Prüfungen unterworfen wird. Das Skript muss alle folgende Punkte erfüllen:

Bei dem Kennwort darf es sich nicht um ein reales Wort handeln.. Das Kennwort rhubarb besteht diesen Test nicht, da „rhubarb“ (Rhabarber) ein reales Wort ist. Wenn Sie prüfen möchten, ob es sich bei einem Wort um ein reales Wort handelt, verwenden Sie immer die Datei „WordList.txt“. Diese offizielle Wortliste ist Teil des Scripting Games Competitors’ Pack. (Speichern Sie diese Datei im Ordner „C:\Scripts“.)

Das Kennwort abzüglich des letzten Zeichens darf kein reales Wort sein.. Das Kennwort rhubarb5 besteht diesen Test beispielsweise nicht, weil die nach Entfernen des letzten Zeichens verbleibende Zeichenfolge – rhubarb – ein reales Wort ist.

Das Kennwort abzüglich des ersten Zeichens darf kein reales Wort sein.. Das Kennwort @rhubarb besteht diesen Test beispielsweise nicht, weil die nach Entfernen des ersten Zeichens verbleibende Zeichenfolge – rhubarb – ein reales Wort ist.

In dem Kennwort darf der Buchstabe O (groß oder klein geschrieben) nicht einfach durch die Ziffer Null (0) ersetzt werden.. Das Kennwort t00lbox besteht beispielsweise diesen Test nicht. Warum? Weil Sie ein reales Wort erhalten, wenn Sie die Nullen durch den Buchstaben O ersetzen: Toolbox.

In dem Kennwort darf der Buchstabe L (groß oder klein geschrieben) nicht einfach durch die Ziffer Eins (1) ersetzt werden.. Das Kennwort f1oti11a besteht beispielsweise diesen Test nicht. Warum? Weil Sie ein reales Wort erhalten, wenn Sie die Einsen durch den Buchstaben L ersetzen: flotilla.

Das Kennwort muss zumindest 10 Zeichen, jedoch nicht mehr als 20 Zeichen besitzen.. Das Kennwort rhubarb besteht diesen Test nicht, weil es nur aus 7 Zeichen besteht.

Das Kennwort muss mindestens eine Ziffer (0-9) enthalten.. Das Kennwort rhubarb%$qwC besteht diesen Test nicht, weil es keine Ziffer enthält.

Das Kennwort muss mindestens einen Großbuchstaben enthalten.. Das Kennwort rhubarb besteht diesen Test nicht, weil es keinen Großbuchstaben enthält.

Das Kennwort muss mindestens einen Kleinbuchstaben enthalten.. Das Kennwort RHUBARB besteht diesen Test nicht, weil es keinen Kleinbuchstaben enthält.

Das Kennwort muss mindestens ein Symbol enthalten.. Dies kann ein beliebiges Zeichen sein, bei dem es sich nicht um einen Groß- oder Kleinbuchstaben oder eine Ziffer handelt. Symbole sind unter anderem ~, @, #, $, % und ^.

Das Kennwort darf nicht vier (oder mehr) Kleinbuchstaben hintereinander enthalten.. Das Kennwort rhubARB besteht diesen Test nicht, weil es vier Kleinbuchstaben (rhub) hintereinander enthält.

Das Kennwort darf nicht vier (oder mehr) Großbuchstaben hintereinander enthalten.. Das Kennwort rHUBArb besteht diesen Test nicht, weil es vier Großbuchstaben (HUBA) hintereinander enthält.

Das Kennwort darf keine doppelten Zeichen enthalten.. Das Kennwort rhubarb besteht diesen Test nicht weil es zwei r und zwei b enthält.

Quelle: http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/deu/aevent5.mspx
cyberman

Re: HowTo: CMS ms Sicherheit

Post by cyberman »

Bei dem Thema Sicherheit sollte natürlich der Hinweis auf das PHPIDS-Modul (PHP = PHP-Intrusion Detection System) nicht fehlen

http://dev.cmsmadesimple.org/projects/phpids/

Vorraussetzung ist jedoch PHP5 und SimpleXML - das Modul macht PHPIDS für CMSms verfügbar.

Wer mehr darüber wissen möchte, sollte auf der auf der Projektwebseite des Ursprungsprojektes schauen.

http://www.phpids.org/
Sonya

Re: HowTo: CMS ms Sicherheit

Post by Sonya »

cyberman wrote: Gleichzeitig sollte das Administrationsverzeichnis in der robots.txt entsprechend geändert werden.
Wenn man den Namen eher wieder in robots.txt preisgibt, dann braucht man das Verzeichnis nicht zu ändern.

Ich gehe davon aus, dass die Robots das Verzeichnis von alleine nicht finden, wenn es darauf keine externe Links auf nicht geschützten Seiten gibt (sollte auch nicht geben!). Dann die Anweisung aus robots.txt für das Admin-Verzeichnis komplett entfernen.
LeisureLarry

Re: HowTo: CMS ms Sicherheit

Post by LeisureLarry »

@Sonya:

Sehe ich genauso (siehe auch meine Ergänzung zu Schritt 2 im Originalbeitrag).
Post Reply

Return to “German - Deutsch”