FTP, singkatan dari File Transfer Protocol, adalah protokol jaringan yang dulunya banyak digunakan untuk memindahkan file antara client dan server. Sejak itu telah diganti dengan cara yang lebih cepat, lebih aman, dan lebih mudah dalam mengirimkan file. Banyak pengguna internet biasa yang ingin mendownload langsung dari browser web mereka dengan https, dan pengguna command-line lebih cenderung menggunakan protokol aman seperti scp atau sFTP.

FTP masih digunakan untuk mendukung aplikasi lawas dan alur kerja dengan kebutuhan yang sangat spesifik. Jika Anda memiliki pilihan protokol apa yang akan digunakan, pertimbangkan untuk mengeksplorasi pilihan yang lebih modern. Bila Anda membutuhkan FTP, bagaimanapun, vsftpd adalah pilihan yang sangat baik. Dioptimalkan untuk keamanan, kinerja, dan stabilitas, vsftpd menawarkan perlindungan yang kuat terhadap banyak masalah keamanan yang ditemukan di server FTP lain dan merupakan default untuk banyak distribusi Linux.


Dalam tutorial ini, kita akan menunjukkan cara mengkonfigurasi vsftpd agar pengguna dapat mengunggah file ke direktori rumahnya menggunakan FTP dengan kredensial masuk yang dijamin oleh SSL / TLS.

Prasyarat
Untuk mengikuti tutorial ini Anda akan memerlukan:


  • Server Ubuntu 16.04 dengan pengguna non-root dengan hak istimewa sudo: Anda dapat mempelajari lebih lanjut tentang cara menyiapkan pengguna dengan hak istimewa ini di Setup Server Awal kita dengan panduan Ubuntu 16.04.

Setelah Anda memiliki server Ubuntu di tempat, Anda siap untuk memulai.



Langkah 1 - Memasang vsftpd

Kita akan mulai dengan memperbarui daftar paket Anda dan menginstal daemon vsftpd:
$ sudo apt-get update $ sudo apt-get install vsftpd
Saat penginstalan selesai, kita akan menyalin file konfigurasi agar kita bisa memulai dengan konfigurasi kosong, menyimpan yang asli sebagai backup.
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Dengan cadangan konfigurasi di tempat, maka kita siap untuk mengkonfigurasi firewall.


Langkah 2 - Membuka Firewall

Kita akan memeriksa status firewall untuk melihat apakah itu diaktifkan. Jika demikian, kita akan memastikan bahwa lalu lintas FTP diizinkan sehingga Anda tidak akan mematuhi peraturan firewall yang menghalangi Anda saat tiba saatnya untuk melakukan pengujian.
$ sudo ufw status
Dalam kasus ini, hanya SSH yang diperbolehkan melalui:


Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Anda mungkin memiliki peraturan lain di tempat atau tidak ada aturan firewall sama sekali. Karena hanya lalu lintas ssh diizinkan dalam kasus ini, kita perlu menambahkan aturan untuk lalu lintas FTP.

Kita perlu membuka port 20 dan 21 untuk FTP, port 990 untuk nanti bila kita mengaktifkan TLS, dan port 40000-50000 untuk kisaran port pasif yang akan kita tetapkan dalam file konfigurasi:

$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp $ sudo ufw allow 990/tcp $ sudo ufw allow 40000:50000/tcp $ sudo ufw status
Sekarang aturan firewall kita terlihat seperti:


Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
Dengan perubahan vsftpd dan port yang diperlukan terbuka, kita siap melanjutkan ke langkah berikutnya.


Langkah 3 - Mempersiapkan Direktori Pengguna
Untuk tutorial ini, kita akan membuat user, tapi Anda mungkin sudah memiliki pengguna yang membutuhkan akses FTP. Kita akan berhati-hati untuk melestarikan akses pengguna yang ada ke data mereka sesuai petunjuk berikut. Meski begitu, sebaiknya Anda mulai dengan pengguna baru sampai Anda mengonfigurasi dan menguji penyiapan Anda.

Pertama, kita akan menambahkan pengguna uji coba:
$ sudo adduser sammy
Tetapkan password saat diminta dan jangan ragu untuk menekan "ENTER" melalui perintah lainnya.

