Redis bermanfaat untuk banyak hal, salah satunya adalah caching. Anda juga dapat menggunakan Redis sebagai penyimpanan data utama atau bahkan sebagai pengganti database. Tetapi bagaimana Anda menjalankan instalasi Redis yang aman? Menginstal Redis bisa merepotkan, dan jika Anda tidak hati-hati, Anda bisa berakhir dengan banyak kesalahan. Beruntung bagi Anda, tutorial ini telah membantu Anda.
Dalam tutorial ini, Anda akan mempelajari cara menginstal Redis dengan aman di sistem Linux Anda, bersama dengan beberapa tips untuk menghindari kesalahan umum.
Baca terus dan selamatkan diri Anda dari sakit kepala dari pemecahan masalah kesalahan penginstalan Redis!
Prasyarat
Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:
- Mesin Ubuntu 20.04 LTS – Tutorial ini menggunakan Ubuntu 20.04 LTS, tetapi instruksinya serupa untuk sebagian besar distribusi Linux.
- Hak istimewa root atau pengguna non-root dengan
sudo
hak istimewa
Instal Ulang dengan Pengelola Paket APT
Ada beberapa cara untuk menginstal Redis di Ubuntu, tetapi untuk tutorial ini, Anda akan menggunakan manajer paket APT untuk menginstal Redis.
Redis ditulis dalam C, jadi Anda perlu mengkompilasi Redis dari kode sumbernya secara manual. Beberapa dependensi perlu dipasang, dan proses pembuatannya tidak sepenuhnya mudah.
Mengkompilasi Redis dari sumber tidak disarankan, tetapi keuntungannya adalah Anda dapat menyesuaikan instalasi jika Anda mau. Anda mengunduh kode sumber, lalu mengkonfigurasinya secara manual.
Buka terminal Anda dan jalankan apt update
perintah di bawah ini untuk memastikan Anda memiliki daftar paket terbaru.
sudo apt update -y

Sekarang, jalankan apt install
perintah di bawah ini untuk menginstal Redis di mesin Anda.
Perintah di bawah ini menggunakan apt
manajer paket untuk mengunduh dan menginstal redis-server
paket dari repositori Ubuntu ke mesin Anda. -y
bendera memberitahu apt
untuk menerima perintah selama proses instalasi secara otomatis.
sudo apt install redis-server -y

Mengonfigurasi File Redis.conf untuk Menjalankan Redis sebagai Layanan
Anda baru saja menginstal Redis, tetapi belum siap digunakan. Sebelum Anda dapat mulai menggunakan Redis, Anda harus terlebih dahulu mengonfigurasi redis.conf berkas.
redis.conf file konfigurasi disertakan dengan paket Redis yang Anda instal dan disimpan di /etc/redis/ direktori secara default. File ini berisi semua opsi konfigurasi untuk Redis.
Ekstensi file .conf adalah logis, karena mengikuti pola konvensional. Banyak program lain menggunakan gaya yang sama. Server web Apache, misalnya, menggunakan ekstensi file .conf untuk file konfigurasi utamanya.
1. Jalankan systemctl
berikut ini perintah ke stop
redis-server
melayani. Menghentikan layanan Redis agar tidak berjalan adalah praktik yang disarankan saat Anda pertama kali memulai Redis.
sudo systemctl stop redis.service
2. Selanjutnya, buka /etc/redis/redis.conf file di editor teks pilihan Anda.
Temukan diawasi direktif, lalu setel ke systemd , seperti yang ditunjukkan di bawah ini, dan simpan perubahannya. Melakukannya akan memberi tahu sistem operasi untuk menjalankan Redis sebagai layanan.

3. Sekarang, jalankan systemctl restart
perintah di bawah ini untuk memulai ulang layanan Redis (redis.service
) karena layanan Redis belum mengetahui tentang perubahan tersebut.
sudo systemctl restart redis.service
4. Terakhir, jalankan systemctl status
perintah di bawah ini untuk melihat apakah Redis sedang berjalan.
sudo systemctl status redis.service
Seperti yang Anda lihat di bawah, output menunjukkan bahwa layanan Redis sedang berjalan.

Menguji apakah Server Redis Berfungsi dengan Benar
Anda telah mengonfigurasi dan memverifikasi bahwa layanan Redis aktif berjalan, tetapi itu tidak berarti server Redis berfungsi. Bagaimana cara menguji apakah server Redis berfungsi dengan baik? Sambungkan ke server Redis dan kirim perintah untuk melihat apakah server merespons.
1. Jalankan redis-cli
perintah di bawah ini untuk terhubung ke server Redis. redis-cli
adalah antarmuka baris perintah untuk Redis, yang memungkinkan Anda mengirim perintah ke server dan memeriksa statusnya.
redis-cli
Di bawah, Anda dapat mengetahui bahwa Anda berada di perintah server Redis (127.0.0.1:6379> ). redis-cli
perintah mencoba menyambung ke server Redis di 127.0.0.1:6379
secara default.

