Kategorien
Server Administration

PHP und MySQL auf Root Server updaten SSH unter Ubuntu

Für einen frisch aufgesetzten Server lohnt es sich die aktuellste Version von MySQL und PHP zu installieren, falls diese noch nicht vorinstalliert sind.

PHP und MySQL updaten

Bestehende PHP Installation kann man mit dem folgenden Befehl finden:

php -v

Bei meinem Server war u.a. zu lesen:

PHP 5.3.2-1ubuntu4.18 with Suhosin-Patch (cli) (built: Sep 12 2012 19:12:47)

Also ist ein Update sinnvoll auf die neuste PHP Version 5.4.12. Dafür gibt es ein praktisches Tutorial, was bei mir ohne Probleme funktioniert hat. Damit wird sowohl MySQL, PHP und Apache auf die neuste Version geupdatet mit ein paar einfach Befehlen.
Dies kann kontrolliert werden durch erneutes php -v

PHP 5.4.12-1~lucid+1 (cli) (built: Feb 25 2013 18:20:00)

Sicherheits Konfiguration

Kategorien
Server Administration

DNS – Bind9 Nameserver Konfiguration – Teil3

Um seinen eigenen DNS Server unter Ubuntu zu konfigurieren, muss man nur BIND installieren:

sudo apt-get install bind9

und einfach selber konfigurieren, wie im Folgenden gezeigt wird.

Die Funktionsweise von BIND

Die zentrale Datei   /etc/bind/named.conf:

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

In dieser Datei werden nur 3 andere Datein inkludiert, die die Funktionalität beinhalten:

Die etc/bind/named.conf.options beinhaltet allgemeine Konfigurationsparameter für den Nameserver, z.B. ob rekursive Anfragen zulässig sind oder ob die Daten an andere Nameserver weitergegeben werden sollen.

Kategorien
Server Administration

DNS – Namensauflösung mit Nameservern – Teil2

Wenn man eine Domäne im Internet abfragt, wird die IP auf folgende Arten bestimmt:

Rekursive Namensauflösung

Der angefragte konfigurierte Nameserver kümmert sich komplett um das Auflösen und Cachen der DNS-Anfragen. Der Nameserver fragt selber iterativ andere Nameserver nach der Adresse, bis er die Antwort oder das Scheitern an den Client zurück sendet. Der Resolver ist der Teil des Clients, die die Kommunikation mit dem Nameserver übernimmt.

Dns-abfrage
Rekursive Namensauflösung

Kategorien
Server Administration

DNS – Grundlagen mit dig – Teil1

Was ist das Domain Name System (DNS)?

Die eindeutige Adresse im Internet, über die Server und Rechner gefunden werden können, ist allein die IP-Adresse: Bsp. IPv4-Adresse: 13.1.5.128.

Diese Adresse haben den Nachteil, dass sie schwer merkbar und nur flach hierarchisch strukturiert.

Zur Lösung des Problems wurden die DNS-Adressen eingeführt (Domänen), Beispiel: www.google.de.

Diese Adressen werden auf die IP-Adressen der Server gemappt durch Domain Name Server. Das bedeutet, wenn man die Adresse www.google.de eintippt in den Browser wird zuerst ein DNS-Lookup Request ausgeführt, der die IP Adresse bestimmt. Dies kann mit dem dig-Befehl unter Ubuntu nachvollzogen werden.

Kategorien
Amazon AWS Server Administration

Analyse: Amazon EC2 als günstige Root Server Alternative zur Entwicklung

Auf der Suche nach einem günstigem Root-Server zum Entwickeln und betreiben von meinen Webseiten bin ich über Amazon EC2 gestolpert und will im folgenden berechnen, ob sich der Betrieb finanziell lohnt im Vergleich zu einem normalen Root Server.

Die Amazon EC2 Preistabelle findet man hier.

Update:

Noch billiger sind die Reserved Instances, bei denen man für einen bestimmten Zeitraum (1 oder 3 Jahre) eine Instanz zu einem festen Preis mietet.

So bezhalt man z.B. für eine Linux Nano Instanz mit Sitz in Frankfurt jährlich nur 40$ oder für 3 Jahr 79$. Unschlagbar billig.

Das klingt erstmal günstig, aber richtig teuer wird Amazon, wenn es um große Systeme mit viel Traffic geht, da ist es günstiger selber ein Datacenter zu betreiben.

Achtung: EC2 Micro Instance ist ein Jahr kostenlos für Neukunden.

Amazon rechnet im Gegensatz zum normalen Root Server Anbietern in Stunden ab, da es sich um einen elastischen Cloud Service handelt. Es sollte bei der Rechnung immer im Hinterkopf gehalten werden, dass EC2 den Riesenvorteil einfach zu skalieren, indem man neue Instanzen dazuschaltet bei Bedarf.

