SFTP Server Hjälp Linux Mint

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

SFTP Server Hjälp Linux Mint

Tjena.
Håller på att försöka lära mig använda Linux. Har installerat Linux Mint och vill sätta igång en SFTP server som ska rulla 24/7 på den.
Önskemålet är att kunna skapa olika användare/inlogg som ska kunna ha olika tillgång till vissa diskar. Kommer ansluta från win10-macbook-raspberry med kodi
Har googlat järnet och verkar inte finnas något bra alternativ med grafiskt gränssnitt. Vad rekommenderar ni? Gärna någon guide jag kan följa.
Har tidigare haft Win7 och administrerat en vanlig FTP server via FileZilla vilket var mycket enkelt och bra. Dock vill jag säkra upp lite och byta till linux och sftp
Tack för hjälpen

// Benz

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2007

Sftp = det är INTE ftp, det är ett protokoll som finns i bla openssh. Ska du ha datorn publik, dvs på internet? Finns andra alternativ där du slipper exponera ssh. Ska du bara ha lokalt är det bara köra.

Du behöver inte göra någonting mer än se till att aktivera ssh så är det klart. Användare gör du vanliga linux användare.

Viktigt att förstå att sftp INTE är som ftp, vissa tror det är 'säker ftp' vilket är helt feltänkt.

Bör vara bättre för dig att bara använda ftp..
Skickades från m.sweclockers.com

Ryzen 1700x @ Corsair 16gb 3200mhz lpx @ 512gb M2 pcie @ Gigabyte 7950 @ Msi x370 plus @ Evga 650 80+gold modulärt @ Fractal r5 @ Corsair hydro 110i @ Benq 144hz 1920-1080 24tum
i5 4670k @ Asus z-87a @ Corsair vx450 @ Corsair 16gb 1600mhz @ Fractal r3 @ 256gb Kingston
c2d e4400 @ 4gb noname @ 10tb+ @ noname chassi @ 128gb Kingston ssd

Trädvy Permalänk
Medlem
Plats
Piteå
Registrerad
Okt 2004
Skrivet av sleepyoh:

Sftp = det är INTE ftp, det är ett protokoll som finns i bla openssh. Ska du ha datorn publik, dvs på internet? Finns andra alternativ där du slipper exponera ssh. Ska du bara ha lokalt är det bara köra.

Du behöver inte göra någonting mer än se till att aktivera ssh så är det klart. Användare gör du vanliga linux användare.

Viktigt att förstå att sftp INTE är som ftp, vissa tror det är 'säker ftp' vilket är helt feltänkt.

Bör vara bättre för dig att bara använda ftp..
Skickades från m.sweclockers.com

eller så kör han sftp men bara via vpn, funkar klockers sen går de väl att låsa ner konton så dom bara kan ansluta via sftp?

CPU: AMD Ryzen 1700x @ 3.8GHz || Mem: 16GB Corsair LPX 3000mhz || Mobo: Asus x370 Prime || GPU: EVGA Geforce GTX1070 SC || SSD: WD black 500GB m2 || OS: Linux Mint/Win 10 || Monitor: Dell 43" 4K P4317Q

Citera om du vill ha svar :)

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Tack för snabba svar från kloka människor.

Okeeej, trodde att SFTP var en krypterad version av FTP.
Anledningen till att jag vill byta till Linux är just att säkra upp. Kommer använda linux egna kryptering och veracrypt för hela systemet. Tänkte bara att om man säkrar upp med bättre OS, kryptering och sedan har FTP som läcker ut info på nätverket.. men det kanske är okej..

Ska dela filer lokalt atm. I framtiden hade det varit nice att kunna connecta hem och överföra filer om det skulle behövas.

// Benz

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

FTP med 8 hårddiskar vsftpd Linux Mint

Hej.
Är ny med Linux men försöker göra mitt bästa..
Jag har på prov installerat Linux Mint (som verkade vara en lämplig inkörsport) och testar möjligheterna om jag kan använda detta till min nuvarande filserver som atm körs med Win7 FileZilla server som ger åtkomst till 8 hårddiskar.
Jag har installerat vsftpd och precis fått det att rulla. Nu vill jag att när man loggar in på FTP servern så ska man ha tillgång till alla 8hårddiskar förutom då systemdisken. Har googlat hela dagen och hittar bara alternativ att flytta omkring /home som blir kopplat till ftp användaren som är inloggad.
Kan någon hjälpa mig?
Tack på förhand.

// Benz

Trädvy Permalänk
Medlem
Registrerad
Aug 2014

I Linux så är allt antingen en mapp eller en fil. Så en disk är en mapp.

Här hittade jag kanske något som hjälper.

http://www.sigerr.org/linux/setup-vsftpd-custom-multiple-dire...

Verkar som du kan sätta upp virtuella användare och ge dem tillgång till diskarna.

Trädvy Permalänk
Medlem
Plats
Där min VPN visar
Registrerad
Jan 2005

uhm, ja du vill sätta upp virtuella mountpoints.
/srv/ftproot

