FTP szerver telepítése
Pure-FTPd szerver telepítése Debian GNU/Linux Squeeze rendszeren Jegyzet
Szerző: Sallai András Copyright © Sallai András, 2011 Licenc: GFDL Weblap: http://szit.hu Verzió: 0.02 (2011.03.16)
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Telepítés Először frissítsük a csomaginformációkat és a rendszert: apt-get update apt-get upgrade Telepítsük a pure-ftpd szervert: apt-get install pure-ftpd-common pure-ftpd A telepítés után a felhasználók használhatják a saját könyvtáraikat FTP szerven keresztül. A pure-ftpd két módban futhat. „standalone” és „inetd” módban. Ez első esetben folyamatosan a memóriában van, míg a második esetben csak akkor tölti az Inetd szuperszerver a memóriába, ha észleli, hogy kérés érkezett az FTP szerver felé. Hogy milyen módon induljon az FTP szerverünk a következő helyen lehet beállítani: /etc/default/pure-ftpd-common STANDALONE_OR_INETD=standalone Alapból a standalone van beállítva. Beállíthatjuk az „inetd” értéket is. A pure-ftpd alapesetben csak parancssori kapcsolókkal konfigurálható, a Debian GNU/Linux viszont biztosít egy pure-ftpd-wrapper nevű felületet, amellyel fájlokkal konfigurálható az állomány. Ha az itt leírtaknál több információra van szükséged akkor nézd meg a man pure-ftpdwrapper kézikönyvet. Telepítés után a következő könyvtárak jönnek létre: /etc/pure-ftpd/auth/ /etc/pure-ftpd/conf/ /etc/pure-ftpd/db/ A pure-ftpd-wrapper ezekben a könyvtárakban keresi a beállítófájlokat. A következőkben megnézzük a Debian GNU/Linux 6.0-ás verziója milyen konfigurációs fájlokat rak fel alapból. Minden könyvtár egy vagy több egysoros fájlt tartalmaz A conf könyvtár tartalma AltLog FSCharset MinUID NoAnonymous PAMAuthentication PureDB UnixAuthentication Az egyes állományok tartalma és jelentése AltLog clf:/var/log/pure-ftpd/transfer.log Az AltLog fájlban van beállítva, hogy a felhasználók hozzáférésének naplózása milyen nevű fájlba történjen. -2-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
FSCharset UTF-8 Az FTP szerver fájlrendszerének karakterkódolása MinUID 1000 A felhasználók minimális azonosítója. Akinek kisebb az azonosítószáma, az a felhasználó nem léphet be FTP szerveren keresztül. Ez normális, hiszen 1000 alatti azonosítójú felhasználók, rendszerfelhasználók, nem valódi embert képviselnek. NoAnonymous yes Ha nem akarjuk hogy az FTP szervert Anonymous felhasználók is elérhessék. PAMAuthentication yes Engedélyezve van a PAM rendszeren keresztüli azonosítás. A PAM rendszer alapértelmezetten a /etc/passwd illetve a /etc/shdaow fájlból azonosít. PureDB /etc/pure-ftpd/pureftpd.pdb A PureFTPd virtuális felhasználó. Virtuális felhasználó az, akinek a Linuxos rendszerhez nincs hozzáférése, nincs shellje, csak az FTP szerver ismeri. UnixAuthentication no Közvetlen azonosítás a /etc/passwd és /etc/shadow fájlokból. Az auth könyvtár tartalma: 65unix 70Pam Ezek szimbolikus linkek a conf könyvtár egy-egy állományára. Az mondják meg, hogy az azonosítás típusok közül melyik legyen alapértelmezett. Egyéb telepítés utáni könyvtár és fájl: Üres könyvtár: /etc/pure-ftpd/db MySQL, PostgreSQL vagy LDAP azonosításnál használjuk. Ide rakjuk az adatbázis elérést leíró fájlokat. A pure-ftpd könyvtárban egyetlen fájl jön létre, ez a pureftpd-dir-aliases /etc/pure-ftpd/pureftpd-dir-aliases Ha egy könyvtár számára álneveket szeretnénk beállítani, akkor azt ebben a fájlban tehetjük meg. Telepítés után a Linuxos felhasználók automatikusan hozzáférnek saját home könyvtárukhoz. Ha valamit beállítottunk, akkor az FTP szerverrel újra kell olvastatni a konfigurációs fájlokat. Ez történhet például a újraindítással. A Pure-FTPd újraindítása: /etc/init.d/pure-ftpd restart A Pure-FTPd leállítása: /etc/init.d/pure-ftpd stop A Pure-FTPd elindítása: /etc/init.d/pure-ftpd start
-3-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Linuxos felhasználók felvétele Az eddigiekből tudjuk, hogy ha felveszünk egy linuxos felhasználót, akkor az be tud jelentkezni FTP szerveren keresztül is. Új felhasználó felvétele tehát: adduser felhasznalonev Pl. mari felhasználó felvétele: adduser mari Felhasználók és csoportok meglétének ellenőrzése cat /etc/passwd cat /etc/group A cat parancs megjeleníti a képernyőn az állományok tartalmát. A listázott felhasználók ha túl futnak a képernyőn, tördelhetjük a kimenetet: cat /etc/passwd | more vagy cat /etc/passwd | less A másik lehetőség, hogy megszűrjük a kiíratandó sorokat. Például ha csak jozsi nevű felhasználóra vagyok kíváncsi, akkor következőt írom: cat /etc/passwd | grep jozsi A parancs persze beírható így is: grep jozsi /etc/passwd
-4-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Anonymous FTP szerver Az anonymous felhasználó ha be van állítva egy FTP szerveren, akkor olyan felhasználók is hozzáférhetnek FTP szerverünkhöz, akinek nincs semmilyen hozzáférése. Tehát linuxos és virtuális felhasználóként sincs jelen a rendszerben. Ilyet általában akkor szoktunk használni, ha valamit szeretnénk közzé tenni, de nem weboldalon akarjuk ezt megtenni, mert nagy fájlokról van szó. Persze weben is közzé lehet tenni, de nagy fájlok közzétételére találták ki az FTP-t. Az anonymous felhasználó természetesen csak egy könyvtárhoz és persze azok alkönyvtáraihoz férhet majd hozzá. Anonymous FTP szerverhez létre kell hozni egy felhasználót és egy csoportot akinek a jogaival az FTP szerver hozzáfér majd az anonymous felhasználók könyvtárához. Az anonymous felhasználók könyvtára lehet például a home könyvtárban egy ftp könyvtár. groupadd ftp useradd -s /bin/false -d /home/ftp -m -c "anonymous FTP" \ -g ftp ftp Be kell állítanunk a szerver konfigurációjában, hogy engedélyezve van az anonymous. Ezt a tiltás tagadásával tehetjük meg. Szerkesszük e NoAnonymous állományt például az mcedit szövegszerkesztővel: echo no > /etc/pure-ftpd/conf/NoAnonymous Az állomány tartalmát no-ra állítjuk. A beállítás után újra kell indítanunk az FTP szervert: /etc/init.d/pure-ftpd restart A /home/ftp könyvtár jogai be kell állítanunk: chmod 555 /home/ftp Ez anonymous felhasználóknak beálllíthatunk feltöltési lehetőséget is. Erre a célra az incoming nevű könyvtárat szoktuk létrehozni az ftp könyvtáron belül: mkdir -p /home/ftp/incoming chown ftp.nogroup /home/ftp/incoming chmod 311 /home/ftp/incoming Ha az anonymous felhasználók feltölteni is szeretnének, azt mindig egy „incoming” nevű könyvtárba engedélyezzük. Az incoming könyvtárnak a jogait ilyenkor úgy állítjuk be, hogy oda fel lehessen tölteni, de annak tartalma ne legyen látható, listázható. A fenti beállítások ezt teszik lehetővé.
-5-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Virtuális felhasználók az FTP szerveren Az FTP szerver konfigurálása A virtuális felhasználók lehetnek fájlokban, MySQL, PostgreSQL vagy LDAP adatbázisban. A következő leírás a virtuális felhasználók fájlokban való tárolását írja le. Fel kell vennünk egy felhasználót és egy csoportot a virtuális felhasználók számára. A Linuxos rendszerben minden könyvtárhoz és fájlhoz lenni kell egy linuxos felhasználónak akinek a nevében hozzáférünk azokhoz. A virtuális felhasználóknak pedig pont az a lényegük, hogy a linuxos fájlrendszerben nem léteznek. Ezért van szükség egy olyan háttár felhasználóra, akinek a nevében ezek a virtuális felhasználók be tudnak lépni. A virtuális felhasználók erről a háttérfelhasználóról persze semmit sem tudnak, ezt az FTP szerver használja a fájlok elérésére. groupadd ftpgroup useradd -g ftpgroup -d /dev/null ftpuser Végig kell gondolnunk, hogy szeretnénk-e ha a linuxos felhasználók továbbra is be tudjanak jelentkezni FTP-én keresztül. Ha igen, akkor a PAMAuthentication fájlal nincs dolgunk. Ha nem akkor most állítsuk ennek értékét „no”-ra. echo no > /etc/pure-ftpd/conf/PAMAuthentication A conf könyvtárban lévő PureDB fájlt be kell linkelnünk a auth könyvtárba, szimbolikusan. Ezt a következő paranccsal tehetjük meg: ln -s /etc/pure-ftpd/conf/PureDB \ /etc/pure-ftpd/auth/60PureDB A szimbolikus link nevébe tennünk kell egy számot, amely megmondja, hogy az azonosítás milyen sorrendben történjen. A példában mi kisebb számot adtunk meg mint a PAM vagy a Unixnak be van állítva, ezért a felhasználókat mindig a virtuális felhasználók adatbázisából próbálja meg azonosítani először. Korábban már láttuk, hogy a /etc/pure-ftpd/conf/PureDB fájl tartalma a következő sor: /etc/pure-ftpd/pureftpd.pdb Azt mondtuk, hogy a virtuális felhasználók ebben a fájlban lesznek. A virtuális felhasználók ebben a fájlban bináris formában vannak. Egy szövegszerkesztővel belenézve, teljesen olvashatatlan. Gyors lekérdezéshez lett optimalizálva. A rendszergazda viszont nem szeret ilyeneket olvasgatni, ezért a virtuális felhasználók egy pureftpd.passwd fájl is létrejönnek. Sőt alapesetben csak itt jönnek létre. Ezt az állományt akár kézzel is szerkeszthetjük. Kézi szerkesztés után viszont aktualizálni kell a pdb adatbázist a következő paranccsal: pure-pw mkdb A beállítás után újraindítjuk a szervert: /etc/init.d/pure-ftpd restart
-6-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
A virtuális felhasználók kezelése Felhasználó felvétele A pure-pw parancsot használjuk a Pure-FTPd virtuális felhasználóinak adminisztrálásra. Fentebb már láttuk, hogy ezzel lehet a .pdf adatbázisfájlt aktualizálni. Ezzel a paranccsal tudunk egy felhasználót felvenni is: pure-pw useradd jozsi -u ftpuser -g ftpgroup \ -d /home/virtual-ftp/jozsi -m A példánkban a „jozsi” nevű felhasználót szeretnénk felvenni. Minden virtuális felhasználót a ftpuser és ftpgroup felhasználói és csoportazonosítójával hozunk létre. Lásd -u és -g kapcsolók. A -d kapcsoló azt mondja meg, melyik könyvtárhoz férhet hozzá a jozsi felhasználó. A -m kapcsolóval mondjuk meg, hogy a .pdf kiterjesztésű állományt frissíteni kell. A felhasználónak létre kell hozni a könyvtárát. A könyvtár tulajdonosa az ftpuser lesz. A könyvtár az ftpgroup csoportba kell tartozzon: mkdir -p /home/virtual-ftp/jozsi chown ftpuser:ftpgroup /home/virtual-ftp/jozsi Ha készen van, tesztelhetjük a hozzáférést. Először helyben: ftp localhost
Felhasználó törlése pure-pw userdel jozsi -m
Jelszó megváltoztatása pure-pw passwd jozsi -m
Felhasználó jellemzőinek megváltoztatása pure-pw usermod jozsi -d /home/virtual-ftp/ujkonyvtar -m A példában a jozsi felhazsnálónak egy másik könyvtárat adunk meg.
-7-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Hibakezelés Ellenőrzőlista Mit ellenőrzünk és hogyan? Ellenőrzőlista: 1. Fut-e az FTP szerver? ◦ ps ax | grep pure-ftpd 2. nyitva van-e port ◦ netstat -t -n -l ◦ nmap localhost 3. Működik-e a szerveren helyben (localhost) az FTP elérés ◦ ftp localhost 4. Létezik-e az a felhasználó akinek a nevében be akarunk lépni? ◦ Linuxos ▪ cat /etc/passwd ◦ Virtuális ▪ cat /etc/pure-ftpd/pureftpd.passwd 5. Létezik a felhasználónak a könyvtára? ◦ cat /etc/pure-ftpd/pureftpd.passwd és ls /home/virtual-ftp/ kimenetét összehasonlítjuk Feltételezve, hogy a felhasználónak a /home/virtual-ftp könyvtárban van könyvtára. 6. Naplófájlok ◦ tail -f /var/log/syslog ◦ tail -f /var/log/auth.log 7. Használható-e a hálózati kártya ◦ ping 192.168.5.2 Feltételezve, hogy ez a saját gépünk IP címe. 8. Van-e kapcsolat a belső hálózaton más gépekkel vagy a routerrel: ◦ ping 192.168.5.1 Feltételezve, hogy ez a router IP címe. 9. Van-e kapcsolat az Internet egy gépével ◦ ping 152.66.115.35 10. Van-e kapcsolat az Internet egy gépével: ◦ ping kulsodomain.hu -8-
Copyright © Sallai András,2011; Licenc: GFDL - FTP szerver jegyzet – http://szit.hu
Hostnév feloldási probléma Ha szerverünk IP címe nem oldható fel host névvé, illetve domain névvé, akkor a /var/log/syslog fájlban a következőhöz hasonló hibaüzeneteket találunk: Sorry, invalid address given Ilyenkor lebeszélhetjük a Pure-FTPd szervert arról, hogy fel akarja oldani az IP címet valamilyen névvé. Ezt a következő beállításokkal tudjuk megtenni. echo yes > /etc/pure-ftpd/conf/DontResolve A beállítás után újraindítjuk a szervert: /etc/init.d/pure-ftpd restart
-9-