Archiv der Kategorie: IT-Sicherheit

PHP effektiv gegen Hacker-Angriffe absichern

PHP kann Dateien auf den Server schreiben, ausführbaren Code von Webadressen nachladen oder Linux-Systemkommandos mit den Rechten des Webservers ausführen. Meist sind diese Möglichkeiten nützlich und notwendig. Doch viel zu oft lässt sich, dank Fehlern, eine Funktion von außen missbrauchen, um Schädlingsprogramme auf dem Webserver zu installieren.

Deshalb sollte sich jeder Webserver-Administrator dringend mit den Konfigurationsmöglichkeiten von PHP4 beziehungsweise PHP5 vertraut machen, und nur so viele Funktionen zulassen, wie auf dem Server auch tatsächlich benötigt werden. Die dafür zuständige Datei heißt php.ini und liegt, je nach Version von Webserver und PHP, in einem der folgenden Verzeichnisse:

/etc/php4/apache/

/etc/php4/apache2/

/etc/php5/apache/

/etc/php5/apache2/

Nach jeder Änderung empfiehlt sich ein

apachectl restart

oder

apache2ctl restart

Erst mit dem Neustart werden die Änderungen wirksam. Das graceful-Kommando des Skripts apachectl reicht dazu nicht immer aus.

Gehen Sie die folgenden Anweisungen Schritt für Schritt durch und setzen Sie den vorgeschlagenen Wert in Ihrer php.ini. Setzen Sie den Wert auch, wenn er die Voreinstellung (default) ist. Denn die jeweils gültigen Voreinstellungen ändern sich des öfteren von PHP-Version zu PHP-Version. Angegeben sind die Defaults für PHP5, bei PHP4 sind sie sehr versionsabhängig.

Und das sind die Befehle:

register_globals = off ;(php5-default: off)

verhindert, dass beliebige Variable im PHP-Code durch GET- oder POST-Parameter überschrieben werden können. Beim Aufruf der URL http://server/page.php?login=true ist beispielsweise der Wert in der Variablen $_GET[„login“] abgelegt. Mit

register_globals=on

wird zusätzlich alleine über den URL-Parameter die PHP-Variable $login gesetzt. Dieser Parameter sollte darum heutzutage unter keinen Umständen mehr auf on gesetzt werden.

memory_limit = 12M ;(default: 8M)

begrenzt den Speicher (in Megabyte), der bei jedem einzelnen Aufruf eines Skripts verbraucht werden darf. So wird beispielsweise verhindert, dass eine versehentlich programmierte Endlosschleife den kompletten verfügbaren Speicher belegt. Viele PHP-Anwendungen sind recht speicherhungrig, so dass der Wert eventuell höher gewählt werden muss. Das CMS Typo3 benötigt beispielsweise eine Grenze von mindestens 16MB.

max_execution_time = 60 ;(default: 30)

begrenzt die Zeit, die ein Script für die Ausführung bekommt. Auch das verhindert Probleme mit versehentlichen Endlosschleifen. Allerdings darf der Wert nicht zu niedrig sein – schließlich soll auch bei voller Serverlast etwa eine aufwendige Datenbankabfrage ohne Fehlermeldung bearbeitet werden.

max_input_time = 60 ;(default: 60)

begrenzt die Zeit, die ein Script mit dem Einlesen der übergebenen Parameter verbringen darf.

default_socket_timeout = 60 ;(default: 60)

begrenzt die Zeit, die PHP bei der Ãœbertragung von Streams auf die Gegenseite wartet.

allow_url_fopen = off ;(default: on)

Defaultmäßig erlaubt es PHP, bei allen Befehlen, die Dateien öffnen, statt eines lokalen Dateinamen auch eine URL anzugeben. Das betrifft beispielsweise die Befehle require, include oder fopen. Setzen Sie diesen Wert nur auf on, wenn Sie diese Funktionalität unbedingt benötigen. Denn schon ein include($_GET[„filename“]) stellt ein erstklassiges Sicherheitsrisiko dar. Hier sind allerdings auch die PHP-Programmierer gefragt. Denn solche Konstruktionen sind leichtsinnig.

open_basedir = /var/www/:/usr/share/pear/ ;(default:nicht gesetzt)

