eigenes Netzwerk einrichten

ssh-Server

Mit Debian lässt sich ein kleines Netzwerk recht schnell realisieren. Hier wird das Grundprinzip eines einfachen Heimnetzwerk erklärt. Ein in die Jahre gekommener Laptop kann als ssh-Server eingesetzt werden. In meinem Beispiel entschied ich mich für einen HP Pavilion dv6 und dem Betriebssystem Debian GNU/Linux Bullseye.

Auf dem Laptop setzen wir nun unseren ssh-Server auf. Falls auf dem Laptop bereits ein Debian läuft, kann per

# apt install openssh-server

das nötige Paket nachinstalliert werden. Setzen wir Debian jedoch frisch auf, wählen wir bei der Softwareauswahl lediglich den
[*] SSH Server und die
[*] Standard-Systemwerkzeuge aus. Ein Desktopenvironment ist in diesem Fall nicht nötig. Alle anderen Dienste wie apache2, php und MariaDB lassen sich nachträchlich installieren.

Melde Dich nun am Laptop mit dem User (nicht root) an und überprüfe den Status vom ssh Server. Der ssh-Server ist in diesem Beispiel gestartet und lauscht auf Port 22 (Standard). Selbstverständlich kann der Port noch geändert werden und es fehlen weitere, wichtige Schritte bezüglich Sicherheit. Solange wir uns jedoch nur im eigenen Netzwerk herumtrollen kann hier nichts passieren. Betreibst du jedoch einen eigenen vServer mit apache2, ist der Einsatz eines TLS-Zertifikat wie Let’s encrypt unabdingbar.

# systemctl status ssh
ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-06-19 19:08:18 CEST; 17min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 411 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 452 (sshd)
      Tasks: 1 (limit: 9267)
     Memory: 5.2M
        CPU: 174ms
     CGroup: /system.slice/ssh.service
             └─452 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 19 19:08:17 debian systemd[1]: Starting OpenBSD Secure Shell server...
Jun 19 19:08:18 debian sshd[452]: Server listening on 0.0.0.0 port 22.
Jun 19 19:08:18 debian sshd[452]: Server listening on :: port 22.
Jun 19 19:08:18 debian systemd[1]: Started OpenBSD Secure Shell server.
Jun 19 19:14:41 debian sshd[614]: Accepted password for lightning from 192.168.0.52 port 58774 ssh2
Jun 19 19:14:41 debian sshd[614]: pam_unix(sshd:session): session opened for user lightning(uid=1000) by (uid=0)

Jetzt benötigen wir die IP-Adresse vom Laptop:

# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 98:4b:e1:9b:48:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.171/24 brd 192.168.0.255 scope global dynamic enp3s0
       valid_lft 2557sec preferred_lft 2557sec
    inet6 2a02:aa10:4201:8a80:9a4b:e1ff:fe9b:480d/64 scope global dynamic mngtmpaddr 
       valid_lft 936435sec preferred_lft 331635sec
    inet6 fe80::9a4b:e1ff:fe9b:480d/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp2s0b1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether e0:2a:82:ac:08:a8 brd ff:ff:ff:ff:ff:ff

Das war bereits die halbe Miete. Von der Workstation aus können wir per ssh auf das Laptop zugreifen. Der nötige Befehl lautet:

$ ssh USERNAME@IPADRESSELAPTOP -p PORTNUMMER

Bei deiner allerersten Anmeldung wird der Fingerabdruck überprüft:

$ ssh lightning@192.168.0.171 -p 22
The authenticity of host '192.168.0.171 (192.168.0.171)' can't be established.
ECDSA key fingerprint is SHA256:VO+yY396S/SxMxo/VQDx55ZVLKpC2idiVSvQKu+6qrE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
$ ssh lightning@192.168.0.171 -p 22
lightning@192.168.0.171's password: 
Linux debian 5.10.0-7-amd64 #1 SMP Debian 5.10.40-1 (2021-05-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jun 20 08:27:37 2021
lightning@debian:~$ EINGABE

HINWEIS
Nicht jede Fehlermeldung muss gleich auf einen Angriff hinweisen. Im Beispiel unten hat sich beim Server lediglich der Fingerabdruck geändert und stimmt mit dem gespeicherten Fingerabdruck auf der Workstation nicht überein. Dies ist der Fall, wenn Du deinen ssh-Server z. B. neu aufgesetzt hast, weil Du etwas versuchst hast.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:VO+yY396S/SxMxo/VQDx55ZVLKpC2idiVSvQKu+6qrE.
Please contact your system administrator.
Add correct host key in /home/yuna/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/yuna/.ssh/known_hosts:5
  remove with:
  ssh-keygen -f "/home/yuna/.ssh/known_hosts" -R "192.168.0.171"
