Linux - Netzwerk und Serveradminstration SFTP: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= SFTP Server = {{#drawio:5102-sftp-01}} == Vorbereitungen == * VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen * Der Host soll im ''DMZ''-Netzwerk li…“)
 
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
  
 
== Vorbereitungen ==
 
== Vorbereitungen ==
* VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
+
=== DATEN ===
* Der Host soll im ''DMZ''-Netzwerk liegen
+
{| class="wikitable" style="background-color: #f2f2f2;"
* IP-Adresse herausfinden über das DHCP-Log oder die Konsole
+
! Parameter !! Wert !! Erläuterung
* statische IP-Adresse nach dem Netzwerkplan setzen
+
|-
* Hostname ändern
+
| Netzwerk (NIC) || DMZ|| Interface-Zuweisung
* DNS-Eintrag vornehmen
+
|-
* SSH-Server anpassen
+
| IP || 10.88.2XX.3 || Statische IP
===Daten===
+
|-
*NET: DMZ
+
| CIDR || 24 || Netzmaske
*IP 10.88.2XX.3/24
+
|-
*GW 10.88.2XX.1
+
| GW || 10.88.2XX.1 || Gateway
*NS 10.88.2XX.2
+
|-
*NA sftp.it2XX.int
+
| NS || 10.88.2XX.21 || DNS-Server
 +
|-
 +
| FQDN || sftp.it2XX.int || Vollständiger Name
 +
|-
 +
| SHORT || sftp || Kurzname
 +
|-
 +
| DOM || it2XX.int || Domain
 +
|}
  
*[[Anpassen der Virtuellen Maschinen Netzwerk und Serveradministration]]
+
*[[Anpassen des Debian Templates]]
  
== sichere Datenübertragung ==
+
== Sichere Datenübertragung ==
* SFTP benutzt das SSH-Protokoll, um die Daten zu verschlüsseln
+
*SFTP nutzt SSH zur Verschlüsselung
* Daher muss nur die [[SFTP-Server|Konfiguration des SSH-Servers]] angepasst werden
+
*kein zusätzlicher Dienst notwendig
* andere FTP-Arten sollten nicht mehr benutzt werden (FTP, TFTP, ...)
+
*FTP/TFTP sind unsicher und werden nicht verwendet
* Ein SFTP-Zugang für einen Gast-User soll unter ''/srv/sftp/gast'' angelegt werden
+
*Zugriff erfolgt ausschließlich über SSH-Port 22
*[[ssh jump-host]]
+
 
==SFTP Umsetzung==
+
== Ziel ==
*[[SFTP-Server|Konfiguration des SSH-Servers]]
+
*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 /usr/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)
 +
 
 +
== SSH Server Konfiguration ==
 +
*sudo nano /etc/ssh/sshd_config
 +
 
 +
<pre>
 +
Subsystem sftp internal-sftp
 +
 
 +
Match Group sftponly
 +
    ChrootDirectory /srv/sftp/%u
 +
    ForceCommand internal-sftp
 +
    PasswordAuthentication yes
 +
    AllowTcpForwarding no
 +
</pre>
 +
 
 +
*sudo systemctl restart ssh
 +
 
 +
;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 ==
 +
*[http://en.wikibooks.org/wiki/OpenSSH/Cookbook/SFTP#Chrooted_SFTP_to_Shared_Directories SFTP]

Aktuelle Version vom 1. April 2026, 13:28 Uhr

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 /usr/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)

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 ssh
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