shoprex-icon-big

Shoprex

Entwickler Seite zum Wordpress Plugin Shoprex

In Linux einem Account einen abgesicherten SFTP Zugriff von außerhalb erlauben


Folgende Situation: Ich habe einen Webserver, für ein bestimmtes Verzeichnis möchte ich einen Zugriff per SFTP von außerhalb erlauben. Dieser Zugriff soll nur bestimmte Verzeichnisse sehen können (chroot). Ein anderer Account soll aber von meinem Heimnetzwerk per SSH erreichbar sein.

Schritt 1 User einrichten

User für SFTP Zugriff von außerhalb erstellen

useradd www-access

Gruppenzuweisungen

usermod -a -G www-data www-access
usermod -a -G www-access www-data

Schritt 2 Verzeichnisrechte setzen

Hier habe ich das Startverzeichnis von meinem Webserver genommen. Dazu müssen die Rechte in den Unterverzeichnissen angepasst werden

cd /var/www/
chown -R www-data:www-data .
find . -type d -exec chmod 0775 {} \;
find . -type f -exec chmod 0664 {} \;

Das Wurzelverzeichnis des Webserver muss root gehören und nur dieser Account darf Schreibrechte besitzen

chown root:root /var/www
chmod 0755 /var/www

Sollte die SFTP Verbindung nach dem Anmelden abgewiesen werden, bitte genau die Rechte auf /var/www überprüfen. Es muss der Besitzer und die Gruppe root sein und nur der Besitzer darf Schreibrechte besitzen.

Schritt 3 Den SSH Dienst anpassen

Dazu editiert man die entsprechende Datei

nano /etc/ssh/sshd_config

Editiert folgende Zeile

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Fügt folgende Zeilen ans Ende der Datei

#Allow
AllowUsers pi@192.168.* www-access

#chroot for www-access
Match User www-access
	ForceCommand internal-sftp
	ChrootDirectory /var/www
	AllowTCPForwarding no
	X11Forwarding no

Hier wird nur dem User pi und www-access erlaubt sich einzuloggen. Pi wird nur ein SSH Login aus dem Netzwerkbereich 192.168. erlaubt. Durch das „Match User www-access“ und seinen Optionen wird diesem User nur erlaubt per SFTP einzuloggen und nicht per SSH. Dabei wird sein Hauptverzeichnis auf /var/www umgebogen. Er kann in diesem Verzeichnis keine Dateien oder Verzeichnisse erstellen, in dessen Unterverzeichnissen aber schon.

Den SSH Dienst neu starten

service ssh restart

Schritt 4 Zugriff von außerhalb erlauben

Die meisten haben einen Router vom Provider. In diesem muss ein Forwarding (NAT) auf die IP Adresse des Rechners mit dem TCP Port 22 eingerichtet werden.

Damit man immer die Internetadresse von seinem Zugang hat, kann man einen Dynamic DNS Dienst auf dem Router nutzen. Anbieter sind z.B. http://dyn.com/dns/?rdr=dyndnsorg und http://www.noip.com/. Nicht jeder Router unterstützt beliebige Anbieter. Kabel Deutschland Kunden steht dieser Dienst im normalen Kabelmodem nicht zur Verfügung. Allerdings kann dieses Modem über die Kundenwebseite in den Bridge-Modus versetzt werden, so dass man einen eigenen Router hinter dem Modem betreiben kann. Ein zugebuchtes WLan funktioniert an diesem Kabelmodem dann nicht, aber über den eigenen Router schon.