Dieser Parameter schränkt das Öffnen von Dateien weiter ein. PHP läßt nur noch den Zugriff auf solche Dateien zu, die in oder unterhalb der angegebenen Pfade gespeichert sind. Allerdings sollten Sie hier nicht zu restriktiv sein: Liegt ein PHP-Programmpaket, wie etwa phpMyAdmin, in einem Pfad außerhalb des üblichen www-Verzeichnisses, muss dieser Pfad mit aufgeführt werden, sonst wird das Programmpaket nicht mehr funktionieren.

session.save_path = /var/tmp/www ;(default: nicht gesetzt)

gibt das Verzeichnis an, in dem PHP seine Session-Informationen ablegt.

Aus Sicherheitsgründen sollte dafür nicht das Standard-Tempverzeichnis genutzt werden.

upload_tmp_dir = /var/tmp/www ;(default: nicht gesetzt)

gibt das Verzeichnis an, in dem PHP hochgeladene Dateien ablegt. Auch dafür sollte keinesfalls das Standard-Tempverzeichnis verwendet werden.

upload_max_filesitze = 2M ;(default: 2M)

begrenzt die Größe der Dateien in Megabyte, die via PHP-Funktionen hochgeladen werden können. Der ideale Wert hängt davon ab, für welche Anwendungen PHP eingesetzt wird. Sie können auch einen größeren Wert, etwa 20M wählen, nur unbegrenzt sollte die Dateigröße nicht sein.

enable_dl = off ;(default: on)

Die Standardeinstellung aktiviert den PHP-Befehl dl(), der PHP-Extensions im Programmcode nachlädt. So verlieren Sie aber die Kontrolle, welche Extensions auf Ihrem Webserver verwendet werden. Stellen Sie diesen Parameter also besser auf off und laden Sie Extensions über die php.ini, etwa

extension=mysql.so

PHP-Parameter individuell einstellen

Aufwendiger wird die Einstellung, wenn nicht für den Webserver einheitliche Werte gelten sollen, etwa, weil der Server unter verschiedenen URLs verschiedene PHP-Anwendungen anbietet. Doch auch dann ist es möglich, sichere Einstellungen zu erreichen. Dazu setzt man zunächst in der php.ini alle global geltenden Werte. Alles Weitere passiert dann in den Config-Dateien des Apache-Werbservers. Dafür gibt es zwei Config-Befehle:

php_admin_flag

php_admin_value

Diese beiden Befehle können auch innerhalb eines

Blocks verwendet werden, so dass sie für einen virtuellen Server gelten. Beispiel:

(…)

php_admin_flag allow_url_fopen off

php_admin_value memory_limit 10M

php_admin_value open_basedir /home/ vserver1/:/usr/share/ pear/

Beachten Sie die Schreibweise ohne =-Zeichen.

Wenn auf Apache mehrere virtuelle Server laufen, sollten Sie open_basedir, session.save_path und upload_tmp_dir für jeden Host getrennt setzen.

Achtung, Fußangel

Nicht alle Beschränkungen, die Sie in der php.ini setzen, können in der Apache-Config wieder aufgehoben werden. Ist in der php.ini etwa allow_url_fopen auf off gesetzt, bleibt es auf off, was auch immer Sie in Apache einstellen.

Verwenden Sie in diesem Fall folgenden Trick:

allow_url_fopen = on

in der php.ini.

php_admin_flag allow_url_fopen off

in der globalen Apache-Konfiguration. Und dann wiederum

php_admin_flag allow_url_fopen = on

innerhalb des Virtualhosts, der diese Funktion benötigt. Um zu überprüfen, welche Einstellungen innerhalb eines Hosts tatsächlich gelten, verwenden Sie ein kurzes Skript mit dem Befehl phpinfo().

Noch mehr Sicherheit für PHP

Darüber hinaus gibt es weitere Parameter, um PHP noch stärker abzusichern, etwa

safe_mode =

disable_functions =

Setzt man allerdings diese Parameter auf sichere Werte, schränkt man die Funktionalität von PHP so stark ein, dass viele Anwendungen nicht mehr oder nur noch eingeschränkt funktionieren. Wer diese Parameter ändert, sollte deshalb danach seine Anwendungen ausführlich testen.

Add to Del.icio.us

PlugIns um WordPress abzusichern

NoSpamNX