ECDSA host key for 192.168.0.171 has changed and you have requested strict checking.
Host key verification failed.

Das war’s auch schon. Von der Workstation aus kann nun auf das Laptop via Netzwerk zugegriffen werden. Gewöhne dich an das Prinzip des CLI (Command Line Interface), da eine GUI auf dem Server in der Regel nicht üblich und völlig überflüssig ist.

 

Webserver / PHP / MariaDB

Von deiner Workstation aus rufst du per ssh das Laptop auf:

$ ssh USERNAME@IPADRESSELAPTOP -p PORTNUMMER

Installiere den Webserver (root werden!):

$ su -
# apt install apache2

Installiere einen mysql-Server (MariaDB):

 # apt install default-mysql-server mariadb-server

Jetzt fehlt noch der PHP-Server und die zuständigen Module. Falls Module oder Erweiterungen fehlen, können diese immer noch nachinstalliert werden.

# apt install php7.4
# apt install php-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml

Welche PHP-Version schlussendlich auf dem lokalen Server landet, hängt u.a. mit der Version von Debian ab. Aktuell (Juni 2021) bekommt Debian Bullseye die php-Version 7.4. Mit:

# apt search php meta

können wir jeweils die aktuelle Version anzeigen lassen. Ab jetzt befindet sich ein funktionierender Webserver inkl. MariaDB unter: /var/www/html

Um dauerhaft Besitzer des Verzeichnis zu werden, kann per chown der Besitzer gewechselt werden:

# chown -cR BENUTZERNAME /var/www/html

Der Zustand von Apache oder vom Datenbankserver lässt sich mit systemctl auslesen.

$ systemctl status apache2
$ systemctl status mariadb

Die Ausgabe lautet dann etwa:

systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-06-22 12:45:38 CEST; 54min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 476 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 544 (apache2)
      Tasks: 6 (limit: 9266)
     Memory: 21.5M
        CPU: 190ms
     CGroup: /system.slice/apache2.service
             ├─544 /usr/sbin/apache2 -k start
             ├─545 /usr/sbin/apache2 -k start
             ├─546 /usr/sbin/apache2 -k start
             ├─547 /usr/sbin/apache2 -k start
             ├─548 /usr/sbin/apache2 -k start
             └─549 /usr/sbin/apache2 -k start

Warning: some journal files were not opened due to insufficient permissions.

Webserver (mit XAMPP)

XAMPP ist eine leicht zu installierende Apache-Distribution, die MariaDB, PHP und Perl enthält. Gehe auf https://www.apachefriends.org/de/download.html
Dieses Tutorial bezieht sich auf die Installation von XAMPP unter Debian GNU/Linux und wurde unter Buster getestet.

Die verschiedenen Versionen unterschieden sich u.a. in der PHP-Version, welche schlussendlich auf dem Rechner landen. Weiter Infos gibt es unter „Was ist enthalten?“

Fährst Du mit der Maus über eine Prüfsumme (md5 oder sha1), wird dir diese angezeigt. Nach erfolgreichem Download kann die Prüfsumme ausgelesen werden:

$ sha1sum xampp-linux-*-installer.run
6ca5ac6be8fab080202a217b1bc5ba15ddb2c10c  xampp-linux-*-installer.run

Ist die Prüfsumme korrekt, kann mit der Installation begonnen werden. Die Datei wird zuerst ausführbar gemacht:

$ chmod 755 xampp-linux-*-installer.run

und anschliessend die Installationsroutine gestartet:

# ./xampp-linux-*-installer.run

 

Der XAMPP-Installer verlangt root-Rechte. Tippe dazu su – ein:

su -
Passwort: 
./xampp-linux-x64-7.4.2-0-installer.run
----------------------------------------------------------------------------
Welcome to the XAMPP Setup Wizard.

----------------------------------------------------------------------------
Select the components you want to install; clear the components you do not want 
to install. Click Next when you are ready to continue.

XAMPP Core Files : Y (Cannot be edited)

XAMPP Developer Files [Y/n] : Y

Is the selection above correct? [Y/n]: Y

----------------------------------------------------------------------------
Installation Directory

XAMPP will be installed to /opt/lampp
Press [Enter] to continue:

----------------------------------------------------------------------------
Setup is now ready to begin installing XAMPP on your computer.

Do you want to continue? [Y/n]: Y

