porty - 21 příkazový kanál, udržuje se po dobu celé relace 20 datový kanál, navazuje se pouze za účelem přenosu dat spojení - aktivní telnet nekde.cz 21 .... # uvodní výpis USER anonymous # login PASS xxxxx # heslo PORT a,b,c,d,x,y # klient oznámí serveru, že na ip adrese # a.b.c.d je otevřen port x*256+y LIST # vypíše obsah adresáře quit # ukončí spojení datový kanál je otevřen klientem a pomocí příkazu PORT to oznamý serveru pasivní telnet nekde.cz 21 .... USER anonymous PASS xxxxx PASV # server vrací řetězec a,b,c,d,x,y LIST quit datový kanál je otevřen serverem na požádaní klienta, přikaz PASV model komunikace klient-server ------------- |/---------\| || User || -------- ||Interface|<--->| User | |\----^----/| -------- ---------- | | | |/------\| FTP Commands |/----V----\| ||Server|<---------------->| User || || PI || FTP Replies || PI || |\--^---/| |\----^----/| | | | | | | -------- |/--V---\| Data |/----V----\| -------- | File |<--->|Server|<---------------->| User |<--->| File | |System| || DTP || Connection || DTP || |System| -------- |\------/| |\---------/| -------- ---------- ------------- Server-FTP USER-FTP model komunikace klient-server,server Control ------------ Control ---------->| User-FTP |<----------- | | User-PI | | | | "C" | | V ------------ V -------------- -------------- | Server-FTP | Data Connection | Server-FTP | | "A" |<---------------------->| "B" | -------------- Port (A) Port (B) --------------
Proč je FTP nebezpečné? Je to dáno dobou, ve které protokol vznikl. V roce 1971 byla síť Internet (tehdy ARPANET) relativně bezpečná, byla to akademická/vojenská síť, kde si všichni uživatelé navzájem mohli důvěřovat, proto se při návrhu FTP protokolu hledělo spíše k efektivnosti než k bezpečnosti. Na druhou stranu má FTP unikátní vlastnosti, které u nových protokolů nenajdeme.
Bezpečnostní problémy bych rozdělil do 3 kategorii, viz. níže
1 - Hesla v čitelné podobě Hesla se sítí posílají nezašifrovaná. Stačí jakýkoli sniffer. 2 - FXP přenosy a, Přesměrování datového kanálu na port nějaké služby, viz. www.securityfocus.com/archive/1/3488 ==================================================== $cat smtp_file HELO fi.muni.cz MAIL from: xaster@fi.muni.cz RCPT to: orm@penmat.ascs.muni.cz data from: Jaroslav Asterto: orm test . ==================================================== Zkopírujeme soubor smtp_file na nekde.cz, třeba jako uživatel anonymous, do uploadu. ==================================================== $telnet nekde.cz 21 .... # uvodní hlášky USER anonymous PASS nekdo@nekde.cz CWD upload PORT 147,251,48,3,0,25 RETR smtp_file quit ==================================================== Smažeme po sobě na serveru soubor smtp_file :-). ==================================================== V emailové zprávě takto odeslané bude ip adresa stroje, na kterém běží FTP server. b, Skenování portů, viz. man nmap $nmap -b user:passwd@nekde:21 scan_comp Skenování provádí FTP server, Vaše ip vidět není. 3 - Kradení datových kanálů a, Pasivní FTP Při provozování pasivního FTP se útočníkovi naskýtá možnost připojit se na datový kanál a získat tak data. Riziko se zvyšuje, když FTP server přiděluje porty inkrementálně. b, Aktivní FTP Totéž, co u pasivního, ale problém vzniká na straně klienta.
Instalace z deb je velice jednoduchá do /etc/apt/source.list přidat tyto řádky deb ftp://ftp.pureftpd.org/pub/pure-ftpd/debian/ ./ deb-src ftp://ftp.pureftpd.org/pub/pure-ftpd/debian/ ./ a spustit příkaz $apt-get update && apt-get install pure-ftpdani uživatelé těch horších :-) nepřijdou nazbyt,
Instalace z rpm $wget http://cesnet.dl.sourceforge.net/sourceforge/pureftpd/pure-ftpd-1.0.12-1.[tva platforma].rpm $rpm -Uvh pureftpd/pure-ftpd-1.0.12-1.[tva platforma].rpm připraveny jsou balíčky pro i386, i586, i686 a athlonostatní musí ze zdrojového textu
Instalace ze zdrojového textu $cd /usr/src $wget http://cesnet.dl.sourceforge.net/sourceforge/pureftpd/pure-ftpd-1.0.12.tar.gz $tar zxvf pure-ftpd-1.0.12.tar.gz $cd pure-ftpd-1.0.12 $./configure --help | less $./configure && make && make check && make install více viz. README :-)Neintuitivní části tu nejsou. PureFTPd má pěknou dokumentaci a vše potřebné je popsáno v souboru README. Pro lidi nemající humor bych doporučil volbu --without-humor :-).
# Don't allow authenticated users - have a public anonymous FTP only. AnonymousOnly yes # Disallow anonymous connections. Only allow authenticated users. #NoAnonymous yes # Maximum number 10 MaxClientsNumber 10 # Maximum number of simultaneous clients with the same IP address. only # works in stand2ne mode. MaxClientsPerIP 4 # LDAP configuration file (see /usr/share/doc/pure-ftpd/README.LDAP and example) #LDAPConfigFile /etc/pureftp-ldap.conf # MySQL configuration file (see /usr/share/doc/pure-ftpd/README.MySQL and example) # MySQLConfigFile /etc/pureftp-mysql.conf # PureDB user database (see /usr/share/doc/pureftpd/README.Virtual-Users) #PureDB /etc/pureftpd.pdb # If you want to enable PAM authentication, uncomment the following line #PAMAuthentication yes # If you want simple Unix (/etc/passwd) authentication, uncomment this # UnixAuthentication yes # Allow FXP transfers for authenticated users only. #AllowUserFXP yes # Create an additional log file with transfers logged in a Apache-like format : # fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338 # This log file can then be processed by www traffic analyzers. AltLog clf:/var/log/pureftpd.logJak samy vidíte, konfigurace je prostá. Jednotlivé volby jsou okomentované, proto je už dále komentovat nebudu. Jen pro připomínku kompletní dokumentaci najdete na adrese http://www.pureftpd.org/documentation.shtml.
WHAT IS RSYNC? -------------- rsync is a replacement for rcp that has many more features. rsync uses the "rsync algorithm" which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand. At first glance this may seem impossible because the calculation of diffs between two files normally requires local access to both files.Rsync je tedy program provádějící vzdálenou synchronizaci souborů. Používá se převážně k mirroringu ftp serverů, ale jeho použití by mohlo být i v oblasti webhostingu, kde by mohlo nahradit stárnoucí a nebezpečné ftp. Používá svůj vlastní protokol pro přenos souborů, který přenáší jen rozdíly mezi soubory. Bližší informace jsou zde.
Instalace z deb $apt-get install rsync Instalace z rpm pro RedHat $wget http://samba.anu.edu.au/ftp/rsync/binaries/redhat/rsync-2.4.6-1.i386.rpm rpm -Uvh rsync-2.4.6-1.i386.rpmpřiraveny jsou binárky i pro jiné platformy, ale to už Vás odkáži na http://samba.anu.edu.au/ftp/rsync/binaries.
Instalace ze zdrojových textů, aneb to nejlepší na konec $cd /usr/src $wget http://samba.anu.edu.au/ftp/rsync/rsync-2.5.5.tar.gz $tar zxvf rsync-2.5.5.tar.gz $cd rsync-2.5.5 $./configure --help | less $./configure && make && make installProgram neobsahuje žádné speciální volby, na které by stálo upozornit.
motd file = /etc/motd max connections = 25 syslog facility = local3 [ftp] comment = ftp area path = /pack/ftp read only = yes list = yes uid = nobody gid = nobody [tmp] comment = temporary file area path = /tmp read only = no list = yes hosts allow = 192.168.2.0/24 127.0.0.0/8 *.anu.edu.au auth users = tridge, susan secrets file = /etc/rsyncd.secretspro bližší informace bych doporučil si přečíst rsync HOWTO na této adrese http://sunsite.dk/info/guides/rsync/rsync-mirroring.html.