NoSpamNX ist der Nachfolger von Yawasp (Yet Another WordPress Antispam Plugin) und ist ein Plugin zum Schutz vor automatisiertem Kommentar-Spam (Spambots). Während aber bei Yawasp die Namen der Formularfelder des Kommentar-Templates geändert wurde, kommt NoSpamNX ohne die Modifikationen aus, ist dabei aber genauso Effektiv. Durch den Wegfall der notwendigen Modifikationen wird eine größtmögliche Kompatibilität zur anderen WordPress- oder Browser-Plugins gewährleistet.

NoSpamNX fügt beim Aufruf des Kommentarformulars automatisch zusätzliche Felder (versteckt vor dem “normalen” Benutzer) hinzu, die beim Speichern eines Kommentares überprüft werden. Für einen zusätzliches Schutz wird die Reihenfolge und die Werte dieser Felder periodisch geändert, so dass sich kein Spambot auf das Formular eines Blogs anpassen kann.

Letztendlich bekommt man von automatisiertem Kommentar-Spam nichts mehr mit, der Nutzer muss keine zusätzlichen Felder mehr ausfüllen, und man kann sich ganz auf das Bloggen und die Kommentare seiner Leser konzentrieren!

NoSpamNX ist ein echtes “Leichtgewicht”. Es benötigt kein JavaScript, Cookies, Sessions oder Änderungen am Kommentar-Template und ist trotzdem sehr effektiv.

Homepage

Stealth Login

Mit Stealth Login kann man dafür sorgen, dass die normale “wp-login.php” Seite nicht mehr direkt aufgerufen werden kann und eine eigene URL für Logins nutzen. Das ist insofern praktisch als das man so ggf. automatisierte Angriffe auf ein Blog verhindern kann.

Hompage

WP-Ban

Mittels des WP-Ban PlugIn kann man bestimmte IP-Adressen, Referrer, Hostnamen, etc. blocken.

Hompage

WP-DBManager

Eher indirekte Sicherheit bietet dieses PlugIn da es damit möglich ist, die WP-Datenbank regelmässig automatisch zu sichern.

Homepage

WordPress File Monitor

Dieses PlugIn überwacht die WordPress-Installation und kann hinzugefügte/geänderte und entfernte Dateien an eine beliebige eMail-Adresse melden.

Homepage

WP Security Scan

Dieses PlugIn prüft verschiedene Aspekte der WordPress Installation (Datei-Berechtigungen, Admin-Account-Name, etc.) und entfernt alle Versionsinformationen um Angreifern das Leben möglichst schwer zu machen.

Homepage

Internet Service Provider (ISP) und die rechtliche Sichtweise

Service Provider (ISP)

Unter einem Internet Service Provider, auch kurz Provider genannt, versteht man im Allgemeinen eine Organisation oder ein Unternehmen, das den Zugang zu Internet-Diensten wie E-Mail, FTP oder HTTP zur Verfügung stellt (Access Provider) und/oder seinen Kunden die Möglichkeit gibt, eigene Inhalte für die Netzgemeinde zugänglich zu machen.
 

Access Provider

Beim Zugang zum Netz wählt sich typischerweise der Nutzer per Modem oder ISDN bei einem Access Provider in der Nähe ein; dabei wird geprüft, ob der Betreffende eine Zugangberechtigung hat. Trifft dies zu, so wird in diesem Augenblick der Rechner des Providers technisch gesehen zu einem Knotenpunkt, über den der Kunde mit dem Rest des Internet verbunden ist. Der Access Provider ist also ein reiner Dienstleistungsanbieter, der lediglich die Verbindung zum Internet herstellt. Deshalb haftet er gemäss § 9 TDG nicht für rechtswidrige Internet-Inhalte, denn es handelt sich dabei um Daten, die seinen Rechner lediglich passieren, ohne dass der Provider darüber Kontrollmöglichkeiten hätte.

Disk Provider

Der Disk Provider stellt Speicherplatz auf einem Rechner zur Verfügung, der in der Regel ständig mit dem Internet verbunden ist. So können Web-Seiten, die dort abgelegt sind, ständig über das Internet abgerufen werden. Da Disk Provider auf ihren Servern fremde Inhalte abspeichern, „halten sie diese bereit“. Deshalb fallen sie hinsichtlich der Verantwortung für die Inhalte unter den § 11 TDG und haften nur dann, wenn sie von einem rechtswidrigen Inhalt Kenntnis haben und es ihnen technisch möglich und zumutbar ist, die Nutzung zu verhindern (§ 8 Absatz 2 TDG).