sen mountar du diskarna t.ex:
/srv/ftproot/disk1
/srv/ftproot/disk2
osv.. och till användaren sen har du gett access till /srv/ftproot

(enkelt exempel)

Trädvy Permalänk
Moderator
Registrerad
Mar 2006

Vad exakt vill du uppnå, att dessa åtta lagringsdiskar av systemet ses som ett enhetligt lagringsutrymme, eller att ftp-användaren ska ha tillgång till alla diskarna separat?

Konfigurationen för vsftp är att användaren befinner sig i chroot och har alltså inte access till hela systemet. Ändra helst inte detta. Det finns olika vägar att gå det nu är så att dina lagringsdiskar ska uppfattas som en enhetlig yta.

Du behöver nog berätta lite mer om vad för konfiguration du vill ha. Generellt kan LVM vara den bästa vägen att gå om du vill göra en enda stor lagringsyta av flera enheter/partitioner. LVM innebär dock en konfiguration generellt och inte bara för hur det ser ut inloggad mot vsftp-servern.

Om det bara gäller gäller någon extra mapp, ja då finns även möjligheter att använda "mount --bind" (kan säkert via Google få en del träffar på "multiple directories vsftp mount --bind").

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004
Skrivet av KimTjik:

Vad exakt vill du uppnå, att dessa åtta lagringsdiskar av systemet ses som ett enhetligt lagringsutrymme, eller att ftp-användaren ska ha tillgång till alla diskarna separat?

Konfigurationen för vsftp är att användaren befinner sig i chroot och har alltså inte access till hela systemet. Ändra helst inte detta. Det finns olika vägar att gå det nu är så att dina lagringsdiskar ska uppfattas som en enhetlig yta.

Du behöver nog berätta lite mer om vad för konfiguration du vill ha. Generellt kan LVM vara den bästa vägen att gå om du vill göra en enda stor lagringsyta av flera enheter/partitioner. LVM innebär dock en konfiguration generellt och inte bara för hur det ser ut inloggad mot vsftp-servern.

Om det bara gäller gäller någon extra mapp, ja då finns även möjligheter att använda "mount --bind" (kan säkert via Google få en del träffar på "multiple directories vsftp mount --bind").

8 separata diskar, ska inte bli enhetlig yta.
När man loggar på ftpn vill jag att man endast ser dessa diskar och sedan får klicka sig vidare därifrån.
När man loggar in på FTP som är konfad via win7/filezilla nu så ser det ut så här;
D: Semesterbilder
E: Semesterfilmer
F: Familjebilder
G: Hundfilmer
Osv
Min önskan är att få det så

// Benz

Trädvy Permalänk
Medlem
Plats
stockholm
Registrerad
Okt 2007

Skapa en mapp, i den mappen skapar du en mapp för varje disk. Mounta en disk till var och en av dessa mappar. Gör så att man kommer in i den första mappen när man loggar in på ftp-servern.

Trädvy Permalänk
Medlem
Registrerad
Mar 2016

Eftersom du är ny. I /etc/fstab lägger du in filsystemen och var dom skall monteras. Titta i fstab hur det ser ut.
En rad brukar se ut så här:
"Filsystem" "monteringspunkt" typ defaults 0 0
UUID=blablabla /var/filsytemet/monteras auto defaults 0 0
Filsystemen/partitionerna listar du med kommandot "blkid".
Jag brukar identifera mina filsystem genom LABEL istället för UUID. Att identifiera filsystemen via sökvägen tex /dev/sda1 bör undvikas eftersom det beror på i vilken ordning hårddiskarna dyker upp då datorn startar.

Har du formaterat om hårddiskarna till något linuxfilsystem?

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004
Skrivet av FattarNiInte:

Eftersom du är ny. I /etc/fstab lägger du in filsystemen och var dom skall monteras. Titta i fstab hur det ser ut.
En rad brukar se ut så här:
"Filsystem" "monteringspunkt" typ defaults 0 0
UUID=blablabla /var/filsytemet/monteras auto defaults 0 0
Filsystemen/partitionerna listar du med kommandot "blkid".
Jag brukar identifera mina filsystem genom LABEL istället för UUID. Att identifiera filsystemen via sökvägen tex /dev/sda1 bör undvikas eftersom det beror på i vilken ordning hårddiskarna dyker upp då datorn startar.

Har du formaterat om hårddiskarna till något linuxfilsystem?

Då ska jag sätta tänderna i detta.
I detta nu så håller jag på med en testbuild. Satte OS på en extra SSD jag hade hemma, och håller på att leka runt med 2 externa hårddiskar och 2 usbminnen, allt är ext4. Dom ordinarie hdd kommer också vara exfat4 ifall jag får detta att fungera och går att lita på.

// Benz

Trädvy Permalänk
Forumledare
Kent
Registrerad
Jan 2005

*Trådar sammanfogade i enlighet med §3.3 i forumreglerna*

Observera att vi inte tillåter korspostning (flera trådar om samma ämne). Detta då vi tycker det är viktigt att alla får samma chans att få sina trådar uppmärksammade.