2. Selanjutnya, jalankan ping
perintah di bawah ini untuk memeriksa apakah server Redis dapat dijangkau.
ping
Seperti yang Anda lihat, server mengembalikan PONG , yang menunjukkan server Redis dapat dijangkau dan sekarang berhasil berkomunikasi dengan layanan.

Mungkin Anda masih ragu; jalankan set
perintah di bawah. set
perintah adalah perintah Redis yang menetapkan pasangan kunci-nilai dalam database.
set test "This is a test"
Seperti yang Anda lihat, perintah set mengembalikan “OK ,” yang menunjukkan bahwa layanan Redis berfungsi dengan benar.

3. Jalankan exit
perintah di bawah ini untuk keluar dari redis-cli
. Setelah itu, koneksi ke server Redis akan ditutup.
exit
Mengikat Server Redis ke Localhost
Anda baru saja menguji bahwa server Redis berfungsi dengan baik, tetapi mungkin juga dapat diakses dari perangkat lain di jaringan Anda. Perilaku ini tidak diinginkan, dan Anda biasanya ingin melindungi server Redis Anda dari orang asing.
Mengikat server Redis ke localhost menetapkan perilaku bahwa hanya mesin tempat Anda menginstal Redis yang dapat mengakses server Redis.
1. Buka /etc/redis/redis.conf file di editor teks Anda.
2. Cari baris yang bertuliskan bind 127.0.0.1 ::1
dan batalkan komentar pada baris dengan menghapus tanda angka (#
) di awal baris.

3. Sekarang, jalankan perintah di bawah ini untuk memulai kembali redis-server
melayani.
sudo systemctl restart redis-server
4. Terakhir, jalankan perintah berikut untuk memeriksa apakah server Redis Anda terikat ke localhost. netstat -lnp
perintah mencantumkan semua koneksi jaringan yang aktif, dan grep redis
part memfilter output ke baris yang berisi “redis
.”
-lnp
singkatan dari Local Name Protocol, protokol jaringan yang digunakan oleh sistem mirip UNIX untuk menyelesaikan nama host ke alamat IP.
sudo netstat -lnp | grep redis
Anda dapat melihat di bawah bahwa server Redis sekarang hanya mendengarkan pada antarmuka localhost (127.0.0.1:6379
). Mencerminkan perubahan dalam file konfigurasi, Anda dapat melihat bahwa hanya antarmuka localhost yang terdaftar di bawah koneksi internet aktif Anda (tcp
).
Sekarang, tidak ada perangkat lain di jaringan Anda yang dapat terhubung ke server Redis Anda.

Mengamankan Koneksi Server Redis dengan Kata Sandi
Pada titik ini, Redis tidak diatur untuk mengharuskan pengguna mengautentikasi dengan kata sandi. Siapa pun yang mengetahui alamat IP atau nama host server Redis Anda dapat terhubung dan mengubah datanya.
Bagaimana Anda melindungi server Redis Anda? Tetapkan kata sandi untuk mewajibkan pengguna melakukan autentikasi saat menghubungkan ke server Redis Anda.
1. Buka kembali redis.conf file konfigurasi di editor teks/kode Anda.
2. Selanjutnya, atur kata sandi yang kuat dengan yang berikut:
- Cari
requirepass foobared
di bawahSECURITY
bagian - Hapus tanda angka (
#
) di awal baris - Ganti
foobared
dengan kata sandi pilihan Anda yang kuat dan simpan perubahannya

3. Jalankan perintah berikut untuk memulai ulang dan menyambung ke server Redis Anda.
sudo systemctl restart redis-server
redis-cli
4. Sekarang, jalankan ping
perintah untuk melihat apakah Anda akan mendapatkan respons dari server.
ping
Di bawah, Anda dapat melihat pesan kesalahan yang menyatakan NOAUTH Authentication diperlukan . Pesan ini menunjukkan bahwa Anda memerlukan kata sandi otentikasi untuk mengakses server Redis Anda dari jarak jauh.

5. Jalankan auth
di bawah ini perintah diikuti dengan kata sandi Anda untuk mengotentikasi koneksi Anda ke server Redis Anda.
auth Qae9p_fY:YjdtJ7k
Anda akan mendapatkan OK respon ketika otentikasi berhasil, seperti di bawah ini.

6. Terakhir, jalankan kembali ping
perintah untuk menguji apakah Anda telah mengautentikasi koneksi Anda ke server Redis Anda.
ping
Sekarang Anda akan mendapatkan PONG respons, seperti yang ditunjukkan di bawah ini, setelah mengautentikasi koneksi Anda. Pada titik ini, Anda sekarang telah berhasil melindungi server Redis Anda dengan kata sandi.

