Langkah-Langkah Mengamankan VPS Anda

· 6 min read
Langkah-Langkah Mengamankan VPS Anda
Photo by Paul Hanaoka / Unsplash
Server VPS Linux memiliki kelebihannya masing-masing. Faktanya, VPS Linux jauh lebih aman jika dibandingkan dengan sistem operasi lain seperti Windows karena model keamanan Linux (LSM). Namun mereka tidak sempurna, dan tentunya tidak kebal. Dalam postingan ini kami akan membahas langkah-langkah terpenting yang dapat Anda lakukan untuk mengamankan VPS Anda dan melindunginya dari peretas.

Gunakan pengguna non-root

Hal pertama yang biasanya saya lakukan untuk mengamankan instance VPS baru adalah membuat pengguna baru. Saya menggunakan pengguna ini alih-alih root untuk masuk ke VPS dan menjalankan perintah. Sebaiknya hindari penggunaan pengguna root karena pengguna tersebut memiliki akses tidak terbatas ke mesin dan berpotensi menyebabkan kerusakan serius.

Menggunakan pengguna non-root mengikuti dan menambahkan lapisan perlindungan terhadap penyusup yang ingin mendapatkan keuntungan prinsip hak istimewa paling rendahroot

Membuat pengguna baru

Saat login ke VPS sebagai root, buat pengguna baru dengan perintah berikut:

# Choose any username you want
adduser username
passwd username
# Provide some strong password

