Free BSD Template

Aus Xinux Wiki
Version vom 16. August 2026, 16:01 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Kategorie:FreeBSD Kategorie:UNIX '''!!!Bitte setzt alle Punkte um, es ist wichtig wenn ich später hilfe brauche!!!''' =Anleitung für das Erstellen e…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

!!!Bitte setzt alle Punkte um, es ist wichtig wenn ich später hilfe brauche!!!

Anleitung für das Erstellen einer Vorlage für ein einfaches FreeBSD-System

  • Für VMs als Server empfiehlt es sich eine Vorlage zu erstellen, die schon minimal konfiguriert ist
  • Der Nutzer root soll das Passwort radler haben
  • Ein Benutzer kit mit dem Passwort kit soll angelegt werden
  • Die Vorlage soll keine graphische Oberfläche haben (Bei der Installation nicht auswählen)
  • Ein SSH-Server soll aber für die Remoteverwaltung aktiviert werden

Mindestvoraussetzungen für Hardware

Daten
  • 1 CPU
  • 2 GB RAM
  • 20 GB Festplattenspeicher
Layout
  • ZFS (Auto-ZFS bei der Installation)
Weitere Einstellungen
  • Hostname: freebsd-template.it.int
  • Netzwerk: Netzwerkbrücke br0 oder das externe Interface des Hosts (Schnittstelle meist em0, vtnet0 oder vmx0)

Benutzer

  • user: kit
  • pass: kit
  • admin: root
  • pass: radler

Installationsoptionen

  • SSH (sshd) und ntpd sollten bei den Startdiensten angekreuzt werden
  • Systemkomponenten wie src oder ports werden für ein schlankes Template nicht zwingend benötigt

Einrichtung

Wir bringen das System auf den neusten Stand

  • su -
  • pkg bootstrap (falls pkg noch nicht initialisiert ist)
  • pkg update
  • pkg upgrade

Diese Pakete sollte man nachinstallieren, um auf der Kommandozeile arbeiten zu können

  • pkg install bash vim sudo git curl tcpdump nmap

Falls ein Benutzer passwortlos zum root-Nutzer werden darf, muss dieser in der wheel-Gruppe sein und die /usr/local/etc/sudoers-Datei angepasst werden

  • pw groupmod wheel -m kit
  • sicheres Bearbeiten der sudoers-Datei (Achtung: liegt unter FreeBSD in /usr/local/etc/)
  • visudo
# %wheel ALL=(ALL) ALL
# Neuer Eintrag (Kommentarzeichen entfernen und NOPASSWD ergänzen)
%wheel ALL=(ALL) NOPASSWD: ALL

Automatische SSH-Hostschlüssel nur auf dem Template erzeugen

Damit nicht alle Klone des Templates dieselben SSH-Hostschlüssel verwenden, sollen die Schlüssel nur dann neu erzeugt werden, wenn der Hostname -template enthält. Dies wird beim Start automatisch über ein rc.d-Skript vor dem sshd.service erledigt.

Skript zur Erzeugung der Schlüssel

Ordner erstellen:

  • mkdir -p /usr/local/etc/rc.d/

Datei: /usr/local/etc/rc.d/ssh_template_keys

#!/bin/sh
#
# PROVIDE: ssh_template_keys
# REQUIRE: FILESYSTEMS
# BEFORE: sshd
# KEYWORD: nojail

. /etc/rc.subr

name="ssh_template_keys"
rcvar="ssh_template_keys_enable"
start_cmd="ssh_template_keys_start"

ssh_template_keys_start()
{
    current_host=$(hostname -s)
    
    case "$current_host" in
        *-template)
            echo "Template erkannt – SSH-Hostschlüssel werden neu erzeugt."
            rm -f /etc/ssh/ssh_host_*
            /usr/bin/ssh-keygen -A
            ;;
        *)
            echo "Nicht das Template – keine Änderung."
            ;;
    esac
}

load_rc_config $name
run_rc_command "$1"
  • chmod +x /usr/local/etc/rc.d/ssh_template_keys

rc.d-Dienst aktivieren

Anstatt systemd nutzen wir sysrc, um den Dienst in der /etc/rc.conf zu aktivieren:

  • sysrc ssh_template_keys_enable="YES"

CA ziehen und einbinden

FreeBSD nutzt certctl anstelle von update-ca-certificates.

Skript zur automatischen Netzwerkkonfiguration (Setup-Skript)

Damit nach dem Klonen das Netzwerk schnell eingerichtet ist, hinterlegen wir unser Setup-Skript.

Datei: /usr/local/sbin/freebsd-setup.sh

#!/usr/local/bin/bash

# Standardwerte setzen
FQDN=""
ADDR=""
GW=""
NS=""
USE_DHCP=0
IFACE="em0" # Hier dein Interface anpassen!

# Optionen mit getopts parsen
while getopts "f:a:g:n:d" opt; do
  case $opt in
    f) FQDN="$OPTARG" ;;
    a) ADDR="$OPTARG" ;;
    g) GW="$OPTARG" ;;
    n) NS="$OPTARG" ;;
    d) USE_DHCP=1 ;;
    *) echo "Ungueltige Option" >&2; exit 1 ;;
  esac
done

if [[ -z "$FQDN" ]]; then
  echo "Fehlender FQDN! Nutzung: $0 -f <FQDN> [-d | -a <IP/CIDR> -g <GW> -n <NS>]"
  exit 1
fi

echo "Setze Hostname auf: $FQDN"
sysrc hostname="$FQDN"

if (( USE_DHCP == 1 )); then
  sysrc ifconfig_${IFACE}="DHCP"
  sysrc -x defaultrouter
else
  sysrc ifconfig_${IFACE}="inet $ADDR"
  sysrc defaultrouter="$GW"
  DOMAIN="${FQDN#*.}"
  echo "search $DOMAIN" > /etc/resolv.conf
  echo "nameserver $NS" >> /etc/resolv.conf
fi

echo "Aenderungen aktivieren mit: service netif restart ${IFACE} && service routing restart"
  • chmod +x /usr/local/sbin/freebsd-setup.sh

Anpassen eines Rechners - Beispiel (Manuell ohne Skript)

Parameter Wert Erläuterung
Netzwerk (NIC) Externe Schnittstelle Interface-Zuweisung in VirtualBox (em0)
IP 10.88.213.21 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.88.213.1 GATEWAY
NS 192.168.16.88 Resolver
FQDN freebsd.it.int Fully Qualified Domain Name
SHORT freebsd Short Name
DOM it.int Domain Name

Hostname

  • sysrc hostname="FQDN"

Netzwerk

Bearbeitet wird unter FreeBSD alles zentral über sysrc oder direkt in der /etc/rc.conf.

Statische IP:
  • sysrc ifconfig_em0="inet IP/CIDR"
  • sysrc defaultrouter="GW"
DNS (In /etc/resolv.conf eintragen):
search DOM
nameserver NS

Management

Netzwerkkarte und Routing neustarten (Anwenden der Änderungen)
  • service netif restart em0 && service routing restart
Gesamtes Netzwerk runterfahren
  • service netif stop
Gesamtes Netzwerk hochfahren
  • service netif start

Reboot

  • reboot

Kontrolle

Stimmt die IP?
  • ifconfig em0
Stimmt die Route?
  • netstat -rn
Stimmt der Nameserver und die Search Domain?
  • cat /etc/resolv.conf
Konnektivitäts-Test
  • ping -c 1 9.9.9.9
Funktioniert unser Resolver (Damit ist der eingetragene Nameserver gemeint)?
  • host heise.de