CentOS basis Installation

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.

[stextbox id=“warning“ caption=“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!

Man kann aber dieses Tutorial benutzen, um sich im internen Netzwerk einen Test-Server zum üben aufzubauen.[/stextbox]

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

Inhalt

Anforderungen

Als Hauptanforderung benötigen wir natürlich ein sicheres Grundsystem, am besten eine CentOS Minimalinstallation. X-Oberflächen haben auf einem Server 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!

Was werden wir machen?

In diesem Tutorial werden wir zuerst einen minimalen basis Server aufsetzen, welcher dann als Web-, Mail- oder DNS-Server eingerichtet werden kann.

Web- Mail- und DNS-Server sollten 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 300MB und danach 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.

[stextbox id=“tip“ caption=“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.[/stextbox]

Falls das system ein echtes Hardware-RAID hat:
In diesem Falle wird eine kleine Partition (ca. 256MB) mit 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.

In einer virtualisierten Umgebung mit echtem Hardware-RAID dahinter:
Hier erstellen wir eine Festplatte mit 300MB und dann eine mit ca. 20GB für den Rest. Dies macht später das dynmaische vergrössern der Platten viel leichter.

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 / Disk Name Size (MB)
/boot ext4/xfs sda 300
/ ext4/xfs root 1024
/home ext4/xfs home 100
/tmp ext4/xfs tmp 128
/usr ext4/xfs usr 2048
/var ext4/xfs var 384
SWAP 512

[stextbox id=“note“ caption=“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/VOLUME_NAME && resize2fs /dev/rootvg/VOLUME_NAME

vergrössert werden.[/stextbox]

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, bzw. „minimal install“ gewählt.

Jetzt noch zweimal Next klicken und die Installation starten lassen.

Nacharbeiten

Netzwerk-Einstellungen überprüfen

Überprüfe mit ifconfig und route ob die IP/Routing Informationen stimmen und du andere hosts pingen kannst.
Am wichtigsten ist jedoch der sogenannte „Full Qualified Domain Name“ (FQND), den du mittels:

hostname –-fqdn

überprüfen kannst. Hier muss unbedingt der volle Domainname stehen, also z.B.: „meinserver.example.org“ und nicht einfach „meinserver“. Denn hat dein Server keinen FQDN wird es später bei anderen Services (vor allem bei Mailservern) zu Problemen kommen.

Basis-Pakete nachinstallieren

Da CentOS teils schon sehr alte packages hat und auch bei weitem nicht alles, was man so installieren möchte (z.B. nagios, nrpe, usw.), empfiehlt es sich das epel repository hinzu zu fügen.
Das EPEL-Repository sind Pakete aus dem fedora-projekt (welches letztendlich auch in RHEL/CentOS fliesst!) und für RHEL/CentOS zur Verfügung gestellt werden. Das EPEL-Repository wird zwar von redhat nicht supported, aber unter gewissen umständen empfohlen.

Siehe dazu: EPEL

yum install epel-release

[stextbox id=“note“ caption=“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 epel repository.[/stextbox]

Zusätzliche Pakete installieren

Nun installieren wir einige häufig genutzte Pakete in der neuesten Version:

yum install openssh-clients man wget crontabs mlocate bind-utils ntp ftp perl telnet lsof sudo smartmontools unzip samba-client rsync unzip expat yum-priorities vim cifs-utils nfs-utils tcpdump psmisc atop htop tmux

VIM

In der default-Einstellung nimmt VIM Farben, die eher auf einen weissen Hintergrund angepasst sind. Da wir jedoch in der Regel immer einen schwarzen Hintergrund haben, sollte man dies beim vim am besten gleich global Konfigurieren und auch gleich noch das nervige automatische Einrücken der Zeilen in der Datei /etc/vimrc deaktivieren:

" CUSTOMISATION
set background=dark
" Switch off all auto-indenting
set nocindent
set nosmartindent
set noautoindent
set indentexpr=
filetype indent off
filetype plugin indent off

Verzeichnis-Farben

Auch die Farben der Verzeichnisse sind zu dunkel für den schwarzen Himntergrund der Textkonsole. Daher sollte in: /etc/DIR_COLORS die Zeile:

DIR 01;34       # directory

mit

DIR 01;33       # directory

ersetzt werden.

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:

perl -pi -w -e 's/HISTSIZE=1000/HISTSIZE=100000/g;' /etc/profile

Firewall konfigurieren/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:

chkconfig firewalld 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 permissive setzen.
Dazu einfach in der Datei /etc/selinux/config den Wert:

SELINUX=enforcing

auf:

SELINUX=permissive

Dies kann auch mit dem folgenden Zeile gleich erledigt werden:

perl -pi -w -e 's/SELINUX=enforcing/SELINUX=disabled/g;' /etc/selinux/config

setzen (das System muss neu gestartet werden, damit die Änderung übernommen wird!).

Nützliche Erweiterungen

Nachfolgend einige nützliche Zusatzerweiterungen:

ntp dameon

ntpdate pool.ntp.org
chkconfig ntpd on
/etc/init.d/ntpd start

confcat

„confcat“ ist ein Einzeiler shell-script, dass wie „cat“ funktioniert, jedoch die Kommentare weg lässt. – Dies ist manchmal sehr nützlich, wenn man einfach schnell eine Übersicht erhalten will, wass effektiv alles konfiguriert ist, ohne sich von den Kommentaren ablenken zu lassen.

Erstelle dazu einfach die Datei: /usr/local/bin/confcat mit folgendem Inhalt:

#!/bin/bash
# Code to cat a config file removing all comments and blank lines.
grep -vh '^[ ]*#' "$@" | grep -v '^[ ]*$'

Nun, wird die Datei noch schnell ausführbar gemacht und ferig:

chmod 755 /usr/local/bin/confcat

NRPE Dameon

Falls man seine Server mit icinga/nagios überwacht, wird natürlich noch der nrpe daemeon installiert:

yum -y install nrpe
chkconfig nrpe on

SSH mit private/public keys

Das authentifizieren mit SSH private/public keys ist sicherer als mit Passwort. Deshalb sollten alle User public keys in einem Zentralen Verzeichnis abgelegt werden:

mkdir -v /etc/ssh/authorized_keys/

Danach wird in der Datei /etc/ssh/sshd_config die Zeile:

#AuthorizedKeysFile     .ssh/authorized_keys

mit

AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

ersetzt.

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert