Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

gelöst Rootserver mit Debian Bookworm *FULL ENCRYPTED* inkl. Firewall/fail2ban und OSCam

TDCroPower

Elite User
Registriert
13. Juli 2010
Beiträge
1.540
Reaktionspunkte
854
Punkte
283
Ort
127.0.0.1
Angelehnt an die super Anleitung von axel: Rootserver mit Debian Jessie/Stretch FULL ENCRYPTED inkl. Iptables-Firewall und Simplebuild
wollte ich eine aktuellere Anleitung zu dem Thema anbieten mit dem ich meinen eigenen VPS erfolgreich aufgesetzt habe.

Diese Anleitung dreht sich um folgende Aspekte:
  • Angemieteten "Dedicated Rootserver"/VPS vollverschlüsseln via "Rescue-System"
  • Iptables- (Firewall-)Skript zur Absicherung des Servers
  • fail2ban um ungewünschte Login Versuche auszusperren
  • Installation von IPC oder simplebuild3 zum "selbstbacken" von OSCam
Vorteile:
  • Kein Realtime-Monitoring durch Provider
  • Kein Provider-Kernel
  • Download von Paketen nicht über Provider, sondern direkt über Debian
  • Direkter SSH-Zugang als Superuser root
  • Möglichst unabhängig von Provider-Infrastruktur
  • Minimalsystem
  • Komplett verschlüsselter Root-Server mit Entschlüsselung über SSH
Ich habe mir hierfür einen VPS ( 1€/Monat) bei netcup zugelegt, ihr könnt theoretisch jeden Anbieter nehmen, er sollte euch jedoch ein Rescue-System Zugang anbieten.

Warum sollte ich einen VPS verwenden?
- In meinem Fall um die Verfügbarkeit des Servers noch weiter zu erhöhen, da der VPS immer verfügbar für meine Clients ist und ich die lokalen Karten auf zwei getrennte Netzwerke verteilen kann.
Fällt ein lokaler Server mal aus oder muss gewartet werden, greifen die Clients nur noch auf die Karten des zweiten lokalen Server und bemerken somit nichts davon das der erste lokale Server aktuell mal nicht verfügbar ist.
Voraussetzung dafür ist natürlich das man von seinen Karten zwei gleiche besitzt (Zweitkarte) um sie auf die beiden lokalen Server aufteilen zu können.
Aber auch wenn ihr vielleicht Karten mit anderen Usern "tauscht" hat der VPS einen rießen Vorteil für euch, da die Tausch Verbindung nun über den VPS läuft und dadurch immer aktiv bleibt.

Wichtig vorab:
Bevor wir zusammen nun starten...
Öffnet auf eurem Rechner einen Texteditor eurer Wahl.
Für Windows ist Notepad++ und für macOS ist Visual Studio Code eine gute Wahl dafür.
Kopiert ALLE Befehle und ALLE Ausgaben die ihr bei der Installation erlebt direkt in diese Textdatei hinein.
Beispiel:
Befehl 1
Ausgabe 1
--------------
Befehl 2
Ausgabe 2

Nano Crash Kurs:
In der Anleitung habe ich den nano Editor verwendet, ihr könnt natürlich auch andere wie vi verwenden.
Die wichtigsten nano Befehle will ich hier kurz auflisten, sodass ich sie nicht immer wieder in der Beschreibung erwähnen muss.
STRG + X: Datei schließen (wenn nicht gespeichert, fragt er nach)
STRG + O: Datei speichern
STRG + W: Datei durchsuchen
STRG + K: aktuelle Zeile ausschneiden/löschen
STRG + A: Zum Zeilenanfang springen.
STRG + E: Zum Zeilenende springen.


So nun aber let's gooo....

Changelog...
Code:
22.03.2025 - Spoiler entfernt
05.03.2025 - Command fix in Thema 1 - Schritt 25.1
03.03.2025 - Hinweis auf Festplattenbezeichnung hinzugefügt
01.03.2025 - Nano Editor Tipps hinzugefügt
28.02.2025 - Erste Version der Anleitung
 
Zuletzt bearbeitet:
###########################
### Thema 1: Installation des VPS

1. Installiert auf dem VPS zunächst ein normales Debian 12 Bookworm zu finden unter Media -> Images...
Du musst Regestriert sein, um das angehängte Bild zusehen.

2. Ist die Installation abgeschlossen, könnt ihr euch entweder direkt per VNC über General -> klick auf das "Schwarze Fenster" in Debian einloggen oder ihr geht über SSH drauf...
Du musst Regestriert sein, um das angehängte Bild zusehen.

