Cara Install dan Konfigurasi FTP Server di Ubuntu


FTP (File Transfer Protocol) adalah protokol jaringan standar yang relatif lama dan paling banyak digunakan untuk mengunggah/mengunduh file antara dua komputer melalui jaringan. Namun, FTP aslinya tidak aman, karena mengirimkan data bersama dengan kredensial pengguna (nama pengguna dan kata sandi) tanpa enkripsi.

Peringatan: Jika Anda berencana menggunakan FTP, pertimbangkan untuk mengonfigurasi koneksi FTP dengan SSL/TLS (akan dibahas di artikel selanjutnya). Jika tidak, lebih baik menggunakan FTP aman seperti SFTP.

Saran Baca: Cara Memasang dan Mengamankan Server FTP di CentOS 7

Dalam tutorial ini, kami akan menunjukkan cara memasang, mengonfigurasi, dan mengamankan server FTP (VSFTPD secara lengkap “Daemon FTP Sangat Aman”) di Ubuntu memiliki keamanan yang kuat terhadap kerentanan FTP.

Langkah 1: Menginstal Server VsFTP di Ubuntu

1. Pertama, kita perlu memperbarui daftar sumber paket sistem dan kemudian menginstal paket biner VSFTPD sebagai berikut:

sudo apt-get update
sudo apt-get install vsftpd

2. Setelah instalasi selesai, layanan akan dinonaktifkan pada awalnya, oleh karena itu, kita perlu memulainya secara manual untuk sementara waktu dan juga mengaktifkannya untuk memulai secara otomatis dari boot sistem berikutnya:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Selanjutnya, jika Anda mengaktifkan firewall UFW (tidak diaktifkan secara default) di server, Anda harus membuka port 21 dan 20 tempat daemon FTP mendengarkan, untuk mengizinkan akses ke layanan FTP dari mesin jarak jauh, tambahkan aturan firewall baru sebagai berikut:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Langkah 2: Mengonfigurasi dan Mengamankan Server VsFTP di Ubuntu

4. Sekarang mari kita lakukan beberapa konfigurasi untuk menyiapkan dan mengamankan server FTP kita, pertama kita akan membuat cadangan file konfigurasi asli /etc/vsftpd/vsftpd.conf seperti Jadi:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Selanjutnya, buka file konfigurasi vsftpd.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Tambahkan/ubah opsi berikut dengan nilai-nilai ini:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Sekarang, konfigurasikan VSFTPD untuk mengizinkan/menolak akses FTP bagi pengguna berdasarkan file daftar pengguna /etc/vsftpd.userlist.

Perhatikan bahwa secara default, pengguna yang terdaftar di userlist_file=/etc/vsftpd.userlist ditolak akses masuknya dengan opsi userlist_deny=YES jika userlist_enable=YES .

Namun, opsi userlist_deny=NO memutarbalikkan arti dari pengaturan default, sehingga hanya pengguna yang nama penggunanya tercantum secara eksplisit di userlist_file=/etc/vsftpd.userlist yang akan diizinkan untuk masuk ke server FTP.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Penting: Ketika pengguna login ke server FTP, mereka ditempatkan di jail yang di-chroot, ini adalah direktori root lokal yang akan bertindak sebagai direktori home mereka untuk sesi FTP hanya.

Selanjutnya, kita akan melihat dua kemungkinan skenario bagaimana mengatur direktori chroot jail (root lokal), seperti yang dijelaskan di bawah ini.

6. Pada titik ini, mari tambahkan/modifikasi/batalkan komentar pada dua opsi berikut untuk membatasi pengguna FTP ke direktori Beranda mereka.

chroot_local_user=YES
allow_writeable_chroot=YES

Opsi chroot_local_user=YES yang penting berarti pengguna lokal akan ditempatkan di chroot jail, direktori home mereka secara default setelah login.

Dan kita juga harus memahami bahwa VSFTPD tidak mengizinkan direktori chroot jail dapat ditulis, secara default karena alasan keamanan, namun, kita dapat menggunakan opsi allow_writeable_chroot=YES untuk menonaktifkan pengaturan ini.

Simpan file dan tutup. Kemudian kita harus me-restart layanan VSFTPD agar perubahan di atas dapat diterapkan:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Langkah 3: Menguji Server VsFTP di Ubuntu

7. Sekarang kita akan menguji server FTP dengan membuat pengguna FTP dengan perintah useradd sebagai berikut:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Kemudian, kita harus secara eksplisit mencantumkan pengguna aaronkilik di file /etc/vsftpd.userlist dengan perintah echo dan perintah tee seperti di bawah ini:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Sekarang saatnya menguji apakah konfigurasi kami di atas berfungsi sesuai kebutuhan. Kami akan mulai dengan menguji login anonim; kita dapat melihat dengan jelas dari keluaran di bawah ini bahwa login anonim tidak diizinkan di server FTP:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Selanjutnya, mari kita uji apakah pengguna yang tidak tercantum dalam file /etc/vsftpd.userlist akan diberikan izin untuk masuk, yang tidak benar dari output berikut :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Sekarang kita akan melakukan tes akhir untuk menentukan apakah pengguna yang terdaftar dalam file /etc/vsftpd.userlist, benar-benar ditempatkan di direktori home-nya setelah itu Gabung. Dan ini benar dari keluaran di bawah ini:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Peringatan: Menyetel opsi allow_writeable_chroot=YES bisa sangat berbahaya, hal ini mungkin berdampak pada keamanan, terutama jika pengguna memiliki izin mengunggah, atau terlebih lagi, akses shell. Gunakan hanya jika Anda benar-benar tahu apa yang Anda lakukan.

Kita harus mencatat bahwa implikasi keamanan ini tidak spesifik untuk VSFTPD, mereka juga dapat mempengaruhi semua daemon FTP lain yang menawarkan untuk menempatkan pengguna lokal di penjara chroot.

Karena alasan ini, pada bagian di bawah ini, kami akan menjelaskan metode yang lebih aman dalam menyetel direktori root lokal berbeda yang tidak dapat ditulis untuk pengguna.

Langkah 4: Konfigurasikan Direktori Beranda Pengguna FTP di Ubuntu

11. Sekarang, buka file konfigurasi VSFTPD sekali lagi.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

dan beri komentar pada opsi tidak aman menggunakan karakter # seperti yang ditunjukkan di bawah ini:

#allow_writeable_chroot=YES

Selanjutnya, buat direktori root lokal alternatif untuk pengguna tersebut (aaronkilik, milik Anda mungkin tidak sama) dan atur izin yang diperlukan dengan menonaktifkan izin menulis untuk semua pengguna lain di direktori ini:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Kemudian, buat direktori di bawah root lokal dengan izin yang sesuai di mana pengguna akan menyimpan filenya:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Setelah itu, tambahkan/ubah opsi di bawah ini pada file konfigurasi VSFTPD dengan nilainya yang sesuai:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Simpan file dan tutup. Dan restart layanan VSFTPD dengan pengaturan terbaru:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Sekarang, mari kita lakukan pemeriksaan terakhir dan pastikan bahwa direktori root lokal pengguna adalah direktori FTP yang kita buat di direktori Home miliknya.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Itu dia! Ingatlah untuk membagikan pendapat Anda tentang panduan ini melalui formulir komentar di bawah atau mungkin memberi kami informasi penting mengenai topik tersebut.

Yang terakhir, jangan lewatkan artikel kami berikutnya, dimana kami akan menjelaskan cara mengamankan server FTP menggunakan koneksi SSL/TLS di Ubuntu 16.04/16.10, sampai saat itu, pantau terus TecMint.