Länderkennungen von Domain-Endungen

Internationale „generische“ Top-Level-Domains (gTLD) werden hier vorab aufgelistet:

Beschreibung TLD Beschreibung TLD
altes Arpanet .arpa Internationale öffentl. Org. .int
Kommerziell / Firmen (USA) .com US-Militär .mil
US-Bildungsstätten (Education) .edu Netzwerk (-Organisationen) .net
US-Regierung (Government) .gov Non-Profit-Organisationen .org

Neue internationale Top-Level-Domains (gTLDs):

Beschreibung TLD Beschreibung TLD
Aeronautik, Luftfahrt .aero Museen .museum
Asien (ab Ende 2007) .asia Personen .name
Business .biz Professionals .pro
Kooperationen .coop ab 2009: Kontaktdaten aus DNS, keine normalen Webseiten .tel
Europäische Union .eu Reise und Touristik .travel
Informationen .info Erotik (geplant ab 2008) .xxx
Mobilfunkbranche .mobi

Alle nationalen Landeskennungen für Top-Level-Domains:

Land TLD Land TLD
Afghanistan .af Macau .mo
Ägypten .eg Madagaskar .mg
Albanien .al Malawi .mw
Algerien .dz Malaysia .my
Amerikanisch Samoa .as Malediven .mv
Andorra .ad Mali .ml
Angola .ao Malta .mt
Anguilla .ai Marokko .ma
Antarktis .aq Marshall-Inseln .mh
Antiqua und Barbuda .ag Martinique .mq
Äquatorial-Guinea .gq Mauretanien .mr
Argentinien .ar Mauritius .mu
Armenien .am Mazedonien .mk
Aruba .aw Mexiko .mx
Ascension .ac Mikronesien .fm
Aserbaidschan .az Moldawien .md
Äthiopien .et Monaco .mc
Australien .au Mongolei .mn
Bahamas .bs Montenegro (seit 2008) .me
Bahrain .bh Montserrat .ms
Bangladesch .bd Mosambik .mz
Barbados .bb Myanmar .mm
Belgien .be Namibia .na
Belize .bz Nauru .nr
Benin .bj Nepal .np
Bermuda .bm Neukaledonien .nc
Bhutan .bt Neuseeland .nz
Bolivien .bo Nicaragua .ni
Bosnien-Herzegowina .ba Niederlande .nl
Botswana .bw Niederländische Antillen .an
Brasilien .br Niger .ne
Britische Virgin-Inseln .vg Nigeria .ng
Britisch-Indisches
Ozean-Territorium
.io Niue .nu
Brunei .bn Nordkorea .kp
Bulgarien .bg Nördliche Marianen-Inseln .mp
Burkina Faso .bf Norfolk-Inseln .nf
Burundi .bi Norwegen .no
Cayman-Insel .ky Oman .om
Chile .cl Österreich .at
China .cn Ost-Timor .tp
Christmas-Insel .cx Pakistan .pk
Cook-Inseln .ck Palau-Inseln .pw
Costa Rica .cr Panama .pa
Elfenbeinküste (Côte d’Ivoire) .ci Papua-Neuguinea .pg
Dänemark .dk Paraguay .py
Demokratische
Republik Kongo
.cd Peru .pe
Deutschland .de Philippinen .ph
Dominica .dm Pitcairn-Inseln .pn
Dominikanische Republik .do Polen .pl
Dschibuti .dj Portugal .pt
El Salvador .sv Puerto Rico .pr
Equador .ec Reunion .re
Eritrea .er Ruanda .rw
Estland .ee Rumänien .ro
Falkland Inseln .fk Russland .ru
Färöer (Dänemark) .fo Saint Kitts und Nevis .kn
Fiji .fj Saint Lucia .lc
Finnland .fi Saint Vincent mit Grenadien .vc
Frankreich .fr Samoa .ws
Französisch-Guayana .gf San Marino .sm
Französisch-Polynesien .pf Sao Tome und Principe .st
Französische Südterritorien .tf Saudi-Arabien .sa
Gabun .ga Schweden .se
Gambia .gm Schweiz .ch
Georgien .ge Senegal .sn
Ghana .gh Seychellen .sc
Gibraltar .gi Sierra Leone .sl
Grenada .gd Singapur .sg
Griechenland .gr Slowakei .sk
Grönland (Dänemark) .gl Slowenien .si
Großbritannien .uk Solomon-Inseln .sb
Guadeloupe .gp Somalia .so
Guam .gu Sowjetunion .su
Guatemala .gt Spanien .es
Guernsey (Großbrit.) .gg Sri Lanka .lk
Guinea .gn St. Helena .sh
Guinea-Bissau .gw St. Pierre und Miquelon .pm
Guyana .gy Südafrika .za
Haiti .ht Sudan .sd
Heard- und
MacDonald-Inseln
.hm Südgeorgien und Südl.
Sandwich-Inseln
.gs
Honduras .hn Südkorea .kr
Hongkong .hk Surinam .sr
Indien .in Swaziland .sz
Indonesien .id Syrien .sy
Irak .iq Tadschikistan .tj
Iran .ir Taiwan .tw
Irland .ie Tansania .tz
Island .is Thailand .th
Isle of Man (Großbrit.) .im Togo .tg
Israel .il Tokelau-Inseln .tk
Italien .it Tonga .to
Jamaika .jm Trinidad und Tobago .tt
Japan .jp Tschad .td
Jemen .ye Tschechien .cz
Jersey .je Tschechoslowakei (alt) .cs
Jordanien .jo Tunesien .tn
Jugoslawien .yu Türkei .tr
Kambodscha .kh Turkmenistan .tm
Kamerun .cm Turks- und Caicos-Inseln .tc
Kanada .ca Tuvalu .tv
Kap Verde .cv Uganda .ug
Kasachstan .kz Ukraine .ua
Katar .qa Ungarn .hu
Kenia .ke Uruguay .uy
Kirgisien .kg USA .us
Kiribati .ki Usbekistan .uz
Kokos-/Keeling-Inseln .cc Vanuatu .vu
Kolumbien .co Vatikanstaat .va
Komoren .km Venezuela .ve
Kongo .cg Vereinigte Arabische Emirate .ae
Kroatien .hr Vereinigte Staaten v. Amerika .us
Kuba .cu Vietnam .vn
Kuwait .kw Virgin-Inseln (USA) .vi
Laos .la Weißrussland .by
Lesotho .ls West-Sahara .eh
Lettland .lv Zaire .zr
Libanon .lb Zambia .zm
Liberia .lr Zentralafrika .cf
Libyen .ly Zimbabwe .zw
Liechtenstein .li Zypern .cy
Litauen .lt
Luxemburg .lu