Synpunkter eller frågor gällande modereringen? Då kan du kontakta mig eller moderatorerna.
Ursäkta min stavning, jag är dansk

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004
Skrivet av FattarNiInte:

Eftersom du är ny. I /etc/fstab lägger du in filsystemen och var dom skall monteras. Titta i fstab hur det ser ut.
En rad brukar se ut så här:
"Filsystem" "monteringspunkt" typ defaults 0 0
UUID=blablabla /var/filsytemet/monteras auto defaults 0 0
Filsystemen/partitionerna listar du med kommandot "blkid".
Jag brukar identifera mina filsystem genom LABEL istället för UUID. Att identifiera filsystemen via sökvägen tex /dev/sda1 bör undvikas eftersom det beror på i vilken ordning hårddiskarna dyker upp då datorn startar.

Har du formaterat om hårddiskarna till något linuxfilsystem?

Tack för bra hjälp. Tog ett tag då jag var försiktig och noga.
Nu har mina test usb stickor endast en partition, men blir det annorlunda ifall man har partitionerat upp den? UUID är det till själva disken eller partitionen? Ifall jag vill mounta en partition i ftp mappen och en på desktop, hur gör man då? Försöker lära mig detta. Tack

// Benz

Trädvy Permalänk
Medlem
Registrerad
Mar 2016

@Benz0187:
Bra att du är försiktig så du inte formaterar fel disk .
Nu läste jag manualen för blkid "man blkid" och den sa att det var bättre att köra "lsblk --fs" och det stämde, blev mycket tydligare
UUID:n är till partitionen. Du kan alltid kolla runt i /dev/disk/ där finns allt. Det finns flera sätt att referera till en hårddisk eller partition.
Kommandot för att montera filsystem är tex:

sudo mount /dev/disk/by-id/ata-Corsair_CSSD-F120GB2_1106650232000343004C-part2 /mnt/monteringspunkt/
Fast jag brukar göra en label på diskarna då jag formaterar. Då dyker partitionerna upp i /dev/disk/by-label/

Du kan mounta vart du vill.
Nu mountas väl usbdiskarna automatiskt under /media/ då du pluggar i dom. Så du måste unmounta dem före du gör något.

Så här mountar jag min backup usb-disk i /etc/fstab:
UUID=320fa88b-fe89-4098-a09b-ba03a68f44f2 /media/Backuppen auto defaults,user,noauto 0 0

noauto står för att den inte monteras automatiskt, och user för att användare skall kunna mounta den. Jag har lagt till den i fstab för att den alltid skall dyka upp på samma ställe; /media/Backuppen.

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Suck,,, jag blir tokig...
Har provat säkert 20 guider jag kan hitta på google hur man sätter upp och konfar en vsftpd server utan de resultat jag vill ha. Senaste så involverades det med SSL men mina raspberry kodi har problem med det. Kan någon hjälpa mig?
Vill sätta upp en vanlig ftp server med virtuella användare. Alla användare ska ha tillgång till samma mapp, inte egna.

// Benz

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Eller spelar det någon roll om man bara gör en user som man har som login på alla enheter som ska connecta till ftpn?
Som mest kan det röra sig om 4-6st som kommer vara anslutna samtidigt

// Benz

Trädvy Permalänk
Medlem
Plats
gbg
Registrerad
Nov 2007
Skrivet av Benz0187:

Eller spelar det någon roll om man bara gör en user som man har som login på alla enheter som ska connecta till ftpn?
Som mest kan det röra sig om 4-6st som kommer vara anslutna samtidigt

vsftpd kan vara ett smärre helsike att sätta upp om man inte har koll på allt kring det.

Kan slänga upp en instruktion för hur du sätter upp en SFTP-server med "chroot-jail" när jag slutat jobbet.

"Chroot-jail" kommer innebära att du, med vanligt användarkonto, inte kommer att kunna ssh:a till servern, via kommandoprompt, utan enbart använda den som SFTP (Ej FTP/FTPS). En SFTP-anslutning innebär att kommunikationen mellan enheterna krypteras.

https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol

Kommer att posta guiden här så om någon har synpunkter eller förslag på förbättringar så får folk gärna ventilera sina åsikter.

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 16.04 LTS

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004
Skrivet av krigelkorren:

vsftpd kan vara ett smärre helsike att sätta upp om man inte har koll på allt kring det.

Kan slänga upp en instruktion för hur du sätter upp en SFTP-server med "chroot-jail" när jag slutat jobbet.

"Chroot-jail" kommer innebära att du, med vanligt användarkonto, inte kommer att kunna ssh:a till servern, via kommandoprompt, utan enbart använda den som SFTP (Ej FTP/FTPS). En SFTP-anslutning innebär att kommunikationen mellan enheterna krypteras.

https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol

Kommer att posta guiden här så om någon har synpunkter eller förslag på förbättringar så får folk gärna ventilera sina åsikter.

Tack!

// Benz