Semua perintah dalam artikel ini ditujukan untuk Ubuntu. Distribusi Linux lain biasanya memiliki program serupa yang dapat melakukan hal yang sama. Jika Anda mencari di Google ), Anda berpeluang besar menemukan apa yang Anda cari.<command> equivalent <distribution> (misalnya: adduser equivalent fedora

Uji pengguna yang dibuat

$ id username
uid=1000(username) gid=1000(username) groups=1000(username)

Kami akan memberi pengguna ini kemampuan untuk menjalankan perintah sebagai root dengan sudo karena kami akan memerlukannya nanti di artikel ini. Anda dapat melakukannya dengan menambahkan pengguna ke grup sudo:

# Use your username here
usermod -aG sudo username

-aG adalah singkatan dari tambahkan ke grup. Jika Anda menjalankan id <user> lagi, Anda dapat melihat sudo telah ditambahkan ke daftar grup pengguna ini.

$ id username
uid=1000(username) gid=1000(username) groups=1000(username),27(sudo)

Siapkan SSH untuk pengguna baru

Langkah selanjutnya adalah menambahkan kunci publik Anda ke folder .ssh pengguna sehingga Anda dapat masuk sebagai pengguna dengan SSH.

Mari beralih ke pengguna baru dan buat folder .ssh di direktori beranda pengguna:

# Switch to the new user
su - username

# Create the SSH folder
mkdir ~/.ssh

SSH terlalu pilih-pilih tentang izin file dan folder dan akan gagal dengan kesalahan jika terlalu permisif. Mari kita ubah izin folder sehingga pengguna ini diperbolehkan membaca dan menulis ke folder tersebut:hanya

# Restrict access to this user only
chmod 700 ~/.ssh

Dalam folder ini, kami akan membuat file bernama authorized_keys yang berisi kunci publik Anda. SSH akan mencari kunci dalam file ini ketika Anda terhubung ke server.

# Create and open the file where SSH will look for your public key
nano ~/.ssh/authorized_keys

Perintah di atas akan membuka file di editor untuk menyimpan. dan untuk keluar, lalu nano sehingga Anda dapat menempelkan kunci publik Anda. Tekan CTRL + XYenter

Cara cepat untuk menyalin konten file di terminal adalah dengan menggunakan adalah nama kunci publik Anda berkas kunci). Kunci publik kemudian disalin ke clipboard dan Anda dapat menempelkannya di mana pun Anda mau. (dengan asumsi di mesin Anda dan jalankan pbcopy. Untuk menyalin kunci publik Anda, navigasikan ke folder .sshpbcopy <aside id_rsa.pubid_rsa.pub

Konfirmasikan kunci telah disimpan dengan menjalankan cat ~/.ssh/authorized_keys. Ini akan mencetak konten file ke terminal dan Anda akan melihat kunci publik Anda.

Mari kita ubah izin file ini juga:

# Restrict access to this user only
chmod 600 ~/.ssh/authorized_keys

Buka sesi terminal kedua dan konfirmasikan bahwa Anda dapat melakukan SSH ke server dengan ssh <user>@<server_ip>. Jika Anda telah mengikuti langkah-langkah di atas dengan benar, Anda akan melihat pesan selamat datang Ubuntu.

Tutup sesi terminal pertama dengan menjalankan exit dua kali dan lanjutkan ke bagian berikutnya.

Nonaktifkan kata sandi dan login root

Pasangan kunci pribadi/publik memiliki lebih banyak bit data sehingga tidak mungkin ditebak selama umur manusia.

.Anda

Saat kami melakukannya, kami juga akan menonaktifkan proses masuk sebagai root karena kami tidak akan menggunakannya lagi.

Kedua pengaturan ada dalam file konfigurasi SSH global. Mengubah file ini mengharuskan Anda menggunakan sudo yang akan meminta Anda memasukkan kata sandi. Ini adalah sandi yang sama yang Anda pilih saat membuat pengguna.

# Open the SSH config file in the `nano` editor
sudo nano /etc/ssh/sshd_config

Gulir ke bawah hingga Anda menemukan PermitRootLogin dan ubah nilainya menjadi no. Lakukan hal yang sama untuk PasswordAuthentication. Pastikan mereka tidak dikomentari dengan menghapus # di depannya (misalnya: #PasswordAuthentication). Tekan CTRL + X untuk keluar, lalu Y dan enter untuk menyimpan.

Terakhir, Anda perlu memulai ulang layanan SSH agar perubahan diterapkan:

# Restart the SSH service
sudo systemctl reload sshd

Pastikan login root dan kata sandi dinonaktifkan dengan mencoba login sebagai pengguna root ssh root@<server_ip>. Anda akan melihat Permission denied (publickey). tercetak di terminal.

Blokir lalu lintas masuk di port non-publik

Menggunakan firewall untuk menutup yang dapat dieksploitasi oleh penyusup.kerentanan port, kecuali yang perlu bersifat publik, merupakan bagian penting dari keamanan server. Setiap aplikasi yang berjalan pada mesin mempunyai potensi semua

Lebih sedikit aplikasi yang terekspos berarti permukaan serangan yang lebih kecil sehingga menghasilkan server yang lebih aman.

Firewall terdiri dari serangkaian lalu lintas masuk/keluar yang menentukan apakah suatu paket boleh melanjutkan ke tujuannya atau tidak.filter. Setiap aturan berfungsi sebagai aturan

Kami akan menggunakan UFW (Uncomplicated FireWall) untuk membuat aturan firewall. UFW adalah program yang mudah digunakan yang dibangun di atas iptables — antarmuka tradisional dan lebih sulit untuk mengonfigurasi aturan firewall. UFW sudah diinstal sebelumnya di Ubuntu.

Untuk sebagian besar instance VPS yang baru dibuat, kami ingin memulai dengan membuka tiga port: 22 untuk SSH, 80 untuk lalu lintas HTTP, dan 443 untuk lalu lintas HTTPS. Anda dapat membuka port tertentu atau Anda dapat menentukan nama layanan yang dipetakan ke port tersebut. Pada contoh di bawah ini kami menggunakan nama layanan. .sudo ufw allow http sama dengan sudo ufw allow 80/tcp

# Allow SSH connections
sudo ufw allow ssh

# Allow HTTP traffic
sudo ufw allow http

# Allow HTTPS traffic
sudo ufw allow https

Anda akan melihat dua aturan ditambahkan setelah setiap perintah, satu untuk IPv4 dan satu lagi untuk IPv6. Aturan ini tidak akan berlaku sampai kami mengaktifkan firewall:

# Enable firewall
sudo ufw enable

Anda akan mendapat peringatan bahwa mengaktifkan firewall mungkin menutup koneksi SSH yang aktif. Kami telah menambahkan aturan untuk SSH jadi kami tidak perlu khawatir tentang hal itu. Ketik untuk melanjutkan.y diikuti dengan enter

Mari kita verifikasi bahwa firewall sudah aktif dan berjalan:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Anda mungkin menambahkan layanan tambahan di masa mendatang yang perlu dibuka untuk umum. Sintaks untuk . Perubahan akan langsung berlaku tanpa perlu memulai ulang firewall. port, jalankan: menutup. Untuk suatu port adalah: mengekspossudo ufw allow <port>/tcpsudo ufw deny <port>/tcp

Aktifkan pembaruan keamanan otomatis

.terlupakan dan sering kali memakan waktu

Dengan mengotomatiskan proses ini, Anda memastikan sistem selalu mutakhir dengan perbaikan keamanan terkini.

Catatan: Pembaruan otomatis hanya diterapkan pada perangkat lunak yang diinstal melalui manajer paket Ubuntu dan tidak menyertakan dependensi khusus aplikasi (misalnya: dependensi npm untuk Node.js). Merupakan praktik yang baik untuk memperbarui dependensi aplikasi Anda dari waktu ke waktu.

Ubuntu sudah diinstal sebelumnya dengan paket bernama unattended-upgrades yang memungkinkan kita mengonfigurasi pembaruan otomatis. Alat ini akan memeriksa secara berkala apakah paket yang diinstal pada mesin Anda memiliki rilis baru dan menginstalnya jika diperlukan. Anda dapat menentukan secara terperinci pembaruan mana yang ingin Anda instal dan mana yang harus dilewati. Kami akan mengubah pembaruan otomatis hanya untuk rilis keamanan guna meminimalkan kemungkinan terjadinya perubahan yang dapat menyebabkan gangguan.

Perintah berikut mengaktifkan pembaruan keamanan otomatis:

# Enable automatic security updates
sudo dpkg-reconfigure --priority=low unattended-upgrades

Anda akan melihat dialog interaktif menanyakan apakah Anda ingin mengaktifkan pembaruan otomatis, pilih Yes.

Perintah ini mengedit dua file:

  • /etc/apt/apt.conf.d/20auto-upgrades (mengonfigurasi kapan dan bagaimana skrip harus dijalankan )
  • /etc/apt/apt.conf.d/50unattended-upgrades(mengonfigurasi apakah pembaruan harus diinstal atau dilewati)

Jika Anda ingin mempelajari lebih lanjut, kunjungi dokumentasi pembaruan keamanan otomatis di situs web Ubuntu.

Untuk memverifikasi bahwa pembaruan otomatis diaktifkan:

$ apt-config dump APT::Periodic::Unattended-Upgrade
APT::Periodic::Unattended-Upgrade "1";

"1" berarti setiap 1 hari. Anda kini telah mengaktifkan pembaruan keamanan otomatis harian untuk server Anda dan tidak perlu mengkhawatirkan hal itu lagi

Nonaktifkan protokol 1

Layanan SSH bekerja dengan 2 protokol yaitu protokol 1 dan protokol 2. Protokol 1 memiliki keamanan yang lebih rendah dibandingkan yang lain, jadi lebih baik menggunakan protokol 2 dalam komunikasi Anda.

Untuk menonaktifkan protokol 1, buka file sshd_config dengan editor.

nano /etc/ssh/sshd_config

Temukan pernyataan berikut dan ubah ke "protokol 2".

# Protocol 2,1

Protocol 2

Mulai ulang layanan SSH setelah melakukan perubahan dan simpan file.

Service ssh restart

Gunakan port non-standar untuk SSH

Port layanan SSH default adalah 22, jadi peretas akan memeriksa port ini sebelum melakukan hal lain. Dalam beberapa kasus, administrator mengubah port SSH ke 2222, tetapi Anda harus tahu bahwa peretas pasti akan memindai port 22 dan jika tidak mendapatkan hasil, pilihan kedua mereka adalah port 2222. Lebih baik menggunakan port dengan banyak digit yang tidak dicadangkan untuk layanan lain. Pilihan terbaik adalah antara 10.000 dan 65.000, yang sebagian besar gratis.

Langkah-langkah keamanan tambahan mencakup audit file, lingkungan eksekusi terisolasi (), pembatasan kecepatan dengan fail2ban, dan banyak lagi.dengan Docker