FreeNAS 0.686.1

FreeNAS ist eine Minimal-Version der FreeBSD-Distribution auf Basis von m0n0wall und belegt 68 MB. Die Software enthält NAS-Services, wie zum Beispiel CIFS (Samba), FTP, SFTP, NFS, rsync, iSCSI, S.M.A.R.T., lokale Benutzer-Authentifizierung, Software-RAID (0,1,5) und Unison. Der Server unterstützt die Dateisysteme UFS, FAT32, Ext2/Ext3, NTFS (durch ntfs-3g Lese- und Schreibzugriff). Das Betriebssystem ist von einer Compact-Flash-Karte, USB-Stick, einer CD oder auch einer eigenen Partition auf der Hauptfestplatte bootfähig. Es wird über eine webbasierte Administrationsoberfläche über einen Client im Netzwerk gesteuert.

Außerdem kann man sich in die MS-Domain (ADS und LDAP) einbinden. Das Apple Filing Protocol (AFP) sowie Zeroconf wurden hinzugefügt.

Besonders die Web-Oberfläche ermöglicht eine einfache Konfiguraton und Überwachung des Systems.

freenasmain

Features:

  • Dateisysteme: UFS, FAT32, ext2/ext3, NTFS
  • Protokolle: CIFS (samba), FTP, NFS, SSH, rsync, iSCSI und AFP.
  • Festplattenschnittstellen: PATA (IDE) / SATA, SCSI, USB und Firewire.
  • GPT/EFI Partitionierung größer zwei TiByte möglich.
  • Netzwerkkarten: alle von FreeBSD 6 unterstützte drahtlose und drahtgebundene
  • Booten von USB Speicher
  • Hardware RAID-Controller: alle von FreeBSD 6 unterstützten
  • Software RAID 0, 1 und 5.
  • Verschlüsselung
  • Local User Authentication und Windows-Domänen
  • Unison
  • S.M.A.R.T.
  • UPnP

http://www.freenas.org/