FTP umumnya lebih aman saat pengguna dibatasi ke direktori tertentu. Vsftpd menyelesaikan ini dengan chroot jails. Saat chroot diaktifkan untuk pengguna lokal, mereka dibatasi ke direktori home mereka secara default. Namun, karena cara membagi direktori
vsftpd, itu tidak boleh bisa ditulis oleh pengguna. Ini baik untuk pengguna baru yang seharusnya hanya terhubung melalui FTP, namun pengguna yang ada mungkin perlu menulis ke folder asal mereka jika mereka juga mengakses shell.

Dalam contoh ini, daripada menghapus hak tulis dari direktori home, kita akan membuat direktori
ftp untuk berfungsi sebagai direktori file chroot dan writable untuk menyimpan file yang sebenarnya.

Buat folder
ftp, tetapkan kepemilikannya, dan pastikan untuk menghapus hak akses tulis dengan perintah berikut:
$ sudo mkdir /home/sammy/ftp $ sudo chown nobody:nogroup /home/sammy/ftp $ sudo chmod a-w /home/sammy/ftp
Mari verifikasi izin:
$ sudo ls -la /home/sammy/ftp
Output
total 8 4 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 . 4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..
Selanjutnya, kita akan membuat direktori dimana file dapat diupload dan memberikan kepemilikan kepada pengguna:
$ sudo mkdir /home/sammy/ftp/files $ sudo chown sammy:sammy /home/sammy/ftp/files
Sebuah izin memeriksa direktori files harus mengembalikan yang berikut ini:
$ sudo ls -la /home/sammy/ftp
Akhirnya, kita akan menambahkan file test.txt untuk digunakan saat kita menguji nanti:
$ echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt
Sekarang setelah kita mengamankan direktori ftp dan mengizinkan akses pengguna ke direktori files, kita akan mengalihkan perhatian kita ke konfigurasi.


Langkah 4 - Mengkonfigurasi Akses FTP
Kita berencana mengizinkan satu pengguna dengan akun shell lokal untuk terhubung dengan FTP. Dua pengaturan kunci untuk ini sudah diatur dalam vsftpd.conf. Mulailah dengan membuka file konfigurasi untuk memverifikasi bahwa pengaturan dalam konfigurasi Anda cocok dengan yang di bawah ini:
$ sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf
. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES . . .
Selanjutnya kita perlu mengubah beberapa nilai dalam file. Agar pengguna dapat mengunggah file, kita akan memberi tanda komentar pada setelan write_enable sehingga kita memiliki:


/etc/vsftpd.conf
. . . write_enable=YES . . .
Kita juga akan memberi tanda komentar pada chroot untuk mencegah pengguna yang terhubung FTP mengakses file atau perintah di luar pohon direktori.


/etc/vsftpd.conf
. . . chroot_local_user=YES . . .
Kita akan menambahkan user_sub_token untuk memasukkan nama pengguna di jalur direktori local_root directory kita sehingga konfigurasi kita akan bekerja untuk pengguna ini dan pengguna masa depan yang mungkin ditambahkan.


/etc/vsftpd.conf
user_sub_token=$USER local_root=/home/$USER/ftp
Kita akan membatasi jangkauan port yang bisa digunakan untuk FTP pasif untuk memastikan koneksi yang memadai tersedia:


/etc/vsftpd.conf
pasv_min_port = 40000 pasv_max_port = 50000
Note: We pre-opened the ports that we set here for the passive port range. If you change the values, be sure to update your firewall settings.
Karena kita hanya berencana mengizinkan akses FTP berdasarkan kasus per kasus, kita akan menyiapkan konfigurasi sehingga akses diberikan kepada pengguna hanya jika ditambahkan secara eksplisit ke daftar daripada secara default:


/etc/vsftpd.conf
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
userlist_deny matikan logika. Saat disetel ke "YES", pengguna yang masuk dalam daftar ditolak akses FTP. Bila disetel ke "TIDAK", hanya pengguna yang masuk dalam daftar yang diizinkan mengaksesnya. Setelah selesai melakukan perubahan, simpan dan keluar dari file.

Akhirnya, kita akan membuat dan menambahkan pengguna kita ke file. Kita akan menggunakan flag -a untuk ditambahkan ke file:
$ echo "sammy" | sudo tee -a /etc/vsftpd.userlist
Periksa kembali apakah itu ditambahkan seperti yang Anda harapkan:
$ cat /etc/vsftpd.userlist
Output
sammy
Restart daemon (perangkat) untuk memuat perubahan konfigurasi:
$ sudo systemctl restart vsftpd
Sekarang kita siap untuk pengujian.


Langkah 5 - Menguji Akses FTP
Kita telah mengonfigurasi server agar hanya mengizinkan pengguna untuk terhubung melalui FTP. Mari kita pastikan itu yang terjadi.

Pengguna anonim harus gagal untuk terhubung: Kita menonaktifkan akses anonim. Di sini kita akan mengujinya dengan mencoba menyambung secara anonim. Jika kita melakukannya dengan benar, pengguna anonim harus ditolak izinnya:
$ ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): anonymous 530 Permission denied. ftp: Login failed. ftp>
Tutup koneksi:
ftp > bye
Pengguna selain sammy harus gagal untuk terhubung: Selanjutnya, kita akan mencoba menghubungkan sebagai pengguna sudo kita. Mereka juga harus ditolak aksesnya, dan itu harus terjadi sebelum mereka diizinkan memasukkan kata sandinya.
ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sudo_user 530 Permission denied. ftp: Login failed. ftp>
sammy harus bisa terhubung, begitu juga file baca dan tulis: Di sini, kami akan memastikan bahwa pengguna kami yang ditunjuk dapat terhubung:
ftp -p 203.0.113.0


Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 331 Please specify the password. Password: your_user's_password 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
Kita akan ganti ke direktori file, lalu gunakan perintah get untuk mentransfer file uji yang kita buat tadi ke mesin lokal kita:
ftp > cd files ftp > get test.txt
Output
227 Entering Passive Mode (203,0,113,0,169,12). 150 Opening BINARY mode data connection for test.txt (16 bytes). 226 Transfer complete. 16 bytes received in 0.0101 seconds (1588 bytes/s) ftp>
Kita akan segera kembali dan mencoba mengunggah file dengan nama baru untuk menguji hak akses tulis:
ftp > put test.txt upload.txt
Output
227 Entering Passive Mode (203,0,113,0,164,71). 150 Ok to send data. 226 Transfer complete. 16 bytes sent in 0.000894 seconds (17897 bytes/s)
Tutup koneksi:
ftp > bye
Setelah kami menguji konfigurasi kami, kami akan mengambil langkah untuk mengamankan server kami lebih jauh. 

Langkah 6 - Mengamankan Transaksi

Karena FTP tidak mengenkripsi data apapun dalam perjalanan, termasuk kredensial pengguna, kami akan mengaktifkan TTL / SSL untuk menyediakan enkripsi tersebut. Langkah pertama adalah membuat sertifikat SSL untuk digunakan dengan vsftpd.

Kami akan menggunakan openssl untuk membuat sertifikat baru dan menggunakan -days flag agar berlaku selama satu tahun. Dalam perintah yang sama, kita akan menambahkan kunci RSA 2048-bit pribadi. Kemudian dengan menetapkan kedua -keyout dan -out flag ke nilai yang sama, kunci privat dan sertifikat akan berada di file yang sama. Kami akan melakukan ini dengan perintah berikut:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Anda akan diminta memberikan informasi alamat untuk sertifikat Anda. Ganti informasi Anda sendiri untuk pertanyaan di bawah ini:


Output
Generating a 2048 bit RSA private key
............................................................................+++
...........+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:NY
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Untuk informasi lebih rinci tentang bendera sertifikat, lihat OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs

Setelah Anda membuat sertifikat, buka lagi file konfigurasi vsftpd :
$ sudo nano /etc/vsftpd.conf
Menuju bagian bawah file, Anda harus dua baris yang dimulai dengan rsa_. Komentar mereka sehingga mereka terlihat seperti:

/etc/vsftpd.conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Di bawahnya, tambahkan baris berikut yang menunjuk ke sertifikat dan kunci pribadi yang baru saja kita buat:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Setelah itu, kami akan memaksa penggunaan SSL, yang akan mencegah klien yang tidak dapat menangani TLS dari koneksi. Hal ini diperlukan untuk memastikan semua lalu lintas dienkripsi namun dapat memaksa pengguna FTP Anda untuk mengubah klien. Ubah ssl_enable ke YES:


Cara Membuat FTP Server Menggunakan VSFTPD di Ubuntu

