Send a link

Ein eigener Webserver



__ rootserver kann man heute fast zum Schnäppchenpreis bekommen. Jedoch ist es sehr wichtig, dass man sich mit der Materie auskennt, da ansonsten ein falsch konfigurierter Server schnell gehackt wird.

Ich setze deshalb in sämtlichen rootserver tutorials fundiertes linux wissen voraus und werde nicht auf Linux-Basics eingehen. __

Dieses Tutorial soll den Aufbau eines "Webhosting-Tauglichen", d.H. auf Sicherheit wenn mehrere, teils unbekannte Leute Zugriff auf den Server haben.

Schließen
warning Wichtig
Dies ist kein Einsteiger-Tutorial! -Linux Einsteiger müssen sich zuerst tiefgreifend mit der Unix-/Linux Materie beschäftigen, bevor sie überhaupt daran denken einen rootserver online zu stellen!


Es wird deshalb in diesem Tutorial von fundierten Linux Kenntnissen ausgegangen.


Anforderungen


Als Hauptanforderung benötigen wir natürlich ein sicheres Grundsystem, am besten eine CentOS- oder Debian-Minimalinstallation. X-Oberflächen haben auf einem Webserver nix zu suchen.

Da wir auf diesem Server viele Ports gegen aussen offen haben werden ist die Absicherung der einzelnen Dienste ebenfalls sehr wichtig.

Auch eine Benutzerverwaltung ist ganz gut, da es auf diesem System viele Benutzer geben wird. Diese dürfen immer nur ihre Benutzerrechte haben! -Dies wird besonders wichtig beim Punkt Apache/PHP.


Was werden wir machen?


In diesem Tutorial werden wir zuerst einen LAMP (Linux Apache MySQL PHP) Server aufsetzen, danach einen Mailserver einrichten und zuletzt noch ein DNS-Server.

Web- Mail- und DNS-Server können auch je auf einem separaten Rechner, oder virtueller Maschine betrieben werden, müssen aber nicht.

Noch ein Punkt: Im Normalfall sollte der Nameserver keinesfalls auf der gleichen Maschine laufen wie der Webserver! -Wer den Nameserver nicht auf einen anderen (oder besser sogar zwei andere wegen master/slave) Server legen kann, sollte besser von free-dns Angeboten wie z.B. afraid.org Gebrauch machen.

Grundinstallation

Am Anfang zeige ich hier eine CentOS Grundinstallation, diese kann als Basis für jedes Server System genommen werden, wenn für Web-, Mail- und DNS-Server eine eigene Maschine verwendet wird.

Zuerst starten wir also das System mit einer aktuellen CentOS CD/DVD; beim "Medium Test" kann im normallfall "Skip" ausgewählt werden.

Bei der Sprache sollte man "English (English) wählen, da ansonsten später unter umständen die ganzen Befehlsausgaben "gedeutscht" werden, was sehr mühsam ist und die Suche nach Hilfe erheblich erschwert.

Beim Keyboard dann kann man natürlich wieder seine "Lieblingssprache", ausgewählt werden. ;-)

Partitionierung

Im nächsten Dialog wählen wir dann: "Create Custom Layout".

Falls das system kein echtes Hardware-RAID, aber zwei Festplatten hat:
erstellen wir zuerst eine kleine Partition mit 128MB und danch eine mit dem ganzen Rest auf jeweils beiden Platten (File System Type: Software RAID).
Danach wird der Button RAID gedrückt und zwei Arrays erstellt.

Schließen
tip Tip zur array Benennung
Standardmässig schlägt der installer md0 fürs erste array und dann +1 für jedes weitere vor. Übersichtlicher wirds jedoch, wenn man die nummern so vergibt wie sie bei den Partitionen sind, z.B. md1 für die Partitionen sda1 und sdb1, md2 für sda2/sdb2, usw.



Falls das system ein echtes Hardware-RAID hat:
In diesem Falle wird eine kleine Partition (ca. 128MB) mit ext3 und dem Mountpoint /boot (+ Checkbox: "Force to be a primary partition" selektieren) erstellt, da die meisten Bootloader mühe haben zu booten, wenn sich /boot auf dem LVM befindet.
Danach wird mit dem Rest eine Partition "physical volume (LVM)" erstellt.

LVM

Nun drücken wir den Button LVM und geben der VolumeGroup einen etwas besseren Namen, z.B. "rootvg" und erstellen darin die folgenden Volumes und grösse:

Mount Point FS Logical Volume Name Size (MB)
/ ext3 root_lv 1024
/home ext3 home_lv 32
/tmp ext3 tmp_lv 128
/usr ext3 usr_lv 1024
/var ext3 var_lv 384
SWAP swap_lv 512


