FTPd Murni adalah server FTP open-source gratis yang dirancang dengan mempertimbangkan keamanan. Dalam tutorial ini, kita akan mempelajari cara menyiapkan server FTP di Debian 10 dengan Pure-FTPd dan cara menerapkan enkripsi TLS.
Fitur FTPd Murni:
- Mendukung enkripsi SSL/TLS sehingga sandi dan perintah dapat dilindungi.
- Dapat berjalan di sebagian besar sistem mirip Unix:Linux, BSD, Solaris, Darwin, HPUX, AIX, dan bahkan iPhone.
- Tersedia dalam 21 bahasa.
- Memungkinkan Anda memantau sesi aktif.
- Mendukung sistem kuota virtual.
- Dan masih banyak lagi
Untuk daftar lengkap fitur, silakan kunjungi situs resmi Pure-FTPd.
Langkah 1:Instal Pure-FTPd di Server Debian 10
Itu ada di repositori perangkat lunak, jadi jalankan perintah berikut untuk menginstal server FTP.
sudo apt install pure-ftpd
Setelah terinstal, Pure-FTPd akan dijalankan secara otomatis, seperti yang dapat dilihat dengan perintah ini:
systemctl status pure-ftpd
Keluaran:
● pure-ftpd.service Loaded: loaded (/etc/init.d/pure-ftpd; generated) Active: active (running) since Wed 2021-06-16 13:15:52 UTC; 23s ago Docs: man:systemd-sysv-generator(8) Tasks: 1 (limit: 558) Memory: 972.0K CGroup: /system.slice/pure-ftpd.service └─9223 pure-ftpd (SERVER)
Jika tidak berjalan, beri bintang dengan:
sudo systemctl start pure-ftpd
Dan mendengarkan pada port TCP 21, yang merupakan port kontrol , seperti yang dapat dilihat dengan
sudo ss -lnpt | grep pure-ftpd
Port lainnya adalah port data (TCP port 20), yang akan digunakan saat pengguna mentransfer file melalui FTP.
Akses anonim dinonaktifkan secara default. Mulai sekarang Anda dapat menggunakan akun sistem Anda untuk masuk, tetapi FTP teks biasa tidak aman dan sangat tidak disarankan. Untuk memiliki server FTP yang aman, kita perlu mengenkripsi komunikasi dengan TLS.
Langkah 2:Terapkan Enkripsi TLS
Untuk mengaktifkan enkripsi teks biasa dan TLS, jalankan perintah berikut, yang membuat /etc/pure-ftpd/conf/TLS
file dan masukkan nomor 1 ke dalam file.
echo 1 | sudo tee /etc/pure-ftpd/conf/TLS
Tetapi disarankan untuk menonaktifkan teks biasa dan hanya menggunakan enkripsi TLS, jadi letakkan nomor 2 pada file sebagai gantinya.
echo 2 | sudo tee /etc/pure-ftpd/conf/TLS
Sekarang kami menerapkan TLS, kami perlu mendapatkan sertifikat TLS yang valid. Sertifikat yang ditandatangani sendiri tidak disarankan karena pengguna akan melihat pesan peringatan seperti tangkapan layar di bawah.
Langkah 3:Dapatkan Sertifikat TLS Tepercaya dari Let's Encrypt
Jalankan perintah berikut untuk menginstal klien Let's Encrypt (certbot) dari repositori default Debian 10.
sudo apt install certbot
Saya sarankan menggunakan standalone
atau webroot
plugin untuk mendapatkan sertifikat TLS untuk Pure-FTPd.
Plugin Mandiri
Jika tidak ada server web yang berjalan di server Debian 10 Anda, Anda dapat menggunakan plugin mandiri. Jalankan perintah berikut. Jangan lupa untuk mengatur catatan DNS A untuk sub-domain Anda.
sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d ftp.example.com
Dimana:
certonly
:Dapatkan sertifikat tetapi jangan menginstalnya.--standalone
:Gunakan plugin mandiri untuk mendapatkan sertifikat--preferred-challenges http
:Lakukan tantangan http-01 untuk memvalidasi domain kami, yang akan menggunakan port 80.--agree-tos
:Setuju dengan persyaratan layanan Let's Encrypt.--email
:Alamat email digunakan untuk pendaftaran dan pemulihan akun.-d
:Tentukan nama domain Anda.
Seperti yang Anda lihat dari tangkapan layar berikut, saya berhasil mendapatkan sertifikat.
Menggunakan Plugin webroot
Jika server Debian 10 Anda memiliki server web, sebaiknya gunakan plugin webroot untuk mendapatkan sertifikat karena plugin webroot berfungsi dengan hampir semua server web dan kita tidak perlu menginstal sertifikat di server web.
Pertama, Anda perlu membuat virtual host untuk ftp.example.com
.
Apache
Jika Anda menggunakan Apache, maka
sudo nano /etc/apache2/sites-available/ftp.example.com.conf
Dan rekatkan baris berikut ke dalam file.
<VirtualHost *:80> ServerName ftp.example.com DocumentRoot /var/www/Pure-FTPd </VirtualHost>
Simpan dan tutup file. Kemudian buat direktori root web.
sudo mkdir /var/www/Pure-FTPd
Tetapkan www-data (pengguna Apache) sebagai pemilik root web.
sudo chown www-data:www-data /var/www/Pure-FTPd -R
Aktifkan host virtual ini.
sudo a2ensite ftp.example.com
Muat ulang Apache agar perubahan diterapkan.
sudo systemctl reload apache2
Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan sertifikat Let's Encrypt menggunakan plugin webroot.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd
Nginx
Jika Anda menggunakan Nginx, maka
sudo nano /etc/nginx/conf.d/ftp.example.com.conf
Rekatkan baris berikut ke dalam file.
server { listen 80; listen [::]:80; server_name ftp.example.com; root /var/www/Pure-FTPd/; location ~ /.well-known/acme-challenge { allow all; } }
Simpan dan tutup file. Kemudian buat direktori root web.
sudo mkdir -p /var/www/Pure-FTPd
Tetapkan www-data (pengguna Nginx) sebagai pemilik root web.
sudo chown www-data:www-data /var/www/Pure-FTPd -R
Muat ulang Nginx agar perubahan diterapkan.
sudo systemctl reload nginx
Setelah virtual host dibuat dan diaktifkan, jalankan perintah berikut untuk mendapatkan sertifikat Let's Encrypt menggunakan plugin webroot.
sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd
Langkah 4:Instal Sertifikat
Pure-FTPd mengharuskan sertifikat dan kunci pribadi digabungkan menjadi satu file bernama pure-ftpd.pem
dan disimpan di bawah /etc/ssl/private/
direktori.
Ubah ke /etc/letsencrypt/live/ftp.example.com/
direktori.
sudo su - cd /etc/letsencrypt/live/ftp.example.com/
Anda dapat menggunakan cat
perintah untuk menggabungkan dua file menjadi satu seperti di bawah ini.
cat fullchain.pem privkey.pem | sudo tee /etc/ssl/private/pure-ftpd.pem
Pastikan hanya pengguna root yang dapat membaca file.
sudo chmod 600 /etc/ssl/private/pure-ftpd.pem
Kita perlu membuat parameter Diffie-Hellman dengan:
sudo openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 4096
Jika server Anda memiliki satu inti CPU, ini akan memakan waktu lama (sekitar 10 menit).
Setelah selesai, mulai ulang Pure-FTPd.
sudo systemctl restart pure-ftpd
Periksa statusnya untuk melihat apakah itu berjalan.
systemctl status pure-ftpd
Sekarang Anda dapat terhubung ke server FTP Anda melalui TLS.
Langkah 5:Buka Port FTP di Firewall
Jika Anda menggunakan firewall UFW, jalankan perintah berikut untuk membuka port TCP 20 dan 21.
sudo ufw allow 20,21/tcp
Langkah 6:Hubungkan ke Server FTP
Jika Anda menggunakan Nautilus pengelola file untuk terhubung ke server FTP melalui teks biasa ftp://
protokol
Sambungan akan ditolak.
Alih-alih ftp://
, Anda harus menggunakan ftps://
.
Secara default, pengguna FTP akan dibawa ke /
direktori root di server.
Harap perhatikan bahwa Filezilla tidak mempercayai sertifikat apa pun (ditandatangani sendiri atau ditandatangani CA) secara default. Pengguna harus memilih untuk memercayai sertifikat untuk diri mereka sendiri.
FileZilla Peringatan Sertifikat Tidak Dikenal
Dan Anda perlu menggunakan protokol TLS eksplisit FTP (ftpes://ftp.example.com
) di Filezilla.
Perpanjang Otomatis Sertifikat TLS
Anda dapat membuat pekerjaan Cron untuk memperbarui sertifikat TLS secara otomatis. Cukup buka file crontab pengguna root.
sudo crontab -e
Tambahkan baris berikut di bagian bawah file.
@daily certbot renew --quiet && cd /etc/letsencrypt/live/ftp.example.com/ && cat fullchain.pem privkey.pem | tee /etc/ssl/private/pure-ftpd.pem && systemctl reload pure-ftpd
Perlu memuat ulang pure-ftpd
untuk membuatnya mengambil sertifikat dan kunci pribadi baru.