Seminarski rad PDF dokumenat

 

DCOM exploit video RPC buffer overflow exploit video primjer

 

TFTP exploit video TFTP exploit video primjer
 

9. Praktični rad

 

9.1 Uvod

File Transfer Protocol (FTP) se koristi najjednostavnije rečeno, za prijenos datoteka između računala na Internetu. Većina web stranica koje nude preuzimanje datoteka s njihovih poslužitelja su u stanju prenijeti datoteku pomoću FTP protokola. Velika većina web pretraživača i operacijskih sustava ima mogućnost korištenja FTP protokola, jer imaju ugrađen potreban softver za takav prijenos podataka i datoteka, a tako ni Linux nije iznimka. U ovom praktičnom dijelu bit će pokazano kako na Linux računalu instalirat i pravilno konfigurirat Very Secure FTP Daemon (VSFTPD) paket koji je uključen u Fedoru.

9.2 Kako radi FTP

FTP zahtjeva dva TCP porta kako bi ispravno radio na željenom računalu. Ovaj protokol radi s dvije konekcije koje su objašnjenje u nastavku:


FTP Kontrolni kanal, TCP Port 21: Sve naredbe koje se pošalju serveru ili server pošalje klijentu prenose se preko kontrolnog kanala, ali bilo koji podatak poslan natrag npr. ako je poslana naredba "ls" za ispis sadržaja direktorija, ta će lista biti poslana preko podatkovnog kanala.
FTP Podatkovni kanal, TCP Port 20: Ovaj port se koristi za svu ostalu komunikaciju, odnosno prijenos podataka između klijenta i poslužitelja.

9.3 Vrste FTP konekcija

Gledano s perspektive mreže, postoje dvije vrste konekcije kod FTP-a, aktivna i pasivna. Kod aktivne FTP konekcije, FTP server inicira podatkovni prijenos natrag prema klijentu. Za razliku od aktivne FTP konekcije, pasivan FTP konekcija je obrnuta, konekcija je inicirana od strane klijenta. Na slici je prikazana pasivna i aktivna konekcija.


a
Slika 9.1: Prikaz Aktivne i Pasivne konekcije

Iz perspektive korisničkog rukovanja postoje dva tipa FTP-a: regularni FTP pri prijenosu podataka koristi korisničko ime i zaporku od regularnog korisnika FTP poslužitelja, i postoji anonimni FTP koji FTP serveru koristeći univerzalno metodu logiranja. Pogledajmo sada svaki tip pobliže.

 

9.3.1 Aktivni FTP

Slijed događaja kod aktivnog FTP-a je:

  1. Klijent se spaja na FTP poslužitelj uspostavljajući FTP kontrolnu konekciju na port 21 servera. Naredbe kao 'ls' i 'get' će biti poslane upravo preko ove konekcije.                          
  2. Kada god klijent zatraži podatke preko kontrolne konekcije, server će inicirati podatkovnu konekciju natrag prema klijentu. Izvorni port podatkovne konekcije je uvijek 20 na strani servera, a odredišni port je port veći od 1024, na strani klijenta.
  3. Prema tome, rezultat 'ls' naredbe koju smo poslali serveru, vratit će se preko porta 20 na neki port veći od 1024, no neće se vratit na port 21 kontrolne konekcije.

FTP aktivni način rada prenosi podatke u skladu s TCP standardom, znači FTP odabere port 20 kao izvorišni port ( ovaj port nije slučajno izabran ) i spoji se natrag na klijenta na slučajni port veći od 1024. Aktivni FTP će zakazati u slučaju kad je klijent zaštićen sa Interneta NAT-om, znači klijent je maskiran. Razlog tome je što firewall ne zna koji od mnogo servera iza NAT-a će primiti povratnu konekciju.

 

9.3.2 Pasivni FTP

Pasivni FTP radi drugačije:

  1. Klijent se spaja na FTP server uspostavljajući FTP kontrolnu konekciju na port 21. Pri izvršavanju ls i get naredbe, bit će prenesene preko te konekcije.
  2. Kad god klijent zatraži podatke preko kontrolnog kanala, klijent inicira podatkovni prijenos prema poslužitelju. Izvorišni port te podatkovne konekcije na strani klijenta je uvijek neki viši port od 1024 a odredišni port je također neki veći od 1024 na strani poslužitelja.

