Archiv der Kategorie: Webhosting

Fehler 503 Mediawiki auf Strato Webspace

Seit einiger Zeit setzt Strato bei der Reduzierung von unerwünschten Nachrichten („SPAM“) auf die Zusammenarbeit mit einer Forschungsgruppe der Humboldt-Universität zu Berlin um nach eigenen Angaben neue Methoden und Techniken zu entwickeln, die „gute, erwünschte“ Nachrichten von „schlechten, unerwünschten“ Nachrichten zu trennen. Doch leider funktioniert das nicht immer wie gewünscht, denn bei der Arbeit an einem Artikel meines Wiki habe ich nach Absenden der Änderung den Fehler 503 von meinem Webbrowser zurückerhalten. Eine kurze Recherche ergab, dass dies mit dem neuen Filter gegen Gästebuch-Spam (STRATO ServerSide AntiSpam) in Verbindung stehen könnte. Strato empfiehlt seinen Kunden bei Problemen diesen Filter zu deaktivieren (Strato Hilfe & Kontakt – Artikel 136). Diese Einstellung kann im Kundenbereich vorgenommen werdenScreenshot Strato ServerSide Security AntiSpam

SSL-Verschlüsselung von Websites Apache HTTP Server | Linux Ubuntu Server 12.04.2 LTS

Bereits im Eintrag vom 30. April 2013 habe ich ansatzweise erläutert, mit welchen Mitteln eine SSL-Verschlüsselung des Webservers zu realisieren ist. Um dieses Wissen anzuwenden, werden nun jene Schritte erläutert, um eine konkrete Subdomain http://xy.meinedomain.com durch ein SSL-Zertifikat abzusichern. An dieser Stelle wird davon ausgegangen, dass ihr bereits über eine abgeschlossene Installation des Webservers als auch des entsprechenden Dienstes verfügt. Dieser soll nunmehr über die abzusichernde Subdomain aufgerufen werden.

Zunächst nochmals die wichtigsten Links zum Thema:

Wiki.Ubuntuusers.de – Apache SSL

Heise Security SSL für lau

Zertifizierungstelle StartSSL

Ein SSL-Zertifikat kann durch kommerzielle Anbieter (Verisign, RapidSSL etc.) ausgestellt werden, dessen Preisen sich nach Authentifizierungsmethode und Laufzeit richten. Es gibt jedoch auch einen israelischen Anbieter (StartSSL), der ein kostenloses Zertifikat für ein Jahr Laufzeit ausstellt. Dessen Wurzelzertifikat ist bereits in allen gängigen Webbrowsern enthalten ist. Dadurch wird keine Fehlermeldung bei Aufruf der Domain ausgegeben. StartSSL verwendet als Authentifizierungsmethode eine Domainvalidierung. Diese ist Voraussetzung für die Ausstellung eines Zertifikats.

Theorie:

  1. Aktivierung des entsprechenden Apache-Moduls
  2. Änderung des Port-Konfiguration des Apache-Webservers
  3. Generierung eines Schlüsselpaars (öffentlicher und privater Schlüssel)
  4. Auslesen des öffentlichen Schlüssels und Erstellung eines Certificate Signing Request (CSR)
  5. Übermittlung des CSR an die Certificate Authority (CA)
  6. Ausstellen des Zertifikats durch die CA
  7. Speicherung des Zertifikats auf dem Webserver und Auslieferung an die Clients

Praxis:

Alle Arbeiten an der Konfiguration des Webservers sollten im Ordner /etc/apache2 durchgeführt werden.

Einige Befehle für den Apache-Webserver:

sudo service apache2 start
sudo service apache2 stop
sudo service apache2 restart
sudo service apache2 force-reload

1. Schritt: Änderung der Konfiguration ports.conf (/etc/apache2) des Apache-Webservers, so dass dieser auf Anfragen des Ports 443 reagiert (Standard-Port für HTTPS-Verbindungen). Falls der Server über einen SSH-Dienst verfügt, kann die Konfiguration bequem über eine SFTP-Verbindung übertragen und am lokalen Rechner bearbeitet werden. Jedoch ist die Bearbeitung mittels eines SSH-Terminals und einem passenden Editors (z.B. vi) in der Regel komfortabler.

