Cara Menginstal, Mengonfigurasi, dan Mengamankan Server FTP di CentOS 7 - [Panduan Komprehensif]


FTP (File Transfer Protocol) adalah alat standar tradisional dan banyak digunakan untuk mentransfer file antara server dan klien melalui jaringan, terutama ketika tidak diperlukan autentikasi (mengizinkan pengguna anonim untuk terhubung ke server). Kita harus memahami bahwa FTP tidak aman secara default, karena ia mengirimkan kredensial pengguna dan data tanpa enkripsi.

Dalam panduan ini, kami akan menjelaskan langkah-langkah untuk menginstal, mengkonfigurasi, dan mengamankan server FTP (VSFTPD adalah singkatan dari “Very Secure FTP Daemon”) di CentOS distribusi /RHEL 7 dan Fedora.

Perhatikan bahwa semua perintah dalam panduan ini akan dijalankan sebagai root, jika Anda tidak mengoperasikan server dengan akun root, gunakan perintah sudo untuk mendapatkan hak akses root.

Langkah 1: Menginstal Server FTP

1. Menginstal server vsftpd sangatlah mudah, cukup jalankan perintah berikut di terminal.

yum install vsftpd

2. Setelah instalasi selesai, layanan akan dinonaktifkan terlebih dahulu, jadi kita perlu memulainya secara manual untuk sementara waktu dan mengaktifkannya untuk memulai secara otomatis dari boot sistem berikutnya juga:

systemctl start vsftpd
systemctl enable vsftpd

3. Selanjutnya, untuk mengizinkan akses ke layanan FTP dari sistem eksternal, kita harus membuka port 21, tempat daemon FTP mendengarkan sebagai berikut:

firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload

Langkah 2: Mengonfigurasi Server FTP

4. Sekarang kita akan melanjutkan untuk melakukan beberapa konfigurasi untuk menyiapkan dan mengamankan server FTP kita, mari kita mulai dengan membuat cadangan file konfigurasi asli /etc/vsftpd/vsftpd.conf :

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

Selanjutnya, buka file konfigurasi di atas dan atur opsi berikut dengan nilai yang sesuai:

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 FTP untuk mengizinkan/menolak akses FTP ke pengguna berdasarkan file daftar pengguna /etc/vsftpd.userlist.

Secara default, pengguna yang terdaftar di userlist_file=/etc/vsftpd.userlist ditolak akses masuknya dengan opsi userlist_deny disetel ke YES, jika userlist_enable=YA.

Namun, userlist_deny=NO mengubah pengaturan, artinya hanya pengguna yang secara eksplisit terdaftar di userlist_file=/etc/vsftpd.userlist yang akan diizinkan untuk masuk.

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   

Bukan itu saja, 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 saja.

Selanjutnya, kita akan melihat dua kemungkinan skenario bagaimana cara melakukan chroot pengguna FTP ke direktori Home direktori (root lokal) untuk pengguna FTP, seperti yang dijelaskan di bawah ini.

6. Sekarang tambahkan dua opsi berikut untuk membatasi pengguna FTP ke direktori Beranda mereka.

chroot_local_user=YES
allow_writeable_chroot=YES

chroot_local_user=YES berarti pengguna lokal akan ditempatkan di chroot jail, direktori home mereka setelah login dengan pengaturan default.

Dan juga secara default, vsftpd tidak mengizinkan direktori chroot jail dapat ditulisi karena alasan keamanan, namun, kita dapat menggunakan opsi allow_writeable_chroot=YES untuk mengesampingkan pengaturan ini.

Simpan file dan tutup.

Mengamankan Server FTP dengan SELinux

7. Sekarang, mari kita atur boolean SELinux di bawah ini agar FTP dapat membaca file di direktori home pengguna. Perhatikan bahwa ini awalnya dilakukan dengan menggunakan perintah:

setsebool -P ftp_home_dir on