FTP, singkatan dari File Transfer Protocol, adalah protokol jaringan yang dulunya banyak digunakan untuk memindahkan file antara client dan server. Sejak itu telah diganti dengan cara yang lebih cepat, lebih aman, dan lebih mudah dalam mengirimkan file. Banyak pengguna internet biasa yang ingin mendownload langsung dari browser web mereka dengan https, dan pengguna command-line lebih cenderung menggunakan protokol aman seperti scp atau sFTP.

FTP masih digunakan untuk mendukung aplikasi lawas dan alur kerja dengan kebutuhan yang sangat spesifik. Jika Anda memiliki pilihan protokol apa yang akan digunakan, pertimbangkan untuk mengeksplorasi pilihan yang lebih modern. Bila Anda membutuhkan FTP, bagaimanapun, vsftpd adalah pilihan yang sangat baik. Dioptimalkan untuk keamanan, kinerja, dan stabilitas, vsftpd menawarkan perlindungan yang kuat terhadap banyak masalah keamanan yang ditemukan di server FTP lain dan merupakan default untuk banyak distribusi Linux.


Dalam tutorial ini, kita akan menunjukkan cara mengkonfigurasi vsftpd agar pengguna dapat mengunggah file ke direktori rumahnya menggunakan FTP dengan kredensial masuk yang dijamin oleh SSL / TLS.

Prasyarat
Untuk mengikuti tutorial ini Anda akan memerlukan:


  • Server Ubuntu 16.04 dengan pengguna non-root dengan hak istimewa sudo: Anda dapat mempelajari lebih lanjut tentang cara menyiapkan pengguna dengan hak istimewa ini di Setup Server Awal kita dengan panduan Ubuntu 16.04.

Setelah Anda memiliki server Ubuntu di tempat, Anda siap untuk memulai.



Langkah 1 - Memasang vsftpd

Kita akan mulai dengan memperbarui daftar paket Anda dan menginstal daemon vsftpd:
$ sudo apt-get update $ sudo apt-get install vsftpd
Saat penginstalan selesai, kita akan menyalin file konfigurasi agar kita bisa memulai dengan konfigurasi kosong, menyimpan yang asli sebagai backup.
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Dengan cadangan konfigurasi di tempat, maka kita siap untuk mengkonfigurasi firewall.


Langkah 2 - Membuka Firewall

Kita akan memeriksa status firewall untuk melihat apakah itu diaktifkan. Jika demikian, kita akan memastikan bahwa lalu lintas FTP diizinkan sehingga Anda tidak akan mematuhi peraturan firewall yang menghalangi Anda saat tiba saatnya untuk melakukan pengujian.
$ sudo ufw status
Dalam kasus ini, hanya SSH yang diperbolehkan melalui:


Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Anda mungkin memiliki peraturan lain di tempat atau tidak ada aturan firewall sama sekali. Karena hanya lalu lintas ssh diizinkan dalam kasus ini, kita perlu menambahkan aturan untuk lalu lintas FTP.

Kita perlu membuka port 20 dan 21 untuk FTP, port 990 untuk nanti bila kita mengaktifkan TLS, dan port 40000-50000 untuk kisaran port pasif yang akan kita tetapkan dalam file konfigurasi:

$ sudo ufw allow 20/tcp $ sudo ufw allow 21/tcp $ sudo ufw allow 990/tcp $ sudo ufw allow 40000:50000/tcp $ sudo ufw status
Sekarang aturan firewall kita terlihat seperti:


Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
Dengan perubahan vsftpd dan port yang diperlukan terbuka, kita siap melanjutkan ke langkah berikutnya.


Langkah 3 - Mempersiapkan Direktori Pengguna
Untuk tutorial ini, kita akan membuat user, tapi Anda mungkin sudah memiliki pengguna yang membutuhkan akses FTP. Kita akan berhati-hati untuk melestarikan akses pengguna yang ada ke data mereka sesuai petunjuk berikut. Meski begitu, sebaiknya Anda mulai dengan pengguna baru sampai Anda mengonfigurasi dan menguji penyiapan Anda.

Pertama, kita akan menambahkan pengguna uji coba:
$ sudo adduser sammy
Tetapkan password saat diminta dan jangan ragu untuk menekan "ENTER" melalui perintah lainnya.

FTP umumnya lebih aman saat pengguna dibatasi ke direktori tertentu. Vsftpd menyelesaikan ini dengan chroot jails. Saat chroot diaktifkan untuk pengguna lokal, mereka dibatasi ke direktori home mereka secara default. Namun, karena cara membagi direktori
vsftpd, itu tidak boleh bisa ditulis oleh pengguna. Ini baik untuk pengguna baru yang seharusnya hanya terhubung melalui FTP, namun pengguna yang ada mungkin perlu menulis ke folder asal mereka jika mereka juga mengakses shell.

Dalam contoh ini, daripada menghapus hak tulis dari direktori home, kita akan membuat direktori
ftp untuk berfungsi sebagai direktori file chroot dan writable untuk menyimpan file yang sebenarnya.

Buat folder
ftp, tetapkan kepemilikannya, dan pastikan untuk menghapus hak akses tulis dengan perintah berikut:
$ sudo mkdir /home/sammy/ftp $ sudo chown nobody:nogroup /home/sammy/ftp $ sudo chmod a-w /home/sammy/ftp
Mari verifikasi izin:
$ sudo ls -la /home/sammy/ftp
Output
total 8 4 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 . 4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..
Selanjutnya, kita akan membuat direktori dimana file dapat diupload dan memberikan kepemilikan kepada pengguna:
$ sudo mkdir /home/sammy/ftp/files $ sudo chown sammy:sammy /home/sammy/ftp/files
Sebuah izin memeriksa direktori files harus mengembalikan yang berikut ini:
$ sudo ls -la /home/sammy/ftp
Akhirnya, kita akan menambahkan file test.txt untuk digunakan saat kita menguji nanti:
$ echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt
Sekarang setelah kita mengamankan direktori ftp dan mengizinkan akses pengguna ke direktori files, kita akan mengalihkan perhatian kita ke konfigurasi.


Langkah 4 - Mengkonfigurasi Akses FTP
Kita berencana mengizinkan satu pengguna dengan akun shell lokal untuk terhubung dengan FTP. Dua pengaturan kunci untuk ini sudah diatur dalam vsftpd.conf. Mulailah dengan membuka file konfigurasi untuk memverifikasi bahwa pengaturan dalam konfigurasi Anda cocok dengan yang di bawah ini:
$ sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf
. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES . . .
Selanjutnya kita perlu mengubah beberapa nilai dalam file. Agar pengguna dapat mengunggah file, kita akan memberi tanda komentar pada setelan write_enable sehingga kita memiliki:


/etc/vsftpd.conf
. . . write_enable=YES . . .
Kita juga akan memberi tanda komentar pada chroot untuk mencegah pengguna yang terhubung FTP mengakses file atau perintah di luar pohon direktori.


/etc/vsftpd.conf
. . . chroot_local_user=YES . . .
Kita akan menambahkan user_sub_token untuk memasukkan nama pengguna di jalur direktori local_root directory kita sehingga konfigurasi kita akan bekerja untuk pengguna ini dan pengguna masa depan yang mungkin ditambahkan.


/etc/vsftpd.conf
user_sub_token=$USER local_root=/home/$USER/ftp
Kita akan membatasi jangkauan port yang bisa digunakan untuk FTP pasif untuk memastikan koneksi yang memadai tersedia:


/etc/vsftpd.conf
pasv_min_port = 40000 pasv_max_port = 50000
Note: We pre-opened the ports that we set here for the passive port range. If you change the values, be sure to update your firewall settings.
Karena kita hanya berencana mengizinkan akses FTP berdasarkan kasus per kasus, kita akan menyiapkan konfigurasi sehingga akses diberikan kepada pengguna hanya jika ditambahkan secara eksplisit ke daftar daripada secara default:


/etc/vsftpd.conf
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
userlist_deny matikan logika. Saat disetel ke "YES", pengguna yang masuk dalam daftar ditolak akses FTP. Bila disetel ke "TIDAK", hanya pengguna yang masuk dalam daftar yang diizinkan mengaksesnya. Setelah selesai melakukan perubahan, simpan dan keluar dari file.

Akhirnya, kita akan membuat dan menambahkan pengguna kita ke file. Kita akan menggunakan flag -a untuk ditambahkan ke file:
$ echo "sammy" | sudo tee -a /etc/vsftpd.userlist
Periksa kembali apakah itu ditambahkan seperti yang Anda harapkan:
$ cat /etc/vsftpd.userlist
Output
sammy
Restart daemon (perangkat) untuk memuat perubahan konfigurasi:
$ sudo systemctl restart vsftpd
Sekarang kita siap untuk pengujian.