sudo vi /etc/apache2/ports.conf

Die folgenden beiden Argumente sollten nicht auskommentiert, also aktiv sein:

[IfModule mod_ssl.c]
Listen 443
[/IfModule]
[IfModule mod_gnutls.c]
Listen 443
[/IfModule]

Bitte <> anstelle [] verwenden!

2. Schritt: Danach kann das SSL-Modul aktiviert werden.

sudo a2enmod ssl

Über den Befehl sudo a2dismod ssl kann das Modul auch jederzeit wieder deaktiviert werden.

3. Schritt: Nun wird das Schlüsselpaar (öffentlicher und privater Key) generiert:

openssl genrsa -out xy.meinedomain.com.com.key 2048

Anschließend kann das CSR erstellt werden:

openssl req -new -nodes -newkey rsa:2048 -keyout xy.meinedomain.com.key -out xy.meinedomain.com.csr

Dabei werden einige Punkte abgefragt sowie ein Challenge Password gefordert. Dieser Punkt kann mit einer Enter-Bestätigung übersprungen werden. Nach diesem Schritt befinden sich zwei neue Dateien xy.meinedomain.com.key sowie xy.meinedomain.com.csr im Arbeitsordner /etc/apache2. Diese sollten im Anschluss auf den lokalen Rechner gespeichert werden.

3. Schritt: Jetzt wird mit dem Anlegen eines Benutzeraccount bei StartSSL begonnen: Control Panel – Sign-Up. Nachdem alle Angaben gemacht wurden, wird die Validierung der Domain durchgeführt: Validations Wizard – „Type“ Domain Name Validation. Abgeschlossen wird der Vorgang mit der Zusendung und Eingabe des Bestätigungscodes.

4. Schritt: Im Anschluss kann das Zertifikat beantragt werden: Certificates Wizard – „Certificate Target“ WebServer SSL/TLS – Skip „Generate Private Key“ – Submit Certificate Request (CSR). Hier den Inhalt der Datei  xy.meinedomain.com.csr einfügen und übermitteln. Danach den „Top Target Domain“ auswählen und Subdomain festlegen. Damit ist der Prozess abgeschlossen. Mit einem Klick auf „Continue“ wird der Zertifikatinhalt erzeugt. Dieser wird vollständig in eine Textdatei kopiert und mit der Endung .crt abgespeichert.

5. Schritt: Zuletzt müsst ihr noch die Zertifikate „StartComm Root CA (PEM encoded)“ und das „Class 1 Intermediate Server CA“ herunterladen. Nun alle Dateien auf den Server übertragen und  in einem separaten Ordner unter /etc/apache2 abspeichern.

Abschließender Schritt: Abschließend muss ein VirtualHost für den SSL-Zugriff angelegt werden. Falls der abzusichernde Webservice bereits über eine Subdomain erreicht wird, kann auch eine Änderung notwendig sein. In der Regel werden die VirtualHost-Dateien unter /etc/apache2/sites-available unter ihrem Subdomainnamen abgespeichert. Die beispielhafte Konfiguration ist nachfolgend dargestellt:

2013-08-05_190730

 

Durch Ausführen eines Neustarts des Apache-Webservers wird die neue Konfiguration übernommen und der Webservice sollte nun verschlüsselt über die Subdomain aufgerufen werden können.

PHP Einstellungen Owncloud und Strato Webhosting

Nach der Installation des Owncloud-Pakets müssen Änderungen an den globalen PHP-Einstellungen sowie einer spezifischen PHP-Datei vorgenommen werden. Diese sind notwendig, um die volle Funktionalität sicherzustellen.

