Linux - Netzwerk und Serveradminstration SFTP Rocky

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

SFTP Server

Vorbereitungen

DATEN

Parameter Wert Erläuterung
Netzwerk (NIC) DMZ Interface-Zuweisung
IP 10.88.2XX.3 Statische IP
CIDR 24 Netzmaske
GW 10.88.2XX.1 Gateway
NS 10.88.2XX.21 DNS-Server
FQDN sftp.it2XX.int Vollständiger Name
SHORT sftp Kurzname
DOM it2XX.int Domain

Sichere Datenübertragung

  • SFTP nutzt SSH zur Verschlüsselung
  • kein zusätzlicher Dienst notwendig
  • FTP/TFTP sind unsicher und werden nicht verwendet
  • Zugriff erfolgt ausschließlich über SSH-Port 22

Ziel

  • Gast-Zugang unter /srv/sftp/gast
  • kein Shell-Zugriff
  • Zugriff nur auf eigenes Verzeichnis

Benutzer und Verzeichnis

  • sudo mkdir -p /srv/sftp/gast/ablage
  • sudo groupadd sftponly
  • sudo useradd -G sftponly -d /srv/sftp/gast -s /sbin/nologin gast
  • sudo passwd gast
WICHTIG
  • Chroot-Verzeichnis muss root gehören
  • sudo chown root:root /srv/sftp/gast
  • sudo chmod 755 /srv/sftp/gast
  • sudo chown gast:gast /srv/sftp/gast/ablage
Erklärung
  • /srv/sftp/gast → gehört root (Pflicht für Chroot)
  • /ablage → gehört Benutzer (dort darf geschrieben werden)

SELinux

Kontext setzen

  • sudo semanage fcontext -a -t ssh_home_t "/srv/sftp(/.*)?"
  • sudo restorecon -Rv /srv/sftp

Boolean für Chroot

  • sudo setsebool -P ssh_chroot_rw_homedirs on

Fehleranalyse

  • sudo ausearch -c sshd --raw | audit2why
  • sudo tail -f /var/log/audit/audit.log | grep denied

firewalld

SSH-Dienst prüfen

  • sudo firewall-cmd --list-services
Hinweis

SSH (Port 22) ist unter Rocky standardmässig in firewalld erlaubt.

SSH Server Konfiguration

  • sudo nano /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftponly
    ChrootDirectory /srv/sftp/%u
    ForceCommand internal-sftp
    PasswordAuthentication yes
    AllowTcpForwarding no
  • sudo systemctl restart sshd
Erklärung
  • internal-sftp → kein externes Binary notwendig
  • ChrootDirectory → User sieht nur sein eigenes Verzeichnis
  • ForceCommand → erzwingt SFTP (kein SSH-Shell)
  • AllowTcpForwarding no → verhindert Tunnel

Test

  • sftp gast@SERVER-IP

Angemeldete Benutzer anzeigen

  • ps -ef | grep '[s]shd:.*@notty' | grep -v ^root
Erklärung
  • notty → kein Terminal → reiner SFTP-Zugang

Links