Trädvy Permalänk
Medlem
Plats
gbg
Registrerad
Nov 2007

Guide för SFTP-server med s.k. chroot-jail:
Guiden är skriven/testad på en Ubuntu server (16.04 LTS), men bör funka lika väl på en vanlig Ubuntu Desktop om man så vill.

**************
Noteringar:

Kom ihåg att Linux ÄR case-sensitive, dvs. systemet gör skillnad på versaler och gemener.
Så om guiden förklarar ett kommando ex. sudo apt install openssh-server måste det skrivas exakt så; t.ex. fungerar inte sudo apt install OpenSSH-Server -det sista kommer inte att fungera!

apt vs. apt-get
'apt' är ett front-end till 'apt-get' så du kan använda vilket som när du utför kommandona i Ubuntu Linux.

Guiden antar att användaren med sudo-rättigheter heter 'sudokonto' -du använder givetvis det konto som du själv skapat när du installerade servern.
'sudokonto' är bara ett namnexempel för denna guide.

Guiden antar att användaren som skall hamna i chroot-jailet är 'testkonto' -du väljer ett eget namn för användaren på ditt system.
'testkonto' är bara ett namnexempel för denna guide.

/sftp/users är bara ett exempel, du kan lägga mappen för jailet vart som helst, t.ex. annan disk, så länge endast root-kontot har exklusiv åtkomst till toppnivån av filsystemet. (Här kan man inte tänka helt i Windows banor)

**************

Installera openssh-server: (detta är nödvändigt för att kunna använda sig av ssh/sftp mot servern)

sudo apt install openssh-server

****************
Nedan steg, att byta ssh port, är frivilligt men helt klart rekommenderat om du skall ha servern exponerad mot internet:
-Främsta anledningen till att du vill göra detta är p.g.a. botnets och annat mög som skannar nät och ip-adresser efter default porten för ssh (22), om den ser att porten är öppen kan den påbörja lösenordsattacker mot porten, har något konto på servern ett riktigt enkelt lösenord så kan det bli knäckt relativt snabbt.

Byt standard SSH-port:

sudo nano /etc/ssh/sshd_config

-Byt portnummer där det står "Port 22" till det portnummer du vill använda för ssh (e.g. 2222)

-Kör sedan:

sudo service ssh restart

När du sedan ansluter mot servern via ssh/sftp kommer du att få utföra nedan kommando, då porten nu är bytt till '2222'.

ssh -p 2222 sudokonto@192.168.10.xxx
****************

Steg 1:

Skapa en serverfolder, ett användarkonto och ett 'chroot-jail' för användaren:

För att nedan instruktioner skall fungera måste root-kontot äga alla ovanliggande mappar/mappnivåer, du kan inte låta andra grupper/användare ha skrivrättigheter ovan själva mappen som är bas för jailet, om du har det resulterar det i en "broken pipe":

I nedan exempel måste alltså root vara ägaren samt vara det enda konto med 'write access' till /sftp/users

Skapa en folder-struktur som skall användas som chroot-jail:

sudo mkdir /sftp/

sudo mkdir /sftp/users/

sudo mkdir /sftp/users/testuser

Skapa en användare som skall ha sin hemkatalog (startpunkt) under ovan uppskapad mapp. Användaren kommer alltså vid SFTP-inloggning att hamna i mappen: /sftp/users/testuser

sudo useradd -d /sftp/users/testuser -M -N -g users testuser

Ge root ägandeskap över ovanliggande mappar/mappnivåer:

sudo chown root:root /sftp/users/testuser

Ge fulla rättigheter åt ägare (root) läs/skrivrättigheter till grupp (root) samt ge läs/skrivrättigheter till övriga i mappen 'testuser'

sudo chmod 755 /sftp/users/testuser

skapa ett lösenord för användaren (om det inte redan är gjort)

sudo passwd testuser

Steg 2:

Nästa steg är att konfigurera sshd_config filen för att göra ett chroot-jail:

Byt subsystem i /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Kommentera bort 'Subsystem sftp /usr/lib/openssh/sftp-server' likt nedan och lägg till 'Subsystem sftp internal-sftp'

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