----------------------------------------------------------------------------
Please wait while Setup installs XAMPP on your computer.

 Installing
 0% ______________ 50% ______________ 100%
 #########################################

----------------------------------------------------------------------------
Setup has finished installing XAMPP on your computer.

XAMPP kann nun via Brower aufgerufen werden. Tippe dazu in die Adresszeile localhost ein.

Die Dienste müssen vorab jedoch gestartet werden. Xampp heisst unter Linux korrekterweise lampp:

# /opt/lampp/lampp start
Starting XAMPP for Linux 7.4.2-0...
XAMPP: Starting Apache.../opt/lampp/share/xampp/xampplib: Zeile 22: netstat: Kommando nicht gefunden.
/opt/lampp/share/xampp/xampplib: Zeile 22: netstat: Kommando nicht gefunden.
ok.
XAMPP: Starting MySQL.../opt/lampp/share/xampp/xampplib: Zeile 22: netstat: Kommando nicht gefunden.
ok.
XAMPP: Starting ProFTPD.../opt/lampp/share/xampp/xampplib: Zeile 22: netstat: Kommando nicht gefunden.
ok.

 

Die Meldung von netstat kann getrost ignoriert werden oder mit dem Paket net-tools behoben werden.

# apt install net-tools

jetzt startet XAMPP „fehlerfrei“

# /opt/lampp/lampp start
Starting XAMPP for Linux 7.4.2-0...
XAMPP: Starting Apache...ok.
XAMPP: Starting MySQL...ok.
XAMPP: Starting ProFTPD...ok.

Beendet wird XAMPP mit:

# /opt/lampp/lampp stop
Stopping XAMPP for Linux 7.4.2-0...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...ok.

>>> HINWEIS <<<
Das Verzeichnis von XAMPP befindet sich unter
/opt/lampp/htdocs
Um dauerhaft Besitzer dieses Verzeichnis zu werden, können die Besitzerrechte mit chown geändert werden. Tippe dazu:

# chown -cR BENUTZER /opt/lampp/htdocs

ein. Doch Vorsicht. Tippst Du versehentlich nur / ein, wird Dein gesamtes System irreversibel unrauchbar gemacht, da damit das gesamte root-System dem Superuser entzogen wird!

Eine Datenbank unter MariaDB erstellen

Wir erstellen hier die DB test1 und den User lightning und weisen dabei ein Passwort zu:

Installiere einen mysql-Server/Maria DB:

# apt install default-mysql-server mariadb-server

Starte im Terminal Maria DB:

# mariadb -u root -p

hiermit gelangen wir in den typischen MariaDB-Prompt.

# mariadb -u root -p
Enter password: ROOT-PASSWORD
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 188
Server version: 10.5.9-MariaDB-1 Debian buildd-unstable

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> EINGABE

Datenbank „test1“ anlegen:

CREATE DATABASE test1;

Datenbank anzeigen lassen:

SHOW DATABASES;

User „lightning“ und Passwort „finalfantasy13“ anlegen:

CREATE USER 'lightning'@'localhost' IDENTIFIED BY 'finalfantasy13';

User anzeigen lassen:

SELECT User FROM mysql.user;

User „lightning“ der Datenbank „test1“ zuweisen:

GRANT ALL ON test1.* TO lightning@localhost IDENTIFIED BY 'finalfantasy13';

Zugewiesen User anzeigen lassen (Kontrolle):

SHOW GRANTS for 'lightning'@'localhost';

die soeben erstellte Datenbank kann nun per USE ausgewählt werden.

MariaDB [(none)]> USE test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [test1]> EINGABE

phpmyadmin

phpmyadmin ist ein Tool, welches die Verwaltung der Datenbanken enorm vereinfacht. Wer sich somit nicht mit der Kommandozeile (CLI) auseinander setzten möchte, geht den Weg via phpmyadmin. Den gesamten Ordner verschieben wir nach:
/var/www/html

um diesen dann im Browser per:
https:/example.com/phpmyadmin

aufrufen zu können. Ab hier steht uns nun eine grafische Oberfläche zur verfügung. Standardmässig ist das root-Login für phpmyadmin deaktiviert. Dies kann mit:

SET PASSWORD FOR 'root'@localhost = PASSWORD("starkes-passwort-hier-rein");

umgangen werden.

Rechner und Domainname im Netzwerk

Rechnername und Domain-Name werden während der Installation von Debian gleich zu Beginn abgefragt:

Um den Rechnername zu ändern, editiere /etc/hostname

# nano -w /etc/hostname
debian