Langkah 5 - Menguji Akses FTP
Kita telah mengonfigurasi server agar hanya mengizinkan pengguna untuk terhubung melalui FTP. Mari kita pastikan itu yang terjadi.

Pengguna anonim harus gagal untuk terhubung: Kita menonaktifkan akses anonim. Di sini kita akan mengujinya dengan mencoba menyambung secara anonim. Jika kita melakukannya dengan benar, pengguna anonim harus ditolak izinnya:
$ ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): anonymous 530 Permission denied. ftp: Login failed. ftp>
Tutup koneksi:
ftp > bye
Pengguna selain sammy harus gagal untuk terhubung: Selanjutnya, kita akan mencoba menghubungkan sebagai pengguna sudo kita. Mereka juga harus ditolak aksesnya, dan itu harus terjadi sebelum mereka diizinkan memasukkan kata sandinya.
ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sudo_user 530 Permission denied. ftp: Login failed. ftp>
sammy harus bisa terhubung, begitu juga file baca dan tulis: Di sini, kami akan memastikan bahwa pengguna kami yang ditunjuk dapat terhubung:
ftp -p 203.0.113.0


Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 331 Please specify the password. Password: your_user's_password 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
Kita akan ganti ke direktori file, lalu gunakan perintah get untuk mentransfer file uji yang kita buat tadi ke mesin lokal kita:
ftp > cd files ftp > get test.txt
Output
227 Entering Passive Mode (203,0,113,0,169,12). 150 Opening BINARY mode data connection for test.txt (16 bytes). 226 Transfer complete. 16 bytes received in 0.0101 seconds (1588 bytes/s) ftp>
Kita akan segera kembali dan mencoba mengunggah file dengan nama baru untuk menguji hak akses tulis:
ftp > put test.txt upload.txt
Output
227 Entering Passive Mode (203,0,113,0,164,71). 150 Ok to send data. 226 Transfer complete. 16 bytes sent in 0.000894 seconds (17897 bytes/s)
Tutup koneksi:
ftp > bye
Setelah kami menguji konfigurasi kami, kami akan mengambil langkah untuk mengamankan server kami lebih jauh. 

Langkah 6 - Mengamankan Transaksi

Karena FTP tidak mengenkripsi data apapun dalam perjalanan, termasuk kredensial pengguna, kami akan mengaktifkan TTL / SSL untuk menyediakan enkripsi tersebut. Langkah pertama adalah membuat sertifikat SSL untuk digunakan dengan vsftpd.

Kami akan menggunakan openssl untuk membuat sertifikat baru dan menggunakan -days flag agar berlaku selama satu tahun. Dalam perintah yang sama, kita akan menambahkan kunci RSA 2048-bit pribadi. Kemudian dengan menetapkan kedua -keyout dan -out flag ke nilai yang sama, kunci privat dan sertifikat akan berada di file yang sama. Kami akan melakukan ini dengan perintah berikut:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Anda akan diminta memberikan informasi alamat untuk sertifikat Anda. Ganti informasi Anda sendiri untuk pertanyaan di bawah ini:


Output
Generating a 2048 bit RSA private key
............................................................................+++
...........+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:NY
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Untuk informasi lebih rinci tentang bendera sertifikat, lihat OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs

Setelah Anda membuat sertifikat, buka lagi file konfigurasi vsftpd :
$ sudo nano /etc/vsftpd.conf
Menuju bagian bawah file, Anda harus dua baris yang dimulai dengan rsa_. Komentar mereka sehingga mereka terlihat seperti:

/etc/vsftpd.conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Di bawahnya, tambahkan baris berikut yang menunjuk ke sertifikat dan kunci pribadi yang baru saja kita buat:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Setelah itu, kami akan memaksa penggunaan SSL, yang akan mencegah klien yang tidak dapat menangani TLS dari koneksi. Hal ini diperlukan untuk memastikan semua lalu lintas dienkripsi namun dapat memaksa pengguna FTP Anda untuk mengubah klien. Ubah ssl_enable ke YES:


Tidak ada komentar:

Posting Komentar