Um bei dem im Titel genannten Webhosting-Anbieter die globalen PHP-Einstellungen zu ändern, muss eine eigene PHP-Konfiguration erstellt werden. Unter Verwendungen eines beliebigen Texteditors werden die von den Standardeinstellungen abweichenden Parameter in ein Dokument geschrieben und die Datei unter dem Namen „php.ini“ abgespeichert. Diese Datei wird danach mit einem beliebigen FTP-Programm oder einer SSH-Verbindung in das Owncloud-Wurzelverzeichnis hochgeladen. Durch dieses Vorgehen wird sichergestellt, dass der Apache-Webserver des Hosters die geänderten Parameter auf alle Unterverzeichnis anwendet. Für die eigene Installation habe ich mich für folgende Abweichungen entschieden:

file_uploads = On
max_execution_time = 600
safe_mode = Off
post_max_size = 650M
upload_max_filesize = 500M
max_file_uploads = 20
register_globals = Off

Diese Werte geben an, dass der Upload von Dateien mit max. 500 MB möglich ist. Für die Änderung von PHP-Parametern gibt es unzählige Möglichkeiten. Um den Upload großer Dateien zu ermöglichen, werden in diesem Artikel einige Hinweise auf die korrekten Werte gegeben.

Der Apache-Webserver von Strato ist so eingestellt, dass automatisch eine .htaccess-Datei in dem Verzeichnis der php.ini angelegt wird. Dadurch wird der Webserver angewiesen, die geänderten Einstellungen zu verwenden. Falls diese Datei nicht erstellt wird, so kann diese auch manuell geschrieben werden.

SetEnv PHPRC /verzeichnis der eigenen php.ini

Zur Kontrolle der PHP-Einstellungen bietet es sich an, eine Subdomain auf einen beliebigen Unterordner des Owncloud-Wurzelverzeichnis (/owncloud, /php) einzurichten und über eine „index.php“  mit dem folgendem Inhalt die Werte auszulesen.

<?php
phpinfo();
phpversion();
?>

Nachdem die PHP-Einstellungen erfolgreich angepasst sind, muss noch ein spezifisches Problem gelöst werden. Denn ohne die Änderung der „local.php“ im nachstehenden Verzeichnis, ist der Upload von Daten nicht möglich.

/domain/owncloud/lib/filestorage

Dies ist auf eine fehlerhafte bzw. unvollständige Verarbeitung einer Funktion zurückzuführen. Um diesen Fehler zu korrigieren, muss der folgende Code gesucht werden.

