Ubuntu-Server

  • Wer im Internet nach dem Ubuntu-Server-Betriebssystem sucht,
    wird recht schnell die Seite von Ubuntu finden.
    Dort bekommt man die sogenannte Live-Version.
    Sie zeichnet sich durch die eingebaute Cloud-Init Funktion aus.
    Will man hingegen nicht die Live-Version haben,
    so sollte man die Seite der Legacy-Version aufrufen.
    Für diese Beschreibung wurde die Live-Version verwendet.
  • Server sollen Headless, also ohne Monitor, Maus oder Tastatur, laufen.
    Normal werden sie per SSH von einem anderen Gerät aus gewartet.
    Sicherlich lässt sich auch das Betriebssystem schon Headless installieren,
    allerdings ist das eher etwas für richtige Profies und übersteigt meine Fähigkeiten.
    Für die Installation von Ubuntu 20 LTS schließe ich einen Monitor und eine Tastatur an den Rechner an.
    Eine Maus wird nicht benötigt und würde auch nicht funktionieren.
    Der Rechner wird somit per Tastatur gesteuert.
    Da sind die Tasten Tab, Enter bzw. Return und die Pfeiltasten extrem wichtig.
    Da hier nur eine beispielhafte Installation beschrieben wird,
    müssen einzelne Eingaben an die persönlichen Einstellungen angepasst werden.

    Zuerst wird man nach der Sprache für die Installation gefragt.
    Standardmäßig ist Englisch ausgewählt.
    Mit den Pfeiltasten nach Deutsch navigieren und Return drücken ist wirklich kein Problem.
    2
    Als nächstes geht es um die Tastatur.
    Englische Tastaturen haben ein anderes Layout.
    So fehlen dort z.B. die Tasten für ö, ä oder ü.
    Auch die Tasten Z und Y sind im Vergleich zum deutschen Layout vertauscht.
    Man sollte hier schon seine Tastatur richtig einstellen.

    Dann wird nach einem Netzwerkadapter geschaut und dieser auch direkt konfiguriert.
    Achtung !!!
    In der Standardversion nutzt Ubuntu nur eine LAN-Verbindung.
    Will man zusätzlich auch eine WLAN-Verbindung nutzen, so muss diese nachträglich konfiguriert werden.
    Dazu müssten auch ein paar Software-Pakete nachinstalliert werden.
    2
    Wird ein Proxy verwendet ?
    Wenn Nein, einfach Return drücken und die Zeile leer lassen.

    Weltweit gibt es für Ubuntu über 500 Spiegelserver.
    Das sind Quellen von denen man Software für Ubuntu und Systemaktualisierungen erhalten kann.
    Eine Liste der offiziellen Spiegelserver für Ubuntu findet man z.B. auf https://launchpad.net/ubuntu/+archivemirrors.
    Wenn man die Adresse eines in der Nähe befindlichen Spiegelservers kennt, so sollte man sie hier eintragen.
    Man kann diese Zeile aber auch unverändert lassen und einfach Return drücken.

    Nun geht es um die Partitionierung der Festplatte.
    Bei mir soll die komplette Festplatte genutzt werden.

    In einer Zusammenfassung werden die Änderungen an der Festplatte aufgeführt.
    Noch ist nichts passiert und man könnte die Installation ohne Änderungen an der Festplatte abbrechen.

    Es erscheint noch eine Sicherheitsabfrage.

    Name des Nutzers, sein Passwort und der Name des Servers werden festgelegt.
    Alle drei Informationen sollte man sich gut merken.

    Will man später den Server headless warten, so sollte bereits hier der OpenSSH-Server installiert werden.
    Das geht zwar auch noch später, doch warum umständlich wenn es auch bequem geht ?

    Neben dem OpenSSH-Server kann noch eine ganze Reihe weiterer Software direkt mit installiert werden.
    Was das alles genau ist, weiß ich gar nicht. Bei mir wird hier kein x gesetzt.

    Alle Vorbereitungen sind abgeschlossen und das System kann installiert werden.
    Bitte Geduld haben und warten.....

    Recht schnell wird oben die Installation als komplett bezeichnet,
    doch unten steht etwas von "Aktualisierung abbrechen".
    Die Installation scheint doch noch nicht wirklich fertig zu sein.
    Warten .....

    Jetzt steht auch unten nichts mehr von abbrechen.
    Die Installation ist fertig und der Rechner kann neu gestartet werden.

    Achtung !!!
    So präsentiert sich das neu installierte Ubuntu 20 LTS auf einem angeschlossenen Monitor.
    Von nun an kann der Computer aber auch headless von einem anderen Gerät aus bedient werden.
    Bei einem Linux-Computer öffnet man das Terminal und gibt
    ssh benutzername@servername
    ein.
    Nutzt man auf dem anderen Gerät Windows, so wird zusätzliche Software benötigt.
    Ein mögliches Programm wäre PuTTY.
    Damit wird auf dem Windows-Computer ein Terminal erzeugt
    und man kann sich per SSH mit dem Server zu verbinden.
  • Wie bei jedem Betriebssystem gibt es auch bei Ubuntu gelegentliche Updates.
    Alle möglichen Updates vollkommen automatisch machen lassen ist zwar möglich,
    doch es birgt die Gefahr, dass sich immer mehr Fehler einschleichen.
    Bei einem Update des Systems sollte man schon dabei sein,
    um im Fall der Fälle eingreifen zu können.
    sudo apt update
    sudo apt upgrade -y
    sudo apt autoremove -y
    Der erste Befehl sucht nur nach möglichen Updates.
    Mit dem zweiten werden die Updates dann installiert.
    Durch das "-y" am Ende der Zeile werden alle Fragen,
    die während des Updates auftreten,
    mit "y" für Yes (bzw. Ja) beantwortet.
    Schließlich wird das Sytem mit dem dritten Befehl aufgeräumt.
    Alle ungenutzten Abhängigkeiten (inklusive Pakete) werden deinstalliert.
    Das schafft etwas Platz auf der Festplatte.
    Man kann diese drei Befehle auch in eine Zeile schreiben.
    sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
    Leider werden immer wieder einzelne Updates zurück gehalten.
    Diesen müssen dann (von Hand) nachträglich aktualisiert werden.
    sudo apt upgrade dateiname
    Irgendwann gibt es eine neue Ubuntu Version und man möchte darauf aktualisieren.
    Zuvor muss das alte vorhandene System mit den obigen Befehlen auf den neuesten Stand gebracht werden.
    Erst danach kann das Upgrade auf die neue Version gestartet werden.
    sudo do-release-upgrade
    Das dauert natürlich etwas.
    Bitte nicht erschrecken wenn eine Meldung, wie diese, erscheint.
    Sind Sie sicher das Upgrade machen zu wollen ?
    Der Vorgang kann mehrere Stunden dauern und darf nicht unterbrochen werden.

    Keine Panik,
    im Normalfall sollte das Upgrade nach spätestens einer Stunde erledigt sein.
  • Ab Ubuntu 18.04 verfügt die live Version dieses Betriebssystems über eine Cloud-Funktion.
    Damit soll die Installation bzw. Nutzung bestimmter Funktionen wesentlich leichter sein.
    Allerdings wird dafür ein Account benötigt.
    Ich habe es bisher nicht ausprobiert und kann dazu nicht viel sagen.
    In jedem Fall dauert der Startvorgang mit so einer Cloud extrem lange.
    Unmittelbar nach der Installation von Ubuntu deaktiviere (1. oder 2.) und lösche (3.) ich den Zugriff auf diese Cloud.
     
    1. Cloud-Init deaktivieren
    Dies ist der sicherste und auch einfachste Weg.
    Dazu wird lediglich eine leere Datei angelegt und der Rechner neu gestartet.
    sudo touch /etc/cloud/cloud-init.disabled
    sudo reboot now
    2. Cloud-Init deaktivieren
    Die Datei grub wird editiert.
    sudo nano /etc/default/grub
    Man sucht die Zeile GRUB_CMDLINE_LINUX und erweitert sie um "cloud-init=disabled".
    GRUB_CMDLINE_LINUX="cloud-init=disabled"
    mit strg+o speichern
    mit strg+x nano beenden
    Die Boot-Funktion aktualisieren und den Computer neu starten.
    sudo update-grub
    sudo reboot now
    
    3. Cloud-Init entfernen
    sudo apt purge cloud-init -y
    sudo rm -rf /etc/cloud
    sudo rm -rf /var/lib/cloud/
    sudo reboot now
    Cloud-init wird deinstalliert.
    Danach werden noch Reste in /etc/cloud und in /var/lib/cloud gelöscht.
    Schließlich wird der Computer neu gestartet.
  • In iSCSI und FC SAN Umgebungen gibt es,
    abhängig vom Server-seitig verwendeten Betriebssystem und vom Storage-System,
    unterschiedliche Möglichkeiten und Technologien um ein Multipathing zu erreichen.
    Im Storage-Umfeld spricht man von Multipathing,
    wenn ein Server mehrere unabhängige Pfade zu einem Storage-System hin nutzen kann.
    Je nach Technologie kann damit die Performance bzw. der Datendurchsatz erhöht werden.
     
    Bei einem einfachen Home-Computer (bzw. -Server) wird Multipathing nicht benötigt.
    Im Gegenteil, es kann
    auch zu vielen Fehlermeldungen führen.
    Diese sind zwar harmlos, aber eben auch nervend.
     
    Aus diesem Grund wird im Internet empfohlen es zu deinstallieren, wenn man es nicht benötigt.
    Die Deinstallation ist recht schnell erledigt.
    sudo systemctl stop multipathd.service
    sudo systemctl disable multipathd.service
    sudo apt remove multipath-tools -y
    sudo apt purge multipath-tools -y
    Das war es schon.
  • 1. Feste IP
    Ein Server sollte möglichst eine feste IP-Adresse haben.
    Nur so kann er immer unter der identischen Adresse gefunden werden.
    Im angeschlossenen Router sollte es dazu eine recht einfache Möglichkeit geben.

    Eine feste IP-Adresse sollte möglichst immer im Router festgelegt werden.
    Zwar geht es auch direkt am Rechner, doch das kann zu Adress-Konflikten führen
    und der Rechner wäre dann gar nicht mehr erreichbar.
     
    2. SSH Zugang
    Normal wird der openSSH-Server bereits bei der Betriebssytem Installation mit installiert.
    Hat man es vergessen, oder absichtlich nicht gemacht,
    kann der Service jederzeit nachträglich installiert werden.
    sudo apt install openssh-server
    Unmittelbar nach der Installation sollte der Service zur Verfügung stehen.
    Der Rechner ist dann per
    ssh nutzername@servername
    erreichbar. Nutzt man immer den gleichen Nutzernamen, so reicht auch ein
    ssh servername
    3. Sprache einstellen
    Bei der Installation des System wird bereits eine Sprache festgelegt.
    Doch diese Einstellung gilt nur für die Installation.
    Danach ist das System wieder in Englisch.
    Will man die Systemsprache ändern, so hilft dieser Befehl:
    sudo dpkg-reconfigure locales
    Es öffnet sich ein Menü.

    Hier können Sprachpakete hinzu gefügt, oder gelöscht, werden.
    Für die deutsche Sprache reicht "de_DE.UTF-8".
    Ich aktiviere normal die Pakete
    de_DE.ISO-8859-1
    de_DE.UTF-8
    de_DE.ISO-8859-15(at)euro
    Hat man mehrere Pakete aktiviert, so wird nach dem Standard gefragt.
    Spätestens hier sollte "de_DE.UTF-8" gewählt werden.
    Verschiedene Cloud-Software benötigt das Sprachpaket en_US.UTF-8, deshalb sollte auch das aktiviert werden.
     
    4. Zeitzone
    Mit dem Befehl
    sudo dpkg-reconfigure tzdata
    öffnet man ein Menü
    Europa -> Berlin wäre für Deutschland richtig.
     
    5. Tastatur
    Hier muss man unterscheiden ob man direkt am Gerät oder per ssh arbeitet.
    Direkt am Gerät
    sudo dpkg-reconfigure keyboard-configuration
    Wieder öffnet sich ein Menü, in dem man recht einfach die Tastatur richtig einstellen kann.
    per ssh
    sudo nano /etc/default/keyboard
    Da hier nur eine Textdatei editiert wird, kann man XKBLAYOUT nur auf "de" stellen.
     
    6. etwas Farbe
    Normal wird die Ausgabe von Ubuntu 20 LTS in weisser Farbe auf schwarzem Hintergrund angezeigt.

    Das ist zwar recht gut lesbar, doch erscheint nach einer Eingabe ein längerer Text,
    so findet man dessen Anfang nur sehr schlecht.
    Wesentlich einfacher wäre es, wenn zumindest jede Eingabezeile farblich hervor gehoben wäre.
    Unter Linux (Ubuntu ist ja auch eine Linux-Distrobution) lässt sich alles irgendwie einstellen.
    Mit dem Befehl
    sudo nano .bashrc
    öffnet man die entsprechende Einstellungsdatei.
    Dort sucht man die Zeile
    #force_color_prompt=yes
    und entfernt das # am Anfang.
    Wie üblich wird die Datei mit strg+o gespeichert und dann mit strg+x nano verlassen.
    Nach einem Neustart des Computers sollte jede Eingabezeile nun farblich hergehoben sein

    Das sieht doch viel besser aus.
    Bei längeren Textausgaben findet nun deren Anfang recht leicht.
    Wer seinen Server ausschließlich per SSH bedient, braucht diese Einstellung nicht.
  • Bei einem Desktop-Computer schließt man eine USB-Festplatte an und sie wird automatisch erkannt.
    Unter Ubuntu 20.04 (Server-Edition) funktioniert das nicht.
    Hier muss das System mit verbundener USB-Festplatte neu gestartet werden.
    Mit dem Befehl
    blkid
    kann man sich alle angeschlossenen Laufwerke anzeigen lassen.
    Das kann so aussehen:
    /dev/sdc2: UUID="51f712dc-a756-4ba3-9339-a3dc97861bff" TYPE="ext4"
     PARTUUID="b4e47785-fb9e-42e4-bed1-1574c3094565"
    /dev/sda1: LABEL="platte1" UUID="8a761d54-b1e6-4bb3-b1c4-f62fdaff1c23" TYPE="ext4"
     PARTUUID="101cd0d1-01"
    /dev/sdb1: LABEL="platte2" UUID="e5821f11-0c39-4d21-b460-cca1c72468ba" TYPE="ext4"
     PARTUUID="d1f2556d-01"
    Im Beispiel sind platte1 und platte2 USB-Festplatten.
    Um sie dauerhaft ins System einzubinden wird zuerst jeweils ein Ordner erstellt.
    sudo mkdir /mnt/platte1
    sudo mkdir /mnt/platte2
    Um später keine Probleme mit den Zugriffsrechten zu bekommen, werden diese auf 777 gesetzt.
    sudo chmod 0777 /mnt/platte1
    sudo chmod 0777 /mnt/platte2
    Das Einbinden der Platten erfolgt durch Einträge in der Datei fstab.
    sudo nano /etc/fstab
    Hier wird für jede Festplatte eine neue Zeile eingefügt.
    PARTUUID=101cd0d1-01 /mnt/platte1 auto nosuid,nodev,nofail,x-gvfs-show 0 0
    PARTUUID=d1f2556d-01 /mnt/platte2 auto nosuid,nodev,nofail,x-gvfs-show 0 0
    
    Nach einem Neustart sollten die Festplatten in den jeweiligen Ordnern verfügbar sein.
    Muss eine Festplatte neu partitioniert und/oder formatiert werden, so geht das natürlich auch:
    Im Beisiel wird auf der Festplatte sda eine neue Partition sda1 erstellt und diese dann formatiert.
    Aushängen
    sudo umount /dev/sda
    Partitionieren
    sudo parted /dev/sda
    mktable msdos
    mkpart primary ext4 0% 100%
    quit
    Formatieren
    sudo mkfs.ext4 /dev/sda1
    Fertig !!!
  • Ein Computer, der als Server dient, sollte 24 Stunden am Tag laufen
    und höchsten mal zu Wartungszwecken neu gestartet werden.
    Da er nicht unbedingt in unmittelbarer Nähe es eigenen Schreibtisches stehen muss,
    sollte man ihn notfalls auch aus der Ferne starten können.
    Genau dazu dient die Funktion "Wake On Lan".
    Zuerst muss ethtool installiert werden, was aber meist schon Bestandteil des Betriebssystems ist.
    sudo apt install ethtool
    Liste der Netzwerk-Adapter aufrufen:
    ip link
    Bei mir hat der aktive Netzwerk-Adapter die Bezeichnung "enp4s0".
    WOL aktivieren
    sudo ethtool -s enp4s0 wol g
    Um WOL dauerhaft zu aktivieren legt man eine neue Datei an.
    sudo nano /etc/systemd/system/wol.service
    Inhalt:
    [Unit]
    Description=Configure Wake-up On LAN
    [Service]
    Type=oneshot
    ExecStart=/sbin/ethtool -s enp4s0 wol g
    [Install]
    WantedBy=basic.target
    Dann kann der Service aktiviert werden.
    sudo systemctl enable wol.service
    Konfiguration neu einlesen
    sudo systemctl daemon-reload
    ACHTUNG !!!
    Wake On Lan muss auch im BIOS des Rechners aktiviert sein.
    Wie das funktioniert ist vom Rechner abhängig und kann hier nicht erklärt werden.
    Beispiel:
    BIOS -> Power --> Power On By PME (Enabled)
  • Jeder Desktop-Computer lässt sich über die Energie-Einstellungen,
    unter bestimmten Bedingungen, herunterfahren.
    Server hingegen sollen immer erreichbar sein, doch es gibt Ausnahmen.
    Wozu sollte ein Firmenserver rund um die Uhr laufen,
    wenn er garantiert nur zu den normalen Bürozeiten genutzt wird ?
    Hier könnte man sicherlich eine zeitgesteuerte Lösung finden.
     
    Ein Desktop-Computer schaltet sich nach einer gewissen Zeit der Untätigkeit aus.
    Zumindest lässt sich das so einstellen.
    Auch ein Server kann sich abschalten, wenn er eine bestimmte Zeit lang nicht genutzt wird.
     
    Zuerst wird ein neuer Cron-Job angelegt.
    Dazu wird eine Datei erstellt.
    sudo nano /etc/cron.d/checkshutdown
    Ihr Inhalt:
    # Auto shutdown
    */2 * * * * root /usr/local/sbin/checkshutdown.sh
    Hier kurz eine Übersicht, wie sich ein Cronjob aufbaut
    *     *     *     *     *  Befehl der ausgeführt werden soll
    -     -     -     -     -
    |     |     |     |     |
    |     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 oder Namen, siehe unten)
    |     |     |     +------- Monat (1 - 12)
    |     |     +--------- Tag (1 - 31)
    |     +----------- Stunde (0 - 23)
    +------------- Minute (0 - 59; oder Namen, siehe unten)

    Für die Wochentage und die Monate können die drei ersten Buchstaben des englischen Namen benutzt werden,
    z. B. "Sun" für Sonntag.
    Groß-/Kleinschreibung spielt dabei keine Rolle, allerdings sind keine Angaben von Zeiträumen erlaubt,
    dazu müssen Ziffern verwendet werden.
     
    In meinem Beispiel wird eine Datei alle 2 Minuten aufgerufen.
    Diese Datei wird nun angelegt.

    sudo nano /usr/local/sbin/checkshutdown.sh

    Ihr Inhalt:

    #!/bin/bash
    #
    #set -x
    
    . /etc/autoshutdown.conf
    
    logit()
    {
    	logger -p local0.notice -s -- AutoShutdown: $*
    }
    
    IsOnline()
    {
            for i in $*; do
    		ping $i -c1
    		if [ "$?" == "0" ]; then
    		  logit PC $i is still active, auto shutdown terminated
    		  return 1
    		fi
            done
    	return 0
    }
    
    IsRunning()
    {
            for i in $*; do
    		if [ $(pgrep -c $i) -gt 0 ] ; then
    		  logit $i still active, auto shutdown terminated
                      return 1
                    fi
            done
            return 0
    }
    
    IsDamonActive()
    {
            for i in $*; do
                    if [ $(pgrep -c $i) -gt 1 ] ; then
                      logit $i still active, auto shutdown terminated
                      return 1
                    fi
            done
            return 0
    }
    
    IsPortInUse()
    {
            for i in $*; do
                    LANG=C netstat -an | grep -q "${myIp}:${i}.*ESTABLISHED$"
                    Err=${?}
                    if [ ${Err} -eq 0 ] ; then
                      logit "Port ${i} is still in use, auto shutdown terminated"
                      return 1
                    fi
            done
            return 0
    }
    
    IsBusy()
    {
    	# Samba
    	if [ "x$SAMBANETWORK" != "x" ]; then
    		if [ $(/usr/bin/smbstatus -b | grep $SAMBANETWORK | wc -l) != "0" ]; then
    		  logit samba connected, auto shutdown terminated
    	  	  return 1
    		fi
    	fi
    
    	#damons that always have one process running
    	IsDamonActive $DAMONS
            if [ "$?" == "1" ]; then
                    return 1
            fi
    
    	#backuppc, wget, wsus, ....
            IsRunning $APPLICATIONS
    	if [ "$?" == "1" ]; then
                    return 1
            fi
    
            # check network-ports
            if [ "x${NETWORKPORTS}" != "x" ]; then
                    myIp=$(LANG=C /sbin/ifconfig | sed -n "/inet addr/ { s|^[a-z ]*:\([0-9\.]*\).*$|\1|p }" | head -n 1)
                    IsPortInUse ${NETWORKPORTS}
                    if [ "$?" == "1" ]; then
                            return 1
                    fi
            fi
    
    	# Read logged users
    	USERCOUNT=$(who | wc -l);
    	# No Shutdown if there are any users logged in
    	test $USERCOUNT -gt 0 && { logit some users still connected, auto shutdown terminated; return 1; }
    
            IsOnline $CLIENTS
            if [ "$?" == "1" ]; then
                    return 1
            fi
    	return 0
    }
    
    COUNTFILE="/var/spool/shutdown_counter"
    OFFFILE="/var/spool/shutdown_off"
    
    # turns off the auto shutdown
    if [ -e $OFFFILE ]; then
    	logit auto shutdown is turned off by existents of $OFFFILE
    	exit 0
    fi
    
    if [ "$AUTO_SHUTDOWN" = "true" ] || [ "$AUTO_SHUTDOWN" = "yes" ] ; then 
    	IsBusy
    	if [ "$?" == "0" ]; then
    		# was it not busy already last time? Then shutdown.
    		if [ -e $COUNTFILE ]; then
    	        	# shutdown
    	        	rm -f $COUNTFILE
    		        logit auto shutdown caused by cron
            		/sbin/halt -p
    		        exit 0
    		else
    			# shut down next time
    			touch $COUNTFILE
    			logit marked for shutdown in next try
    			exit 0
    		fi
    	else
    		rm -f $COUNTFILE
    		#logit aborted
    		exit 0
    	fi
    fi
    
    logit malfunction
    exit 1

    Diese Datei muss ausführbar gemacht werden.

    sudo chmod a+x /usr/local/sbin/checkshutdown.sh

    Schließlich fehlt noch eine Konfigurations-Datei.

    sudo nano /etc/autoshutdown.conf

    Ihr Inhalt

    # Funktion einschalten
    AUTO_SHUTDOWN=yes
    
    # Damons, bei denen immer ein Prozess ausgeführt wird,
    # nur wenn mehr als ein Prozess aktiv ist, verhindern wir das Herunterfahren.
    # Die Werte werden mit grep verwendet, sodass nur ein eindeutiger Teil ausreicht
    DAMONS="rsync BackupPC_"
    
    # Wichtige Anwendungen, die das Herunterfahren verhindern sollen.
    # Die Werte werden mit grep verwendet, sodass nur ein eindeutiger Teil ausreicht
    APPLICATIONS="BackupPC_nightly BackupPC_dump wsus wget screen mlnet"
    
    # Netzwerk-IP-Bereich zum Überprüfen offener Samba-Verbindungen
    # Der Wert wird mit grep verwendet, sodass nur ein eindeutiger Teil ausreicht
    SAMBANETWORK="192.168.1."
    
    # Namen oder IP für Computer, die das Herunterfahren verhindern sollen
    # Wir pingen diese Computer in der Liste an, um zu überprüfen, ob sie aktiv sind.
    CLIENTS="sonne mond stern 192.168.1.10 192.168.1.11 192.168.1.12"
    
    # Liste der Ports
    # Wir überprüfen alle, falls vorhanden
    NETWORKPORTS="22"

    Die eingetragenen Einstellungen sind Beispiele und sollten an die eigenen Bedürfnisse angepasst werden.
    Das vom Cron Job aufgerufene Script prüft, ob

    • bestimmte Programme laufen
    • bestimmte Dämonen aktiv sind
    • noch Samba Verbindungen aktiv sind
    • User eingeloggt sind
    • andere PCs noch eingeschaltet sind

    Nur wenn zwei mal hintereinander keine Aktivität mehr vorhanden ist,
    wird per "Halt"-Befehl der Server abgeschaltet.

  • Um in Linux administrative Aufgaben auszuführen, benötigt man einen root-Zugang (auch superuser-Zugang genannt).
    In den meisten Linux-Distributionen ist es üblich einen separaten root-Account zu haben.
    Dieser wird normal bei der Installation eingerichtet.
    Ubuntu deaktiviert den root-Account standardmäßig.
    Damit sollen Fehler einfacher Benutzer verhindert werden.
    Zusätzlich wird es so möglichen Eindringlingen schwerer gemacht.
    Will man einen Befehl ausführen, der root-Zugang erfordert, so verwendet man sudo.
    Beispiel:
    nano /etc/fstab
    Öffnet die Datei fstab nur mit Leserechten, da für diese Datei root-Rechte erforderlich sind.
    sudo nano /etc/fstab
    Öffnet die Datei fstab mit Lese- und Schreibrechten.
    Das sudo (Super User do) gehört an den jeweiligen Zeilenanfang
    Bevor der Befehl ausgeführt wird, muss das Passwort eingegeben werden.
    Damit man nicht ständig das Passwort eingeben muss,
    merkt Linux es sich bei jeder sudo-Eingabe neu für 15 Minuten.
     
    Weiß man was man macht und möchte längerfristig root-Rechte haben, so kann man in den root-Account wechseln.
    sudo -i

    Legt man für den root-Account ein Passwort an, so kann man sich auch direkt als root anmelden.
    sudo passwd root
    In diesem Fall kann man auch mit
    su -
    in den root-Account wechseln.
    Bitte das Minuszeichen am Ende nicht vergessen.
    Ein Anmeldung per ssh als root ist damit allerdings noch nicht möglich.
    Damit das funktioniert muss die Datei sshd_config editiert werden.
    sudo nano /etc/ssh/sshd_config
    Die Zeile PermitRootLogin dürfte auskommentiert sein.
    #PermitRootLogin prohibit-password
    
    ändern zu
    PermitRootLogin yes
    Achtung !!!
    Die Aktivierung des root-Account stellt immer ein Risiko dar.
    Es wird dringend empfohlen, es nicht zu tun.
  • Eine Firewall schirmt einen Computer nach Außen hin ab.
    Nur erlaubte Programme haben Zugriff.
    Das gilt von Innen nach Außen, als auch umgekehrt.
    Erlaubt man in einer aktiven Firewall den SSH-Zugriff nicht, so wäre dieser Computer nicht mehr erreichbar.
    Eine UFW (uncomplicated Firewall) ist Bestandteil des Ubuntu-Betriebssystems, allerdings ist sie deaktiviert.

    Schritt 1 - Verwenden von IPv6 mit UFW
    Wer einen Webserver betreiben möchte, der sollte in der UFW unbedingt IPv6 aktivieren.
    Man öffnet die Einstellungsdatei
    sudo nano /etc/default/ufw
    und stellt dort sicher, dass der Wert IPV6 yes lautet.
     
    Schritt 2 - Einstellen der Standardregeln
    Man kann die UFW-Regeln auf eine Art Standard zurücksetzen.
    Die Befehle
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    untersagen alle Zugriffe von Außen auf den Computer und erlauben alle ausgehenden Verbindungen.
     
    Schritt 3 - SSH-Verbindungen erlauben
    Das Zurücksetzen der Einstellungen unter Schritt 2 sollte man nur machen,
    wenn man direkt am Gerät arbeitet, oder man genau weiß, dass die UFW deaktiviert ist.
    Man verbietet ja alle eingehenden Verbindungen und SSH wäre somit nicht mehr möglich.
    Den Status überprüfen kann man mit
    sudo ufw status
    Hier sind die Werte active oder inactive möglich.
    Der Befehl
    sudo ufw app list
    liefert eine Liste aller installierter Software, die für UFW von Interesse ist.
    Schließlich werden mit
    sudo ufw allow ssh
    SSH-Verbindungen erlaubt.
    Eine SSH-Verbindung erfolgt im Normalfall über den Port 22.
    sudo ufw allow 22
    Würde somit den gleichen Effekt haben.
    Hat man den SSH-Dämon so konfiguriert, dass er einen anderen Port verwendet,
    müsste man diesen entsprechend freischalten.
     
    Schritt 4 - Konfiguration
    Bevor man in Schritt 5 die UFW aktiviert, sollten alle Einstellungen gemacht sein.
    Mit
    sudo ufw app list
    ruft man eine Liste der installierten Software auf für die UFW relevant ist.
    Das kann SAMBA, Apache, Nginx oder weitere Software sein.
    Nun erlaubt man alles, was man erlauben möchte.
    sudo ufw allow samba
    Bei Apache und/oder nginx hat man drei Möglichkeiten;
    Apache öffnet Port 80 für den normalen, nicht verschlüsselten Webverkehr
    Apache Secure öffnet Port 443 für den mit TLS/SSL verschlüsselten Webverkehr
    Apache Full öffnet Port 80 und Port 443
     
    Für manche Webapplikationen werden bestimmte offene Port benötigt.
    Auch diese müssen natürlich in der UFW geöffnet werden.
     
    Schritt 5 - UFW aktivieren
    Um UFW zu aktivieren, verwendet man den Befehl
    
    sudo ufw enable
    Man erhält eine Warnung, dass dieser Befehl bestehende SSH-Verbindungen unterbrechen kann.
    Da eine entsprechende Regel bereits erstellt wurde, kann man UFW unbesorgt aktivieren.
    Natürlich lässt sich die UFW auch wieder deaktivieren.
    
    sudo ufw disable
     
    Schritt 6 - Weitere Einstellungsmöglichkeiten
    Spezifische Portbereiche
    sudo ufw allow 6000:6007/tcp
    sudo ufw allow 6000:6007/udp
    Spezifische IP-Adressen
    sudo ufw allow from 192.168,178,111
    Würde alle Verbindungen von und zu dem Computer mit der IP 192.168.178.111 erlauben.
    Spezifische Netzwerkschnittstelle
    Mit
    ip addr
    erhält man eine Liste aller aktivierten Netzwerkschnittstellen.
    Bei einem normalen Computer dürfte das nur eine sein.
    Bei Laptops sind es in der Regel zwei. (WLAN und LAN)
    Bei Servern können mehrere Netzwerkkarten verbaut sein.
    Damit lassen sich zum Beispiel Datenverkehr und Administration des Servers trennen.
    sudo ufw allow ssh on eth0
    sudo ufw deny ssh on eth1
    Würde eine SSH-Verbindung nur über die Netzwerkschnittstelle eth0 erlauben.
     
    Schritt 7 - Ablehnen von Verbindungen
    Unter Schritt 2 wurden bereits alle eingehenden Verbindungen untersagt.
    Das hat den Vorteil, dass man nur Regeln erstellen muss, die bestimmte Verbindungen explizit zulassen.
    Trotzdem kann es sein, dass man auch bestimmte Verbinungen untersagen möchte.
    Wird man, als Beispiel, von einer bestimmten IP-Adresse ständig angegriffen, so könnte man sie sperren.
    sudo ufw deny from IP-Adresse
    Schritt 8 - Regel löschen
    Zu wissen, wie man Regeln erstellt, ist wichtig.
    Genauso wichtig ist aber auch zu wissen, wie man sie wieder löscht.
    Bei UFW gibt es zwei Möglichkeiten Regeln zu löschen.
    A) nach tatächlicher Regel
    Die mit
    sudo ufw allow samba
    könnte man mit
    sudo ufw delete allow samba
    wieder entfernen.
    B) nach Regelnummer
    Mit dem Befehl
    sudo ufw status numbered
    lässt man sich eine nummerierte Liste aller Regel anzeigen.
    Das funktioniert allerdings nur wenn UFW auch tatsächlich aktiv ist.
    Status: active
      To Action From
      -- -------- ------
    [ 1] 22/tcp ALLOW IN Anywhere
    [ 2] Samba ALLOW IN Anywhere
    [ 3] 22/tcp (v6) ALLOW IN Anywhere (v6)
    [ 4] Samba (v6) ALLOW IN Anywhere (v6)
    und anschließend kann man mit
    sudo ufw delete Nummer
    die gewünschte Regel löschen
     
    ACHTUNG !!!
    UFW ist nur eine Firewall auf dem verwendeten Computer.
    Die erstellten Regeln gelten nur auf diesem Gerät.
    Hat ein verwendeter Router seine eigene Firewall, so sollten die Einstellungen abgeglichen werden.
    Das geschieht nicht automatisch.