Bevezetés
FTP, rövid fájl átviteli protokoll, egy olyan hálózati protokoll, amelyet egyszer széles körben használtak fájlok kliens és szerver közötti mozgatására. Ez azóta helyébe gyorsabb, biztonságosabb, kényelmesebb módon nyilvánított fájlokat. Sok hétköznapi internetező arra számít, hogy a https
segítségével közvetlenül a böngészőjéből tölt le, és a parancssori felhasználók nagyobb valószínűséggel használnak olyan biztonságos protokollokat, mint a scp
vagy sFTP.,
az FTP-t továbbra is a nagyon specifikus igényekkel rendelkező régi alkalmazások és munkafolyamatok támogatására használják. Ha választhat, hogy milyen protokollt kell használni, fontolja meg a korszerűbb lehetőségek feltárását. Ha azonban FTP-re van szüksége, a vsftpd kiváló választás. A biztonságra, a teljesítményre és a stabilitásra optimalizált vsftpd erős védelmet nyújt a többi FTP-kiszolgálón található számos biztonsági probléma ellen, és sok Linux disztribúció esetében az alapértelmezett.,
ebben az oktatóanyagban megmutatjuk, hogyan konfigurálhatjuk a vsftpd-t, hogy a felhasználó fájlokat tölthessen fel otthoni könyvtárába FTP-vel, SSL/TLS által biztosított bejelentkezési hitelesítő adatokkal.
Előfeltételek
Hogy kövesse végig a bemutató szükséged lesz:
- Egy Ubuntu 16.04 szerver nem root felhasználó
sudo
jogosultságok: többet lehet tanulni, hogyan kell beállítani a felhasználó ezek a jogosultságok a Kezdeti Szerver Beállítása az Ubuntu 16.04 útmutató.
Miután van egy Ubuntu szerver a helyén, készen áll a kezdésre.,
1. lépés-a vsftpd
telepítése a csomaglistánk frissítésével és a vsftpd démon telepítésével kezdjük:
- sudo apt-get update
- sudo apt-get install vsftpd
a telepítés befejezése után átmásoljuk a konfigurációs fájlt, így egy üres konfigurációval kezdhetjük, az eredeti biztonsági mentésként mentve.
- sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
a konfiguráció biztonsági másolatával készen állunk a tűzfal konfigurálására.
2. lépés-a tűzfal megnyitása
ellenőrizzük a tűzfal állapotát, hogy engedélyezve van-e., Ha igen, biztosítjuk, hogy az FTP-forgalom megengedett legyen, így nem fog belefutni a tűzfalszabályokba, amelyek blokkolják Önt, amikor ideje tesztelni.
- sudo ufw status
ebben az esetben csak az SSH engedélyezett:
OutputStatus: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)
lehet, hogy más szabályok vannak érvényben, vagy egyáltalán nincs tűzfalszabály. Mivel ebben az esetben csak a ssh
forgalom megengedett, hozzá kell adnunk az FTP forgalom szabályait.,
- sudo ufw allow 20/tcp
- sudo ufw allow 21/tcp
- sudo ufw allow 990/tcp
- sudo ufw allow 40000:50000/tcp
- sudo ufw status
Most, hogy a tűzfal szabályai így néz ki:
A vsftpd
telepített, illetve a szükséges portok nyitva, készen állunk, hogy folytassa a következő lépéssel.
3. lépés-a felhasználói könyvtár előkészítése
ehhez a bemutatóhoz létrehozunk egy felhasználót, de lehet, hogy már van olyan felhasználója, akinek FTP-hozzáférésre van szüksége., Gondoskodunk arról, hogy megőrizzük a meglévő felhasználó hozzáférését az adataikhoz a következő utasításokban. Ennek ellenére azt javasoljuk, hogy kezdjen egy új felhasználóval, amíg nem konfigurálta és nem tesztelte a beállítást.
először hozzáadunk egy tesztfelhasználót:
- sudo adduser sammy
jelszó hozzárendelése, amikor a rendszer kéri, és nyugodtan nyomja meg az” ENTER ” gombot a többi utasításon keresztül.
az FTP általában biztonságosabb, ha a felhasználók egy adott könyvtárra korlátozódnak.vsftpd
chroot
, Ha achroot
engedélyezve van a helyi felhasználók számára, alapértelmezés szerint a saját könyvtárukra korlátozódnak. Mivel azonban a vsftpd
biztosítja a könyvtárat, a felhasználó nem írható. Ez rendben van egy új felhasználó számára, akinek csak FTP-n keresztül kell csatlakoznia, de előfordulhat, hogy egy meglévő felhasználónak írnia kell a saját mappájába, ha szintén hozzáférést biztosít.,
ebben A példában, sokkal inkább, mint eltávolítása írási jogosultsága a home könyvtár vagyunk létrehoz egy ftp
könyvtár szolgál a chroot
lehetőséget, majd egy írható files
könyvtárat a tényleges fájlok.,33″>
Outputtotal 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..
a Következő, majd hozzon létre egy könyvtárat, ahol a fájlok tölthetők fel, majd rendelje hozzá a tulajdonjog, hogy a felhasználó:
- sudo mkdir /home/sammy/ftp/files
- sudo chown sammy:sammy /home/sammy/ftp/files
A engedélyei ellenőrizze, hogy a files
könyvtár, vissza kell adnia a következő:
- sudo ls -la /home/sammy/ftp
Végre, majd a hozzáadás egy test.txt
fájlt használja, amikor a teszt később:
- echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt
Most, hogy biztosítottuk a ftp
könyvtár, valamint lehetővé tette, hogy a felhasználó hozzáférési hogy a files
könyvtárat, majd fel a figyelmet, hogy a konfiguráció.,
4. lépés-FTP-hozzáférés konfigurálása
azt tervezzük, hogy egyetlen helyi shell-fiókkal rendelkező felhasználó csatlakozhasson az FTP-hez. Ennek két kulcsbeállítása már be van állítva vsftpd.conf
. Kezdje a konfigurációs fájl megnyitásával annak ellenőrzéséhez, hogy a konfigurációban lévő beállítások megfelelnek-e az alábbiaknak:
- sudo nano /etc/vsftpd.conf
ezután meg kell változtatnunk néhány értéket a fájlban. Annak érdekében, hogy a felhasználó feltölthesse a fájlokat, feloldjuk a write_enable
beállítást, hogy rendelkezzünk:
. . .write_enable=YES. . .
a chroot-ot is kibontjuk, hogy megakadályozzuk az FTP-hez csatlakoztatott felhasználó hozzáférését a könyvtárfán kívüli fájlokhoz vagy parancsokhoz.
. . .chroot_local_user=YES. . .
hozzáadunk egy user_sub_token
– ot, hogy a felhasználónevet a local_root directory
útvonalba illesszük, így a konfigurációnk működni fog a felhasználó és a jövőbeli felhasználók számára, akik hozzáadhatók.
user_sub_token=$USERlocal_root=/home/$USER/ftp
korlátozzuk a passzív FTP-hez használható portok tartományát, hogy megbizonyosodjunk arról, hogy elegendő kapcsolat áll rendelkezésre:
pasv_min_port=40000pasv_max_port=50000
megjegyzés: előre megnyitottuk azokat a portokat, amelyeket itt állítottunk be a passzív porttartományhoz. Ha megváltoztatja az értékeket, feltétlenül frissítse a tűzfal beállításait.
mivel csak azt tervezzük, hogy eseti alapon engedélyezzük az FTP-hozzáférést, beállítjuk a konfigurációt úgy, hogy a hozzáférést csak akkor adjuk meg a felhasználónak, ha azokat alapértelmezés szerint kifejezetten hozzáadják a listához:
userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO
userlist_deny
Ha “igen” – re van állítva, a listán szereplő felhasználók megtagadják az FTP-hozzáférést. Ha “nem” – re van állítva, csak a listán szereplő felhasználók férhetnek hozzá. Ha végzett a módosítással, mentse el és lépjen ki a fájlból.
végül létrehozzuk és hozzáadjuk a felhasználónkat a fájlhoz., A -a
zászlót a fájlhoz csatoljuk:
- echo "sammy" | sudo tee -a /etc/vsftpd.userlist
ellenőrizze, hogy a várt módon adták-e hozzá:
cat /etc/vsftpd.userlist
Outputsammy
Daemon betölteni a konfigurációs változások:
- sudo systemctl restart vsftpd
most készen állunk a tesztelésre.
5. lépés-FTP hozzáférés tesztelése
úgy konfiguráltuk a kiszolgálót, hogy csak a felhasználó számára engedélyezzük sammy
FTP-n keresztüli csatlakozást. Győződjünk meg róla, hogy ez a helyzet.
A névtelen felhasználóknak nem kell csatlakozniuk: letiltottuk a névtelen hozzáférést., Itt fogjuk tesztelni, hogy megpróbálja csatlakozni névtelenül. Ha megfelelően csináltuk, a névtelen felhasználókat meg kell tagadni az engedélytől:
- ftp -p 203.0.113.0
zárja be a kapcsolatot:
- bye
a sammy
– n kívül más felhasználóknak nem kell csatlakozniuk: ezután megpróbálunk csatlakozni sudo
felhasználó. Nekik is meg kell tagadni a hozzáférést, és meg kell történniük, mielőtt megadhatják a jelszavukat.,írni-fájlok: Itt, majd győződjön meg arról, hogy a kijelölt felhasználó canconnect:
- ftp -p 203.0.113.0
megváltoztatjuk a files
könyvtár, akkor használjuk a get
parancs át a teszt fájlt, amit korábban létrehozott, a helyi gép:
- cd files
- get test.txt
majd jobbra vissza, megpróbálom feltölteni a fájlt új néven, hogy tesztet írni engedélyek:
- put test.txt upload.txt
kapcsolat:
- bye
Most, hogy már tesztelték a konfiguráció, minden szükséges lépést megteszünk, hogy további biztonságos a szerver.,
6. lépés-tranzakciók biztosítása
mivel az FTP nem titkosítja a tranzitban lévő adatokat, beleértve a felhasználói hitelesítő adatokat is, engedélyezzük a TTL/SSL számára a titkosítás megadását. Az első lépés az SSL tanúsítványok létrehozása a vsftpd használatához.
a openssl
új tanúsítvány létrehozásához a -days
zászlót használjuk, hogy egy évig érvényes legyen. Ugyanebben a parancsban hozzáadunk egy privát 2048 bites RSA kulcsot., Ezután mind a -keyout
, mind a -out
zászlók azonos értékre állításával a privát kulcs és a tanúsítvány ugyanabban a fájlban található.
ezt a következő paranccsal fogjuk megtenni:
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
meg kell adnia a tanúsítvány címadatait., Helyettesítő saját információt az alábbi kérdésekre:
további részletes információ arról, hogy a tanúsítvány zászlók, lásd OpenSSL Essentials: Dolgozik, SSL Tanúsítványok, a Privát Kulcsokat, illetve országspecifikus ajánlásokat
Miután létrehozta a bizonyítványok, nyissa meg a vsftpd
konfigurációs fájlt újra:
- sudo nano /etc/vsftpd.conf
Felé a fájl aljára, kell két sora így kezdődik: rsa_
. Kommentálja őket, így néznek ki:
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
alattuk adja hozzá a következő sorokat, amelyek az éppen létrehozott tanúsítványra és privát kulcsra mutatnak:
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem
ezt követően kényszerítjük az SSL használatát, amely megakadályozza, hogy a TLS-vel nem foglalkozó ügyfelek csatlakozzanak. Ez azért szükséges, hogy minden forgalom titkosítva legyen, de az FTP-felhasználót arra kényszerítheti, hogy megváltoztassa az ügyfeleket. Változás ssl_enable
YES
:
ssl_enable=YES
ezután adjuk hozzá a következő sorokat, hogy kifejezetten tagadja névtelen kapcsolatok over SSL, illetve szükség SSL mindkét adatátvitel, valamint a bejelentkezési adatok:
allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES
ezután konfiguráljuk a kiszolgálót a TLS, az SSL preferált utódjának használatára a következő sorok hozzáadásával:
ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO
végül még két lehetőséget adunk hozzá. Először is, nem lesz szükség SSL újrafelhasználásra, mert sok FTP-ügyfelet megtörhet., Szükségünk lesz “magas” titkosítási rejtjelezési csomagokra, ami jelenleg 128 bittel egyenlő vagy annál nagyobb kulcshosszokat jelent:
require_ssl_reuse=NOssl_ciphers=HIGH
Ha elkészült, mentse el és zárja be a fájlt.
most újra kell indítanunk a kiszolgálót, hogy a módosítások hatályba lépjenek:
- sudo systemctl restart vsftpd
Ezen a ponton már nem tudunk kapcsolatba lépni egy nem biztonságos parancssori klienssel. Ha megpróbálnánk, akkor valami ilyesmit látnánk:
ezután ellenőrizzük, hogy csatlakozhatunk-e egy TLS-t támogató ügyféllel.,
7. lépés-TLS tesztelése FileZilla
a legtöbb modern FTP kliens konfigurálható TLS titkosítás használatára. Bemutatjuk, hogyan lehet csatlakozni a FileZilla használatával a platformok közötti támogatás miatt. Tekintse meg a dokumentációt más ügyfelek számára.
A FileZilla első megnyitásakor keresse meg a webhelykezelő ikont közvetlenül a Word fájl alatt, a bal oldali ikon a felső sorban. Kattintson rá:
egy új ablak nyílik meg., Kattintson az” új webhely”gombra a jobb alsó sarokban:
a” saját oldalak “alatt egy új ikon jelenik meg az” új webhely ” szavakkal. Nevezze el most, vagy térjen vissza később, majd használja az Átnevezés gombot.
ki kell töltenie a” Host ” mezőt a névvel vagy IP-címmel. A ” Titkosítás “legördülő menüben válassza az”explicit FTP igénylése TLS felett” lehetőséget.
a “bejelentkezési típus” esetén válassza a “Jelszó kérése”lehetőséget. Töltse ki a “felhasználó” mezőben létrehozott FTP-felhasználót:
Kattintson a felület alján található “Csatlakozás” gombra., Meg kell adnia a felhasználó jelszavát:
Kattintson az “OK” gombra a csatlakozáshoz. Most csatlakoznia kell a kiszolgálóhoz TLS / SSL titkosítással.
Ha elfogadta a tanúsítványt, kattintson duplán afiles
mappára és húzza a feltöltést.txt balra, hogy erősítse meg, hogy képes letölteni a fájlokat.
Ha ezt megtette, kattintson a jobb gombbal a helyi másolatra, nevezze át feltöltésre-tls.txt’, majd húzza vissza a szerverre, hogy erősítse meg, hogy lehet feltölteni a fájlokat.,
most már megerősítette, hogy biztonságosan és sikeresen átviheti a fájlokat SSL/TLS engedélyezve.
8. lépés-a Shell-hozzáférés letiltása (opcionális)
Ha az ügyfél igényei miatt nem tudja használni a TLS-t, akkor bizonyos biztonságot szerezhet, ha letiltja az FTP-felhasználó azon képességét, hogy bármilyen más módon jelentkezzen be. Az egyik viszonylag egyszerű módja annak, hogy megakadályozzuk, egy egyedi héj létrehozásával történik. Ez nem nyújt titkosítást, de korlátozza a veszélyeztetett fiók hozzáférését az FTP által elérhető fájlokhoz.,
először nyisson meg egy ftponly
nevű fájlt a bin könyvtárban:
- sudo nano /bin/ftponly
hozzáadunk egy üzenetet a felhasználónak, hogy miért nem tudnak bejelentkezni.,/p>
#!/bin/shecho "This account is limited to FTP access only."
az engedélyek módosítására, hogy a futtatható fájl:
- sudo chmod a+x /bin/ftponly
Nyissa meg a listát az érvényes kagyló:
- sudo nano /etc/shells
az alján, adjunk hozzá:
. . ./bin/ftponly
Frissítés a felhasználói parancsértelmező a következő parancsot:
- sudo usermod sammy -s /bin/ftponly
Most próbáljon bejelentkezni, mint sammy:
ilyesmit kell látnod:
OutputThis account is limited to FTP access only.Connection to 203.0.113.0 closed.
Ez megerősíti, hogy a felhasználó nem tud tovább ssh
a szerver korlátozott FTP hozzáférés csak.,
következtetés
ebben a bemutatóban lefedtük az FTP beállítását a helyi fiókkal rendelkező felhasználók számára. Ha külső hitelesítési forrást kell használnia, érdemes megvizsgálni a vsftpd virtuális felhasználók támogatását. Ez gazdag lehetőségeket kínál a Pam, A Dugaszolható hitelesítési modulok használatával, és jó választás, ha egy másik rendszerben, például az LDAP vagy a Kerberos felhasználóit kezeli.