...skapa en användarsektion för 'testuser' längst ned i filen: (kort beskrivning av vad nedan sektion gör är att den matchar användarkontot som försöker logga på och tvingar det att ansluta i sftp-läge i mappen som du definierar '/sftp/users/testuser' (vilket också är dess hemkatalog) server blockerar försök att ansluta via ssh (kommandotolk) för användarkontot samt blockerar grafisk tunnling via X11, vidare tillåter den inte att användaren går högre upp i filträdet än katalogen för sökvägen som definierats.

Match User testuser
ChrootDirectory /sftp/users/testuser
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

Spara och stäng filen sshd_config genom tangentkombinationen: Ctrl+X
nano komer fråga dig om du vill spara ändringar gjorda till filen, svara Y
Bekräfta Y genom ett Enter-slag.

Starta om ssh-servertjänsten:

sudo service ssh restart

Servern skall nu vara igång med chroot-jail aktivt. Det skadar aldrig att vara säker så man kan försöka att ansluta till servern via ssh ex. putty eller via annan unix/linux terminal, detta skall inte gå alls.
Enbart SFTP anslutning skall beviljas från servern ex. via FileZilla eller Kodi.
Värt att nämna är att du i FileZilla behöver specificera sftp://<serveradress> om du bytt standardporten för ssh.

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 600 /sftp/users/testuser/upload

En bra chart för att se vad chmod kan åstadkomma finner du här:
http://wiki.kartbuilding.net/index.php/Chmod

Edit, har snyggat till guiden med lite markeringar och annat, samt rättat en tankevurpa gällande uppskapandet av chroot folder-strukturen.

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 16.04 LTS

Trädvy Permalänk
Medlem
Plats
gbg
Registrerad
Nov 2007
Skrivet av krigelkorren:

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 600 /sftp/users/testuser/upload

Märkte för sent att jag lyckats med ett par ärkefel till i citatet ovan... nedan är rättad text*

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users /sftp/users/testuser/upload

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 700 /sftp/users/testuser/upload

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 16.04 LTS

Trädvy Permalänk
Medlem
Plats
root
Registrerad
Jan 2004

ett tillläg till kringelkorrens guide !
så här gör jag, jag stänger alltid av att man kan logga in via ssh med användarnamn, och lösenord, jag använder alltid nycklar,man brukar ibland kalla ssh för "fattigmansvpn"

Trädvy Permalänk
Medlem
Plats
Skogen
Registrerad
Dec 2002

@Benz0187

EDIT: FileZilla Server till windows kan köra FTPS även den, så du behöver inte mickla med linux för den saken ifall du enbart behöver en säker FTP .

Har en liten guide för FTPS som jag skrev för Ubuntu Server för nåt år sedan att bidra med, om det nu inte tvunget måste vara SFTP?
EDIT: I denna guide skapar du användare med "nologin skal" så användarna kan inte användas till SSH utan kan endast logga in på FTP, och är självklart även låsta till sin hemkatalog.

Grundläggande installation, konton etc.

Uppdatera programbiblioteket:
sudo apt-get update

Installera VsFTPd (VerySecureFTPdaemon):
sudo apt-get install vsftpd

Tillåt användarna att logga in med ett ”nologin-skal”:

sudo nano /etc/shells
/usr/sbin/nologin --Lägg till följande rad längst ned i /etc/shells.

Gör en ny hemkatalog:
sudo mkdir /home/ftp
sudo mkdir /home/ftp/files

Gör ROOT ägare av hemkatalogen:
sudo chown root:root /home/ftp

Skapa en ny grupp:
sudo groupadd ftp-users

Lägg till två nya användare:
sudo useradd --home /home/ftp/files --group ftp-users -s /usr/sbin/nologin ftpadmin
sudo useradd --home /home/ftp/files --group ftp-users -s /usr/sbin/nologin ftpuser

Sätt lösendord på de nya användarna:

sudo passwd ftpadmin
sudo passwd ftpuser

Gör ”ftpadmin” ägare av ftp/files.
sudo chown -R ftpadmin:ftp-users /home/ftp/files

Ändra rättigheterna för /home/ftp/files.
sudo chmod 755 /home/ftp/files

Öppna vsftpd.conf och avkommentera följande rader (ta bort # ):

write_enable=YES
local_umask=022

Lås användarna till sin hemkatalog:
#chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list

Tillåt endast vissa användare åtkomst till FTP:

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_usersMöjliggör för ägaren av hemkatalogen (ftpadmin) att logga in:
allow_writeable_chroot=YES

Möjliggör ”Passive Mode”:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

Spara konfigen och gör nya filer med touch om de inte redan finns:

sudo touch /etc/vsftpd.chroot_list
sudo touch /etc/vsftpd.allowed_users
I dessa nya filer skriver du namnen på de användare som ska kunna använda ftp, en användare per
rad. (ftpadmin och ftpuser).

Starta om VsFTPd:
sudo service vsftpd restart

Nu ska allt fungera och endast behöriga användare kan logga in på ftp, dock med vanlig FTPanslutning utan kryptering.

Dold text


Nu till själva säkerhetsbiten. (FTPES)

FTPES
Skapa nya certifikat till TLS/SSL
:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem
-out /etc/ssl/private/vsftpd.pem

Öppna vsftpd.conf och gör följande ändringar:
sudo nano /etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Lägg till dessa rader längst ner i configen:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Du kan även ändra anslutningsporten för FTP (frivilligt):
listen_port=9021

Starta om vsftpd:
sudo service vsftpd restart

Dold text

Detta använder jag både till Ubuntu Server 14.04 och 16.04.
Något som dock bör nämnas är att FTPS konfigen iaf. i detta fall inte fungerar ihop med samba av för mig okänd andledning.

[Ryzen 5 1600X] - [Gigabyte GA-AX370-Gaming K3] - [16GB 3200MHz] - [GTX1070] - [500GB EVO-SSD] - [750W HX] - [Win10 x64]

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Tack för svaren, ska strax testa guiden ni skrivit. Åter kommer då. Tack för eran tid

// Benz

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Tack för att du tagit dig tid, följt guiden och det fungerar!
Har några frågor bara.
Nu efter jag skapat sftp servern och testat runt lite. Efter jag rebootat datorn och skrivit in lösen för linux krypt för att sedan komma till inloggnings rutan, så finns min "testuser" där också. Jag kan logga in där med samma upg för att logga in på sftpn servern. Kan gå runt och titta på mitt filsystem.
Kan man få bort att jag inte kan logga in i Linux med testuser användaren?

Skrivet av krigelkorren:

Guide för SFTP-server med s.k. chroot-jail:
Guiden är skriven/testad på en Ubuntu server (16.04 LTS), men bör funka lika väl på en vanlig Ubuntu Desktop om man så vill.

**************
Noteringar:

Kom ihåg att Linux ÄR case-sensitive, dvs. systemet gör skillnad på versaler och gemener.
Så om guiden förklarar ett kommando ex. sudo apt install openssh-server måste det skrivas exakt så; t.ex. fungerar inte sudo apt install OpenSSH-Server -det sista kommer inte att fungera!

apt vs. apt-get
'apt' är ett front-end till 'apt-get' så du kan använda vilket som när du utför kommandona i Ubuntu Linux.

Guiden antar att användaren med sudo-rättigheter heter 'sudokonto' -du använder givetvis det konto som du själv skapat när du installerade servern.
'sudokonto' är bara ett namnexempel för denna guide.

Guiden antar att användaren som skall hamna i chroot-jailet är 'testkonto' -du väljer ett eget namn för användaren på ditt system.
'testkonto' är bara ett namnexempel för denna guide.

/sftp/users är bara ett exempel, du kan lägga mappen för jailet vart som helst, t.ex. annan disk, så länge endast root-kontot har exklusiv åtkomst till toppnivån av filsystemet. (Här kan man inte tänka helt i Windows banor)

**************

Installera openssh-server: (detta är nödvändigt för att kunna använda sig av ssh/sftp mot servern)

sudo apt install openssh-server

****************
Nedan steg, att byta ssh port, är frivilligt men helt klart rekommenderat om du skall ha servern exponerad mot internet:
-Främsta anledningen till att du vill göra detta är p.g.a. botnets och annat mög som skannar nät och ip-adresser efter default porten för ssh (22), om den ser att porten är öppen kan den påbörja lösenordsattacker mot porten, har något konto på servern ett riktigt enkelt lösenord så kan det bli knäckt relativt snabbt.

Byt standard SSH-port:

sudo nano /etc/ssh/sshd_config

-Byt portnummer där det står "Port 22" till det portnummer du vill använda för ssh (e.g. 2222)

-Kör sedan:

sudo service ssh restart

När du sedan ansluter mot servern via ssh/sftp kommer du att få utföra nedan kommando, då porten nu är bytt till '2222'.

ssh -p 2222 sudokonto@192.168.10.xxx
****************

Steg 1:

Skapa en serverfolder, ett användarkonto och ett 'chroot-jail' för användaren:

För att nedan instruktioner skall fungera måste root-kontot äga alla ovanliggande mappar/mappnivåer, du kan inte låta andra grupper/användare ha skrivrättigheter ovan själva mappen som är bas för jailet, om du har det resulterar det i en "broken pipe":

I nedan exempel måste alltså root vara ägaren samt vara det enda konto med 'write access' till /sftp/users

Skapa en folder-struktur som skall användas som chroot-jail:

sudo mkdir /sftp/

sudo mkdir /sftp/users/

sudo mkdir /sftp/users/testuser

Skapa en användare som skall ha sin hemkatalog (startpunkt) under ovan uppskapad mapp. Användaren kommer alltså vid SFTP-inloggning att hamna i mappen: /sftp/users/testuser

sudo useradd -d /sftp/users/testuser -M -N -g users testuser

Ge root ägandeskap över ovanliggande mappar/mappnivåer:

sudo chown root:root /sftp/users/testuser

Ge fulla rättigheter åt ägare (root) läs/skrivrättigheter till grupp (root) samt ge läs/skrivrättigheter till övriga i mappen 'testuser'

sudo chmod 755 /sftp/users/testuser

skapa ett lösenord för användaren (om det inte redan är gjort)

sudo passwd testuser

Steg 2:

Nästa steg är att konfigurera sshd_config filen för att göra ett chroot-jail:

Byt subsystem i /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Kommentera bort 'Subsystem sftp /usr/lib/openssh/sftp-server' likt nedan och lägg till 'Subsystem sftp internal-sftp'

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

...skapa en användarsektion för 'testuser' längst ned i filen: (kort beskrivning av vad nedan sektion gör är att den matchar användarkontot som försöker logga på och tvingar det att ansluta i sftp-läge i mappen som du definierar '/sftp/users/testuser' (vilket också är dess hemkatalog) server blockerar försök att ansluta via ssh (kommandotolk) för användarkontot samt blockerar grafisk tunnling via X11, vidare tillåter den inte att användaren går högre upp i filträdet än katalogen för sökvägen som definierats.

Match User testuser
ChrootDirectory /sftp/users/testuser
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

Spara och stäng filen sshd_config genom tangentkombinationen: Ctrl+X
nano komer fråga dig om du vill spara ändringar gjorda till filen, svara Y
Bekräfta Y genom ett Enter-slag.

Starta om ssh-servertjänsten:

sudo service ssh restart

Servern skall nu vara igång med chroot-jail aktivt. Det skadar aldrig att vara säker så man kan försöka att ansluta till servern via ssh ex. putty eller via annan unix/linux terminal, detta skall inte gå alls.
Enbart SFTP anslutning skall beviljas från servern ex. via FileZilla eller Kodi.
Värt att nämna är att du i FileZilla behöver specificera sftp://<serveradress> om du bytt standardporten för ssh.

*Ytterligare värt att notera: användaren 'testuser' kan ej skapa mappar under /sftp/users/testuser så om du vill ge användar kontot rättigheter till det måste du skapa en mapp för användaren där ex. upload som i det fallet skulle bli: /sftp/users/testuser/upload

sudo mkdir /sftp/users/testuser/upload

Därefter måste du ge användaren ägandeskap till mappen:

sudo chown testuser:users

..samt rättighet att läsa/skriva i den t.ex:

sudo chmod 600 /sftp/users/testuser/upload

En bra chart för att se vad chmod kan åstadkomma finner du här:
http://wiki.kartbuilding.net/index.php/Chmod

Edit, har snyggat till guiden med lite markeringar och annat, samt rättat en tankevurpa gällande uppskapandet av chroot folder-strukturen.

Dold text

// Benz

Trädvy Permalänk
Medlem
Plats
gbg
Registrerad
Nov 2007
Skrivet av Benz0187:

Tack för att du tagit dig tid, följt guiden och det fungerar!
Har några frågor bara.
Nu efter jag skapat sftp servern och testat runt lite. Efter jag rebootat datorn och skrivit in lösen för linux krypt för att sedan komma till inloggnings rutan, så finns min "testuser" där också. Jag kan logga in där med samma upg för att logga in på sftpn servern. Kan gå runt och titta på mitt filsystem.
Kan man få bort att jag inte kan logga in i Linux med testuser användaren?

Självklart kan man låta användaren "testuser" logga in i systemet också via SSH, men det är en säkerhetsrisk och absolut inte rekommenderat.
Som tidigare påpekats är SSH en protokoll som tjänar flera ändamål.
Det din server gör i nuläget är att tillåta testuser att logga in lokalt till servern, men inte remote till servern via SSH, det säkerställer att testuser enbart kan använda SFTP-delen i det fall att den autentiseras remote. (Däremot kan andra användare på systemet fortfarande logga in via SSH som vanligt och både använda kommandotolk samt SFTP-delen.)
Det är filen 'sshd_config', där sektionen du skapade som matchar mot användar-ID, som hanterar funktionen -att enbart SFTP skall vara tillgängligt för ett visst användar-ID.
Så i mitt exempel skall t.ex. 'sudokonto' fortfarande kunna nyttja SSH och SFTP obehindrat.

Tillåter man SSH för konton som enbart skyddas med t.ex. ett klent lösenord, kan man nästintill vara säkert på att det knäcks inom en snar framtid. Speciellt om det är exponerat mot internet över standard port "22".

Om du vill ha en säkrare autentisering skulle jag föreslå att du kikar vidare på 'fattigmansvpn' som @It-nisse beskrev i sitt inlägg.
Det kräver att användaren som ansluter till SFTP-servern har ett certifikat som godkänns av din SFTP-server.
Således kommer inga andra än innehavare av certifikatet in på servern.

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 16.04 LTS

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Tjena. Nu börjar servern bli redo för arbete.
Ett problem jag får när jag arbetat med fstab är att om den disken inte är inkopplad när datorn startas så hänger sig Linux Mint under boot efter jag skrivit in krypteringsnyckeln för systemet.
Som det är nu så måste alla 8 diskar vara inkopplade, inlagda i fstab med " UUID=blablabla /var/filsytemet/monteras auto defaults 0 0", för att sedan kunna mountas med favorits i VeraCrypt.
Finns något jag kan lägga till i fstab för att förhindra att systemet hänger sig vid boot om en disk skulle vara borta?

Skrivet av FattarNiInte:

Eftersom du är ny. I /etc/fstab lägger du in filsystemen och var dom skall monteras. Titta i fstab hur det ser ut.
En rad brukar se ut så här:
"Filsystem" "monteringspunkt" typ defaults 0 0
UUID=blablabla /var/filsytemet/monteras auto defaults 0 0
Filsystemen/partitionerna listar du med kommandot "blkid".
Jag brukar identifera mina filsystem genom LABEL istället för UUID. Att identifiera filsystemen via sökvägen tex /dev/sda1 bör undvikas eftersom det beror på i vilken ordning hårddiskarna dyker upp då datorn startar.

Har du formaterat om hårddiskarna till något linuxfilsystem?

// Benz

Trädvy Permalänk
Medlem
Plats
gbg
Registrerad
Nov 2007
Skrivet av Benz0187:

Tjena. Nu börjar servern bli redo för arbete.
Ett problem jag får när jag arbetat med fstab är att om den disken inte är inkopplad när datorn startas så hänger sig Linux Mint under boot efter jag skrivit in krypteringsnyckeln för systemet.
Som det är nu så måste alla 8 diskar vara inkopplade, inlagda i fstab med " UUID=blablabla /var/filsytemet/monteras auto defaults 0 0", för att sedan kunna mountas med favorits i VeraCrypt.
Finns något jag kan lägga till i fstab för att förhindra att systemet hänger sig vid boot om en disk skulle vara borta?

Är inte helt hundra på att det du beskriver är särskilt vettigt, men jag har för mig att man i fstab, som <options>, kan ange vad som skall hända som ett fel uppstår ex.

UUID=blablabla /var/filsytemet/monteras auto errors=remount-ro 0 0"

Just detta kommando talar dock bara om för systemet att om fel påträffas, -montera då filsystemet i Read-Only-mode- vilket förhindrar att förändringar skrivs till filsystemet.
Om det fungerar som en slags lösning på ditt problem är jag dock osäker på.

Tower: ace Battle IV | CPU AMD Phenom II X2 BE unlocked 4cores@3,2GHz | RAM 8GB DDR2@800MHz | MB ASUS M4A785-M | GFK AMD Radeon HD 6850 1GB | HDD Kingston SSD Now 60GB (/) Seagate 2TB(/home) | OS Ubuntu 16.04 LTS

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004

Vet inte om vi missförstår varandra.
SFTP servern fungerar perfa. jag loggar in via sftp med testuser och lösen.
Sedan när jag sitter vid servern och klickar på restat från menyn, datorn startas om, bootar, skriver in nyckeln för systemkryptering, kommer till inloggningsrutan så jag kan även där logga in med testuser. Där vill jag bara kunna logga in med mitt admin-konto, inte testuser. Går det att få bort?
Tänker mig ett senario, mina två raspberrypi som kör OpenElec med kodi. Ifall nån kommer åt inloggninsupg från dom så kan dom ju använda dom för att logga in på servern om den står på.

Skrivet av krigelkorren:

Självklart kan man låta användaren "testuser" logga in i systemet också via SSH, men det är en säkerhetsrisk och absolut inte rekommenderat.
Som tidigare påpekats är SSH en protokoll som tjänar flera ändamål.
Det din server gör i nuläget är att tillåta testuser att logga in lokalt till servern, men inte remote till servern via SSH, det säkerställer att testuser enbart kan använda SFTP-delen i det fall att den autentiseras remote. (Däremot kan andra användare på systemet fortfarande logga in via SSH som vanligt och både använda kommandotolk samt SFTP-delen.)
Det är filen 'sshd_config', där sektionen du skapade som matchar mot användar-ID, som hanterar funktionen -att enbart SFTP skall vara tillgängligt för ett visst användar-ID.
Så i mitt exempel skall t.ex. 'sudokonto' fortfarande kunna nyttja SSH och SFTP obehindrat.

Tillåter man SSH för konton som enbart skyddas med t.ex. ett klent lösenord, kan man nästintill vara säkert på att det knäcks inom en snar framtid. Speciellt om det är exponerat mot internet över standard port "22".

Om du vill ha en säkrare autentisering skulle jag föreslå att du kikar vidare på 'fattigmansvpn' som @It-nisse beskrev i sitt inlägg.
Det kräver att användaren som ansluter till SFTP-servern har ett certifikat som godkänns av din SFTP-server.
Således kommer inga andra än innehavare av certifikatet in på servern.

// Benz

Trädvy Permalänk
Medlem
Plats
Kramfors
Registrerad
Dec 2004
Skrivet av krigelkorren:

Är inte helt hundra på att det du beskriver är särskilt vettigt, men jag har för mig att man i fstab, som <options>, kan ange vad som skall hända som ett fel uppstår ex.

UUID=blablabla /var/filsytemet/monteras auto errors=remount-ro 0 0"

Just detta kommando talar dock bara om för systemet att om fel påträffas, montera filsystemet i Read-Only-mode vilket förhindrar att förändringar skrivs till filsystemet. Om det fungerar som en slags lösning på ditt problem är jag dock osäker på.

Tycker det blir problematiskt, om jag tex har lagt in en extern usb hdd i fstab som jag använder till Timeshift och har backups på.
Om den är inlagt med UUID och sedan mountad i en folder jag angivit. Om jag vid en reboot skulle koppa ur den usb disken så ska hela systemen halta/stanna på reboot och hindra mig från att komma in och då ta bort den från fstab.

// Benz