public function free_space($path) {
return disk_free_space($this->datadir.$path);

Nun muss der zweite Teil der Funktion je nach verfügbarem Speicher des Hosting-Paketes anpasst werden. Wenn zum Beispiel 2 GB für die Verwendung von Owncloud zur Verfügung stehen, so muss dieser Wert zunächst in Byte (2 GB = 2147483648 B) umgerechnet und dann in der Funktion explizit übergeben werden.

public function free_space($path) {
return 2147483648;

Damit wird sichergestellt, dass ein exakter Wert bezüglich des freien Speichers übergeben wird. Mithilfe dieser Änderungen ist der erfolgreiche Betrieb eines eigenen Cloudspeichers über den Hostinganbieter „Strato“ möglich.

Stand: Owncloud Version 4.5.6 | PHP 5.3.22

Hier sind alle geänderten Dateien in einem ZIP-Archiv zusammengefasst.

Weitere Informationen:

Owncloud-Forum „OwnCloud 4.0.3 Max Upload Size = 0B?“

BITblokes „ownCloud bei Shared Webhosting – Kann keine Datei hochladen (Upload max. B)“

Webdecker „PHP: INI-WERTE ÜBERSCHREIBEN“

Byterechner

Das Owncloud-Logo ist Eigentum der Owncloud Inc.

Installation Owncloud Webhosting

Um das Owncloud-System auf einer Linux-Installation zu testen, damit es zu einem späteren Zeitpunkt auch auf dem Colocation-Server eingesetzt werden kann, werde ich an dieser Stelle beschreiben wie die Installation auf vorhandenen Speicherplatz von Webhostinganbietern durchgeführt wird. Wichtig ist, dass sowohl PHP als auch MySQL unterstützt bzw. bereitgestellt werden.

Zu einem späteren Zeitpunkt werde ich auch versuchen, eine verschlüsselte Verbindung einzurichten.

1. Schritt

Es gibt zwei Wege Owncloud zu installieren. Das Installationspaket kann als Archiv runtergeladen oder als Skript ausgeführt werden. Ich werde an dieser Stelle die Installation mit Hilfe eines FTP-Programms sowie einer SSH-Konsole beschreiben. Daher kommt das Installationsskript nicht zur Anwendung. Eigentlich benötigt man nur ein FTP-Programm, jedoch kann die Installation durch die Verwendung von SSH-Befehlen um einige Zeit verkürzt werden.

Als erstes legt man einen neuen Ordner an. Hierbei sollte man sich an der Domain orientieren, über die man das Interface später aufrufen möchte.

Das Installationsarchiv wird anschließend in den Ordner mittels FTP-Programm hochgeladen.

2. Schritt

Danach wird mittels SSH-Programm (z.B. PuttY) eine Verbindung zu den Servern des Webhostinganbieters aufgebaut. Man muss in das Verzeichnis mit den Installationsarchiv wechseln. Man verwendet dafür den folgenden Befehl:

cd <verzeichnisname>

Das Archiv liegt im Format .tar.bz2 vor. Daher muss es entpackt werden:

bzip2 -d <verzeichnisname>.tar.bz2
d: Dekomprimieren

Danach liegt es im Format .tar vor. Ein weiteres Mal muss die Datei entpackt werden:

tar vxf <verzeichnisname>.tar
x: Dateien aus dem Archiv holen
v: Listet alle Dateien beim Entpacken auf
f: Gibt das Archiv an das entpackt werden soll

Diese Vorgänge werden mit einer SSH-Konsole sehr viel schneller erledigt, da bei einem FTP-Programm alle Dateien manuell übertragen werden müssen.

3. Schritt

Nun wird mittels des Webinterface des Webhostinganbieters eine Umleitung zum Verzeichnis eingerichtet. Danach kann die Einrichtung von Owncloud abgeschlossen werden. Dafür müssen Verbindungseinstellungen für eine MySQL-Datenbank vorliegen (siehe Screenshot).

 

4. Schritt

Der letzte Schritt ist die Anpassung der Einstellung für PHP in der php.ini. An dieser Stelle komme ich im Moment noch weiter, da ich zwar eine Anpassung vorgenommen habe, dieser aber nicht für die Unterverzeichnisse angewendet wird.

Weitere interessante SSH-Befehle

.tar verpacken

tar cvf <verzeichnisname>.tar
c: Neues Archiv erzeugen
v: Listet alle Dateien beim Verpacken auf
f: Gibt das Archiv an, das verpackt werden soll

Ordner erstellen

mkdir <ordnername>
erstellt einen neuen Ordner

Datei löschenn

rm <dateiname>
löscht die Datei

Ordner löschen

rm -R <ordnername>
löscht den Ordner mit dem gesamten Inhalt

Das Owncloud-Logo ist Eigentum der Owncloud Inc.

php.ini bei 1und1 Webhosting-Paketen anpassen

Um auch größere Dateiuploads z.B. in WordPress zuzulassen, sind zwei Änderungen notwendig:

  1. Hinzufügen einer .htaccess – Datei in das Hauptverzeichnis, dessen PHP-Einstellungen geändert werden sollen.
    • .htaccess (Datei befindet sich im .ZIP-Archiv)
  2. Die geänderte php.ini muss in das Verzeichnis kopiert werden, welche die Einstellungen erben soll (bei WordPress „wp-admin“)

Bei der „Recommended“-PHP.ini handelt es sich um die nicht geänderte Version aus der Installation von PHP 5.2.17. In der angepassten Version wurde das Upload-Limit auf 40MB erhöht. Selbstverständlich muss der Dateiname im Verzeichnis auf „php.ini“ gekürzt werden.

Das Logo von PHP ist Eigentum der gleichnamigen Foundation.