Pasivni FTP trebao bi vidjeti da server nikad ne stvara aktivni pokušaj povezivanja na klijent kako bi se ostvario FTP podatkovni prijenos. To je zato što klijent uvijek inicira zahtjev za konekciju, pasivni FTP radi bolje kad je klijent zaštićen vatrozidom.
Windows ima postavljen podrazumijevani aktivni FTP način uspostavljanja veze, a Linux kao podrazumijevani način ima pasivni FTP.

9.3.3 Regularni FTP pristup

Podrazumijevane postavke, VSFTPD paketa omogućuju regularnim Linux korisnicima kopirati datoteke u njihov podrazumijevani direktor i kopiranje iz njega uz pomoć FTP klijenta koristeći dodijeljeno Linux korisničko ime i zaporku. VSFTPD isto tako ima mogućnost dozvoliti ovakav tip pristupa grupi Linux korisnika, te isto tako odobriti dodavanje novih datoteka na FTP poslužitelj autoriziranim korisnicima.
Nedostatak regularnog FTP pristupa je u tome da nije moguće preuzimati distribucije softvera istovremeno od strane više korisnika ili ako se koriste dijeljena korisnička imena i zaporke. Anonimni FTP pristup izbjegava ovakve nedostatke.

9.3.4 Anonimni FTP pristup

Anonimni FTP je posljedica Web stranica koje su izmjenjivale podatke s mnogobrojnim nepoznatim korisnicima. Na taj način su korisnici preuzimali razne dodatke softveru i njihove zakrpe, isto tako i MP3 glazbene datoteke, te dijagnostičke informacije za tehničku upotrebu. Za razliku od regularnog FTP pristupa gdje se korisnik prijavljuje s korisničkim imenom i zaporkom, anonimni FTP pristup zahtjeva jedino anonimni korisnički račun tj. potrebno je kao korisničko ime unijeti "anonymous" i e-mail adresu za zaporku. Jednom kad se korisnik prijavi korisničkim nalogom na VSFTPD poslužitelj, automatski ima pristup samo podrazumijevanom anonimnom FTP direktoriju (/var/ftp u slučaju VSFTPD poslužitelja) i svim ostalim poddirektorijima.

 

9.4 Preuzimanje i instalacija VSFTPD

Većina Linux softvera je dostupna na Internetu u prekompajliranom formatu. Preuzimanje takvih paketa i instaliranje je vrlo jednostavno. Kada se traže instalacijske datoteke, treba uzeti u obzir da početni naziv datoteke VSFTPD paketa obično počinje s riječju vsftpd a nakon toga slijedi broj verzije, kao npr. vsftpd-1.2.1-5.i386.rpm u slučaju Redhat/Fedora operacijskog sustava ili vsftpd_2.0.4-0ubuntu4_i386.deb za Ubuntu. Instalacijski paket je moguće preuzeti s VSFTPD web stranice. Te nakon toga vrlo jednostavno obaviti instalaciju. Nakon instalacije slijedi mnogo važniji posao, konfiguriranje postavaka, kako bi se smanjili sigurnosni rizici na minimum.
Potrebno je preuzeti posljednju verziju VSFTPD RPM instalacijskog paketa s web stranice http://rhn.redhat.com/ ili s rpmfind.net. To se može napraviti izvršavajući sljedeću naredbu koja preuzima kopiju VSFTPD instalacijskog paketa koristeći wget:

wget http://www.vsftpdrocks.org/vsftpd-1.2.1-5.i386.rpm  

 

Kad je instalacijski RPM paket preuzet s Interneta, potrebno je izvršit instalaciju koja je vrlo jednostavna i prikazana je sljedećom naredbom:

rpm -Uvh vsftpd-1.2.1-5.i386.rpm 

 

Nakon ovoga, ako nismo dobili nikakvu poruku o grešci, VSFTPD poslužitelj je uspješno instaliran na Linux operacijski sustav. Sljedeći korak je pokretanje FTP poslužitelja.

vi /etc/vsftpd/vsftpd.conf 

 

Potrebno je ubaciti sljedeću direktivu u vsftpd.conf datoteku, ako je već postojana onda je potrebno osigurati da ima ispravnu vrijednost:

listen=YES 

 

Nakon toga pohranimo novi sadržaj u datoteku i izađemo iz vsftpd.conf konfiguracijske datoteke. Sljedeći korak je pokretanje i testiranje FTP poslužitelja.

9.5 Kako startati VSFTPD poslužitelj

Ako se koristi Fedora, Redhat, Ubuntu ili Debian operacijski sustav. VSFTPD server se može pokrenuti, zaustaviti ili restartati sljedećim naredbama:

[root@bigboy tmp]# /etc/init.d/vsftpd start
[root@bigboy tmp]# /etc/init.d/vsftpd stop
[root@bigboy tmp]# /etc/init.d/vsftpd restart

S Redhat / Fedora operacijskim sustavom može se složiti konfiguracija VSFTPD servera, tako da pri njihovom pokretanju ujedno se automatski pokreće i FTP server, a to se može postići chkconfig naredbom na sljedeći način:

[root@bigboy tmp]# chkconfig vsftpd on

Kod Ubuntu / Debian sistema, naredba sysv-rc-conf se može koristiti na sljedeći način kako bi dobili istu funkcionalnost kao u prethodnom primjeru:

root@u-bigboy:/tmp# sysv-rc-conf on

 

9.6 Testiranje statusa VSFTPD servera

Ako je potrebno provjeriti VSFTPD proces, dali je aktivan u memoriji, može se koristiti naredba netstat –a, koja prikazuje sve TCP i UDP portove na kojima server sluša kako bi prihvatio dolazeću vezu. Sljedeći primjer pokazuje očekivani izlaz:

[root@bigboy root]# netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
[root@bigboy root]#

Ako VSFTPD server nije aktivan, tada neće biti ni izlaza kao ovog .

9.7 Konfiguracijska vsftpd.conf datoteka

VSFTPD čita postavke iz vsftpd.conf konfiguracijske datoteke samo kad se pokreće, zato je potrebno restartat VSFTPD svaki puta kad se vrši neka izmjena nad vsftpd.conf datotekom, kako bi se primijenile nove postavke, u protivnom se neće dobiti željeni rezultati. Ova datoteka se može pronaći u /etc ili u /etc/vsftpd direktoriju, ovisno o distribuciji Linux operacijskog sustava.
Ova datoteka sadrži dosta podrazumijevanih postavaka koje je dobro poznavati.

anon_root=/data/directory

Dio konfiguracijske datoteke koja je lijepo prikazana dolje, pokazuje kako je istovremeno omogućen anoniman pristup i isto tako individualan pristup preko korisničkih računa.

# Allow anonymous FTP?
anonymous_enable=YES
...
# The directory which vsftpd will try to change
# into after an anonymous login. (Default = /var/ftp)
anon_root=/data/directory
...
# Uncomment this to allow local users to log in.
local_enable=YES
...
# Uncomment this to enable any form of FTP write command.
# (Needed even if you want local users to be able to upload files)
write_enable=YES
...
# Uncomment to allow the anonymous FTP user to upload files. This only
# has an effect if global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
...
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
...
# Activate logging of uploads/downloads.
xferlog_enable=YES
...
# You may override where the log file goes if you like.
# The default is shown below.
xferlog_file=/var/log/vsftpd.log
...

 

Kako bi aktivirali ili onemogućili neku od postavka, potrebno je ukloniti ili umetnuti znak za komentar # na početak željene linije. Osim ovih navedenih opcija, postoje još i dodatne VSFTPD opcije i postavke koje se mogu ubaciti u ovu datoteku, kao recimo ove:

  • Ograničavanje maksimalnog broja dolaznih konekcija (max_clients)
  • Ograničavanje broja konekcija po izvorišnoj IP adresi (max_per_ip)
  • Ograničavanje maksimalne brzine preuzimanja datoteke za anonimne korisnike (anon_max_rate)
  • Ograničavanje maksimalne brzine preuzimanja datoteke za regularne korisnike (local_max_rate)

Za detalje i sve ostale manje važne postavke moguće ih je proučiti u vsftpd.conf man pomoćnim stranicama.

9.8 FTP sigurnosne postavke

FTP ima dosta loših strana, ali tome može priskočiti i u nekoj mjeri ih ublažiti. Može se ograničit korisnički pristup tako da se onemogući anonimni pristup FTP poslužitelju, zatim se može ukloniti FTP pozdravna poruka, koja obično prikazuje o kojoj je verziji riječ, što naravno napadaču uvelike olakšava napad, ali najveći problem FTP-a je to što nema kriptiranje podataka, tako da napadač koji prikuplja pakete može vrlo jednostavno saznati korisnička imena i zaporke. FTP ima mnogo svrha, jedna od njih je omogućavanje mnogim nepoznatim korisnicima preuzimanje datoteka sa poslužitelja. Treba biti oprezan, zato što na taj način omogućeno nepoznatim korisnicima kopiranje i kreiranje datoteka na FTP poslužitelj, što može prouzročit velike probleme ako se nekontrolirano koristi. Ovakav slijed nenamjernih događaja može vrlo brzo zapuniti poslužiteljev tvrdi disk s ilegalnim softverom, slikama i glazbenim datotekama koje su dostupne svim korisnicima, a kao posljedica toga može doći do zagušenja rada FTP poslužitelja zbog prevelikog broja korisnika ako sigurnosne postavke nisu adekvatno postavljene.

9.8.1 /etc/vsftpd.ftpusers datoteka

Za određivanje stupnja sigurnosti, može se ograničiti FTP pristup određenim korisnicima dodajući ih u listu korisnika u /etc/vsftpd.ftpusers datoteci. VSFTPD paket kreira ovu datoteku sa zapisima korisnika koji imaju regularan pristup FTP poslužitelju. Kako FTP ne kriptira zaporke, postoji velika mogućnost kompromitiranja podataka ili zaporki, zato je dobra ideja ostaviti te postavke i dodati potrebne nove postavke kako bi se podigao stupanj sigurnosti FTP poslužitelja.

9.8.2 Anonimno slanje datoteke na server

Ako je potrebno omogućiti korisnicima direktorij s dozvolama za pisanje i slanje datoteka na ftp server, tada kreiramo direktori s pravima za pisanje unutar /var/ftp/pub direktorija. Na taj način smo zabranili korisnicima da imaju pristup drugim direktorijima i datotekama. Sljedeće naredbe rade navedenu konfiguraciju:

[root@bigboy tmp]# mkdir /var/ftp/pub/upload
[root@bigboy tmp]# chmod 722 /var/ftp/pub/upload 

 

9.8.3 FTP pozdravna poruka

Promijenimo podrazumijevanu pozdravnu poruku FTP servera u vsftpd.conf datoteci, kako bi se otežalo zlonamjernim korisnicima da shvate o kojem je FTP serveru riječ ili o kojem se operacijskom sustavu radi. Postupak kako to napraviti je sljedeći:

ftpd_banner= New Banner Here 

 

9.8.4 Korištenje SCP kao alternativa FTP-u

Jedna od mana FTP protokola je to što je nesiguran, odnosno prijenos podataka tim protokolom nije kriptiran, pa je vrlo jednostavno kompromitirat korisničko ime i zaporku. Na taj način korisničko ime i zaporka su nesigurni pri autorizaciji s FTP poslužiteljem. Secure Copy (SCP) i Secure FTP (SFTP) podržavaju kriptiranje i predstavljaju alternativu FTP-u. SCP zbog sigurnosti ne podržava korištenje anonimne registracije s poslužiteljem.

9.8.5 FTP korisnici s pristupom za čitanje dijeljenih datoteka

U ovom primjeru, anonimni FTP korisnik nije poželjan, već je pokazano kako odobriti grupi korisnika da imaju pristup dijeljenim datotekama na FTP serveru i slobodno ih preuzimaju. Ovo su koraci:


1) Onemogućiti spajanje anonimnih FTP korisnika. Zakomentirati liniju anonymous_enable u vsftpd.conf datoteci na ovaj način:

# Allow anonymous FTP?
anonymous_enable=NO

 

2) Omogućiti individualnu prijavu na ftp server, tako da se nekomentira local_enable linija u vsftpd.conf konfiguracijskoj datoteci, kao što je prikazano u primjeru:

# Uncomment this to allow local users to log in.
local_enable=YES

 

3) Pokrenuti VSFTP server.

[root@bigboy tmp]# service vsftpd start

 

4) Kreirati korisničku grupu i dijeljeni direktori. U ovom slučaju, koristit će se /home/ftp-users i ime korisničke grupe za korisnike koji će se moći spajat na server:

[root@bigboy tmp]# groupadd ftp-users
[root@bigboy tmp]# mkdir /home/ftp-docs

 

5) Treba odobriti da se dijeljenom direktoriju može pristupiti, i da grupa ftp korisnika ima pristup tom direktoriju.

[root@bigboy tmp]# chmod 750 /home/ftp-docs
[root@bigboy tmp]# chown root:ftp-users /home/ftp-docs

 

6) Dodati korisničke naloge, i postaviti im kao podrazumijevani direktori /home/ftp-docs:

[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user1
[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user2
[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user3
[root@bigboy tmp]# useradd -g ftp-users -d /home/ftp-docs user4
[root@bigboy tmp]# passwd user1
[root@bigboy tmp]# passwd user2
[root@bigboy tmp]# passwd user3
[root@bigboy tmp]# passwd user4

 

7) Prekopirati datoteke koje trebaju biti dostupne ftp korisnicima u /home/ftp-docs direktoriju.

8) Zatim treba promijeniti prava pristupa datotekama u /home/ftp-docs direktoriju, tako da ih korisnici mogu samo čitati, odnosno preuzeti sa servera:

[root@bigboy tmp]# chown root:ftp-users /home/ftp-docs/*
[root@bigboy tmp]# chmod 740 /home/ftp-docs/*

 

Korisnici su sada u mogućnosti slobodno se logirati na FTP server koristeći svoja korisnička imena i zaporke. Ako je potrebno zabraniti pristup bilo kojem korisniku, i zabraniti pisanje i čitanje iz bilo kojeg direktorija, tada je potrebno postaviti write_enable liniju u vsftpd.conf konfiguracijskoj datoteci na sljedeći način:

write_enable = NO

 

Te naravno na kraju, potrebno je restartat VSFTPD kako bi promjene u datotekama za konfiguraciju bile primijenjene.

 

9.8.6 Primjer Login Sjednice za testiranje funkcionalnosti

Ovo je jednostavan test kako bi se vidjelo dali sve radi kako treba:

1) Provjera prisutnosti test datoteke na ftp klijent serveru.

[root@smallfry tmp]# ll
total 1
-rw-r--r-- 1 root root 0 Jan 4 09:08 testfile
[root@smallfry tmp]#

 

2) Spajanje na serversko računalo preko FTP protokola

[root@smallfry tmp]# ftp 192.168.1.100
Connected to 192.168.1.100 (192.168.1.100)
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (192.168.1.100:root): user1
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

 

Kao što je i ranije pokazano u konfiguracijskoj datoteci, nije uspjelo kreiranje a tako ni prebacivanje datoteka na server, što je bilo i za očekivati jer je to u skladu sa željenim pravilima.

ftp> put testfile
local: testfile remote: testfile
227 Entering Passive Mode (192,168,1,100,181,210)
553 Could not create file.
ftp>

 

Ali može se vidjeti sadržaj direktorija i naravno može se preuzeti željena datoteka. U ovom primjeru je preuzeta kopija VSFTPD RPM paketa koji se nalazio na FTP serveru.

ftp> ls
227 Entering Passive Mode (192,168,1,100,35,173)
150 Here comes the directory listing.
-rwxr----- 1 0 502 76288 Jan 04 17:06 vsftpd-1.1.0-1.i386.rpm
226 Directory send OK.
ftp> get vsftpd-1.1.0-1.i386.rpm vsftpd-1.1.0-1.i386.rpm.tmp
local: vsftpd-1.1.0-1.i386.rpm.tmp remote: vsftpd-1.1.0-1.i386.rpm
227 Entering Passive Mode (192,168,1,100,44,156)
150 Opening BINARY mode data connection for vsftpd-1.1.0-1.i386.rpm (76288 bytes).
226 File send OK.
76288 bytes received in 0.499 secs (1.5e+02 Kbytes/sec)
ftp> exit
221 Goodbye.
[root@smallfry tmp]#

 

Kao što je i očekivano, logiranje kao anonimni FTP korisnik nije uspjelo.

[root@smallfry tmp]# ftp 192.168.1.100
Connected to 192.168.1.100 (192.168.1.100)
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (192.168.1.100:root): anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> quit
221 Goodbye.
[root@smallfry tmp]#

 

Testiranje je uspješno završeno, ovo se može postaviti kao regularan korak pri spajanju na FTP server.

9.9 Zaključak

FTP je vrlo korisna softverska aplikacija koja ima vrlo veliku uporabu na Web-u ili kad je potrebno preuzeti neku datoteku ili je poslati na neko drugo računalo unutar neke poslovne mreže. Unatoč tome što je FTP protokol nesiguran, on se ionako mnogo upotrjebljava, zato što je FTP klijent  dio velike većine operacijskih sustava i Web pretraživača. Ako je potrebno imati siguran prijenos odnosno kriptiranje podataka, na raspolaganju je SCP alternativa, koja podržava kriptiranje paketa koji se prenose nesigurnim medijem.