Schließen
note Hinweis
Die Partitionierung ist bewusst "spärlich" gewählt, da das vergrössern eines Logical Volumes sehr viel einfacher ist als das verkleinern.
Später, wenn irgendwo mehr Platz gebraucht wird kann man das volume ganz einfach mittels
lvextend -L__<neue Grösse>__G /dev/rootvg/__<voulme name>__ && resize2fs /dev/rootvg/__<voulme name>__
vergrössert werden.


Ist alles erledigt, gehts mit Next weiter und gleich nochmals Next beim Bootloader-Dialog.
Die Netzwerk Einstellung individuell konfigurieren und Next drücken, Zeitzone auswählen, Next, Passwort setzen, Next.

Software Auswahl

Im Software-Auswahl Dialog wird nun alles Deaktiviert und unten (x)Customize now angewählt. Nach einem klick auf Next wird hier wiederum alles Deaktiviert, ausser: "Applications => Editors".

Jetzt noch zweimal Next klicken und die Installation starten lassen.

Nacharbeiten


History-Size raufsetzten

Die shell history wird sehr häufig gebraucht und manchmal sucht man auch noch Befehle, die man vor Monaten oder gar Jahren gebraucht hat. Deshalb sollte man in der Datei: /etc/profile den Wert von HISTSIZE auf etwa 100000 setzen.


Firewall ausschalten

Die Vorkonfigurierte Firewall sollte in jedem Fall angepasst werden; falls das System bereits hinter einer Hardware Firewall steht, kann diese auch komplett deaktiviert werden:
/etc/init.d/iptables stop; chkconfig iptables off


SELinux deaktivieren

SELinux erschwert in erheblichem Masse die Fehlersuche und führt zu sehr lästigen Fehlerfällen. Deshlab sollte man dieses, sofern man es nicht unbedingt benötigt, deaktivieren / auf permisse setzen.
Dazu einfach in der Datei /etc/selinux/config den Wert:
SELINUX=enforcing
auf:
SELINUX=permissive
setzen (das System muss neu gestartet werden, damit die Änderung übernommen wird!).

Basis-Pakete nachinstallieren

Nun installieren wir einige häufig genutzte Pakete in der neuesten Version:
yum install man bind-utils wget slocate ntp ftp perl telnet lsof sudo smartmontools screen unzip samba-client rsync unzip yum-priorities


rpmforge repository hinzufügen

Schließen
note Hinweis zum Zusatz-Repository
Es ist zwar dir selbst überlassen ob du Zusatz-Repositorys hinzufügen möchtest, oder ein strikt nur CentOS-Core system betreiben willst, jedoch basieren einige meiner Workshops zumindest auf ein installiertes rpmforges repository.

Da CentOS teils schon sehr alte packages und auch bei weitem nicht alles, was man so installieren möchte (z.B. nagio,nrpe,usw.) empfielt es sich das rpmforge repository hinzu zu fügen.
Zuerst muss jedoch das yum-priorities plugin installiert werden, damit die Zusatzpakete nicht mit den Stadard Paketen kollidieren, so wie wget um überhaupt an das rpmforge-rpm ran zu kommen. ;-)
yum install yum-priorities wget
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.$(uname -i).rpm
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -K rpmforge-release-0.5.2-2.el?.rf.*.rpm
rpm -ihv rpmforge-release-0.5.2-2.el?.rf.*.rpm


Nun gehe alle .repo files in /etc/yum.repos.d/ durch und füge bei jedem repository-Eintrag jeweils die Zeile:
priority=N
hinzu, wobei N eine Zahl zwischen 1 und 99 ist.
Die Empfohlenen Einstellungen sind:
[base], [addons], [updates], [extras] ... priority=1 
[centosplus],[contrib] ... priority=2
"Third Party Repos" so wie z.B. rpmforge ... priority=N  (wobei N hier eine Zahl grösser als 10 sein sollte)


Siehe dazu: Installing RPMforge (external link)



Zusätzliche Software installieren

Nun können wir noch in den Genuss der einiger beliebter Zusatz-Pakete kommen, die uns rpmforge bietet :-) :
yum install iperf atop iftop htop


System updaten und finaler restart

Zum Schluss bringen wir noch alle Pakete auf den neuesten Stand und starten das System neu:
yum upgrade
yum clean all
yum update
shutdown -r now


Du hast nun ein stabiles und schlankes "roh-linux" System, dass du für alle arten von servern verwenden kannst.

Link Beschreibung
Tutorial Installation Debian ETCH Server (external link) Gut aufgebautes Webserver Tutorial
Installing RPMforge (external link) rpmforge installieren


Neuen Kommentar posten

Anti-Bot Prüf-Code: Zufälliges Bild
Neuen Kommentar posten
Schließen
note Hinweis
Your comment will have to be approved by the moderator before it is displayed.