Panduan Membangun Server FTP menggunakan vsFTPd pada Linux Centos 5.3
Oleh I Putu Hariyadi, S.Kom, CCNA
Pusat Teknologi Informasi & Komunikasi (PusTIK)
STMIK Bumigora Mataram
Langkah-langkah instalasi & konfigurasi VSFTPD
- Memverifikasi paket aplikasi vsftpd telah terinstall atau belum:[root@arjuna ~]# rpm -qa | grep vsftpd
[root@arjuna ~]#
- Instalasi paket aplikasi vsftpd:[root@arjuna ~]# rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm
warning: vsftpd-2.0.5-12.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
Preparing… ########################################### [100%]
1:vsftpd ########################################### [100%]
- Memverifikasi instalasi paket aplikasi vsftpd:[root@arjuna ~]# rpm -qa | grep vsftpd
vsftpd-2.0.5-12.el5
[root@arjuna ~]#
- Memverifikasi status service vsftpd:[root@arjuna ~]# service vsftpd status
vsftpd is stopped
- Mengaktifkan service vsftpd:[root@arjuna ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
- Memverifikasi status service vsftpd:[root@arjuna ~]# service vsftpd status
vsftpd (pid 6356) is running…
[root@arjuna ~]#
- Uji coba layanan Server FTP melalui localhost[root@arjuna ~]# ftp localhost
Connected to arjuna.stmikbumigora.intra.net.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,221,18)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 May 24 2008 pub
226 Directory send OK.
ftp> quit
221 Goodbye.
[root@arjuna ~]#
- Konfigurasi file vsftpd.conf:
- Berpindah ke lokasi direktori penyimpanan file konfigurasi menggunakan perintah “cd”:[root@arjuna ~]# cd /etc/vsftpd/
- Menampilkan isi direktori menggunakan perintah “ls”:[root@arjuna vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
- Membackup file konfigurasi vsftpd.conf menggunakan perintah “cp”:[root@arjuna vsftpd]# cp vsftpd.conf vsftpd.conf.backup
- Mengubah konfigurasi file vsftpd.conf menggunakan editor “nano”: [root@arjuna vsftpd]# nano vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd’s
# capabilities.
#
# Allow anonymous FTP? (Beware – allowed by default if you comment this out).
# Mengijinkan anonymous FTP
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
# Mengijinkan user local Linux untuk login melalui FTP
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd’s)
# Mengatur default ijin akses
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# Digunakan untuk mengijinkan user anonymous untuk mengupload file ke Server FTP
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
# Digunakan untuk mengijinkan user anonymous untuk membuat direktori di Server FTP
#anon_mkdir_write_enable=YES
#
# Activate directory messages – messages given to remote users when they
# go into a certain directory.
# Digunakan untuk menampilkan pesan direktori kepada pengguna remote ketika masuk ke dalam direktori tertentu.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
# Mengaktifkan log untuk aktivitas upload dan download
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# Memastikan agar port yang digunakan untuk koneksi transfer data berasal dari port 20
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using “root” for uploaded files is not
# recommended!
# Mengatur kepemilikan file yang diupload oleh user anonymous
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
# Mengatur lokasi penyimpanan file log Server FTP
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
# Mengatur format log Server FTP
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
# Mengatur timeout untuk sesi pengguna FTP yang idle, defaultnya 300 detik
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
# Mengatur timeout untuk koneksi data, defaultnya 300 detik
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
# Mendefinisikan user yang unik dimana server FTP dapat menggunakannya
# sebagai user yang terisolasi secara keseluruhan dan user yang tidak
# memiliki privilege
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
# Mengaktifkan permintaan asynchronous ABOR
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command “SIZE /big/file” in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#
# Secara default server akan berpura-pura untuk mengijinkan mode ASCII tetapi # pada kenyataannya mengabaikan permintaannya. Aktifkan parameter berikut
# agar server FTP melakukan ASCII mangling pada file-file dalam mode ASCII
# Hati-hati, pada beberapa server FTP, dukungan ASCII memungkinkan terjadinya # Denial of Service Attack (DoS)
# ASCII mangling merupakan fitur yang mengerikan dari protocol
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
# Mengatur pesan login ke Server FTP
ftpd_banner=Selamat Datang di Server FTP Hotspot STMIK Bumigora Mataram.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
# Mengatur alamat-alamat email yang tidak diijinkan sebagai alamat email
# anonymous
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# Menentukan user-user local ke mode chroot pada masing-masing home direktori # mereka. Chroot bertujuan untuk menjalankan perintah atau shell interactive # dengan root directory special
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the “-R” option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as “ncftp” and “mirror” assume
# the presence of the “-R” option, so there is a strong case for enabling it.
# Mengaktifkan fitur recursive pada perintah ls
#ls_recurse_enable=YES
#
# When “listen” directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
# Mengaktifkan FTP untuk socket IPv4
listen=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
# Mengaktifkan FTP untuk socket IPv6
#listen_ipv6=YES
# Pluggable Authentication Module (PAM) digunakan untu mengatur
# library-library dari system yang digunakan untuk mengatur otentikasi
pam_service_name=vsftpd
# Mengatur daftar user-user yang ditentukan oleh parameter userlist_file,
# dimana jika user tersebut mencoba melakukan login akan ditolak sebelum
# ditanya password.
userlist_enable=YES
# TCP Wrappers digunakan untuk memonitor dan memfilter permintaan yang masuk
# untuk layanan-layanan jaringan seperti SYSTAT, FINGER, FTP, TELNET, RLOGIN,
# RSH, EXEC, TFTP, TALK.
tcp_wrappers=YES
- Me-restart service ftpd:[root@arjuna ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
- Memverifikasi status service vsftpd:[root@arjuna ~]# service vsftpd status
vsftpd (pid 16998) is running…
[root@arjuna ~]#
STUDI KASUS
Studi Kasus I: Membuat User Lokal di Linux untuk digunakan sebagai Login User pada Server FTP
Langkah-langkah membuat user lokal sebagai login user pada Server FTP:
- Membuat user lokal di Linux menggunakan perintah “useradd namauser”:[root@arjuna ~]# useradd ngoprek
- Mengatur password untuk user lokal yang dibuat pada langkah sebelumnya menggunakan perintah “passwd namauser”:[root@arjuna ~]# passwd ngoprek
Changing password for user ngoprek.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
- Berpindah user dari user “root” ke user yang baru dibuat menggunakan perintah “su -“:[root@arjuna ~]# su – ngoprek
- Menampilkan informasi saat ini login sebagai user siapa menggunakan perintah “whoami”:[ngoprek@arjuna ~]$ whoami
ngoprek
- Menampilkan informasi lokasi directory dimana saat ini berada menggunakan perintah “pwd”:[ngoprek@arjuna ~]$ pwd
/home/ngoprek
- Membuat file teks menggunakan editor “nano”:[ngoprek@arjuna ~]$ nano dokumen.txt
- Menampilkan isi dari direktori dimana saat ini berada menggunakan perintah “ls”:[ngoprek@arjuna ~]$ ls
dokumen.txt
- Menampilkan isi dari file teks yang dibuat pada langkah sebelumnya menggunakan perintah “cat”:[ngoprek@arjuna ~]$ cat dokumen.txt
Ini file buatan user ngoprek bro!!!
- Keluar dari user “ngoprek” menggunakan perintah “exit”:[ngoprek@arjuna ~]$ exit
Logout
- Uji coba layanan FTP menggunakan login user local Linux:C:\>ftp 172.16.249.3
Connected to 172.16.249.3.
220 (vsFTPd 2.0.5)
User (172.16.249.3:(none)): ngoprek
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/ngoprek
Connection closed by remote host.
Studi Kasus II: Mengaktifkan Parameter ftp_home_dir pada SELinux
Langkah-langkah untuk mengaktifkan parameter ftp_home_dir pada SELinux agar user yang login melalui FTP dapat mengakses home directorynya masing-masing:
- Menampilkan konfigurasi parameter ftp_home_dir menggunakan perintah “getsebool”:[root@arjuna ~]# getsebool -a | grep ftp_home_dir
ftp_home_dir –> off
- Mengaktifkan konfigurasi parameter ftp_home_dir menggunakan perintah “setsebool”: [root@arjuna ~]# setsebool -P ftp_home_dir=on
- Memverifikasi konfigurasi parameter ftp_home_dir menggunakan perintah “getsebool”:[root@arjuna ~]# getsebool -a | grep ftp_home_dir
ftp_home_dir –> on
- Uji coba layanan FTP menggunakan login user local Linux yang telah dibuat pada studi kasus sebelumnya:C:\>ftp 172.16.249.3
Connected to 172.16.249.3.
220 (vsFTPd 2.0.5)
User (172.16.249.3:(none)): ngoprek
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
dokumen.txt
226 Directory send OK.
ftp: 14 bytes received in 0.02Seconds 0.88Kbytes/sec.
ftp> quit
Studi Kasus III: Menonaktifkan Anonymous FTP
Langkah-langkah menonaktifkan anonymous FTP:
- Mengubah parameter anonymous_enable=YES menjadi anonymous_enable=NO pada file konfigurasi vsftpd.conf di direktori /etc/vsftpd menggunakan editor “nano”:[root@arjuna vsftpd]# nano vsftpd.conf
- Me-restart service vsftpd:[root@arjuna vsftpd]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
- Uji coba layanan FTP menggunakan login user anonymousC:\>ftp 172.16.249.3
Connected to 172.16.249.3.
220 (vsFTPd 2.0.5)
User (172.16.249.3:(none)): anonymous
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> quit
221 Goodbye.
Studi Kasus IV: Membuat Group dari User-user FTP dengan hak akses berbagi pakai sebuah direktori
Langkah-langkah membuat group dari user-user FTP dengan hak akses berbagi pakai sebuah direktori:
- Membuat group menggunakan perintah “groupadd namagroup”:[root@arjuna vsftpd]# groupadd akademik
- Membuat homedirectory bagi group menggunakan perintah “mkdir namadirectory”:[root@arjuna vsftpd]# mkdir /home/akademik
- Mengatur ijin akses homedirectory menggunakan perintah “chmod”:[root@arjuna vsftpd]# chmod 770 /home/akademik
- Mengubah kepemilikan homedirectory menggunakan perintah “chown”:[root@arjuna vsftpd]# chown root:akademik /home/akademi
- Membuat user sebagai anggota dari group yang telah dibuat menggunakan perintah “useradd”:[root@arjuna vsftpd]# useradd -g akademik -d /home/akademik luna
[root@arjuna vsftpd]# useradd -g akademik -d /home/akademik maya
[root@arjuna vsftpd]# useradd -g akademik -d /home/akademik siska
- Mengatur password masing-masing user menggunakan perintah “passwd”:[root@arjuna vsftpd]# passwd luna
Changing password for user luna.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@arjuna vsftpd]# passwd siska
Changing password for user siska.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@arjuna vsftpd]# passwd maya
Changing password for user maya.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
- Berpindah user menggunakan perintah “su -“:[root@arjuna vsftpd]# su – luna
-bash-3.2$ pwd
/home/akademik
- Uji coba layanan FTP menggunakan login user yang dibuat pada langkah sebelumnya:C:\>ftp 172.16.249.3
Connected to 172.16.249.3.
220 (vsFTPd 2.0.5)
User (172.16.249.3:(none)): luna
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
luna.txt
maya.txt
siska.txt
226 Directory send OK.
ftp: 31 bytes received in 0.03Seconds 0.97Kbytes/sec.
ftp> get maya.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for maya.txt (31 bytes).
226 File send OK.
ftp: 31 bytes received in 0.00Seconds 31000.00Kbytes/sec.
ftp> quit
221 Goodbye.