Namun, direktif ftp_home_dir telah dinonaktifkan secara default seperti yang dijelaskan dalam laporan bug ini: https://bugzilla.redhat.com/show_bug.cgi?id=1097775.

Sekarang kita akan menggunakan perintah semanage untuk menetapkan aturan SELinux agar memungkinkan FTP membaca/menulis direktori home pengguna.

semanage boolean -m ftpd_full_access --on

Pada titik ini, kita harus me-restart vsftpd untuk menerapkan semua perubahan yang kita buat sejauh ini di atas:

systemctl restart vsftpd

Langkah 4: Menguji Server FTP

8. Sekarang kita akan menguji server FTP dengan membuat pengguna FTP dengan perintah useradd.

useradd -m -c “Ravi Saive, CEO” -s /bin/bash ravi
passwd ravi

Setelah itu, kita harus menambahkan pengguna ravi ke file /etc/vsftpd.userlist menggunakan perintah echo sebagai berikut:

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

9. Sekarang saatnya menguji apakah setelan di atas berfungsi dengan benar. Mari kita mulai dengan menguji login anonim, kita dapat melihat dari cuplikan layar di bawah bahwa login anonim tidak diizinkan:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : anonymous
530 Permission denied.
Login failed.
ftp>

10. Mari kita uji juga apakah pengguna yang tidak tercantum dalam file /etc/vsftpd.userlist akan diberikan izin untuk masuk, yang tidak terjadi seperti pada cuplikan layar di bawah:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : aaronkilik
530 Permission denied.
Login failed.
ftp>

11. Sekarang lakukan pemeriksaan terakhir apakah pengguna yang terdaftar dalam file /etc/vsftpd.userlist, benar-benar ditempatkan di direktori home-nya setelah login:

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

Aktifkan opsi ini hanya jika Anda tahu persis apa yang Anda lakukan. Penting untuk dicatat bahwa implikasi keamanan ini tidak spesifik untuk vsftpd, namun berlaku untuk semua daemon FTP yang menawarkan untuk memasukkan pengguna lokal ke dalam chroot jail juga.

Oleh karena itu, kita akan melihat cara yang lebih aman untuk mengatur direktori root lokal yang tidak dapat ditulis di bagian selanjutnya.

Langkah 5: Konfigurasikan Direktori Beranda Pengguna FTP yang Berbeda

12. Buka kembali file konfigurasi vsftpd dan mulailah dengan memberi komentar pada opsi tidak aman di bawah:

#allow_writeable_chroot=YES

Kemudian buat direktori root lokal alternatif untuk pengguna tersebut (ravi, milik Anda mungkin berbeda) dan hapus izin menulis untuk semua pengguna di direktori ini:

mkdir /home/ravi/ftp
chown nobody:nobody /home/ravi/ftp
chmod a-w /home/ravi/ftp

13. Selanjutnya, buat direktori di bawah root lokal tempat pengguna akan menyimpan filenya:

mkdir /home/ravi/ftp/files
chown ravi:ravi  /home/ravi/ftp/files
chmod 0700 /home/ravi/ftp/files/

Kemudian tambahkan/modifikasi opsi berikut di file konfigurasi vsftpd dengan nilai berikut:

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. Sekali lagi, mari mulai ulang layanan dengan pengaturan baru:

systemctl restart vsftpd

14. Sekarang lakukan tes terakhir lagi dan lihat bahwa direktori root lokal pengguna adalah direktori FTP yang kita buat di direktori home-nya.

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

Itu dia! Pada artikel ini, kami menjelaskan cara menginstal, mengkonfigurasi, serta mengamankan server FTP di CentOS 7, gunakan bagian komentar di bawah untuk menulis kembali kepada kami mengenai panduan ini/berbagi informasi berguna tentang topik ini.

Bacaan yang Disarankan: Instal Server ProFTPD di RHEL/CentOS 7

Pada artikel selanjutnya, kami juga akan menunjukkan cara mengamankan server FTP menggunakan koneksi SSL/TLS di CentOS 7, hingga saat itu, tetap terhubung ke TecMint.