Linux - Netzwerk und Serveradminstration SFTP: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
  
 
== Vorbereitungen ==
 
== Vorbereitungen ==
* VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
 
* Der Host soll im ''DMZ''-Netzwerk liegen
 
* IP-Adresse herausfinden über das DHCP-Log oder die Konsole
 
* statische IP-Adresse nach dem Netzwerkplan setzen
 
* Hostname ändern
 
* DNS-Eintrag vornehmen
 
* SSH-Server anpassen
 
===Daten===
 
*NET: DMZ
 
*IP 10.88.2XX.3/24
 
*GW 10.88.2XX.1
 
*NS 10.88.2XX.2
 
*NA sftp.it2XX.int
 
 
*[[Anpassen der Virtuellen Maschinen Netzwerk und Serveradministration]]
 
 
=== DATEN ===
 
=== DATEN ===
 
 
{| class="wikitable" style="background-color: #f2f2f2;"
 
{| class="wikitable" style="background-color: #f2f2f2;"
 
! Parameter !! Wert !! Erläuterung
 
! Parameter !! Wert !! Erläuterung
 
|-
 
|-
| '''Netzwerk (NIC)''' || SERVER|| Interface-Zuweisung in VirtualBox
+
| Netzwerk (NIC) || DMZ|| Interface-Zuweisung
 
|-
 
|-
| '''IP''' || 10.88.2XX.3 || Statische IP
+
| IP || 10.88.2XX.3 || Statische IP
 
|-
 
|-
| '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge
+
| CIDR || 24 || Netzmaske
 
|-
 
|-
| '''GW''' || 10.88.2XX.1 || GATEWAY
+
| GW || 10.88.2XX.1 || Gateway
 
|-
 
|-
| '''NS''' || 10.88.2XX.21 || Resolver
+
| NS || 10.88.2XX.21 || DNS-Server
 
|-
 
|-
| '''FQDN''' || sftp.it2XX.int || Fully Qualified Domain Name
+
| FQDN || sftp.it2XX.int || Vollständiger Name
 
|-
 
|-
| '''SHORT''' || sftp || Short Name
+
| SHORT || sftp || Kurzname
 
|-
 
|-
| '''DOM''' || it2XX.int|| Domain Name
+
| DOM || it2XX.int || Domain
 
|}
 
|}
;Anpassen des Templates
+
 
 
*[[Anpassen des Debian Templates]]
 
*[[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