Um den Rechnername und den Domainnamen zu ändern, editiere /etc/hosts und starte den Rechner neu. Der Rechnername muss unter /etc/hostname identisch sein.

# nano -w /etc/hosts
127.0.0.1       localhost
127.0.1.1       debian.example.com         debian

Mit folgenden Eingaben kannst Du das System nun überprüfen:

$ hostname --short
debian

$ hostname --domain
example.com

$ hostname --fqdn
debian.example.com

$ hostname --ip-address
127.0.1.1

 

HINWEIS
Rechnername und Domain-Name haben nichts mit dem Benutzernamen (User und Gruppe) zu zun. Das Kommando id gibt im Grunde die Informationen des realen und effektiven Benutzers oder mit anderen Worten des aktuellen Benutzers aus:

yuna@supertux:~$ id
uid=1000(yuna) gid=1000(yuna) Gruppen=1000(yuna),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),998(vboxusers)

Remote mittels Xrdp

Das Paket xrdp erlaubt eine Remote-Verbindung vom Windows-PC direkt auf den Debian-Rechner. Installiere das Paket und weise den User xrdp der Gruppe ssl-cert zu:

# apt install xrdp
# adduser xrdp ssl-cert
Wähle die Remotdesktopverbindung unter Windows und gib die IP-Adresse an, in welcher sich der Rechner im selben Netzwerk befindet.
Da kein Sicherheitszertifikat installiert wurde, kann diese Meldung getrost mit Ja bestätigt werden.
Gib Benutzername und Passwort an.

Mit Windows 11 auf Debian-Server zugreifen

Mit Windows 11 (oder Windows 10) lässt sich relativ leicht auf einen Debian-Server zugreifen.

Client-PC
Hier läuft Windows 11 und es muss nichts weiteres unternommen werden. Prüfe lediglich, ob unter der Systemsteuerung die Netzwerkkennung eingeschaltet ist. PuTTY als SSH und Telnet Client ist optional, jedoch nicht nötig. Alle Einstellungen können auch direkt am Server vorgenommen werden.

Server
Hier läuft Debian GNU/Linux. Bevor samba installiert wird, kläre folgendes ab:

  • IP-Adresse vom Server (id address)
  • Welcher Ordner bzw. Mountpunkt wird geteilt? Hier ist es /pfad/zum/mountpunkt

Installiere das Paket samba:

# apt install samba

und navigiere in das Verzeichnis /etc/samba
Hier liegt die Datei smb.conf
Optional kann die Datei auch gesichert werden. Dazu genügt ein

# cp /etc/samba/smb.conf /etc/samba/samba.original
# nano -w /etc/samba/smb.conf

Tippe nun folgendes ein und speichere die Datei unter /etc/samba/smb.conf ab:

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = smb


####### Authentication #######

   security = user

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
   map to guest = bad password

#======================= Share Definitions =====================

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no
   create mode = 0750


[public]
   path = /pfad/zum/mountpunkt
   public = yes
   writable = yes
   comment = smb share
   printable = no
   guest ok = yes

Zuletzt wechseln wir die Rechte vom Pfad, den wir einbinden möchten. Je nach mount-Point muss auch noch der Besitzer geweselt werden:

# chmod 750 /pfad/zum/mountpunkt
# chown -cR BENUTZERNAME /pfad/zum/mountpunkt

Starte nun den Samba-Server neu:

# systemctl restart smbd.service

Client-PC (hier Windows 11)
Auf dem Client-PC kann nun ein Netzlaufwerk verbunden werden:

DVD abspielen auf Debian GNU/Linux

Von sich aus spielt Debian keine gekauften DVD ab. Wird eine gekaufte DVD eingelegt, kommt es zu einer Fehlermeldung und der Film wird nicht abgespielt. Schuld daran ist der fehlende Codec libdvdcss2:

Abhilfe bringt hier die Installation des Paketes libdvd-pkg. Optimal können noch folgende Pakete installiert werden: libdvdread4 und ffmpeg. ffmpeg ist nicht zwingend notwendig, jedoch ein unverzichtbarer Videokonverter und nur wenige MB gross.

# apt install libdvd-pkg
# dpkg-reconfigure libdvd-pkg

Die fehlenden Codecs werden nun heruntergeladen, und installiert.


Optimal können weitere Codecs und Programme nachinstalliert werden. Ein beliebtes Tool ist ffmpeg oder der Tausendsassa VLC-Player:

# apt install ffmpeg
# apt install vlc

Weitere Codecs (falls nicht schon installiert) sind:

# apt install libdvdread4
# apt install x265
# apt install lame
# apt install flac
# apt install faac