3. Ihr benötigt nun den Inhalt folgender Dateien, gibt dafür folgende Befehle nacheinander ein und sichert euch die Ausgabe in eure Textdatei...
Code:
cat /etc/resolv.conf
hostname
cat /etc/network/interfaces
ls -l /etc/network/interfaces.d
cat /etc/network/interfaces.d/*

4. Habt ihr alle notwendigen Information gesammelt und gesichert können wir in das Rescue-System booten.
Geht dafür auf Media -> Rescue System und drückt auf den Activate Button
Du musst Regestriert sein, um das angehängte Bild zusehen.

5.1. Euch wird ein temporäres "Root Passwort" angezeigt, sichert euch diesen weg, den benötigt ihr um euch nun per SSH einzuloggen...
Du musst Regestriert sein, um das angehängte Bild zusehen.
5.2. Einloggen mit...
Code:
ssh root@IP-des-VPS
Passwort: temporäres "Root Passwort"

6.1. Seid ihr nun eingeloggt fangen wir mit der Partitionierung der Festplatte des VPS an...
Hinweis: hier im Beispiel hat mein VPS die Festplattenbezeichnung vda und die partitionen dadurch vda1, vda2 und vda3.
Ändert in allen Befehlen überall das vda auf eure Festplattenbezeichnung um!
Code:
cfdisk -z
6.2. Wählt bei Select label type hier gpt aus.
6.3. Für die 1te Partition (/dev/vda1):
  1. wählt am unteren Rand New aus
  2. gibt 1G ein
6.4. Für die 2te Partition (/dev/vda2):
  1. wählt zunächst den freien Speicher aus
  2. dann am unteren Rand New aus
  3. gibt 512MB ein
  4. dann am unteren Rand Type aus
  5. wählt Linux Swap aus
6.5. Für die 3te Partition (/dev/vda3):
  • wählt zunächst den freien Speicher aus
  • dann am unteren Rand New aus
  • drückt einfach Enter um den vollen Restspeicher zu belegen
6.6. Wählt nun am unteren Rand Write aus und bestätigt mit yes
6.7. verlasst den Partitionsmanager mit Quit

7.1. Nun formatieren wir zunächst die 1te Partition für das unverschlüsselte Boot - Dropbear / Minimalsystem...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
mkfs.ext4 /dev/vda1
7.2. Bestätigt die Frage mit y

8. Erstellt euch ein Passwort, das mindestens 100 Zeichen enthält, z.B. über folgende Webseite:
9.1. Nun formatieren wir als nächstes die 3te Partition und verschlüsseln diese dabei auch gleich...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
cryptsetup luksFormat --type luks1 /dev/vda3
9.2. bestätigt die Frage mit YES
9.3. gibt nun euer generiertes 100 Zeichen Passwort ein

10.1. Öffnet nun die verschlüsselte Partition...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
cryptsetup luksOpen /dev/vda3 vda3_crypt
10.2. gibt zum entschlüsseln euer generiertes 100 Zeichen Passwort ein

11. Formatiert im Anschluß die Parition...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
mkfs.ext4 /dev/mapper/vda3_crypt

12. Als nächstes müssen die Verzeichnisse eingebunden werden...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
mount /dev/mapper/vda3_crypt /mnt
mkdir /mnt/boot
mount /dev/vda1 /mnt/boot
mount -t tmpfs none /tmp

13. Die Installation von Debian 8 (Jessie) erfolgt über Debootstrap...
Code:
cd /tmp
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
wget http://archive.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.67_all.deb

14. entpackt nun die Pakete...
Code:
ar -xf debootstrap_1.0.67_all.deb
tar xzf data.tar.gz
tar xzf control.tar.gz

15. Nun prüft ihr ob die Pakete unverändert im System angekommen sind...
Hinweis: keine Ausgabe ist ein gutes Zeichen
Code:
cat md5sums | cut -d " " -f 3 | xargs md5sum $1 > md5sums.local; diff md5sums md5sums.local

16.1. nun bearbeitet ihr die debootstrap Datei...
Code:
nano usr/sbin/debootstrap
16.2. ändert folgende beiden Zeilen um...
Zeile 17:
Code:
DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
Zeile 29:
Code:
DISABLE_KEYRING ="1"

17. Um sicherzugehen, dass nur offizielle Pakete ohne "Backdoors" auf dem neuen System installiert werden, müssen die Signaturen aller Pakete geprüft werden.
Code:
wget --no-check-certificate https://ftp-master.debian.org/keys/archive-key-6.0.asc
gpg --import archive-key-6.0.asc

18. startet nun die Installation von Debian 8 (Jessie)...
Code:
usr/sbin/debootstrap --keyring=/root/.gnupg/pubring.gpg --arch amd64 jessie /mnt/ http://archive.debian.org/debian

19. wechselt nun ins chroot...
Code:
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t tmpfs none /mnt/tmp
mount -o bind /sys /mnt/sys
LANG=C chroot /mnt /bin/bash

20. als erstes ändert das Passwort des Superusers root...
Code:
passwd

22. erstellt nun einen eigenen User hier als Beispiel bernd...
Hinweis: nutzt natürlich nicht das Beispiel bernd !!! Benennt euren User selber !!!
Code:
adduser bernd

### Ab hier benötigt ihr eure VPS Debian 12 Daten aus Schritt 3 ! ###
23. setzt den hostname anhand euer Notizen...
Code:
echo EuerHostname > /etc/hostname
Beispiel:
echo debian > /etc/hostname

24. fügt die VPS IP Adresse zum hostname in die host Datei hinzu...
Code:
echo IPAdressedesVPS EuerHostname >> /etc/hosts
Beispiel:
echo 192.168.111.56 debian >> /etc/hosts

25.1. führt nun folgenden Befehl aus...
Code:
touch /etc/default/bootlogd && cat > /etc/resolv.conf  /etc/network/interfaces  /etc/default/bootlogd
25.2. fügt nun in folgende Dateien den Inhalt aus Schritt 3 ein...
Hinweis: DATEI gegen den Dateinamen der bei euch in dem Verzeichnis lag ändern!
Code:
nano /etc/resolv.conf
nano /etc/network/interfaces
nano /etc/network/interfaces.d/DATEI
### Ab hier benötigt ihr eure VPS Debian 12 Daten erstmal nicht mehr, behaltet sie aber gesichert ###

26.1. öffnet nun die crypttab Datei...
Code:
nano /etc/crypttab
26.2. ersetzt den Inhalt komplett gegen folgenden...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
vda2_crypt /dev/vda2 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap
vda3_crypt /dev/vda3 none luks

27.1. öffnet nun die fstab Datei...
Code:
nano /etc/fstab
27.2. ersetzt den Inhalt komplett gegen folgenden...
Hinweis: Festplattenbezeichnung kontrollieren!
Code:
/dev/vda1               /boot   ext4    noatime 0       2
/dev/mapper/vda2_crypt  none    swap    sw      0       0
/dev/mapper/vda3_crypt  /       ext4    noatime,defaults,errors=remount-ro 0 1
proc /proc proc defaults

28.1. und als letztes noch die Paketliste...
Code:
nano /etc/apt/sources.list
28.2. ersetzt den Inhalt komplett gegen folgenden...
Code:
# Debian Jessie (EOL) - Hauptrepositorys
deb http://archive.debian.org/debian/ jessie main contrib non-free
deb-src http://archive.debian.org/debian/ jessie main contrib non-free

# Debian Jessie Sicherheitsupdates (EOL)
deb http://archive.debian.org/debian-security jessie/updates main contrib non-free
deb-src http://archive.debian.org/debian-security jessie/updates main contrib non-free

# Debian Jessie Updates (EOL)
deb http://archive.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://archive.debian.org/debian/ jessie-updates main contrib non-free

29. Aktualisiert als nächstes das System...
Hinweis: die Meldung mit expired keys könnt ihr ignorieren.
Code:
apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y

30.1. Installiert nun locales um die Systemsprache ändern zu können...
Code:
apt-get install locales && dpkg-reconfigure locales
30.2. ihr könnt nun die Systemsprache auswählen, wählt nur eines der beiden aus...
  • en_GB.UTF-8 (Englisch, meine Empfehlung)
  • de_DE.UTF-8 (Deutsch)

31.1. führt nun folgenden Befehl aus um die Zone ändern zu können...
Code:
dpkg-reconfigure tzdata
31.2. Wählt hier Europe -> Berlin aus

32.1. Für die Kernelinstallation gibt zunächst folgendes ein...
Code:
cat /proc/mounts > /etc/mtab
32.2. und startet nun die Installation des Kernels...
Code:
apt-get install linux-image-amd64

33.1. Installiert als nächstes wichtige Pakete nach...
Code:
apt-get install ssh grub-pc pciutils psmisc cryptsetup dropbear busybox nmap mc ntpdate
33.2. Bei der Installation von Grub werdet Ihr gefragt, wohin es installiert werden soll.
Da die meisten nur eine Festplatte nutzen, wählt Ihr bitte /dev/vda aus und bestätigt mit OK.

34.1. Öffnet nun folgende Datei um den Remote-Unlock zu konfigurieren...
Code:
nano /etc/initramfs-tools/initramfs.conf
34.2. sucht nach der Zeile mit DEVICE und ersetzt diese mit folgendem...
Code:
DEVICE=eth0
IP=IPvomServer::GatewayVomServer:SubnetVomServer:HostnameVomServer:eth0:off
DROPBEAR=y
Beispiel:
IP=195.168.111.56::195.168.100.1:255.255.252.0:debian:eth0:off

35. Die Änderung in das initrd übernehmen...
Code:
update-initramfs -u -k all

36.1. liest euch nun den RSA-Key aus...
Code:
cat /etc/initramfs-tools/root/.ssh/id_rsa
36.2. speichert den Key auf eurem Rechner z.B. in eine Datei id_rsa_vps ab...
Hinweis: hier im Beispiel unter macOS
Code:
touch ~/.ssh/id_rsa_vps
chmod 600 ~/.ssh/id_rsa_vps
nano ~/.ssh/id_rsa_vps

37. jetzt müsst ihr lediglich Grub updaten und den VPS verlassen...
Code:
update-grub
exit

37. geht nun zurück in das Control Center und deaktiviert unter Media -> Rescue System mit dem Button Deactivate das laufende Rescue System...
Du musst Regestriert sein, um das angehängte Bild zusehen.

38.1. gibt folgenden Befehl in eurem Terminal Programm wie Terminal/iTerm2 ein...
Code:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa -i ~/.ssh/id_rsa_vps root@IPvomVPS
38.2. nun sollte euch euer unverschlüsseltes Minimalsystem (BusyBox) begrüßen, dort gibt ihr folgenden Befehl ein...
Code:
echo -n 'das100stelligegeneriertepasswort' > /lib/cryptsetup/passfifo
38.3. jetzt sollte euer VPS Server mit Debian 8 (Jessie) booten.
Hinweis: dies könnt ihr auch parallel im VNC Fenster unter General -> klick auf das "Schwarzes Fenster" verfolgen.

39.1. loggt euch nun ohne RSA-Key mit dem Debian 8 per SSH mit eurem erstellten User ein...
Code:
ssh bernd@IPvomVPS
39.2. wechselt nun zum Superuser root...
Code:
su -


Glückwunsch...
ihr habt nun das Thema 1 abgeschlossen.
Ihr besitzt nun:
  • einen VPS mit Debian 8 das voll verschlüsselt ist
Macht nun mit Thema 2: Upgrade von Debian 8 auf 12 weiter...
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
#################################
## Thema 2: Upgrade von Debian 8 auf 12

1.1. prüft zunächst die aktuelle Debian Version...
Code:
cat /etc/debian_version
1.2. für Debian 8 sollte folgendes angezeigt werden...
Code:
8.11

2. fügt den aktuellen Key hinzu...
Code:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 0E98404D386FA1D9

###########################
## Upgrade auf Debian 9 (Stretch)

3.1 öffnet die Paketliste...
Code:
nano /etc/apt/sources.list
3.2. ersetzt den Inhalt komplett gegen folgenden...
Code:
# Debian 9 (Stretch)
deb http://archive.debian.org/debian stretch main contrib non-free
deb-src http://archive.debian.org/debian stretch main contrib non-free

deb http://archive.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://archive.debian.org/debian-security stretch/updates main contrib non-free

4.1. aktualisiert die Pakete und startet das Upgrade...
Code:
apt update && apt upgrade -y && apt dist-upgrade -y
4.2. die Frage zu "restart services during package..." mit Yes beantworten
4.3. die Frage zu "sshd-config" mit "keep the local version currently installed" beantworten

5.1. prüft nun die installierte Debian Version...
Code:
cat /etc/debian_version
5.2. für Debian 9 sollte folgendes angezeigt werden...
Code:
9.13

6. lasst nun nicht mehr benötigte Pakete automatisch entfernen...
Code:
apt autoremove -y

7. startet das System nun neu...
Code:
reboot


###########################
## Upgrade auf Debian 10 (Buster)

8.1 öffnet die Paketliste...
Code:
nano /etc/apt/sources.list
8.2. ersetzt den Inhalt komplett gegen folgenden...
Code:
# Debian 10 (Buster)
deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

9.1. aktualisiert die Pakete und startet das Upgrade...
Code:
apt update && apt upgrade -y && apt dist-upgrade -y
9.2. die Frage zu "Configuration file '/etc/initramfs-tools/initramfs.conf" mit N beantworten
9.3. die Frage zu "sshd-config" mit "keep the local version currently installed" beantworten

10.1. prüft nun die installierte Debian Version...
Code:
cat /etc/debian_version
10.2. für Debian 10 sollte folgendes angezeigt werden...
Code:
10.13

11. lasst nun nicht mehr benötigte Pakete automatisch entfernen...
Code:
apt autoremove -y

12. startet das System nun neu...
Code:
reboot

############################
## Upgrade auf Debian 11 (Bullseye)

13.1 öffnet die Paketliste...
Code:
nano /etc/apt/sources.list
13.2. ersetzt den Inhalt komplett gegen folgenden...
Code:
# Debian 11 (Bullseye)
deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

14.1. aktualisiert die Pakete und startet das Upgrade...
Code:
apt update && apt upgrade -y && apt dist-upgrade -y
14.2. die Frage zu "Configuration file '/etc/initramfs-tools/initramfs.conf" mit N beantworten
14.3. die Frage zu "sshd-config" mit "keep the local version currently installed" beantworten

15.1. prüft nun die installierte Debian Version...
Code:
cat /etc/debian_version
15.2. für Debian 11 sollte folgendes angezeigt werden...
Code:
11.11

16. lasst nun nicht mehr benötigte Pakete automatisch entfernen...
Code:
apt autoremove -y

17. startet das System nun neu...
Code:
reboot


#########################
## DropBear Config korrigieren

18.1. wir müssen nun zuerst die Dropbear Configuration korrigieren...
Code:
ssh-keygen -y -f /etc/initramfs-tools/root/.ssh/id_rsa > /tmp/id_rsa.pub
18.2. kopiert den erstellten key ins dropbear Verzeichnis...
Code:
cp /tmp/id_rsa.pub /etc/dropbear/initramfs/authorized_keys
18.3. setzt die korrekte Berechtigung auf die Datei...
Code:
chmod 600 /etc/dropbear/initramfs/authorized_keys
18.4. öffnet die alte initramfs Config...
Code:
nano /etc/initramfs-tools/initramfs.conf
18.5. setzt vor die DROPBEAR=y Zeile ein #...
Code:
# DROPBEAR=y
18.6. öffnet die neue initramfs Config...
Code:
nano /etc/dropbear/initramfs/dropbear.conf
18.7. fügt in eine freie Zeile folgendes ein...
Code:
DROPBEAR=y
18.8. nun müssen die Änderungen noch übernommen werden...
Code:
update-initramfs -u
18.9. startet das System nun neu...
Code:
reboot


##############################
## Upgrade auf Debian 12 (Bookworm)

19.1 öffnet die Paketliste...
Code:
nano /etc/apt/sources.list
19.2. ersetzt den Inhalt komplett gegen folgenden...
Code:
# Debian 12 (Bookworm)
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free

20.1. aktualisiert die Pakete und startet das Upgrade...
Code:
apt update && apt upgrade -y && apt dist-upgrade -y
20.2. die Frage zu "Configuration file '/etc/default/dropbear'" mit N beantworten
20.2. die Frage zu "Configuration file '/etc/initramfs-tools/initramfs.conf" mit N beantworten
20.3. die Frage zu "sshd-config" mit "keep the local version currently installed" beantworten

21.1. prüft nun die installierte Debian Version...
Code:
cat /etc/debian_version
21.2. für Debian 12 sollte folgendes angezeigt werden...
Code:
12.9 (oder höher)

22. lasst nun nicht mehr benötigte Pakete automatisch entfernen...
Code:
apt autoremove -y

23. startet das System nun neu...
Code:
reboot


Glückwunsch...
ihr habt nun das Thema 2 abgeschlossen.
Ihr besitzt nun:
  • einen VPS mit Debian 12 (Bookworm) das voll verschlüsselt ist
Macht nun mit Thema 3: Sicherheit weiter...
 
Zuletzt bearbeitet:
#########################
## Thema 3: Sicherheit

Warum ist das Thema Sicherheit wichtig?
Hier mal ein Beispiel von meinem VPS ohne die Änderung aus diesem Thema.
Führt bei euch folgenden Befehl aus...
Code:
tail -f /var/log/auth.log | grep sshd

Ich habe im Sekundentakt dann folgende Loginversuche sehen können...
Code:
Feb 21 04:07:05 debian sshd[23103]: Invalid user tania from 23.176.184.113 port 60694
Feb 21 04:07:05 debian sshd[23103]: pam_unix(sshd:auth): check pass; user unknown
Feb 21 04:07:05 debian sshd[23103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost>
Feb 21 04:07:07 debian sshd[23103]: Failed password for invalid user tania from 23.176.184.113 port 60694 ssh2
Feb 21 04:07:09 debian sshd[23103]: Received disconnect from 23.176.184.113 port 60694:11: Bye Bye [preauth]
Feb 21 04:07:09 debian sshd[23103]: Disconnected from invalid user tania 23.176.184.113 port 60694 [preauth]
Feb 21 04:07:21 debian sshd[23105]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost>
Feb 21 04:07:24 debian sshd[23105]: Failed password for root from 74.225.140.185 port 38234 ssh2
Feb 21 04:07:24 debian sshd[23105]: Received disconnect from 74.225.140.185 port 38234:11: Bye Bye [preauth]
Feb 21 04:07:24 debian sshd[23105]: Disconnected from authenticating user root 74.225.140.185 port 38234 [preauth]

Kurz und knapp:
Sichert euren VPS unbedingt mit folgenden Punkten, denn dadurch ist bei mir Ruhe mit solchen ungebetenen "Gästen"


################
## SSH Port ändern

1. öffnet die SSH Config...
Code:
nano /etc/ssh/sshd_config

2. ändert die Zeile Port und die Zeile mit PermitRootLogin um...
Hinweis: verwendet einen eigenen Port im Bereich von 1024 - 65535, im Beispiel habe ich einfach 3+Datum von Heute (28.02) verwendet
Durch PermitRootLogin no könnt ihr euch nun nicht mehr per SSH als root einloggen!
Code:
Port 32802
PermitRootLogin no

3. startet den SSH Server danach neu...
Code:
/etc/init.d/ssh restart

4. verbindet euch nun per SSH mit dem gesetzten Port...
Code:
ssh -p 32802 bernd@IPvomVPS

5. wechselt nun zum root User...
Code:
su -


################
## Firewall

6. erstellt ein firewall.sh Skript...
Code:
touch /etc/init.d/firewall.sh

7. setzt passende Berechtigung für das firewall.sh Skript...
Code:
chmod 755 /etc/init.d/firewall.sh

8. öffnet nun euer firewall.sh Skript...
Code:
nano /etc/init.d/firewall.sh

9. fügt folgenden Skriptinhalt ein...
Hinweis: ändert die Ports für SSH, Oscam usw. bei EuerPort gegen eure verwendeten um!
Code:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $network $syslog
# Required-Stop:     $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop firewall
# Description:       This script manages the firewall rules using iptables.
### END INIT INFO

iptables=$(which iptables)
iptablesv6=$(which ip6tables)
#User Definition mit Zugriffen auf spezielle Services
#user="user.dyndns.org,deinedyn.homedns.com"
#(Ist vor Block APNIC eingebaut!)
#sharepartner="bla.dyndns.org"

# function for logging
logit() {
    if [ -n "$1" ]; then
        ( while read -r line; do
            # output to terminal
            if [ -t 1 ]; then
                echo -e "${line}"
            fi
        done ) <<< "$1"
    else
        while read -r line; do
            # output to terminal
            if [ -t 1 ]; then
                echo -e "${line}"
            fi
        done
    fi
}

# wenn iptables nicht installiert, Fehlermeldung ausgeben und abbrechen
if [ -z "$iptables" ]; then
    logit "[Error] iptables is not installed or not in the PATH."
    exit 1
fi

# wenn iptablesv6 nicht installiert, Fehlermeldung ausgeben und abbrechen
if [ -z "$iptablesv6" ]; then
    logit "[Error] iptablesv6 is not installed or not in the PATH."
    exit 1
fi

case "$1" in
start)
logit "[+] Waiting 5 seconds..."
sleep 5
logit "[+] Starting firewall..."
# alle Regeln löschen
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
#$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptablesv6 -P FORWARD DROP
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
$iptablesv6 -A INPUT -i lo -j ACCEPT
$iptablesv6 -A OUTPUT -o lo -j ACCEPT
$iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptablesv6 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#$iptablesv6 -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$iptables -P OUTPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT

# OpenVPN
#$iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d 10.20.30.40 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#$iptables -A OUTPUT -p icmp --icmp-type 0 -s 10.20.30.40 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport EuerPort -j ACCEPT

#Xtream-Codes
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport EuerPort -j ACCEPT

#OScam Webif
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport EuerPort -j ACCEPT

#CCcam Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport EuerPort -j ACCEPT

#Cs378x Share (Port ggf. anpassen und zum aktivieren des Zugriffs # entfernen!)
$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport EuerPort -j ACCEPT

#DROPS (unerwünschte IPs, von denen JEGLICHE Anfragen verworfen werden):
#$iptables -I INPUT --source <IP> -j DROP
#$iptables -I INPUT --source <IP> -j DROP

#Sharepartner Beispiel CE Port 1337
#$iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED --source $sharepartner -p tcp --dport 1337-j ACCEPT
#Jeder Sharepartner kann somit auf Port 1337 connecten.
#Willst du das es einer nicht mehr tut, dann einfach oben in der Variable den betroffenen Sharepartner entfernen!

#Block APNIC LACNIC
#Hinweis: Blockiert Asien, Südamerika, Mittelamerika, beschränkt Russland bzw. Osteuropa!
APNIC=(
        "1.0.0.0/8"
        "14.0.0.0/8"
        "27.0.0.0/8"
        "36.0.0.0/8"
        "39.0.0.0/8"
        "42.0.0.0/8"
        "43.0.0.0/8"
        "49.0.0.0/8"
        "58.0.0.0/8"
        "59.0.0.0/8"
        "60.0.0.0/8"
        "61.0.0.0/8"
        "101.0.0.0/8"
        "103.0.0.0/8"
        "106.0.0.0/8"
        "110.0.0.0/8"
        "111.0.0.0/8"
        "112.0.0.0/8"
        "113.0.0.0/8"
        "114.0.0.0/8"
        "115.0.0.0/8"
        "116.0.0.0/8"
        "117.0.0.0/8"
        "118.0.0.0/8"
        "119.0.0.0/8"
        "120.0.0.0/8"
        "121.0.0.0/8"
        "122.0.0.0/8"
        "123.0.0.0/8"
        "124.0.0.0/8"
        "125.0.0.0/8"
        "126.0.0.0/8"
        "133.0.0.0/8"
        "150.0.0.0/8"
        "153.0.0.0/8"
        "163.0.0.0/8"
        "171.0.0.0/8"
        "175.0.0.0/8"
        "177.0.0.0/8"
        "179.0.0.0/8"
        "180.0.0.0/8"
        "181.0.0.0/8"
        "182.0.0.0/8"
        "183.0.0.0/8"
        "186.0.0.0/8"
        "187.0.0.0/8"
        "189.0.0.0/8"
        "190.0.0.0/8"
        "200.0.0.0/8"
        "201.0.0.0/8"
        "202.0.0.0/8"
        "203.0.0.0/8"
        "210.0.0.0/8"
        "211.0.0.0/8"
        "218.0.0.0/8"
        "219.0.0.0/8"
        "220.0.0.0/8"
        "221.0.0.0/8"
        "222.0.0.0/8"
        "223.0.0.0/8"
        )

for blockapnic in "${APNIC[@]}"
do
        $iptables -A INPUT --source $blockapnic -j DROP
done

$iptables -N LOGGING
$iptables -A INPUT -j LOGGING
$iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
$iptables -A LOGGING -j DROP
$iptables -A LOGGING -j REJECT

# PING Sperre
$iptables -A INPUT -i eth0 -j REJECT

# SICHERHEIT
$iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
$iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
$iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s

logit "[OK] Firewall has been activated, the server is protected."
;;
stop)
logit "[+] Stopping firewall..."

$iptables -t nat -F
$iptables -t filter -F
$iptables -X
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptablesv6 -t nat -F
$iptablesv6 -t filter -F
$iptablesv6 -X
$iptablesv6 -P INPUT ACCEPT
$iptablesv6 -P OUTPUT ACCEPT
$iptablesv6 -P FORWARD ACCEPT

logit "[!] Firewall has been stopped, the server is unprotected."
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
logit "[Error] Invalid argument."
logit "Usage: $0 (start|stop|restart)"
exit 1
#;;
esac
exit 0

10. kontrolliert den aktuellen Firewall Zustand...
Code:
iptables -L

11. führt das Firewall Skript aus...
Code:
/etc/init.d/firewall.sh start

12. kontrolliert nun erneut den Firewall Zustand...
Code:
iptables -L

13. öffnet die rc.local Datei...
Code:
nano /etc/rc.local

14. fügt folgendes in eine leere Zeile hinzu, sodass das Skript automatisch beim reboot immer ausgeführt wird...
Code:
# Firewall starten
/etc/init.d/firewall.sh start > /dev/null 2>&1 &


################
## fail2ban

15. fail2ban installieren...
Code:
apt install fail2ban

16. kopiert die jail.conf als eigene jail.local...
Code:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

17. öffnet nun die jail.local...
Code:
nano /etc/fail2ban/jail.local

18. ersetzt den sshd Bereich, sodass er mit folgendem Inhalt befüllt ist...
Hinweis: bantime habe ich auf 7d = 7 Tage gesetzt, hier könnt ihr auch einen anderen Wert eintragen... Default ist glaube ich 48h = 2 Tage.
Code:
[sshd]

# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 7d
findtime = 10m

19. startet nun fail2ban neu...
Code:
systemctl restart fail2ban

20. aktiviert fail2ban...
Code:
systemctl enable fail2ban

21. den Status könnt ihr mit folgenden Befehlen nun prüfen...
Code:
fail2ban-client status
fail2ban-client status sshd
tail -f /var/log/fail2ban.log


Glückwunsch...
ihr habt nun das Thema 3 abgeschlossen.
Ihr besitzt nun:
  • einen VPS mit Debian 12 (Bookworm) das voll verschlüsselt ist
  • die Sicherheit wurde erhöht
Macht nun mit Thema 4: Installation OSCam weiter...
 
Zuletzt bearbeitet:
#########################
## Thema 4: Installation OSCam

Hier werden zwei Varianten wie ihr OSCam bauen und in Betrieb nehmen könnt beschrieben.
Nutzt nur eine der beiden Varianten die euch am besten anspricht.

##################################
## Variante A: IPC installieren (Empfehlung)

1. installiert zunächst sudo...
Code:
apt install sudo

2. gibt eurem User die sudo Rechte...
Code:
usermod -aG sudo bernd

3. führt folgenden Befehl mit eurem eigenen User aus, nicht als root User...
Code:
wget ipc.pebkac.at/ipc/ipcsetup.sh

4.1. startet die IPC Installation...
Code:
sudo bash ipcsetup.sh
4.2. gibt I ein und bestätigt mit Enter...
4.3. dann Dont touch keymap auswählen
4.4. eure gewünschten Cams auswählen, dafür ein * mit der Leertaste setzen
4.5. IPC Erst Config nach euren Wünschen einstellen

5. öffnet die rc.local Datei...
Code:
sudo nano /etc/rc.local

6. fügt den jeweiligen start Zeilen eine Umleitung auf /dev/null ein...
Code:
vorher:
#OScam starten
/bin/oscam start &

nachher:
#OScam starten
/bin/oscam start > /dev/null 2>&1 &


Hinweis:
Eure Oscam Config Dateien kommen in das Verzeichnis...
Code:
/var/etc


##############################
## Variante B: simplebuild3 installieren

7. ladet das simplebuild3 release herunter...
Code:
dpkg --add-architecture i386
mkdir /opt/simplebuild
cd /opt/simplebuild
wget --no-check-certificate https://github.com/gorgone/s3_releases/archive/refs/tags/2024.04.336.zip

8. packt das simplebuild3 Paket aus
Code:
unzip 2024.04.336.zip
rm 2024.04.336.zip
mv s3_releases-2024.04.336/* .
rm -r s3_releases-2024.04.336

9.1. startet das bauen der oscam binary...
Code:
./s3 menu
9.2. wählt Continue aus
9.3. wählt native aus
9.4. wählt Build aus

10. lasst euch die gebaute oscam binary anzeigen...
Code:
ls -l /opt/simplebuild/support/binaries

11. kopiert die gebaute oscam binary in das local bin Verzeichnis...
Hinweis: ändert DATEINAME gegen den Dateinamen aus Schritt 7
Code:
cp /opt/simplebuild/support/binaries/DATEINAME /usr/local/bin/oscam

12.1. öffnet nun folgende leere oscam.service Datei ...
Code:
nano /etc/systemd/system/oscam.service
12.2. fügt folgenden Inhalt in die Datei hinein...
Code:
[Unit]
Description=OScam daemon
After=tmp.mount network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/oscam -b -B /var/run/oscam.pid -p 256 -w 5 -r 2 -c /usr/local/etc

[Install]
WantedBy=multi-user.target

13. aktiviert die oscam.service Datei...
Code:
systemctl enable oscam.service

14. mit folgendem Befehl könnt ihr nun OSCam starten...
Code:
systemctl start oscam.service

Hinweis:
Eure Oscam Config Dateien kommen in das Verzeichnis...
Code:
/usr/local/etc


Glückwunsch...
ihr habt nun das Thema 4 abgeschlossen.
Ihr besitzt nun:
  • einen VPS mit Debian 12 (Bookworm) das voll verschlüsselt ist
  • die Sicherheit wurde erhöht
  • OSCam wurde gebaut und läuft
Macht nun mit Thema 5: Snapshot des VPS weiter...
 
Zuletzt bearbeitet:
#########################
## Thema 5: Snapshot des VPS

1.1. geht im Control Center auf Media -> Snapshots
1.2. füllt die Felder name und description aus
1.3. wählt Offline Snapshot aus
1.4. klickt danach auf create snapshot
Du musst Regestriert sein, um das angehängte Bild zusehen.

2. euer System wird nun heruntergefahren und das Snapshot danach erstellt...
Du musst Regestriert sein, um das angehängte Bild zusehen.

3. klickt nun oben auf Snapshots, in der Übersicht sollte euer Snapshot nun zu sehen sein...
Du musst Regestriert sein, um das angehängte Bild zusehen.

Glückwunsch...
ihr habt nun das Thema 4 abgeschlossen!
Ihr besitzt nun:
  • einen VPS mit Debian 12 (Bookworm) das voll verschlüsselt ist
  • die Sicherheit wurde erhöht
  • OSCam wurde gebaut und läuft
  • ein Snapshot vom fertigen Zustand erstellt
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
#######
## FAQ

Frage 1: Ich habe den VPS bei netcup bestellt.
In der Email steht jetzt aber drin, dass Debian 12 Bookworm bereits installiert ist.
Muss ich jetzt trotzdem den 1. Punkt --> "1. Installiert auf dem VPS zunächst ein normales Debian 12 Bookworm zu finden unter Media -> Images..."
Antwort: Nein, wenn Debian 12 auf dem VPS schon vorinstalliert ist, kannst du die Schritte 1-3 überspringen und bei Schritt 4 direkt die Werte auslesen.
 
Zuletzt bearbeitet:
Hi,

die Anleitung ist TOP
.

Wird ausprobiert. Danke für Deine Arbeit, sauber.


Gruß

Gesendet von meinem POCOPHONE F1 mit Tapatalk

Edit:
Tipp noc
h von einem geplagten Linux Cloud Engineer a.D.:

Zuviel Copy/Paste/Spoiler Fummelei, danach hab ich eine Sehnenscheidenentzündung.


Die Kommandos hintereinander ins Terminal "gefeuert" wäre MEGA.

(Jammern auf Endstufe ich weiß).

Viele Grüße

Gesendet von meinem POCOPHONE F1 mit Tapatalk
 
Zuletzt bearbeitet von einem Moderator:
@axel ich könnte die Befehle auch ohne Spoiler hinterlegen und nur Outputs und Screenshots in Spoiler belassen, von mir aus kein Problem!
Ist das von den Boardregeln so in Ordnung?
 
Das wäre sensationell,

kein Stress. Das ist viel Holz^^


Ich hoffe das war "konstruktive Kritik".


Beste Grüße und weiter so.

Edit: Ich verstehe tatsächlich nicht, warum sich irgendwie keiner mehr dafür zu interessieren scheint(?).

Gesendet von meinem POCOPHONE F1 mit Tapatalk
 
Zuletzt bearbeitet:
Ach das ist weniger Stress als du denkst dank Suchen&Ersetzen in VSCode

Mach ich in Ruhe heute Abend.

Zum Interesse:
Ist halt ein extremes Nischen Thema und dann noch VPS
 
Ist nicht so, dass es niemand interessiert @axel
Mein Feedback ist in das How2 schon eingeflossen
 
Zuletzt bearbeitet:
@Alex kannst mir gerne noch deine Wireguard Lösung per PN senden, dann könnte ich es vielleicht noch hinzufügen oder hast du es noch nicht aufgesetzt?
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…