Kiszolgálók üzemeltetése FTP Iványi Péter
FTP
• File Transfer Protocol • Abhay Bhushan, – RFC 114, 1971 – RFC 765, 1980 – RFC 959, 1985
• File-ok fel- és letöltése egy szerverről • Két port-ot használ, „out-of-band” (sávon kívüli) jellegű • TCP alapú, nincs UDP változat • Aktív és passzív FTP is létezik
FTP
• Peer-to-peer kliensek előtérbe kerülnek manapság – Egy nagy file többszöri FTP letöltése leterheli a szervert
• Problémák – – – – –
Nincs titkosítás FTP bounce attack (PORT parancs kihasználása) Spoofing támadás (Másnak tűnünk fel) Brute Force Attack Packet Capturing
Aktív FTP
• Port 21 (FTP): parancs csatorna
– Kliens nyitja meg a 21-es port felé a csatlakozást
• Port 20 (FTP-DATA): adat csatorna
– Szerver nyitja meg a 20-as portról a kliens portja+1 felé a csatlakozást!!!!! – A parancs csatornán a kliens a PORT paranccsal küldi el az adatcsatorna kliens oldali portját • Befelé irányuló forgalom • Tűzfalak esetén problémás
– „Okos” tűzfal az FTP forgalmat figyelve tudhat a port-ról
• NAT-olás mellett nem működik, ha csak a tűzfal nem elég intelligens
Aktív FTP
PORT 1027
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com. 220 testbox2.slacksite.com FTP server ready. Name (testbox2:slacker): slacker ---> USER slacker 331 Password required for slacker. Password: TmpPass ---> PASS XXXX IP cím 230 User slacker logged in. ---> SYST 215 UNIX Type: L8 Port szám: Remote system type is UNIX. 14*256+178=3762 Using binary mode to transfer files. ftp> ls ftp: setsockopt (ignored): Permission denied ---> PORT 192,168,150,80,14,178 200 PORT command successful. ---> LIST 150 Opening ASCII mode data connection for file list. drwx-----3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete. ftp> quit ---> QUIT 221 Goodbye.
Passzív FTP
• Parancs csatorna felépülése után a PASV parancsot küldi a kliens
– Átkapcsol passzív módba – A szerver nyit meg egy portot, amit átküld a kliensnek a PORT paranccsal – A kliens építi ki a kapcsolatot a szerver felé • Tűzfalak konfigurációja nagyon könnyű
– A probléma a szerver oldalon lehet
• Nem privilegizált portokhoz szabad hozzáférés kell – A szerver oldalon korlátozhatjuk ezek listáját
Passzív FTP
PASV
PORT 1027
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com. 220 testbox2.slacksite.com FTP server ready. Name (testbox2:slacker): slacker ---> USER slacker 331 Password required for slacker. Password: TmpPass ---> PASS XXXX 230 User slacker logged in. ---> SYST 215 UNIX Type: L8 Remote system type is UNIX. Using binary mode to transfer files. ftp> passive Passive mode on. ftp> ls ftp: setsockopt (ignored): Permission denied ---> PASV 227 Entering Passive Mode (192,168,150,90,195,149). ---> LIST 150 Opening ASCII mode data connection for file list drwx-----3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete. ftp> quit ---> QUIT 221 Goodbye.
Szerver válasz
FTP user parancsok
ftp abc.xyz.edu ftp> help ftp> ls ftp> cd customers ftp> lcd images ftp> ascii ftp> binary ftp> prompt
ftp> ftp> ftp> ftp> ftp> ftp>
FTP user parancsok
get image1.jpg put image2.jpg mget *.jpg mput *.jpg mdelete *.jpg quit
• /etc/ftpusers
Konfiguráció
– Azon felhasználók listája akik nem használhatják az ftp-t
• /etc/ftpchroot
– Azon felhasználók, akik chroot környezetbe kerülnek a belépés után
Anonymous FTP
• File-ok cseréje több „ismeretlen” felhasználóval – Lehet csak feltöltő szervert is készíteni!!
• E-mail címet szokott kérdezni a szerver, de nem ellenőrzi
Anonymous FTP
• Konfigurációs lépések
adduser ftp chown root:root /home/ftp chmod 555 /home/ftp cd /home/ftp mkdir bin etc lib pub chmod 511 bin etc lib chmod 555 pub mkdir pub/incoming
Anonymous FTP
• chroot környezetbe kell kerüljön a felhasználó • /home/ftp lesz a főkönyvtár: /
– Mivel az ls parancs a /bin könyvtárban van a /home/ftp alatt nem tudjuk használni – Át kell másolni a parancsot és minden kapcsolódó könyvtárat
chroot
• Bevezetése 1979-ben a Version 7 Unix-ban • BSD-be 1982-ben • Felhasználása – Tesztelés és fejlesztés – Kompatibilitás (legacy szoftverekhez) – Privilégium szeparáció
• Kitörés viszonylag egyszerű:
http://www.bpfh.net/simes/computing/chroot-break.html
chroot-nál figyelni kell
• Ne root-ként futassuk a programokat • Adjuk fel a jogokat, ha nem kellenek • Explicit módon váltsunk a könyvtárba:
chdir(dir); chroot(dir); setXXuid(nonroot); // adjuk fel a root jogokat
• Kevés programot tároljunk a chroot környezetben • Minnél kevesebb root jogosultságú file legyen • Limitáljuk a file jogokat amennyire csak lehet http://www.unixwiz.net/techtips/chroot-practices.html
Anonymous FTP
• Konfigurációs lépések
cp /bin/ls /home/ftp/bin chmod 111 /home/ftp/bin ldd /bin/ls librt.so.1 => /lib/librt.so.1 (0x4001e000) libc.so.6 => /lib/libc.so.6 (0x40030000) libpthread.so.0 => /lib/libpthread.so.0 (0x40153000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Anonymous FTP
• Konfigurációs lépések # # # # # #
cp /lib/librt.so.1 lib/ cp /lib/libc.so.6 lib/ cp /lib/libpthread.so.0 lib/ cp /lib/ld-linux.so.2 lib/ chmod 555 lib/* chown root.root lib/*
Üzenetek
• Üzenet a belépésnél – /etc/ftpwelcome
• Nem chroot-olt felhasználók esetén a belépés utáni üzenet – /etc/motd
• Könyvtárankénti üzenet – .message file
• • • • • • •
WU-FTPD
Washington University FTP daemon Minden bejövő és kimenő forgalmat naplóz Minden user parancsot naplóz Tömörítés menet közben Felhasználók osztályokba sorolása Minden könyvtárra szabályozható a feltöltés Virtuális host-ok
• • • • •
ProFTPD
Biztonságosabbnak tervezték mint WU-FTPD Alapoktól újraírták Könyvtárankénti kontroll az .ftpaccess file-al Rejtett file-ok Önmagában megáll, nincs szükség más programra
Referenciák
• http://slacksite.com/other/ftp.html • http://www.snow.nl/dist/htmlc/ch12s02.html