Menonaktifkan Perintah Berbahaya untuk Melindungi Server Redis Anda
Menyetel kata sandi untuk mengautentikasi koneksi ke server Redis Anda tidak berarti mendapatkan perlindungan 100%. Secara default, Redis menyertakan beberapa perintah berbahaya yang memungkinkan pengguna mengubah data di database Anda.
Saat dijalankan oleh pengguna yang tidak sah, perintah ini memungkinkan penyusup untuk membaca, memodifikasi, menghancurkan, dan bahkan menghapus data database Redis Anda.
Di bawah ini bukan daftar lengkap karena server Redis Anda mungkin memiliki perintah berbahaya tambahan, tetapi dalam kebanyakan kasus, ini adalah perintah berbahaya:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF
BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL
Untuk lebih mengamankan server Redis Anda, ganti nama perintah berbahaya ini di redis.conf berkas:
1. Buka redis.conf file di editor teks Anda dan cari Penggantian nama perintah bagian.
Ganti nama perintah menjadi string kosong untuk menonaktifkannya dengan mengikuti sintaks di bawah ini. Ganti the-command
dengan perintah yang sebenarnya untuk menonaktifkan.
rename-command the-command ""
Misalnya, nonaktifkan CONFIG
perintah dengan mengganti nama CONFIG
ke string kosong, seperti yang ditunjukkan di bawah ini, lalu simpan perubahannya. Tanda kutip ganda (“”) menunjukkan string kosong yang menandakan penonaktifan perintah.

2. Keluar dari editor teks dan jalankan perintah di bawah ini untuk memulai ulang server Redis.
sudo systemctl restart redis-server
3. Sekarang jalankan perintah berikut untuk terhubung ke server Redis Anda.
redis-cli
auth Qae9p_fY:YjdtJ7k
4. Terakhir, jalankan config get
perintah untuk menguji bahwa CONFIG
perintah dinonaktifkan.
config get requirepass
Anda akan mendapatkan ERR perintah yang tidak diketahui config
respon, seperti yang ditunjukkan di bawah ini, yang menunjukkan bahwa CONFIG
perintah dinonaktifkan.

Jika config get requirepass
perintah mendorong melalui, itu meminta server Redis Anda untuk kata sandi untuk mengotentikasi koneksi ke server Redis Anda.
Anda sekarang telah berhasil mengganti nama perintah Redis yang berbahaya untuk melindungi server Redis Anda. Sekarang terus nonaktifkan perintah berbahaya lainnya di redis.conf berkas.
Memblokir Permintaan Koneksi ke Redis Server dengan Firewall
Cara lain untuk mengamankan server Redis Anda adalah dengan menyiapkan firewall. Menyiapkan firewall mengharuskan Anda untuk mengizinkan hanya port yang diperlukan untuk setiap layanan yang berjalan di server Anda.
Misalnya, jika Anda menjalankan Redis di server Anda pada port 6379
, maka port itulah yang hanya perlu Anda buka. Jika Anda perlu mengizinkan akses dari alamat IP atau rentang alamat tertentu, Anda dapat menambahkan alamat tersebut ke aturan firewall.
Untuk menyiapkan firewall, Anda harus menginstal alat konfigurasi firewall terlebih dahulu. Contoh ini menggunakan UFW, alat konfigurasi firewall yang umum digunakan di Linux. Namun Anda juga dapat menggunakan alat lain, seperti iptables, untuk menyiapkan firewall.
1. Jalankan perintah berikut untuk menginstal UFW di komputer Anda.
sudo apt install ufw -y
2. Selanjutnya, jalankan perintah di bawah ini untuk mengaktifkan UFW.
sudo ufw enable
Masukkan 'Y' ketika Anda mendapatkan prompt yang ditunjukkan di bawah ini untuk terus menjalankan perintah.

3. Jalankan ufw
perintah di bawah ini untuk menambahkan aturan, yang memungkinkan (allow
) lalu lintas pada port 6379
untuk server Redis Anda. Ganti 11.22.33.44
Alamat IP dengan alamat IP pengguna yang Anda tuju.
sudo ufw allow from 11.22.33.44 to any port 6379

4. Terakhir, jalankan perintah di bawah ini untuk memverifikasi bahwa Anda telah berhasil menambahkan aturan firewall. Perintah memeriksa status
firewall Anda.
sudo ufw status
Anda dapat melihat pada output di bawah bahwa firewall aktif dan memiliki aturan untuk mengizinkan lalu lintas pada port 6379
untuk Redis dari alamat IP 11.22.33.44
.

Sekarang, setiap pengguna dengan alamat IP 11.22.33.44
dapat terhubung ke Redis melalui port 6379
dan perlu mengautentikasi dengan kata sandi. Anda dapat menambahkan port tambahan untuk layanan lain dengan cara yang sama.
Kesimpulan
Sepanjang tutorial ini, Anda telah mempelajari cara memasang dan mengamankan server Redis Anda dengan mengganti nama perintah berbahaya menjadi string kosong dan menyiapkan firewall.
Dengan pengetahuan yang baru ditemukan ini, Anda dapat menikmati manfaat penuh dari Redis tanpa khawatir server Anda terkena risiko yang tidak perlu.
Ingin belajar lebih banyak? Mengapa tidak memulai dengan mengamankan server Redis di Kubernetes?