One place for hosting & domains

      Mengamankan

      Cara Menginstal dan Mengamankan Redis pada Ubuntu 20.04


      Versi sebelumnya dari tutorial ini ditulis oleh Justin Ellingwood

      Pengantar

      Redis adalah penyimpanan nilai kunci dalam memori yang dikenal karena fleksibilitas, kinerja, dan dukungan bahasanya yang luas. Tutorial ini mendemonstrasikan cara menginstal, mengonfigurasi, dan mengamankan Redis pada server Ubuntu 20.04.

      Prasyarat

      Untuk menyelesaikan panduan ini, Anda akan memerlukan akses ke server Ubuntu 20.04 yang memiliki pengguna non-root dengan privilese sudo dan firewall yang terkonfigurasi dengan ufw. Anda dapat menyiapkan ini dengan mengikuti Panduan Penyiapan Server Awal untuk Ubuntu 20.04 dari kami.

      Langkah 1 — Menginstal dan Mengonfigurasi Redis

      Kita akan menggunakan manajer paket APT untuk menginstal redis dari repositori Ubuntu resmi. Pada saat penulisan panduan ini, versi yang tersedia dalam repositori asali adalah 5.0.7.

      Mulailah dengan memperbarui cache paket apt lokal Anda:

      Lalu instal Redis dengan mengetik:

      • sudo apt install redis-server

      Ini akan mengunduh dan menginstal Redis serta dependensinya. Setelah ini, ada satu perubahan konfigurasi penting yang harus dibuat di dalam berkas konfigurasi Redis, yang dihasilkan secara otomatis selama instalasi.

      Buka berkas ini dengan editor teks pilihan Anda:

      • sudo nano /etc/redis/redis.conf

      Di dalam berkas itu, temukan arahan supervised. Arahan ini memungkinkan Anda untuk mendeklarasikan sistem init untuk mengelola Redis sebagai suatu layanan, yang memberi Anda kontrol lebih atas operasinya. Arahan supervised diatur sebagai no secara asali. Karena Anda menjalankan Ubuntu, yang menggunakan sistem init systemd, ubah ini menjadi systemd:

      /etc/redis/redis.conf

      . . .
      
      # If you run Redis from upstart or systemd, Redis can interact with your
      # supervision tree. Options:
      #   supervised no      - no supervision interaction
      #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
      #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
      #   supervised auto    - detect upstart or systemd method based on
      #                        UPSTART_JOB or NOTIFY_SOCKET environment variables
      # Note: these supervision methods only signal "process is ready."
      #       They do not enable continuous liveness pings back to your supervisor.
      supervised systemd
      
      . . .
      

      Itu adalah satu-satunya perubahan yang Anda perlu buat terhadap berkas konfigurasi Redis saat ini, jadi simpan dan tutup berkasnya ketika Anda selesai. Jika Anda menggunakan nano untuk mengedit berkas, lakukan itu dengan menekan CTRL + X, Y, lalu ENTER.

      Lalu, mulai ulang layanan Redis untuk mencerminkan perubahan yang Anda buat ke berkas konfigurasi:

      • sudo systemctl restart redis.service

      Dengan itu, Anda telah menginstal dan mengonfigurasi Redis dan Redis berjalan pada mesin Anda. Sebelum Anda mulai menggunakannya, merupakan hal bijaksana untuk memeriksa terlebih dahulu apakah Redis berfungsi dengan benar.

      Langkah 2 — Menguji Redis

      Seperti perangkat lunak yang baru terinstal lainnya, sebaiknya pastikan bahwa Redis berfungsi seperti yang diharapkan sebelum membuat perubahan apa pun terhadap konfigurasinya. Kita akan membahas beberapa cara untuk memeriksa bahwa Redis bekerja dengan benar dalam langkah ini.

      Mulai dengan memeriksa bahwa layanan Redis sedang berjalan:

      • sudo systemctl status redis

      Jika Redis berjalan tanpa kesalahan apa pun, perintah ini akan menghasilkan keluaran yang mirip dengan berikut ini:

      Output

      ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-04-30 23:26:54 UTC; 4s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 36552 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 36561 (redis-server) Tasks: 4 (limit: 2345) Memory: 1.8M CGroup: /system.slice/redis-server.service └─36561 /usr/bin/redis-server 127.0.0.1:6379 . . .

      Di sini, Anda dapat melihat bahwa Redis sedang berjalan dan sudah diaktifkan, yang berarti bahwa sistem sudah disiapkan untuk memulai setiap kali server melakukan boot.

      Catatan: Pengaturan ini diinginkan untuk banyak kasus penggunaan umum dari Redis. Namun, jika Anda lebih memilih untuk memulai Redis secara manual setiap kali server melakukan boot, Anda dapat mengonfigurasi ini dengan perintah berikut:

      • sudo systemctl disable redis

      Untuk menguji bahwa Redis berfungsi dengan benar, hubungkan ke server menggunakan redis-cli, yang merupakan klien baris perintah Redis:

      Dalam prompt selanjutnya, uji konektivitas dengan perintah ping:

      Output

      PONG

      Keluaran ini mengonfirmasi bahwa koneksi server masih hidup. Selanjutnya, periksa apakah Anda dapat mengatur kunci dengan menjalankan:

      Output

      OK

      Dapatkan nilainya dengan mengetik:

      Dengan asumsi semuanya berjalan lancar, Anda akan dapat mendapatkan nilai yang Anda simpan:

      Output

      "It's working!"

      Setelah mengonfirmasi bahwa Anda dapat mengambil nilai, keluarlah dari prompt Redis untuk kembali ke shell:

      Sebagai uji coba terakhir, kita akan memeriksa apakah Redis dapat mempertahankan data bahkan setelah sistem dihentikan atau dimulai kembali. Untuk melakukan ini, pertama-tama mulai ulang instans Redis:

      • sudo systemctl restart redis

      Lalu, hubungkan dengan klien baris perintah lagi:

      Dan konfirmasikan bahwa nilai uji coba Anda masih ada

      Nilai dari kunci Anda harus masih dapat diakses:

      Output

      "It's working!"

      Keluarlah dari shell lagi ketika Anda selesai:

      Dengan itu, instalasi Redis Anda sudah beroperasi sepenuhnya dan siap untuk digunakan. Namun, beberapa pengaturan konfigurasi asalinya tidak aman dan memberi peluang kepada aktor jahat untuk menyerang dan memperoleh akses ke server dan data Anda. Langkah-langkah selanjutnya dalam tutorial ini mencakup metode untuk mengurangi kerentanan ini, seperti yang disarankan oleh situs web Redis resmi. Meskipun langkah-langkah ini bersifat opsional dan Redis tetap akan berfungsi jika Anda memilih untuk tidak mengikutinya, tetapi Anda sangat disarankan untuk menyelesaikannya untuk memperkuat keamanan sistem Anda.

      Langkah 3 — Mengikat ke localhost

      Secara asali, Redis hanya dapat diakses dari localhost. Namun, jika Anda menginstal dan mengonfigurasi Redis dengan mengikuti tutorial yang berbeda dari tutorial ini, Anda mungkin telah memperbarui berkas konfigurasi untuk mengizinkan koneksi dari mana saja. Ini tidak seaman terikat ke localhost.

      Untuk memperbaiki ini, buka berkas konfigurasi Redis untuk mengedit:

      • sudo nano /etc/redis/redis.conf

      Temukan baris ini dan pastikan bahwa baris ini tidak dijadikan komentar (hapus # jika ada):

      /etc/redis/redis.conf

      bind 127.0.0.1 ::1
      

      Simpan dan tutup berkas saat selesai (tekan CTRL + X, Y, lalu ENTER).

      Lalu, mulai ulang layanan untuk memastikan bahwa systemd membaca perubahan Anda:

      • sudo systemctl restart redis

      Untuk memeriksa bahwa perubahan ini telah diterapkan, jalankan perintah netstat berikut:

      • sudo netstat -lnp | grep redis

      Output

      tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server tcp6 0 0 ::1:6379 :::* LISTEN 14222/redis-server

      Catatan: Perintah netstat mungkin tidak tersedia di sistem Anda secara asali. Jika kasusnya seperti ini, Anda dapat menginstalnya (bersama dengan beberapa peralatan jejaring berguna lainnya) dengan perintah berikut :

      • sudo apt install net-tools

      Keluaran ini menunjukkan bahwa program redis-server terikat ke localhost (127.0.0.1), yang mencerminkan perubahan yang Anda baru saja buat pada berkas konfigurasi. Jika Anda melihat alamat IP lain di dalam kolom itu (sebagai contoh: 0.0.0.0), maka Anda harus memeriksa ulang bahwa Anda telah menghapus tanda komentar pada baris yang benar dan memulai ulang layanan Redis lagi.

      Kini setelah instalasi Redis Anda hanya mendengarkan localhost, maka akan lebih sulit bagi aktor jahat untuk membuat permintaan atau memperoleh akses ke server Anda. Namun, Redis saat ini tidak diatur untuk meminta pengguna melakukan autentikasi sendiri sebelum membuat perubahan ke konfigurasi atau data yang dimilikinya. Untuk memperbaiki ini, Redis mengizinkan Anda untuk meminta pengguna melakukan autentikasi dengan kata sandi sebelum membuat perubahan melalui klien Redis (redis-cli).

      Langkah 4 — Mengonfigurasi Kata sandi Redis

      Mengonfigurasi kata sandi Redis akan mengaktifkan salah satu dari dua fitur keamanan bawaan — perintah auth, yang mengharuskan klien melakukan autentikasi untuk mengakses basis data. Kata sandi dikonfigurasi secara langsung di dalam berkas konfigurasi Redis, /etc/redis/redis.conf, jadi buka berkas itu lagi dengan editor pilihan Anda:

      • sudo nano /etc/redis/redis.conf

      Gulir ke bagian SECURITY dan cari arahan dengan komentar yang berbunyi:

      /etc/redis/redis.conf

      . . .
      # requirepass foobared
      . . .
      

      Hapus status komentar dengan menghapus #, dan ubah foobared menjadi kata sandi yang aman.

      Catatan: Di atas arahan requirepass di dalam berkas redis.conf, ada peringatan dengan komentar:

      /etc/redis/redis.conf

      . . .
      # Warning: since Redis is pretty fast an outside user can try up to
      # 150k passwords per second against a good box. This means that you should
      # use a very strong password otherwise it will be very easy to break.
      #
      . . .
      

      Maka dari itu, merupakan hal penting bagi Anda untuk menentukan nilai yang sangat kuat dan sangat panjang sebagai kata sandi Anda. Alih-alih membuat kata sandi sendiri, Anda dapat menggunakan perintah openssl untuk menghasilkan kata sandi acak, seperti dalam contoh berikut. Dengan memasukkan keluaran dari perintah pertama ke perintah openssl kedua, seperti yang ditunjukkan di sini, hal tersebut akan menghapus jeda baris apa pun yang dihasilkan oleh perintah pertama:

      • openssl rand 60 | openssl base64 -A

      Keluaran Anda akan terlihat seperti:

      Output

      RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

      Setelah menyalin dan menempel keluaran dari perintah itu sebagai nilai baru untuk requirepass, maka keluarannya akan berbunyi:

      /etc/redis/redis.conf

      requirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

      Setelah menetapkan kata sandi, simpan dan tutup berkas, lalu mulai ulang Redis:

      • sudo systemctl restart redis.service

      Untuk menguji bahwa kata sandi itu bekerja, buka klien Redis:

      Yang berikut ini menunjukkan urutan perintah yang digunakan untuk menguji apakah kata sandi Redis berfungsi. Perintah pertama mencoba untuk mengatur kunci atas suatu nilai sebelum autentikasi:

      Itu tidak akan berhasil karena Anda tidak melakukan autentikasi, jadi Redis merespons dengan pesan kesalahan:

      Output

      (error) NOAUTH Authentication required.

      Perintah selanjutnya mengautentikasi dengan kata sandi yang ditentukan di dalam berkas konfigurasi Redis:

      Redis mengakui:

      Output

      OK

      Setelah itu, menjalankan perintah sebelumnya lagi akan menjadi berhasil:

      Output

      OK

      get key1 melakukan kueri terhadap Redis untuk nilai dari kunci yang baru.

      Output

      "10"

      Setelah mengonfirmasi bahwa Anda dapat menjalankan perintah di dalam klien Redis setelah melakukan autentikasi, Anda dapat keluar dari redis-cli:

      Selanjutnya, kita akan membahas tentang mengganti nama perintah Redis yang, jika dimasukkan secara tidak sengaja atau oleh aktor jahat, dapat menyebabkan kerusakan serius pada mesin Anda.

      Langkah 5 — Mengganti Nama Perintah Berbahaya

      Fitur keamanan lain yang ditanam di dalam Redis melibatkan penggantian nama atau menonaktifkan secara penuh perintah-perintah tertentu yang dianggap berbahaya.

      Ketika dijalankan oleh pengguna yang tidak sah, perintah seperti itu dapat digunakan untuk mengonfigurasi ulang, menghancurkan, atau menghapus data Anda. Seperti kata sandi autentikasi, mengganti nama atau menonaktifkan perintah dikonfigurasi pada bagian SECURITY yang sama dari berkas /etc/redis/redis.conf.

      Beberapa perintah yang dianggap berbahaya termasuk: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, dan DEBUG. Ini bukanlah daftar yang lengkap, tetap mengganti nama atau menonaktifkan semua perintah di dalam daftar itu adalah titik awal yang baik untuk menambah keamanan server Redis Anda.

      Apakah Anda harus menonaktifkan atau mengganti nama perintah bergantung pada kebutuhan spesifik Anda atau situs Anda. Jika Anda tahu bahwa Anda tidak akan pernah menggunakan perintah yang dapat disalahgunakan, maka Anda dapat menonaktifkan perintah itu. Jika tidak, mungkin akan lebih baik untuk mengganti nama.

      Untuk mengganti nama atau menonaktifkan perintah Redis, buka berkas konfigurasi sekali lagi:

      • sudo nano /etc/redis/redis.conf

      Peringatan: Langkah berikut yang menunjukkan cara menonaktifkan dan mengganti nama perintah adalah contoh. Anda harus hanya memilih untuk menonaktifkan atau mengganti nama perintah yang masuk akal bagi Anda. Anda dapat meninjau daftar lengkap perintah untuk Anda dan menentukan bagaimana perintah itu mungkin dapat disalahgunakan di redis.io/commands.

      Untuk menonaktifkan perintah, cukup ganti namanya menjadi string kosong (yang ditandai oleh sepasang tanda kutip tanpa karakter di dalamnya), seperti yang ditunjukkan di bawah ini:

      /etc/redis/redis.conf

      . . .
      # It is also possible to completely kill a command by renaming it into
      # an empty string:
      #
      rename-command FLUSHDB ""
      rename-command FLUSHALL ""
      rename-command DEBUG ""
      . . .
      

      Untuk mengganti nama perintah, beri nama lain seperti yang ditunjukkan dalam contoh di bawah ini. Perintah yang diganti namanya harus sulit ditebak oleh orang lain, tetapi mudah untuk Anda ingat:

      /etc/redis/redis.conf

      . . .
      # rename-command CONFIG ""
      rename-command SHUTDOWN SHUTDOWN_MENOT
      rename-command CONFIG ASC12_CONFIG
      . . .
      

      Simpan perubahan Anda dan tutup berkas.

      Setelah mengganti nama perintah, terapkan perubahan dengan memulai ulang Redis:

      • sudo systemctl restart redis.service

      Untuk menguji perintah baru, masuk ke baris perintah Redis:

      Lalu, lakukan autentikasi:

      Output

      OK

      Mari kita berasumsi bahwa Anda telah mengganti nama perintah CONFIG menjadi ASC12_CONFIG, seperti dalam contoh sebelumnya. Pertama-tama, coba gunakan perintah CONFIG yang asli. Ini akan gagal, karena Anda telah mengubah namanya:

      Output

      (error) ERR unknown command `config`, with args beginning with:

      Namun, menggunakan perintah yang telah diubah namanya akan berhasil. Ini tidak peka huruf kapital:

      • asc12_config get requirepass

      Output

      1) "requirepass" 2) "your_redis_password"

      Terakhir, Anda dapat keluar dari redis-cli:

      Perhatikan bahwa jika Anda sudah menggunakan baris perintah Redis lalu memulai ulang Redis, Anda akan perlu melakukan autentikasi ulang. Jika tidak, Anda akan mendapat pesan kesalahan ini jika Anda mengetik perintah:

      Output

      NOAUTH Authentication required.

      Mengenai praktik mengganti nama perintah, ada pernyataan peringatan di bagian akhir dari SECURITY di dalam /etc/redis/redis.conf yang berbunyi:

      /etc/redis/redis.conf

      . . .
      # Please note that changing the name of commands that are logged into the
      # AOF file or transmitted to replicas may cause problems.
      . . .
      

      Catatan: Proyek Redis memilih untuk menggunakan istilah “master” dan “slave”, sedangkan DigitalOcean secara umum lebih menyukai istilah alternatif “primary” dan “secondary”. Untuk menghindari kebingungan, kami memilih untuk menggunakan istilah yang digunakan dalam dokumentasi Redis di sini.

      Artinya, jika penggantian nama perintah tidak ada dalam berkas AOF, atau jika itu ada tetapi berkas AOF belum dikirim ke slave, maka seharusnya tidak ada masalah.

      Maka, ingatlah hal itu ketika Anda mencoba mengganti nama perintah. Waktu terbaik untuk mengganti nama perintah adalah saat Anda tidak menggunakan persistensi AOF, atau segera setelah instalasi, yang artinya, sebelum aplikasi yang menggunakan Redis disebarkan.

      Ketika Anda menggunakan AOF dan menangani instalasi master-slave, pertimbangkan jawaban dari laman masalah proyek Github ini. Berikut ini adalah jawaban dari pertanyaan penulis:

      Perintah-perintah dicatat ke AOF dan direplikasi ke slave dengan cara pengiriman yang sama, maka jika Anda mencoba untuk memainkan AOF kembali pada suatu instans yang tidak memiliki penggantian nama yang sama, Anda mungkin akan menghadapi inkonsistensi karena perintah tidak dapat dieksekusi (sama untuk slave).

      Dengan demikian, cara terbaik untuk menangani penggantian nama dalam kasus seperti itu adalah dengan memastikan bahwa mengganti nama perintah diterapkan pada semua instans dalam instalasi master-slave.

      Kesimpulan

      Dalam tutorial ini, Anda telah menginstal dan mengonfigurasi Redis, memvalidasi bahwa instalasi Redis Anda berfungsi dengan benar, dan menggunakan fitur keamanan bawaannya untuk membuatnya lebih tidak rentan terhadap serangan dari aktor-aktor jahat.

      Harap diingat bahwa setelah seseorang log masuk ke server Anda, maka sangat mudah untuk mengakali fitur keamanan spesifik Redis yang kita sudah atur. Oleh karena itu, fitur keamanan yang paling penting pada server Redis adalah firewall (yang Anda konfigurasikan jika Anda mengikuti tutorial prasyarat Penyiapan Server Awal ini, karena ini membuat aktor jahat sangat kesulitan untuk melompati pagar keamanan.



      Source link

      Cara Menginstal dan Mengamankan phpMyAdmin pada Ubuntu 20.04


      Versi tutorial sebelumnya ditulis oleh Brennan Bearnes.

      Pengantar

      Walaupun banyak pengguna membutuhkan fungsionalitas dari sistem manajemen basis data seperti MySQL, mereka mungkin tidak merasa nyaman berinteraksi dengan sistem hanya dari prompt MySQL.

      phpMyAdmin diciptakan sehingga pengguna dapat berinteraksi dengan MySQL melalui antarmuka web. Dalam panduan ini, kita akan membahas cara menginstal dan mengamankan phpMyAdmin sehingga Anda dapat menggunakannya secara aman untuk mengelola basis data Anda pada sistem Ubuntu 20.04.

      Prasyarat

      Agar bisa menyelesaikan panduan ini, Anda membutuhkan:

      Selain itu, ada pertimbangan keamanan penting saat menggunakan perangkat lunak seperti phpMyAdmin, karena perangkat lunak tersebut:

      • Berkomunikasi secara langsung dengan instalasi MySQL Anda
      • Menangani autentikasi dengan menggunakan kredensial MySQL
      • Menjalankan dan memberikan hasil untuk kueri SQL arbitrer

      Karena alasan-alasan ini, dan karena aplikasi PHP yang digunakan secara luas sering menjadi target penyerangan, Anda jangan pernah menjalankan phpMyAdmin pada sistem jarak jauh melalui koneksi HTTP biasa.

      Jika Anda tidak memiliki domain yang sudah dikonfigurasi dengan sertifikat SSL/TLS, Anda dapat mengikuti panduan mengamankan Apache dengan Let’s Encrypt pada Ubuntu 20.04 ini. Ini akan mengharuskan Anda untuk mendaftarkan nama domain, menciptakan catatan DNS untuk server Anda, dan menyiapkan Hos Virtual Apache.

      Langkah 1 — Menginstal phpMyAdmin

      Anda dapat menggunakan APT untuk menginstal phpMyAdmin dari repositori Ubuntu asali.

      Sebagai pengguna sudo non-root Anda, perbarui indeks paket server Anda:

      Setelah itu, Anda dapat menginstal paket phpmyadmin. Bersama dengan paket ini, dokumentasi resmi juga menganjurkan Anda menginstal beberapa ekstensi PHP ke server Anda untuk mengaktifkan fungsionalitas tertentu dan meningkatkan kinerja.

      Jika Anda mengikuti prasyarat tutorial tumpukan LAMP, beberapa dari modul-modul ini akan telah terinstal bersama dengan paket php. Namun, Anda disarankan untuk menginstal paket-paket ini juga:

      • php-mbstring: Modul untuk mengelola string non-ASCII dan mengubah string menjadi pengodean yang berbeda-beda
      • php-zip: Ekstensi ini mendukung pengunggahan berkas .zip ke phpMyAdmin
      • php-gd: Mengaktifkan dukungan untuk Pustaka Grafis GD
      • php-json: Menyediakan PHP dengan dukungan untuk serialisasi JSON
      • php-curl: Mengizinkan PHP untuk berinteraksi dengan berbagai jenis server menggunakan protokol yang berbeda-beda

      Jalankan perintah berikut untuk menginstal paket-paket ini ke sistem Anda. Namun, harap dicatat, bahwa proses instalasi mengharuskan Anda untuk membuat beberapa pilihan untuk mengonfigurasi phpMyAdmin dengan benar. Kita akan membahas opsi-opsi ini segera:

      • sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

      Berikut ini adalah opsi yang Anda harus pilih saat diminta untuk mengonfigurasi instalasi Anda dengan benar:

      • Untuk pilihan server, pilih apache2

        Peringatan: Ketika prompt muncul, “apache2” disorot, tetapi tidak dipilih. Jika Anda tidak menekan bilah SPACE untuk memilih Apache, penginstal tidak akan memindahkan berkas yang diperlukan selama instalasi. Tekan SPACE, TAB, lalu ENTER untuk memilih Apache.
      • Pilih Yes saat Anda ditanya apakah ingin menggunakan dbconfig-common untuk menyiapkan basis data
      • Lalu, Anda akan diminta untuk memilih dan mengonfirmasi kata sandi aplikasi MySQL untuk phpMyAdmin

      Catatan: Dengan asumsi Anda telah menginstal MySQL dengan mengikuti Langkah 2 dari tutorial prasyarat tumpukan LAMP, Anda mungkin telah memutuskan untuk mengaktifkan plugin Validate Password. Saat penulisan dokumen ini, mengaktifkan komponen ini akan memicu kesalahan saat Anda mencoba mengatur kata sandi untuk pengguna phpmyadmin:

      Kesalahan validasi kata sandi phpMyAdmin

      Untuk menyelesaikan ini, pilih opsi abort untuk menghentikan proses instalasi. Lalu, buka prompt MySQL Anda:

      Atau, jika Anda mengaktifkan autentikasi kata sandi untuk pengguna MSQL root, jalankan perintah ini lalu masukkan kata sandi Anda saat diminta:

      Dari prompt, jalankan perintah berikut untuk menonaktifkan komponen Validate Password. Perhatikan bahwa ini tidak benar-benar akan menghapus instalasinya, tetapi hanya menghentikan komponen dimuat pada server MySQL Anda:

      • UNINSTALL COMPONENT "file://component_validate_password";

      Setelah itu, Anda dapat menutup klien MySQL:

      Lalu, coba instal paket phpmyadmin lagi dan proses akan bekerja seperti yang diharapkan:

      • sudo apt install phpmyadmin

      Setelah phpMyAdmin terinstal, Anda dapat membuka prompt MySQL sekali lagi dengan sudo mysql atau mysql -u root -u -p lalu jalankan perintah berikut untuk mengaktifkan kembali komponen Validate Password:

      • INSTALL COMPONENT "file://component_validate_password";

      Proses instalasi ini menambahkan berkas konfigurasi phpMyAdmin Apache ke dalam direktori /etc/apache2/conf-enabled/, di mana berkas konfigurasi tersebut terbaca secara otomatis. Untuk menyelesaikan konfigurasi Apache dan PHP untuk bekerja dengan phpMyAdmin, tugas yang tersisa dalam bagian tutorial ini adalah untuk secara eksplisit mengaktifkan ekstensi PHP mbstring, yang dapat Anda lakukan dengan mengetik:

      Setelah itu, mulai ulang Apache supaya perubahan Anda dapat dikenali:

      • sudo systemctl restart apache2

      phpMyAdmin sekarang sudah terinstal dan dikonfigurasi untuk bekerja dengan Apache. Namun, sebelum Anda dapat log masuk dan mulai berinteraksi dengan basis data MySQL Anda, Anda perlu memastikan bahwa pengguna MySQL Anda memiliki privilese yang dibutuhkan untuk berinteraksi dengan program ini.

      Langkah 2 — Menyesuaikan Autentikasi dan Privilese Pengguna

      Saat Anda menginstal phpMyAdmin ke server Anda, proses ini secara otomatis menciptakan pengguna basis data yang disebut phpmyadmin, yang menjalankan proses mendasar tertentu untuk program. Alih-alih log masuk sebagai pengguna dengan kata sandi administratif yang Anda atur selama instalasi, Anda disarankan untuk log masuk sebagai pengguna MYSQL root atau sebagai pengguna yang dikhususkan untuk mengelola basis data melalui antarmuka phpMyAdmin.

      Mengonfigurasi Akses Kata Sandi untuk Akun Root MySQL

      Dalam sistem Ubuntu yang menjalankan MySQL 5.7 (dan versi lebih baru), pengguna MySQL root ditetapkan untuk melakukan autentikasi dengan menggunakan plugin auth_socket secara asali alih-alih dengan kata sandi. Ini mengizinkan keamanan dan kebergunaan yang lebih besar dalam banyak kasus, tetapi juga dapat memperumit keadaan saat Anda perlu untuk mengizinkan program eksternal — seperti phpMyAdmin — untuk mengakses pengguna.

      Untuk log masuk ke phpMyAdmin sebagai pengguna MySQL root, Anda perlu mengganti metode autentikasi dari auth_socket menjadi salah satu metode yang memanfaatkan kata sandi, jika Anda belum melakukan itu. Untuk melakukan ini, buka prompt MySQL dari terminal Anda:

      Selanjutnya, periksa metode autentikasi mana yang masing-masing akun pengguna MySQL Anda gunakan dengan perintah berikut:

      • SELECT user,authentication_string,plugin,host FROM mysql.user;

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

      Pada contoh ini, Anda dapat melihat bahwa pengguna root memang mengautentikasi dengan menggunakan plugin auth_socket. Untuk mengonfigurasi akun root agar mengautentikasi dengan kata sandi, jalankan perintah ALTER USER berikut. Pastikan untuk mengubah password menjadi kata sandi yang kuat pilihan Anda:

      • ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

      Catatan: Pernyataan ALTER USER sebelumnya telah menetapkan pengguna MYSQL root untuk mengautentikasi dengan plugin caching_sha2_password. Sesuai dokumentasi MySQL resmi, caching_sha2_password adalah plugin autentikasi MySQL yang lebih disukai, karena plugin ini menyediakan enkripsi kata sandi yang lebih aman daripada mysql_native_password yang lebih tua tetapi masih digunakan secara luas.

      Namun, beberapa versi PHP tidak berfungsi secara andal dengan caching_sha2_password. PHP telah melaporkan bahwa isu ini sudah diperbaiki pada PHP 7.4, tetapi jika Anda menjumpai kesalahan saat mencoba log masuk ke phpMyAdmin nantinya, Anda mungkin ingin mengatur root untuk mengautentikasi dengan mysql_native_password sebagai gantinya:

      • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

      Lalu, periksa lagi metode autentikasi yang digunakan oleh setiap pengguna Anda untuk mengonfirmasi bahwa root tidak lagi mengautentikasi dengan menggunakan plugin auth_socket:

      • SELECT user,authentication_string,plugin,host FROM mysql.user;

      Output

      +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | caching_sha2_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost | | debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost | | phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

      Anda dapat melihat dari keluaran ini bahwa pengguna root akan mengautentikasi dengan menggunakan kata sandi. Anda kini dapat log masuk ke antarmuka phpMyAdmin sebagai pengguna root Anda dengan kata sandi yang Anda sudah atur untuk itu di sini.

      Mengonfigurasi Akses Kata Sandi untuk Pengguna MySQL Khusus

      Selain itu, sebagian orang mungkin menganggap bahwa terhubung ke phpMyAdmin dengan pengguna khusus terasa lebih cocok dengan alur kerja mereka. Untuk melakukan ini, buka shell MySQL sekali lagi:

      Jika Anda memiliki autentikasi kata sandi yang diaktifkan untuk pengguna root Anda, seperti yang dijelaskan di bagian sebelumnya, Anda perlu menjalankan perintah berikut dan memasukkan kata sandi Anda saat diminta agar terhubung:

      Dari sana, ciptakan pengguna baru dan beri kata sandi yang kuat:

      • CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

      Catatan: Sekali lagi, tergantung versi PHP yang telah Anda instal, Anda mungkin ingin mengatur pengguna baru Anda untuk mengautentikasi dengan mysql_native_password alih-alih caching_sha2_password:

      • ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

      Lalu, beri privilese yang sesuai kepada pengguna baru Anda. Sebagai contoh, Anda dapat memberikan privilese kepada pengguna untuk semua tabel di dalam basis data, serta kekuasaan untuk menambah, mengubah, dan menghapus privilese pengguna, dengan perintah ini:

      • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

      Setelah itu, keluarlah dari shell MySQL:

      Anda kini dapat mengakses antarmuka web dengan mengunjungi nama domain atau alamat IP publik server Anda yang diikuti dengan /phpmyadmin:

      https://your_domain_or_IP/phpmyadmin
      

      Layar log masuk phpMyAdmin

      Lakukan log masuk ke antarmuka, baik sebagai root atau dengan nama pengguna dan kata sandi baru yang baru saja Anda konfigurasikan.

      Saat Anda log masuk, Anda akan melihat antarmuka pengguna, yang akan terlihat seperti ini:

      Antarmuka pengguna phpMyAdmin

      Karena Anda sekarang dapat terhubung dan berinteraksi dengan phpMyAdmin, yang tersisa hanyalah memperkuat keamanan sistem Anda untuk melindunginya dari penyerang.

      Langkah 3 — Mengamankan Instans phpMyAdmin Anda

      Karena sangat umum digunakan di mana-mana, phpMyAdmin adalah target populer bagi penyerang, dan Anda harus lebih berhati-hati untuk mencegah akses yang tidak sah. Salah satu cara melakukan ini adalah dengan menempatkan gateway di depan seluruh aplikasi dengan menggunakan fungsionalitas autentikasi dan otorisasi .htaccess bawaan dari Apache.

      Untuk melakukan ini, Anda harus terlebih dahulu mengaktifkan penggunaan dari penimpaan berkas .htaccess dengan mengedit berkas konfigurasi Apache dari instalasi phpMyAdmin Anda.

      Gunakan editor teks khusus yang Anda sukai untuk mengedit berkas phpmyadmin.conf yang telah ditempatkan di dalam direktori konfigurasi Apache Anda. Di sini, kita akan menggunakan nano:

      • sudo nano /etc/apache2/conf-available/phpmyadmin.conf

      Tambahkan arahan AllowOverride All di dalam bagian <Directory /usr/share/phpmyadmin> dari berkas konfigurasi, seperti ini:

      /etc/apache2/conf-available/phpmyadmin.conf

      <Directory /usr/share/phpmyadmin>
          Options FollowSymLinks
          DirectoryIndex index.php
          AllowOverride All
          . . .
      

      Saat Anda telah menambahkan baris ini, simpan dan tutup berkas. Jika Anda menggunakan nano untuk mengedit berkas, lakukan itu dengan menekan CTRL + X, Y, lalu ENTER.

      Untuk menerapkan perubahan yang Anda buat, mulai ulang Apache:

      • sudo systemctl restart apache2

      Karena sekarang Anda telah mengaktifkan penggunaan berkas .htaccess untuk aplikasi Anda, Anda perlu menciptakan satu berkas untuk benar-benar menerapkan keamanan.

      Agar ini berhasil, berkas tersebut harus diciptakan di dalam direktori aplikasi. Anda dapat menciptakan berkas yang diperlukan dan membukanya di dalam editor teks Anda dengan privilese root dengan mengetik:

      • sudo nano /usr/share/phpmyadmin/.htaccess

      Dalam berkas ini, masukkan informasi berikut ini:

      /usr/share/phpmyadmin/.htaccess

      AuthType Basic
      AuthName "Restricted Files"
      AuthUserFile /etc/phpmyadmin/.htpasswd
      Require valid-user
      

      Berikut ini adalah makna dari masing-masing baris ini:

      • AuthType Basic: Baris ini menentukan tipe autentikasi yang Anda sedang terapkan. Jenis ini akan menerapkan autentikasi kata sandi dengan menggunakan berkas kata sandi.
      • AuthName: Ini menetapkan pesan untuk kotak dialog autentikasi. Anda harus menjaga ini tetap generik sehingga pengguna yang tidak sah tidak akan mendapatkan informasi tentang apa yang dilindungi.
      • AuthUserFile: Ini menetapkan lokasi berkas kata sandi yang akan digunakan untuk autentikasi. Ini harus berada di luar direktori yang sedang dilayani. Kita akan segera membuat berkas ini.
      • Require valid-user: Ini menentukan bahwa hanya pengguna terautentikasi yang diberi akses ke sumber daya ini. Inilah yang sebenarnya menghentikan masuknya pengguna yang tidak sah.

      Setelah Anda selesai, simpan dan tutup berkas.

      Lokasi yang Anda sudah pilih untuk berkas kata sandi Anda adalah /etc/phpmyadmin/.htpasswd. Anda kini dapat menciptakan berkas ini dan memberikannya kepada pengguna awal dengan utilitas htpasswd:

      • sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

      Anda akan diminta untuk memilih dan mengonfirmasi kata sandi untuk pengguna yang Anda buat. Setelah itu, berkas dibuat dengan kata sandi yang telah melalui proses hash yang Anda masukkan.

      Jika Anda ingin memasukkan pengguna tambahan, Anda perlu melakukannya tanpa bendera -c, seperti ini:

      • sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

      Sekarang, saat Anda mengakses subdirektori phpMyAdmin Anda, Anda akan diminta nama akun dan kata sandi tambahan yang Anda baru saja konfigurasikan:

      https://domain_name_or_IP/phpmyadmin
      

      Kata sandi apache phpMyAdmin

      Setelah memasukkan autentikasi Apache, Anda akan dibawa ke laman autentikasi phpMyAdmin reguler untuk memasukkan kredensial MySQL Anda. Dengan menambahkan set kredensial non-MySQL ekstra, Anda memberikan basis data Anda suatu lapisan keamanan tambahan. Ini adalah sesuatu yang baik karena sejak dulu phpMyAdmin rentan terhadap ancaman keamanan.

      Kesimpulan

      Anda seharusnya kini telah memiliki phpMyAdmin yang terkonfigurasi dan siap digunakan pada server Ubuntu 20.04 Anda. Menggunakan antarmuka ini, Anda dapat menciptakan basis data, pengguna, dan tabel, serta melakukan operasi biasa seperti menghapus serta memodifikasi struktur dan data.



      Source link

      Cara Mengamankan Apache dengan Let’s Encrypt pada Ubuntu 20.04


      Pengantar

      Let’s Encrypt adalah Otoritas Sertifikat (CA) yang memfasilitasi perolehan dan penginstalan sertifikat TLS/SSL gratis, yang dengan demikian mengaktifkan HTTPS terenkripsi pada server web. Ini menyederhanakan proses dengan menyediakan klien perangkat lunak, Certbot, yang berusaha mengotomatiskan sebagian besar (jika bukan semua) langkah yang diperlukan. Saat ini, seluruh proses memperoleh dan menginstal sertifikat secara sepenuhnya berjalan otomatis baik pada Apache dan Nginx.

      Dalam panduan ini, kita akan menggunakan Certbot untuk memperoleh sertifikat SSL gratis untuk Apache pada Ubuntu 20.04, dan memastikan agar sertifikat ini disiapkan untuk diperbarui secara otomatis.

      Tutorial ini menggunakan berkas hos virtual yang terpisah alih-alih berkas konfigurasi asali Apache untuk menyiapkan situs web yang akan diamankan dengan Let’s Encrypt. Kami menyarankan untuk menciptakan berkas hos virtual Apache yang baru untuk setiap domain yang dihos di server, karena ini membantu menghindari kesalahan umum dan mempertahankan berkas konfigurasi asali sebagai penyiapan fallback.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda akan membutuhkan:

      • Satu server Ubuntu 20.04 yang disiapkan dengan mengikuti tutorial penyiapan server awal untuk Ubuntu 20.04 ini, termasuk satu pengguna non-root sudo dan satu firewall.

      • Nama domain yang terdaftar penuh. Tutorial ini akan menggunakan your_domain sebagai contoh di seluruh tulisan ini. Anda dapat membeli nama domain dari Namecheap, mendapat nama domain gratis di Freenom, atau menggunakan registrar domain pilihan Anda.

      • Kedua catatan DNS berikut disiapkan untuk server Anda. Anda dapat mengikuti pengantar DigitalOcean DNS ini untuk detail tentang cara menambahkannya.

        • Catatan A dengan your_domain yang mengarahkan ke alamat IP publik server Anda.
        • Catatan A dengan www.your_domain yang mengarahkan ke alamat IP publik server Anda.
      • Apache yang terinstal dengan mengikuti Cara Menginstal Apache pada Ubuntu 20.04. Pastikan Anda memiliki berkas hos virtual untuk domain Anda. Tutorial ini akan menggunakann /etc/apache2/sites-available/your_domain.conf sebagai contoh.

      Langkah 1 — Menginstal Certbot

      Untuk memperoleh sertifikat SSL dengan Let’s Encrypt, kita perlu menginstal perangkat lunak Certbot pada server Anda terlebih dahulu. Kita akan menggunakan repositori paket Ubuntu asali untuk itu.

      Kita membutuhkan dua paket: certbot dan python3-certbot-apache. Paket yang disebut terakhir adalah plugin yang mengintegrasikan Certbot dengan Apache, yang memungkinkan kita untuk mengotomatiskan perolehan sertifikat dan mengonfigurasi HTTPS di dalam server web Anda dengan satu perintah.

      • sudo apt install certbot python3-certbot-apache

      Anda juga akan diminta mengonfirmasi instalasi dengan menekan Y, lalu ENTER.

      Certbot sekarang telah terinstal di server Anda. Pada langkah selanjutnya, kita akan memverifikasi konfigurasi Apache untuk memastikan hos virtual Anda telah disiapkan dengan benar. Ini akan memastikan bahwa skrip klien certbot akan mampu mendeteksi domain Anda dan mengonfigurasi ulang server web Anda untuk menggunakan sertifikat SSL yang baru saja dihasilkan secara otomatis.

      Langkah 2 — Memeriksa Konfigurasi Hos Virtual Apache Anda

      Agar dapat memperoleh dan mengonfigurasi SSL untuk server web Anda secara otomatis, Certbot perlu menemukan hos virtual yang benar yang ada di dalam berkas konfigurasi Apache Anda. Nama (atau nama-nama) domain server Anda akan diambil dari arahan ServerName dan ServerAlias yang ditetapkan di dalam blok konfigurasi VirtualHost Anda.

      Jika Anda mengikuti langkah penyiapan hos virtual dalam tutorial instalasi Apache, Anda harusnya memiliki blok VirtualHost yang disiapkan untuk domain Anda di /etc/apache2/sites-available/your_domain.conf dengan arahan ServerName dan juga ServerAlias yang sudah diatur dengan benar.

      Untuk memeriksa ini, buka berkas hos virtual untuk domain Anda dengan menggunakan nano atau editor teks yang Anda sukai:

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Temukan baris ServerName dan ServerAlias yang sudah ada. Baris itu akan terlihat seperti ini:

      /etc/apache2/sites-available/your_domain.conf

      ...
      ServerName your_domain
      ServerAlias www.your_domain
      ...
      

      Jika Anda telah menyiapkan ServerName dan ServerAlias seperti ini, Anda dapat keluar dari editor teks Anda dan melanjutkan ke langkah selanjutnya. Jika Anda menggunakan nano, Anda dapat keluar dengan mengetik CTRL+X, lalu Y, dan ENTER untuk mengonfirmasi.

      Jika konfigurasi hos virtual Anda saat ini tidak sesuai dengan contoh, perbaruilah supaya sesuai contoh. Setelah Anda selesai, simpan berkas itu dan keluar dari editor. Lalu, jalankan perintah berikut untuk memvalidasi perubahan Anda:

      • sudo apache2ctl configtest

      Anda akan mendapat pesan Syntax OK sebagai respons. Jika Anda mendapat pesan kesalahan, buka kembali berkas host virtual dan periksa adanya kesalahan tik atau karakter yang hilang. Setelah sintaks berkas konfigurasi Anda benar, muat ulang Apache supaya perubahan itu diterapkan:

      • sudo systemctl reload apache2

      Dengan perubahan ini, Certbot akan dapat menemukan blok VirtualHost yang benar dan memperbaruinya.

      Selanjutnya, mari kita perbarui firewall untuk mengizinkan lalu lintas HTTPS.

      Langkah 3 — Mengizinkan HTTPS Melewati Firewall

      Jika firewall UFW Anda sudah diaktifkan, seperti yang disarankan oleh panduan prasyarat, Anda perlu menyesuaikan pengaturan untuk mengizinkan lalu lintas HTTPS. Setelah instalasi, Apache mendaftarkan beberapa profil aplikasi UFW yang berbeda. Kita dapat memanfaatkan profil Apache Full untuk mengizinkan baik lalu lintas HTTP dan HTTPS pada server Anda.

      Untuk memverifikasi lalu lintas seperti apa yang diizinkan pada server Anda, Anda dapat menggunakan:

      Jika Anda telah mengikuti salah satu panduan instalasi Apache kami, keluaran Anda akan terlihat seperti ini, yang berarti bahwa hanya lalu lintas HTTP pada porta 80 yang diizinkan untuk saat ini:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

      Untuk menambah lalu lintas HTTPS masuk, izinkan profil “Apache Full” dan hapus profil “Apache” yang lewah lainnya:

      • sudo ufw allow 'Apache Full'
      • sudo ufw delete allow 'Apache'

      Status Anda sekarang akan terlihat seperti ini:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)

      Anda sekarang siap untuk menjalankan Certbot dan memperoleh sertifikat Anda.

      Langkah 4 — Memperoleh Sertifikat SSL

      Certbot menyediakan berbagai cara untuk memperoleh sertifikat SSL melalui plugin. Plugin Apache akan menangani konfigurasi ulang Apache dan memuat ulang konfigurasi itu ketika diperlukan. Untuk menggunakan plugin ini, ketik yang berikut:

      Skrip ini akan meminta Anda menjawab serangkaian pertanyaan untuk mengonfigurasi sertifikat SSL Anda. Pertama, skrip ini akan meminta alamat surel Anda yang valid. Surel ini akan digunakan untuk pemberitahuan pembaruan dan keamanan:

      Output

      Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): you@your_domain

      Setelah menyediakan alamat surel yang valid, tekan ENTER untuk melanjutkan ke langkah selanjutnya. Anda kemudian akan diminta mengonfirmasi apakah Anda menyetujui ketentuan layanan dari Let’s Encrypt. Anda dapat mengonfirmasi dengan menekan A lalu ENTER:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Please read the Terms of Service at
      https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
      agree in order to register with the ACME server at
      https://acme-v02.api.letsencrypt.org/directory
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (A)gree/(C)ancel: A
      

      Selanjutnya, Anda akan ditanya apakah mau membagi surel Anda dengan Electronic Frontier Foundation untuk menerima berita dan informasi lainnya. Jika Anda tidak ingin berlangganan konten mereka, ketik N. Jika Anda mau, ketik Y. Lalu, tekan ENTER untuk melanjutkan ke langkah selanjutnya.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Would you be willing to share your email address with the Electronic Frontier
      Foundation, a founding partner of the Let's Encrypt project and the non-profit
      organization that develops Certbot? We'd like to send you email about our work
      encrypting the web, EFF news, campaigns, and ways to support digital freedom.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      (Y)es/(N)o: N
      

      Langkah selanjutnya akan meminta Anda untuk menginformasikan Certbot terkait Anda ingin mengaktifkan HTTPS untuk domain yang mana. Nama-nama domain yang terdaftar secara otomatis diperoleh dari konfigurasi hos virtual Apache Anda, itu sebabnya penting untuk memastikan bahwa Anda memiliki pengaturan ServerName dan ServerAlias yang dikonfigurasi dengan benar di dalam hos virtual Anda. Jika Anda ingin mengaktifkan HTTPS untuk semua nama domain yang terdaftar (disarankan), Anda dapat mengosongkan prompt itu dan tekan ENTER untuk melanjutkan. Jika tidak, pilih domain yang Anda ingin aktifkan HTTPS-nya dengan membuat daftar dari setiap nomor yang sesuai, yang dipisahkan dengan koma dan/atau spasi, lalu tekan ENTER.

      Which names would you like to activate HTTPS for?
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: your_domain
      2: www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate numbers separated by commas and/or spaces, or leave input
      blank to select all options shown (Enter 'c' to cancel):
      

      Anda akan melihat keluaran seperti ini:

      Obtaining a new certificate
      Performing the following challenges:
      http-01 challenge for your_domain
      http-01 challenge for www.your_domain
      Enabled Apache rewrite module
      Waiting for verification...
      Cleaning up challenges
      Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabled Apache socache_shmcb module
      Enabled Apache ssl module
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf
      Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
      

      Selanjutnya, Anda akan diminta memilih apakah Anda ingin lalu lintas HTTP dialihkan ke HTTPS atau tidak. Dalam praktiknya, itu berarti saat seseorang mengunjungi situs web Anda melalui saluran yang tidak terenkripsi (HTTP), dia akan secara otomatis dialihkan ke alamat HTTPS dari situs web Anda. Pilih 2 untuk mengaktifkan pengalihan, atau 1 jika Anda ingin mempertahankan baik HTTP dan HTTPS sebagai metode yang terpisah untuk mengakses situs web Anda.

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1: No redirect - Make no further changes to the webserver configuration.
      2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
      new sites, or if you're confident your site works on HTTPS. You can undo this
      change by editing your web server's configuration.
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
      
      

      Setelah langkah ini, konfigurasi Certbot selesai, dan Anda akan melihat catatan terakhir tentang sertifikat baru Anda, di mana Anda dapat menemukan berkas yang dihasilkan, dan bagaimana cara menguji konfigurasi Anda dengan menggunakan alat eksternal yang menganalisis keaslian sertifikat Anda:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Congratulations! You have successfully enabled https://your_domain and
      https://www.your_domain
      
      You should test your configuration at:
      https://www.ssllabs.com/ssltest/analyze.html?d=your_domain
      https://www.ssllabs.com/ssltest/analyze.html?d=www.your_domain
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      
      IMPORTANT NOTES:
       - Congratulations! Your certificate and chain have been saved at:
         /etc/letsencrypt/live/your_domain/fullchain.pem
         Your key file has been saved at:
         /etc/letsencrypt/live/your_domain/privkey.pem
         Your cert will expire on 2020-07-27. To obtain a new or tweaked
         version of this certificate in the future, simply run certbot again
         with the "certonly" option. To non-interactively renew *all* of
         your certificates, run "certbot renew"
       - Your account credentials have been saved in your Certbot
         configuration directory at /etc/letsencrypt. You should make a
         secure backup of this folder now. This configuration directory will
         also contain certificates and private keys obtained by Certbot so
         making regular backups of this folder is ideal.
       - If you like Certbot, please consider supporting our work by:
      
         Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
         Donating to EFF:                    https://eff.org/donate-le
      
      

      Sertifikat Anda sekarang sudah terinstal dan dimuat ke konfigurasi Apache. Coba muat ulang situs Anda dengan menggunakan https:// dan perhatikan indikator keamanan di peramban Anda. Peramban akan menunjukkan bahwa situs Anda sudah diamankan dengan benar, biasanya dengan adanya ikon kunci di dalam bilah alamat.

      Anda dapat menggunakan SSL Labs Server Test untuk memverifikasi nilai sertifikat Anda dan memperoleh informasi mendetail tentang hal itu, dari sudut pandang layanan eksternal.

      Di langkah selanjutnya yang juga merupakan langkah terakhir, kita akan menguji fitur pembaruan otomatis Certbot, yang menjamin bahwa sertifikat Anda akan diperbarui secara otomatis sebelum tanggal kedaluwarsa.

      Langkah 5 — Memverifikasi Pembaruan Otomatis Certbot

      Sertifikat Let’s Encrypt hanya berlaku selama 90 hari. Kebijakan ini diterapkan untuk mendorong pengguna supaya mengotomatiskan proses pembaruan sertifikatnya, serta memastikan bahwa sertifikat yang disalahgunakan atau kunci yang dicari akan kedaluwarsa lebih cepat daripada seharusnya.

      Paket certbot yang kita instal menangani pembaruan dengan memasukkan skrip pembaruan ke /etc/cron.d, yang dikelola oleh layanan systemctl yang bernama certbot.timer. Skrip ini berjalan dua kali sehari dan secara otomatis memperbarui sertifikat apa pun yang berada dalam waktu 30 hari dari tanggal kedaluwarsa.

      Untuk memeriksa status layanan ini dan memastikan bahwa layanan sudah aktif dan berjalan, Anda dapat menggunakan:

      • sudo systemctl status certbot.timer

      Anda akan medapat keluaran yang mirip dengan ini:

      Output

      ● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd[1]: Started Run certbot twice daily.

      Untuk menguji proses pembaruan, Anda dapat melakukan uji coba dengan certbot:

      • sudo certbot renew --dry-run

      Jika Anda tidak melihat kesalahan, maka Anda sudah siap. Ketika diperlukan, Certbot akan memperbarui sertifikat Anda dan memuat ulang Apache untuk menerapkan perubahan itu. Jika proses pembaruan otomatis itu terus-menerus gagal, Let’s Encrypt akan mengirim pesan ke surel yang Anda tentukan, memperingatkan Anda saat sertifikat Anda akan berakhir.

      Kesimpulan

      Dalam tutorial ini, Anda telah menginstal certbot klien Let’s Encrypt, mengonfigurasi dan menginstal sertifikat SSL untuk domain Anda, dan mengonfirmasi bahwa layanan pembaruan otomatis Certbot sudah aktif di dalam systemctl. Jika Anda memiliki pertanyaan lebih lanjut tentang cara menggunakan Certbot, dokumentasi mereka adalah tempat yang baik untuk memulai.



      Source link