OpenSSH¶
Inhalt¶
- OpenSSH Portable 10.2p1
- Ports-Version
security/openssh-portable - eigener Dienst
openssh - getrennt vom FreeBSD-Basisdienst
sshd - Host Keys für
rsa,ecdsaunded25519
Einleitung¶
Dieses HowTo beschreibt die Installation und Konfiguration von OpenSSH Portable auf FreeBSD 15+.
In diesem HowTo wird bewusst die Ports-Version security/openssh-portable verwendet und nicht ausschließlich das OpenSSH aus dem FreeBSD-Basissystem.
Voraussetzungen¶
Zu den Voraussetzungen für dieses HowTo siehe bitte: Hosting System
Vorbereitungen¶
DNS Records¶
Für dieses HowTo sind in der Regel keine zusätzlichen DNS-Records erforderlich.
Optional sollte der Servername bereits sauber per DNS auflösbar sein, damit SSH-Clients Hostnamen statt IP-Adressen verwenden können.
Gruppen / Benutzer / Passwörter¶
Für dieses HowTo sind keine zusätzlichen Systemgruppen, Systembenutzer oder Passwörter erforderlich.
Verzeichnisse / Dateien¶
Für dieses HowTo müssen vor der Installation in der Regel keine zusätzlichen Verzeichnisse oder Dateien manuell angelegt werden.
Das Konfigurationsverzeichnis /usr/local/etc/ssh sowie die mitgelieferte Beispieldatei sshd_config.sample werden durch den Port bereitgestellt.
Installation¶
Wir installieren security/openssh-portable und dessen Abhängigkeiten.¶
mkdir -p /var/db/ports/dns_ldns
cat <<'EOF' > /var/db/ports/dns_ldns/options
_OPTIONS_READ=ldns-1.9.0
_FILE_COMPLETE_OPTIONS_LIST=DANETAUSAGE DOXYGEN DRILL EXAMPLES GOST RRTYPEAMTRELAY RRTYPEAVC RRTYPENINFO RRTYPERKEY RRTYPETA
OPTIONS_FILE_SET+=DANETAUSAGE
OPTIONS_FILE_UNSET+=DOXYGEN
OPTIONS_FILE_SET+=DRILL
OPTIONS_FILE_UNSET+=EXAMPLES
OPTIONS_FILE_SET+=GOST
OPTIONS_FILE_UNSET+=RRTYPEAMTRELAY
OPTIONS_FILE_UNSET+=RRTYPEAVC
OPTIONS_FILE_UNSET+=RRTYPENINFO
OPTIONS_FILE_UNSET+=RRTYPERKEY
OPTIONS_FILE_UNSET+=RRTYPETA
EOF
mkdir -p /var/db/ports/security_openssh-portable
cat <<'EOF' > /var/db/ports/security_openssh-portable/options
_OPTIONS_READ=openssh-portable-10.2.p1
_FILE_COMPLETE_OPTIONS_LIST=BLACKLISTD BSM DOCS FIDO_U2F HPN KERB_GSSAPI LDNS LIBEDIT NONECIPHER PAM TCP_WRAPPERS XMSS MIT HEIMDAL HEIMDAL_BASE
OPTIONS_FILE_UNSET+=BLACKLISTD
OPTIONS_FILE_UNSET+=BSM
OPTIONS_FILE_UNSET+=DOCS
OPTIONS_FILE_UNSET+=FIDO_U2F
OPTIONS_FILE_UNSET+=HPN
OPTIONS_FILE_UNSET+=KERB_GSSAPI
OPTIONS_FILE_SET+=LDNS
OPTIONS_FILE_SET+=LIBEDIT
OPTIONS_FILE_UNSET+=NONECIPHER
OPTIONS_FILE_SET+=PAM
OPTIONS_FILE_SET+=TCP_WRAPPERS
OPTIONS_FILE_SET+=XMSS
OPTIONS_FILE_UNSET+=MIT
OPTIONS_FILE_UNSET+=HEIMDAL
OPTIONS_FILE_UNSET+=HEIMDAL_BASE
EOF
portmaster -w -B -g -U --force-config security/openssh-portable -n
Dienst in rc.conf eintragen¶
Der Ports-Dienst wird mittels sysrc in der rc.conf eingetragen und dadurch beim Systemstart automatisch gestartet.
Wichtig ist hier die saubere Trennung zwischen Ports-OpenSSH und dem OpenSSH aus dem FreeBSD-Basissystem.
Konfiguration¶
Konfigurationsdatei¶
Die Ports-Version verwendet ihr eigenes Konfigurationsverzeichnis unter /usr/local/etc/ssh. Dort legen wir die Konfigurationsdatei sshd_config ab.
cat <<'EOF' > /usr/local/etc/ssh/sshd_config
Include sshd_config.d/*.conf
Port 22
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
UsePAM yes
AllowAgentForwarding no
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
PermitTunnel no
PermitUserEnvironment no
ClientAliveInterval 60
ClientAliveCountMax 3
PidFile /var/run/opensshd.pid
VersionAddendum none
Subsystem sftp internal-sftp -u 0027
AllowGroups wheel admin sshusers sftponly
# Root bleibt ohne Passwort, aber ohne globales Chroot
Match User root
PasswordAuthentication no
# Admin- und Shell-Benutzer ohne Passwort-Login
Match Group admin,sshusers
PasswordAuthentication no
# Reine SFTP-Konten
Match Group sftponly
ChrootDirectory /home
ForceCommand internal-sftp -u 0027 -d /%u
PasswordAuthentication yes
KbdInteractiveAuthentication no
PermitTTY no
DisableForwarding yes
EOF
Host Keys¶
Falls bereits alte oder unerwünschte Host Keys vorhanden sind, können diese entfernt und anschließend gezielt neu erzeugt werden.
rm -f /usr/local/etc/ssh/ssh_host_rsa_key /usr/local/etc/ssh/ssh_host_rsa_key.pub
rm -f /usr/local/etc/ssh/ssh_host_ecdsa_key /usr/local/etc/ssh/ssh_host_ecdsa_key.pub
rm -f /usr/local/etc/ssh/ssh_host_ed25519_key /usr/local/etc/ssh/ssh_host_ed25519_key.pub
ssh-keygen -q -t rsa -b 4096 -f "/usr/local/etc/ssh/ssh_host_rsa_key" -N ""
ssh-keygen -l -f "/usr/local/etc/ssh/ssh_host_rsa_key.pub"
ssh-keygen -q -t ecdsa -b 384 -f "/usr/local/etc/ssh/ssh_host_ecdsa_key" -N ""
ssh-keygen -l -f "/usr/local/etc/ssh/ssh_host_ecdsa_key.pub"
ssh-keygen -q -t ed25519 -f "/usr/local/etc/ssh/ssh_host_ed25519_key" -N ""
ssh-keygen -l -f "/usr/local/etc/ssh/ssh_host_ed25519_key.pub"
Konfiguration prüfen¶
Vor dem ersten Start sollte die Konfiguration immer geprüft werden.
Datenbanken¶
Für dieses HowTo sind keine Datenbanken erforderlich.
Zusatzsoftware¶
Für dieses HowTo ist keine zusätzliche Software erforderlich.
Aufräumen¶
Überflüssige oder temporäre Verzeichnisse und Dateien entsorgen.
Zusatzsoftware Installation¶
Nicht erforderlich.
Zusatzsoftware Konfiguration¶
Nicht erforderlich.
Abschluss¶
OpenSSH kann nun gestartet werden.
Für spätere Änderungen: