Rabu, 07 November 2012

FTP Server

Baiklah, kali ini kita akan melaksanakan praktikkum FTP server. Dalam praktikum ini kita akan mempelajari bagaimana menginstal dan mengkonfigurasi FTP Server menggunakan VSFTPD.  Namun sebelumnya marilah membahas teori dasarnya terlebih dahulu.



A. Dasar Teori
TCPdump adalah tools yang berfungsi mengcapture, membaca atau mendumping paket yang sedang ditransmisikan melalui jalur TCP. TCPdump diciptakan untuk menolong programer ataupun administrator dalam menganalisa dan troubleshooting  aplikasi networking. Seperti pisau yang bermata dua (hal ini sering kali disebut-sebut), TCPdump bisa digunakan untuk bertahan dan juga bisa digunakan untuk menyerang.
Utility ini juga seringkali digunakan oleh para cracker untuk melaksanakan perkerjaannya, karena TCPdump bisa mengcapture atau mensniff semua paket yang diterima oleh network interface.
Sebagai contoh, digunakan network yang terdiri dari tiga komputer yang dihubungkan menggunakan hub. Komputer pertama, menggunakan Windows™ 98  dengan IP address 192.0.0.1, sedang melakukan koneksi melalui telnet ke komputer  kedua yang menggunakan Slackware 8.0 dengan IP address 192.168.0.2 dan host ketiga komputer Redhat 7.1 dengan IP address 192.168.0.3 yang menggunakan utility TCPdump. Alasan untuk membedakan Operating System yang digunakan adalah untuk menunjukkan bahwa TCP/IP dapat berkomunikasi dengan baik pada dua platform yang berbeda.
Untuk menjalankan TCPdump, ketik perintah tcpdump di console anda pada host 192.168.0.3 sebagai root. Output yang diperlihatkan di bawah ini adalah output yang bergulir non-stop, terus berganti baris tanpa henti hingga anda menekan Ctrl+C .
# tcpdump
tcpdump: listening on eth0
05:22:27.216338 burner.ssh > prime.1035:
P3797249897:3797249949(52) ack 2183278948 win 8576 (DF) [tos 0x10]
Contoh output yang berulang diatas menyatakan bahwa salah satu computer sedang menjalankan ssh client untuk koneksi ke server ssh di Redhat 7.1 (192.168.0.3) yang mengakibatkan trafik pada network (untuk menghasilkan output seperti diatas anda harus menjalankan ssh server pada Redhat 7.1 dan menggunakan ssh client untuk melakukankoneksi ke server dengan Slackware 8.0 (ini hanya contoh sementara).
Memang banyak sekali output yang dikeluarkan oleh TCPdump. Lalu apakah maksud dari output-output tersebut? Output pada TCPdump menampilkan informasi-informasi tentang PDU yang diambil dari frame yang dibaca/dicapture. Keterangan berikut dapat menjelaskan arti output pada contoh diatas (tcpdump -nn host 192.168.0.2 and port 23):
Field Contents Keterangan
19:20:00.804501  : Deskripsi waktu
192.168.2.10.1221  :  Alamat IP asal dengan nomor port 1221
192.168.2.165.23  : Alamat IP tujuan dengan nomor port 23
S flag/Bendera
2565655403 Nomor urutan data /data sequence number
win 16384 Window size
Sebenarnya masih banyak data field yang ditampilkan pada output, yang tidak disebutkan pada keterangan diatas. Manual pages dari TCPdump mempunyai penjelasan yang cukup tentang output yang ditampilkan. Pemahaman yang baik tentang operasi dan konstruksi dari sebuah protokol sangat dibutuhkan untuk melakukan analisa data. Utility ini juga mempunyai kemampuan untuk menganalisa PDU yang memulai dan mengakhiri suatu koneksi TCP/IP. TCP mempunyai mekanisme khusus untuk membuka dan menutup suatu koneksi. Untuk menjamin bahwa startup dan shutdown koneksi benar-benar terjadi, TCP menggunakan metode dimana ada tiga pesan yang ditukar, metode ini sering juga disebut three-way-handshake.
FTP
FTP (File Transfer Protocol) adalah mekanisme yang digunakan untuk men-transfer data (baca: file) antar komputer lewat Internet, atau network. Dalam konteks website (blog misalnya), FTP digunakan untuk men-transfer file dari komputer kita ke server hosting, sehingga file ini kemudian bisa diakses di website kita secara online menggunakan web browser.
Setidaknya dua komputer terlibat dalam proses transfer ini: FTP server dan FTP client. FTP server menjalankan software di server (hosting) dan siap menerima permintaan transfer dari FTP client (berupa software FTP client di komputer kita, misalnya CuteFTP, SmartFTP, NCFTP, WSFTP). Untuk bisa melakukan aktifitas FTP, kita memerlukan FTP account (username dan password). Setelah FTP client terhubung dengan FTP server, kita bisa melakukan upload file ke server, download file dari server, mengganti nama file di server, menghapus file, dan banyak operasi lainnya.
Salah satu kelemahan utama dari FTP adalah kurang (atau bahkan tidak ada)-nya metode enkripsi, baik dalam pengiriman data account (password) dan pengiriman data. Karena faktor ini, direkomendasikan untuk menggunakan cara lain untuk men-transfer file lewat internet, misalnya SCP dan SSH Tunnel. SCP client yang cukup populer adalah WinSCP untuk Windows.
  1. Alat Dan Bahan
- PC dengan OS Linux
- Hub
- Kabel UTP Crossover dan Straighttrough
  1. Langkah – Langkah Praktikum
Sebelum melakukan capture data, install aplikasi ftp server pada komputer anda. Cara melakukannya adalah sebagai berikut :
1. Install FTP Server (VSFTPD)
$ sudo apt-get install vsftpd

2. Konfigurasi file /etc/vsftpd.conf
Buka file dengan text editor, misalnya nano,
$ sudo nano /etc/vsftpd.conf
Tambah baris berikut atau hilangkan tanda comment (#) pada file tersebut. Langkah ini agar user lokal bisa log in melalui ftp
local_enable=YES
Agar user bisa mengupload file, cari baris berikut dan hilangkan tanda comment (#)
write_enable=YES
Untuk keamanan, agar user tetap berada di home direktorinya, tambahkan baris berikut  :
chroot_local_user=YES

Save dan tutup file
3. Restart VSFTPD di Komputer
$ sudo /etc/init.d/vsftpd restart

4. Cara melakukan ftp melalui command line adalah sebagai berikut :
$ ftp ipkomputerserver atau domain
contoh :
$ ftp 10.17.0.251 atau $ ftp ftp.labjaringan.com
Kemudian masukkan username dan password.

Lalu pertama yang kita lakukan adalah menghubungkan komputer server dengan komputer client dengan cara menggunakan kabel cross. Kemudian isi IP, Netmask, dan DNS pada komputer client sebagai berikut.
IP: 10.17.0.170
Netmask: 255.255.255.0
DNS: 10.17.0.193
Dan isikan data berikut pada komputer server:
IP: 10.17.0.193
Netmask: 255.255.255.0
Gateway: 10.17.0.254
DNS: 10.17.0.193

Kemudian lakukan restrart jaringan dengan menggunakan perintah networking restart sebagai berikut.
$ sudo /etc/init.d/networking restart
Jika tampilan sudah menunjukkan ‘OK’, artinya antara komputer server dan komputer client telah siap untuk dioperasikan langkah selanjutnya.
Lalu yang kita lakukan adalah melakukan ping ke IP komputer server dan IP komputer client untuk melihat apakah sudah bisa terhubung atau tidak. Kemudian kita meng-capture paket data dengan filter ftp dengan cara:
$ tcpdump –i eth0 | grep ftp
Perintah ini digunakan untuk mengcapture, membaca atau mendumping paket yang sedang ditransmisikan melalui jalur eth0. Perintah eth0 ini dapat diganti menjadi eth1 atau eth2, tergantung ethernet yang digunakan oleh komputer server. Perintah grep ftp ini maksudnya kita akan melakukan filter hanya pada jalur yang dilalui FTP.
Lalu lakukan ftp ke komputer server dengan user anonymous
$ ftp [IP_server]
Setelah itu kita akan diminta untuk login dengan menggunakan user dan password yang kita gunakan untuk login ketika pertama kali membuka linux server. Setelah berhasil login ke ftp server, hentikan proses capture paket data dengan menekan  Ctrl + C .
Hasil dari capture datanya adalah sebagai berikut.
tcpdump: verbose output suppressed, use-v or -vv for protokol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
-
Pada hasil diatas komputer server siap melakukan capture data yang akan diakses melalui eth0.
Kemudian pada komputer client kita lakukan pengaksesan ftp , namun sebelumnya kita hubungkan terlebih dahulu dengan menggunakan kebel cross antara kompter server dan komputer client (laptop kita).
Pengaksesan ftp dilakukan dengan cara:
  • Buka comand prompt
  • Ketikan ftp (ip server)
  • $ ftp 10.17.0.193
Kemudian hasilnya adalah sebagai berikut:
C:\Users\Windows7\Documents>ftp 10.17.0.193
Connected to 10.17.0.193
220 <vsFTPd 2.3.5>
Users <10.17.0.170(none)): polsri
331 Please specify the password.
Password:
230 Login successful.
ftp> put Doc1.doc
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 17543 bytes sent in 0.00Seconds 8771.50Kbytes/sec.
ftp>quit
221 Goodbye.
C:\Users\Windows7\Documents>
Pada hasil diatas komputer client mengakses ke IP komputer server dengan melakukan login,kita akan diminta memasukan user dan password jika muncul “230 Login successful.” proses pengaksesan ke komputer server berhasil.
Setelah itu, kita coba meletakan sebuah file ke komputer server misalkan file “Doc1.doc” dengan melakukan perintah put. Perintah put disini sama seperti perintah upload. Jadi kita akan melakukan upload file bernama Doc1.doc ke komputer server.
ftp> put Doc1.doc
Bila muncul
200 PORT command successful. Consider using PASV. 150 Ok to send data.
226 Transfer complete.
Cara diatas adalah cara untuk mengakses ftp dengan anonymous. Dan berikut adalah cara untuk mengakses ftp dengan user login.
- Untuk pengaksesan ftp dengan user login
- Jika kita masih berada pada ftp> , keluar terlebih dahulu dengan perintah quit atau bye
- Akses kembali ftp server c:\ftp 10.17.0.193, jika ada permintaan login masukkan user dan
password sesuai dengan user dan password server.
Setelah melakukan langkah-langkah tersebut maka komputer server akan mengcapture datanya, sehingga hasil capturenya sebagai berikut:


17:58:27.962975 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 4923
3:50681, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963039 IP 10,17,0,194.ftp-data > 10.17.0.170.49178; Flags[.],ack 4633
7,win 2641, options [nop,nop,TS val 1685696 ecr 535895],length 0
17:58:27.963055 IP 10,17,0,194.ftp-data > 10.17.0.170.49178; Flags[.],ack 4923
7,win 2641, options [nop,nop,TS val 1685696 ecr 535895],length 0
17:58:27.963039 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5068
3:50681, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963055 IP 10,17,0,194.ftp-data > 10.17.0.170.49178; Flags[.],ack 5212
9,win 2641, options [nop,nop,TS val 1685696 ecr 535895],length 0
17:58:27.963220 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5212
3:50681, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963345 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5357
7:55025, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963377 IP 10,17,0,194.ftp-data > 10.17.0.170.49178; Flags[.],ack 5502
5,win 2641, options [nop,nop,TS val 1685696 ecr 535895],length 0
17:58:27.963468 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5502
5:56473, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963592 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5647
3:57921, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
17:58:27.963715 IP 10.17.0.170.49178 > 10.17.0.193.ftp-data: Flags [.], seg 5792
3:59369, ack 1, win 4163, options [nop,nop,TS val 535895 ecr 1685696], length 14
48
Dari Hasil diatas Merupakan Hasil capture file yang diletakan pada komputer server. “IP 10.17.0.193″ merupakan IP komputer server yang di setting sebelumnya.
“ftp-data > 10.17.0.170″ merupakan asal file “Doc1.doc” yang diletakan pada komputer server yaitu berasal dari komputer client dengan IP 10.17.0.170
Sekarang mari kita membahas mengenai hasil capture yang telah didapatkan. Atau dapat disebut sebagai header TCP IP
Baris 1, pada pukul 02:07:01: time stamp 962975
Client (10.17.0.170) merupakan source IP address yang melakukan koneksi ke Server (10.17.0.193) / destination address. Client mengirim kode ACK 1. 1 merupakan angka relatif setelah persiapan koneksi selesai. ACK 1 berarti client mengkonfirmasikan bahwa paket data nomor 1 dari Client diterima oleh Server (10.17.0.193). Win 4163 adalah Windows size nya. Selanjutnya 49233:50681 merupakan sequence number. Sedangkan length 1448 maksudnya adalah total panjang header dan panjang data yang dikirimkan sepanjang 1448. Pada baris pertama source portnya adalah 49178. Source port ini merupakan port asal yang digunakan untuk mentransfer data dari komputer client ke komputer server. Sedangkan destination port disini tidak didefinisikan, tetapi dilakukan melalui service tujuan berupa ftp-data.

Kesimpulan
Header pada TCP IP terdiri dari komponen berikut.
  • Source Port (16 bit)
Source port (port asal) merupakan port yang akan digunakan untuk melakukan koneksi ke host lain. Source port akan diberikan oleh sistem secara acak dengan nilai diatas 1023. Source port ini digunakan oleh host tujuan untuk membalas paket ke host yang melakukan request, sehingga host tujuan akan memberikan paket balasan ke servis yang tepat – tidak nyasar membalas paket ke service yang lain.
•  Destination Port (16 bit)
Destination port (port tujuan) merupakan port yang  akan dituju dalam sebuah koneksi, destination port terkait dengan servis apa yang tersedia di host  tujuan.
  • Sequence Number (32 bit)
Sequence number merupakan nomor urut paket dari  seluruh paket data. Ketika paket dikirimkan, maka setiap paket yang dikirim akan mendapat nomor urut. Paket data bisa saja sampai di tujuan dalam keadaan tidak berurut tergantung rute yang ditempuh dan kepadatan traffic nya, ketika sampai di host tujuan, paket data akan diurutkan kembali sehingga paket data dapat disusun kembali sehingga akan dihasilkan data seperti yang dikirimkan oleh host pengirim.

•  Acknowlegment Number (32 bit)
TCP merupakan protokol yang  connection oriented yang berarti bahwa TCP menjamin bahwa paket data sampai host tujuan dengan baik. Host asal tidak akan mengirimkan paket data ke host tujuan jika host asal belum menerima konfirmasi dari host tujuan bahwasanya nomor urut paket ke-n dari host asal silahkan dikirim ke host tujuan. Nomor urut paket ke-n yang dipersilahkan dikirim itulah yang disebut dengan ackownlegment number.
  • Data Offset (4 bit)
Header ini digunakan untuk menunjukkan awal  field  data, data offset berupa  jumlah 32 bit word dari header TCP
•  Reserved (6 bit)
Header cadangan. Header ini diset 0 pada host pengirim dan diabaikan oleh penerima.
•  Control Bit – URG (1 bit)
Jika kode ini diset (bernilai 1)  akan mengindikasikan sebagai data urgent yakni didahulukan dari data atau transmisi yang lain, sebagai contoh kondisi urgent ketika kita sedang proses download dengan FTP tetapi kita ingin membatalkannya dengan CTRL+C.
•  Control Bit – ACK (1 bit)
Jika kode ini diset akan mengindikasikan bahwa paket data yang akan boleh dikirimkan, nomor paket yang boleh dikimkan ini didefinisikan dalam header Acknowlegment Number.
•  Control  Bit- PSH(1 bit)
Jika kode ini diset akan mengubah mode tranmisi dengan mode push yaitu memflush data pada layer TCP, contoh mode push yaitu pada aplikasi telnet dimana telnet merupakan aplikasi interaktif
•  Control  Bit- RST (1 bit)
Kode ini digunakan jika koneksi akan direset yaitu membatalkan secara tiba-tiba, hal ini terjadi karena error dalam koneksi atau oleh interupsi yang lain.
•  Control  Bit- SYN (1 bit)
Kode ini digunakan jika akan memulai sebuah koneksi TCP (persiapan transmisi data pada TCP/IP) yaitu untuk mensinkronisasi sequence number .
•  Control  Bit- FYN (1 bit)
Code ini diset jika seluruh data sudah terkirim dan session  transmisi akan disudahi.
•  Window (16 bit)
Header ini menunjukkan jumlah blok data yang mampu diterima dalam satu kali transmisi, hal ini diperlukan agar semua data dapat di terima dengan sebaik-baiknya.
•  Checksum (16 bit)
Header ini digunakan untuk mengetahui apakah terjadi perubahan header dan data yang dikirimkan ketika proses transmisi.
•  Urgent Pointer (16 bit)
Header ini bermakna hanya jika URG pada Control Bit diset. Urgent Pointer menunjukkan lokasi data yang akan ditransmisikan dengan mode urgent
•  Option
Saat ini header ini terdapat 3 fungsi, yaitu untuk menunjukkan
•  End of option list
•  No operation
•  Maximum segment size
•  Padding
Digunakan untuk memenuhi panjang header merupakan kelipatan 32 bit. Jika terdapat header yang kurang, maka padding ditambahkan sampai berjumlah 32 bit.

0 komentar:

Posting Komentar