Server Absicherung (rkhunter, ssh)

Published on 2018-06-05 by Malte

Der folgende Artikel wird meine Reihe Grundlagen Server Absicherung um einen weiteren Artikel erweitern. In diesem Artikel werde ich mich auf die Konfiguration von SSH und rkhunter konzentrieren.

SSH

Vorraussetung

Um die SSH Konfiguration umsetzen und nutzen zu können und vor allem damit man weiter Zugriff auf den Server hat, müssen die folgenden Vorraussetzung erst umgetzt werden.

Benutzer anlegen

Auf dem Server legen wir einen Arbeitsnutzer an, wir nennen ihn einfach mal "workuser"

adduser workuser

Vergebt ein sicheres Passwort, der Rest ist egal wie es befüllt wird. Jetzt erzeugen wir auf dem Client einen SSH Key, wenn ihr noch keinen habt.

ssh-keygen -t ed25519

ed25519 ist ein neuer Algorithmus, der sicher ist als der alte RSA Standard. Als nächstes wird der SSH Public Key auf den Server kopiert.

ssh-copy-id workuser@example.org

Mit der Option -i könnt ihr den genauen Schlüssel angeben. Jetzt testen wir die Konfiguration

ssh workuser@example.org

Wenn ihr jetzt nach dem Passwort gefragt werdet, dann stimmt was nicht. Beachtet auch hier könnt ihr mit der Option -i den Key angeben.

SSH Koonfiguration

Den SSH Server konfigurieren wir in der Datei /etc/ssh/sshd_config, dazu löschen wir alle Zeilen raus und fügen die folgende ein:

Protocol 2
Port 3458
LogLevel Verbose

PermitRootLogin no
MaxAuthTries 2
MaxSessions 2
IgnoreRhosts yes

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

UsePAM yes

AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PrintMotd no
TCPKeepAlive no
Compression no
ClientAliveCountMax 2
UseDNS no

AcceptEnv LANG LC_*
Subsystem	sftp	/usr/lib/openssh/sftp-server

Die Konfiguration wird von Lynis als "sicher" anerkannt. Was wird genau gemacht? Ich erwähne nur die wichtigsten Punkte.

rkhunter

rkhunter ist ein Rookit Hunter der nach bekannten Rootkits, Hintertüren und bekannten Exploits auf dem Server sucht. Dazu werden von den wichtigen lokalen Dateien MD5 Hashes angelegt und verglichen.

Installation

Leider gibt es in der aktuellen Debian Version einen Bug, der dazu führt das sich rkhunter nicht updaten lässt. Daher installieren wir das Paket direkt von der Webseite.

Wir laden die aktuelle Version herrunter

wget https://netix.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz

Entpacken

tar -xvzf rkhunter-1.4.6.tar.gz

Wechselten in den Ordner und führen folgenden Befehl als root aus

./installer.sh --layout /usr/local --install
rkhunter --propupd --update

Jetzt haben wir die aktuelle Version installiert.

Scannen

Mit dem folgenden Befehl führen wir einen Stillen Scan durch, wo nur uns die Fehler angezeigt werden.

rkhunter -c --rwo

Jetzt sollten eine Menge Fehlermeldung ausgegeben werden, das liegt daran dass jede Distribution natürlich ein wenig ihre Datei anpasst. Damit diese Fehler nicht jedesmal angezeigt werde, bzw. uns per Mail zugeschickt werden, werden wir eine Whitelist erstellen. Dazu legen wir die folgenden Datei an, /etc/rkhunter.conf.local und fügenden folgenden Inhalt hinzu

SCRIPTWHITELIST=/usr/sbin/adduser
SCRIPTWHITELIST=/usr/bin/ldd
SCRIPTWHITELIST=/bin/egrep
SCRIPTWHITELIST=/bin/fgrep
SCRIPTWHITELIST=/bin/which

Ein erneuter Scan sollte keine Fehler mehr anzeigen.

Einstellungen

Jetzt werden wir noch die Default Einstellungen von rkhunter bearbeiten, die in der Datei /etc/default/rkhunter sich befinden.

# Defaults for rkhunter automatic tasks
# sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter
#
# This is a POSIX shell fragment
#

# Set this to yes to enable rkhunter daily runs
# (default: false)
CRON_DAILY_RUN="yes"

# Set this to yes to enable rkhunter weekly database updates
# (default: false)
CRON_DB_UPDATE="yes"

# Set this to yes to enable reports of weekly database updates
# (default: false)
DB_UPDATE_EMAIL="yes"

# Set this to the email address where reports and run output should be sent
# (default: root)
REPORT_EMAIL="info@example.org"

# Set this to yes to enable automatic database updates
# (default: false)
APT_AUTOGEN="yes"

# Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable)
# (default: 0)
NICE="0"

# Should daily check be run when running on battery
# powermgmt-base is required to detect if running on battery or on AC power
# (default: false)
RUN_CHECK_ON_BATTERY="false"

Die oben stehende Konfiguration ist schon angepasst, ihr könnt diese kopieren müsst nur noch die REPORT_EMAIL anpassen. Jetzt wird die Datenbank automatisch geupdatet und wir werden automatisch darüber benachrichtigt.

Cronjob

Als letztes legen wir noch einen Cronjob an, damit alles funktioniert /etc/crontab:

10 3    * * *   root    /usr/bin/rkhunter --cronjob 

Lynis

Als letztes führen wird jetzt nochmal den Lynis check aus

lynis audit system

Der Hardening Index sollte jetzt deutlich besser sein.