PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 x FTP, einmal mit Root Zugriff



jahlives
18.10.2008, 15:55
Als ich gestern ein wenig mit der DS rumgespielt habe, bin ich auf eine Idee für mein FTP Problem gekommen: Ich wollte bei meinem FTP Server erreichen, dass ich als root zugreifen kann und trotzdem den Dienst in www erreichbar machen. Das geht für mich solange nicht wie ein root Zugriff auf den laufenden Dienst vom Internet her möglich ist. Also dachte ich mir, dass das wohl nur mit 2 FTP Servern geht.
Ich werde das bei Interesse mal ausführlicher im Wiki schreiben, hier aber mal die Eckpunkte:
alternativen FTP Server z.B. vsftp via ipkg installieren und konfigurieren (http://www.synology-wiki.de/index.php/VsFTP_installieren)
xinet den "Masterdaemon" (vgl inet) via ipkg installieren
den Service des neuen FTP Servers in /etc/services eintragen:


rootftp 2121/tcp # Root Acces FTP
rootftp 2121/udp

unter /opt/etc/xinetd.d eine Startdatei für den neuen FTP Server erstellen (z.b. vsftp):


service rootftp
{
socket_type = stream
wait = no
user = root
server = /opt/sbin/vsftpd
server_args = /opt/etc/vsftpd.conf
disable = no
nice = 10
}

im Diskstation Manager den FTP Server aktivieren und nur Verbindungen via SSL zulassen. Ausserdem macht es Sinn die automatische IP Blockierung zu aktivieren
auf dem Router eine Port-Weiterleitung von Port 21 (WAN) auf die IP Adresse und Port 21 (LAN) des Servers erstellen
in den Dateien /etc/ftpusers und /etc.defaults/ftpusers alle Benutzer eintragen die den Syno FTP NICHT erreichen dürfen (z.B. admin und root)
prüfen ob xinetd läuft


$ ps | grep xinetd
Falls nein dann manuell starten


$ sh /opt/etc/init.d/S10xinetd start
Und wenn xinetd vorher schon lief muss xinetd "gezwungen" werden die Konfig der Dienste neu einzulesen


$ kill -HUP `pidof xinetd`
Wenn das alles geklappt hat, dann sollten nun 2 FTP Server ansprechbar sein. Und zwar ein öffentlicher via SSL gesicherter auf Port 21 (der Standart FTP der DS) und ein nicht SSL gesicherter nicht öffentlicher Server mit root Zugriff auf Port 2121.
Lange Rede kurzer Sinn:
root Zugriffe via FTP sind nur aus dem LAN möglich. Der öffentliche FTP Dienst erlaubt keinen Root und/oder Admin Zugriff und ist zudem SSL gesichert, was die Passworte wesentlich absichert.
Tipp:
Bei Verbindungsproblemen auf den FTP Server von Internet her sollte in den Einstellungen des FTP Clients sichergestellt sein, dass dieser bei Problemen mit dem passiven Modus auf den aktiven FTP Modus ausweicht. Dazu muss aber der Client seine externe IP Adresse kennen. In den meisten Clients gibt es dazu die entsprechenden Einstellungen.
Die Sicherheit des root Servers beruht darauf, dass der verwendete Port am Router geblocked wird und damit alle FTP Zugriff von aussen auf dem öffentlichen FTP landen. Gebt diesen Port (2121) am Router NIE frei!

Und wie immer gilt, dass alles auf eigenes Risiko geschieht. Hier müsst ihr gewisse Systemfiles ändern und das birgt immer ein Risiko. Wenn ihr die Files nicht auf der DS selbst bearbeitet, dann achtet darauf, dass ihr einen Editor verwendet, der mit UNIX Zeilenenden umgehen kann! V.a. bei /etc/services ist das echt wichtig. Wenn ihr diese Datei mit den falschen Zeilenenden abspeichert, dann ist erst mal Sendeschluss auf der DS ;)

Noch kurz was zu xinetd&Co:
inetd bzw xinetd dienen dazu Dienste bei Bedarf zur Verfügung zu stellen. Der (x)inetd-Daemon läuft dabei permanent und lauscht auf eingehende Verbindungen zu denen er Config Files resp Einträge hat. Kommt eine solche Verbindungsanforderung rein, dann startet er den entsprechenden Serverdienst. Der Vorteil ist v.a. bei Systemen mit wenig RAM, dass diese Dienste nicht permanent laufen und Ressourcen verbrauchen. Der Nachteil ist eine etwas geringere Performance, da die Dienste immer wieder gestartet werden müssen. vsftp läuft auch unter inetd sauber, ich bevorzuge aber xinetd weil mehr Einstellungsmöglichkeiten vorhanden sind. So können IPs eingeschränkt werden und vieles mehr...

Gruss

tobi

itari
18.10.2008, 16:43
Liegt der Sinn eines ftp's nicht darin, auf den 'root'-Zugang zu verzichten, selbst wenn ihn herstellen könnte? ;)

itari