Ein Rechenbeispiel für einen EC2 Entwicklungserver mit Standort Europa (Irland):

Preisvarianten für eine Micro Instance, die besonders günstig, aber nicht besonders leistungsfähig sind mit 613 MB RAM, aber vollkommen ausreichend für den Betrieb kleinerer Webseiten und als Entwicklungserver:

1. On-Demand Instances: 0,020$ pro Stunde

2. Reserved Instances mit geringer Auslastung: 0,015$ pro Stunde + $23*

3. Reserved Instances mit mittlerer Auslastung: 0,01$ pro Stunde + $54*

4. Reserved Instances mit hoher Auslastung: 0,008$ pro Stunde + $62*

Kategorien
Apache Webserver WordPress

WordPress Sicherheit: sicheres Login

Die sicherste Methode seinen Block zu schützen vor unerlaubten Login ist die Verwendung einer .htpasswd Authentifizierung.

Die Standard Login Seite von WordPress ist nicht sicher, weil Hacker Programme besitzen, die wahrlos Passwörter ausprobieren. Wenn dann noch der Login Namen bekannt ist, weil bei WordPress der Namen des Authors unter den meisten Blog Posts steht, sollte man Wert auf Sicherheit legen.

Auf jeden Fall sollten die automatischen Fehlermeldungen abgeschaltet werden bei falschen Passwort oder falschem Login, welche gefährliche Hinweise geben. Dafür muss nur in die functions.php folgender Code eingegeben werden:

add_filter( 'login_errors', create_function('$a', "return null;"));

Ich empfehle einen .htpasswd Schutz für das /wp-admin/ – Verzeichnis anzulegen.

Die .htaccess Datei gehört auch in das Root – Verzeichnis, bspw:

<Files "wp-login.php">
AuthName "backend"
AuthType Basic
AuthUserFile Root-Pfadwordpress/.htpasswd
require valid-user
</Files>

Der notwendige Root-Pfad kann folgender Maßen bestimmt werden:

echo getcwd(); 

In die .passwd kommen Login und passwort in gehachter Form. Am besten den htpasswd Generator dafür benutzen und die Daten vorher notieren.

Die Leserechte sollten auf 0444 gesetzt werden für diese beiden Dateien, damit Sie nicht überschrieben oder gelöscht werden können.

Sinnvoll ist auch die Leserechte für kritische Dateien und alle php-Dateien einzuschränken in der „Haupt“ .htaccess:

<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)">
  order deny,allow
  deny from all
</FilesMatch>

Dies ist besonders wichtig, um Hacker-Bots abzuwähren, die folgender Maßen vorgehen:

Sie suchen im Netz auf Seiten nach bestimmten WordPress-Seiten und verwendeten unsicheren Plugins, z.B. habe ich solche Anfragen protokoliert, was auf Sicherheitslücken der Plugins hindeutet:

"wp-content/themes/clockstone/readme.txt" 
"wp-content/plugins/complete-gallery-manager/readme.txt"

(Diese Themes bzw. Plugins werden bei nicht benutzt)

Kategorien
Apache Webserver PHP SEO Webdeveloper Tools

Profiling mit XDebug und Webgrind

Wenn die Performance einer Webseite nachgibt, stellt man sich oft die Frage, an welche Funktion/Modul liegt der Performanceverlust? Die Lösung ist das Profiling einer Webseite.

Profiling beschäftigt sich der Analyse der Funktionsaufrufe eine Webseite. Es kann dadurch analysiert werden, welche Teile sehr lange brauchen oder welche Funtionen doppelt aufgerufen werden.

Profiling sollte nicht auf einem Produktivsystem ausgeführt werden, weil die Performance einbricht und Ausgaben sichtbar sind. Übrigends: Wer seine Webseite schneller macht, SEO optimiert gleichzeitig.

Kategorien
Apache Webserver

Netbeans keine .svn Dateien anzeigen, aber alle anderen .Dateien

Unter Netbeans: Extras > Optionen > Verschiedenes > Dateien

Regex ändern in

^(CVS|SCCS|vssver.?\.scc|#.*#|%.*%|.svn)$|~$

 

Kategorien
Apache Webserver PHP

PHP mit htaccess debuggen: Error Log

Um die möglichen bei Usern im Betrieb  auftretenden Fehler einer Webseiten zu loggen, empfiehlt sich ein Error Log in der htaccess einzurichten außerhalb des öffentlichen Teils der Webseite. Diese muss via FTP mit Schreibrechten versehen werden.

php_flag log_errors on

php_value error_log /srv/www/vhosts/domain/non-public/PHP_errors.log

php_flag ignore_repeated_errors on

php_flag ignore_repeated_source on

php_value error_reporting 1

Dabei werden keine sich wiederholenden und nur fatal run-time Fehler geloggt.