7 Tindakan Keamanan untuk Melindungi Server Anda
Introduction
Saat menyiapkan infrastruktur, menjalankan dan menjalankan aplikasi Anda akan sering menjadi perhatian utama Anda. Namun, membuat aplikasi Anda berfungsi dengan benar tanpa menangani kebutuhan keamanan infrastruktur Anda dapat menimbulkan konsekuensi buruk di telepon.
Dalam panduan ini, kita akan membahas beberapa praktik keamanan dasar yang terbaik untuk dikonfigurasi sebelumnya atau saat Anda menyiapkan aplikasi Anda.
SSH KEYS
Kunci SSH adalah sepasang kunci kriptografi yang dapat digunakan untuk mengotentikasi ke server SSH sebagai alternatif untuk login berbasis kata sandi. Pasangan kunci pribadi dan publik dibuat sebelum otentikasi. Kunci pribadi dirahasiakan dan dilindungi oleh pengguna, sedangkan kunci publik dapat dibagi dengan siapa saja.
Untuk mengkonfigurasi otentikasi kunci SSH, Anda harus memasukkan kunci publik pengguna ke server dalam direktori khusus. Saat pengguna terhubung ke server, server akan meminta bukti bahwa klien memiliki kunci pribadi terkait. Klien SSH akan menggunakan kunci privat untuk merespons dengan cara yang membuktikan kepemilikan kunci pribadi. Server kemudian akan membiarkan klien terhubung tanpa password. Untuk mempelajari lebih lanjut tentang bagaimana kunci SSH bekerja, lihat artikel kami di sini.
Dengan SSH, semua jenis otentikasi, termasuk otentikasi kata sandi, benar-benar dienkripsi. Namun, bila login berbasis password diperbolehkan, pengguna jahat dapat berulang kali mencoba mengakses server. Dengan daya komputasi modern, adalah mungkin untuk masuk ke server dengan mengotomatisasi upaya ini dan mencoba kombinasi setelah kombinasi sampai ditemukan kata kunci yang tepat.
Menyiapkan otentikasi kunci SSH memungkinkan Anda untuk menonaktifkan otentikasi berbasis kata sandi. Kunci SSH pada umumnya memiliki lebih banyak bit data daripada kata kunci, yang berarti ada kemungkinan kombinasi yang lebih mungkin diserang oleh penyerang. Banyak algoritma kunci SSH dianggap tidak dapat dipecahkan oleh perangkat keras komputasi modern hanya karena mereka memerlukan terlalu banyak waktu untuk bisa melewati kemungkinan kecocokan.
Seberapa Sulitnya Melaksanakannya?
Kunci SSH sangat mudah diatur dan merupakan cara yang disarankan untuk masuk ke lingkungan server Linux atau Unix manapun dari jarak jauh. Sepasang kunci SSH dapat dihasilkan pada mesin Anda dan Anda dapat mentransfer kunci publik ke server Anda dalam beberapa menit.
Untuk mempelajari tentang cara menyiapkan kunci, ikuti panduan ini. Jika Anda masih merasa perlu otentikasi password, pertimbangkan untuk menerapkan solusi seperti fail2ban di server Anda untuk membatasi dugaan password.
Firewall
Firewall adalah perangkat lunak (atau perangkat keras) yang mengendalikan layanan apa yang terpapar pada jaringan. Ini berarti memblokir atau membatasi akses ke setiap pelabuhan kecuali yang harus tersedia untuk umum.
Pada server biasa, beberapa layanan mungkin berjalan secara default. Ini dapat dikategorikan ke dalam kelompok berikut:
Pelayanan publik yang bisa diakses oleh siapapun di internet, sering anonim. Contoh bagus dari ini adalah server web yang memungkinkan akses ke situs Anda.Layanan pribadi yang hanya boleh diakses oleh sekelompok akun resmi yang dipilih atau dari lokasi tertentu. Contoh dari ini mungkin merupakan panel kontrol database.Layanan internal yang harus bisa diakses hanya dari dalam server itu sendiri, tanpa memaparkan layanan ke dunia luar. Misalnya, ini mungkin database yang hanya menerima koneksi lokal.Firewall dapat memastikan bahwa akses ke perangkat lunak Anda dibatasi sesuai dengan kategori di atas. Pelayanan publik dapat dibiarkan terbuka dan tersedia untuk semua orang dan layanan pribadi dapat dibatasi berdasarkan kriteria yang berbeda. Layanan internal dapat dilakukan sepenuhnya tidak dapat diakses oleh dunia luar. Untuk port yang tidak digunakan, akses diblokir seluruhnya di sebagian besar konfigurasi.
Bagaimana Mereka Meningkatkan Keamanan?
Firewall adalah bagian penting dari konfigurasi server manapun. Bahkan jika layanan Anda sendiri menerapkan fitur keamanan atau dibatasi pada antarmuka yang Anda inginkan untuk dijalankan, firewall berfungsi sebagai lapisan perlindungan ekstra.
Firewall yang dikonfigurasi dengan benar akan membatasi akses terhadap segala hal kecuali layanan spesifik yang Anda perlukan agar tetap terbuka. Mengekspos hanya beberapa perangkat lunak mengurangi permukaan serangan server Anda, sehingga membatasi komponen yang rentan terhadap eksploitasi.
Seberapa Sulitnya Melaksanakannya?
Ada banyak firewall yang tersedia untuk sistem Linux, beberapa di antaranya memiliki kurva belajar yang lebih curam daripada yang lain. Secara umum, pengaturan firewall hanya perlu beberapa menit dan hanya perlu terjadi saat penyiapan awal server Anda atau bila Anda membuat perubahan pada layanan apa yang ditawarkan di komputer Anda.
Pilihan sederhana adalah firewall UFW. Pilihan lainnya adalah menggunakan iptables atau firewall CSF.
VPNs and Private Networking
Jaringan pribadi adalah jaringan yang hanya tersedia untuk server atau pengguna tertentu. Misalnya, di DigitalOcean, jaringan pribadi tersedia di beberapa daerah sebagai jaringan luas data center.
A VPN, atau jaringan pribadi virtual, adalah cara untuk membuat koneksi aman antara komputer jarak jauh dan menghadirkan koneksi seolah-olah merupakan jaringan pribadi lokal. Ini menyediakan cara untuk mengkonfigurasi layanan Anda seolah-olah berada di jaringan pribadi dan menghubungkan server jauh melalui koneksi aman.
Bagaimana Mereka Meningkatkan Keamanan?
Memanfaatkan pribadi bukan jaringan publik untuk komunikasi internal hampir selalu lebih baik mengingat pilihan antara keduanya. Namun, karena pengguna lain di dalam pusat data dapat mengakses jaringan yang sama, Anda tetap harus menerapkan langkah-langkah tambahan untuk mengamankan komunikasi antara server Anda.
Menggunakan VPN adalah, secara efektif, cara untuk memetakan jaringan pribadi yang hanya bisa dilihat oleh server Anda. Komunikasi akan sepenuhnya pribadi dan aman. Aplikasi lain dapat dikonfigurasi untuk melewati lalu lintas mereka melalui antarmuka virtual yang ditampilkan perangkat lunak VPN. Dengan cara ini, hanya layanan yang dimaksudkan untuk dapat dikonsumsi oleh klien di internet umum yang perlu terpapar di jaringan publik.
Seberapa Sulitnya Melaksanakannya?
Memanfaatkan jaringan pribadi di datacenter yang memiliki kemampuan ini semudah memungkinkan antarmuka selama pembuatan server Anda dan mengkonfigurasi aplikasi dan firewall Anda untuk menggunakan jaringan pribadi. Perlu diingat bahwa data center wide-wide private network berbagi ruang dengan server lain yang menggunakan jaringan yang sama.
Sedangkan untuk VPN, pengaturan awal sedikit lebih banyak terlibat, namun keamanan yang meningkat sangat berharga untuk sebagian besar kasus penggunaan. Setiap server pada VPN harus memiliki keamanan dan data konfigurasi bersama yang diperlukan untuk membuat sambungan aman terpasang dan dikonfigurasi. Setelah VPN aktif dan berjalan, aplikasi harus dikonfigurasi untuk menggunakan terowongan VPN. Untuk mempelajari tentang cara menyiapkan VPN untuk menghubungkan infrastruktur Anda dengan aman, lihat tutorial OpenVPN kami.
Public Key Infpastructure and SSL/TLS Encryption
Infrastruktur kunci publik, atau PKI, pengacu pada sistem yang dirancang untuk membuat, mengelola, dan memvalidasi sertifikat untuk mengidentifikasi individu dan mengenkripsi komunikasi. Sertifikat SSL atau TLS dapat digunakan untuk mengotentikasi entitas yang berbeda satu sama lain. Setelah otentikasi, mereka juga dapat digunakan untuk komunikasi terenkripsi yang telah ada.
Bagaimana Mereka Meningkatkan Keamanan?
Menetapkan otoritas sertifikat dan sertifikat pengelolaan untuk server Anda memungkinkan setiap entitas dalam infrastruktur Anda memvalidasi identitas anggota lainnya dan mengenkripsi lalu lintas mereka. Hal ini dapat mencegah serangan man-in-the-middle dimana penyerang meniru server di infrastruktur Anda untuk mencegah lalu lintas.
Setiap server dapat dikonfigurasi untuk mempercayai otoritas sertifikat terpusat. Setelah itu, sertifikat apa pun yang bisa ditandatangani oleh tanda otoritas secara implisit. Jika aplikasi dan protokol yang Anda gunakan untuk mengkomunikasikan dukungan enkripsi TLS / SSL, ini adalah cara mengenkripsi sistem Anda tanpa overhead terowongan VPN (yang juga sering menggunakan SSL secara internal).
Seberapa Sulitnya Melaksanakannya?
Mengkonfigurasi otoritas sertifikat dan menyiapkan infrastruktur kunci publik lainnya dapat melibatkan sedikit usaha awal. Selanjutnya, sertifikat pengelolaan dapat menimbulkan beban administrasi tambahan bila sertifikat baru harus dibuat, ditandatangani, atau dicabut.
Bagi banyak pengguna, menerapkan infrastruktur kunci publik yang lengkap akan lebih masuk akal karena kebutuhan infrastruktur mereka tumbuh. Mengamankan komunikasi antara komponen yang menggunakan VPN mungkin merupakan langkah berhenti yang baik sampai Anda mencapai titik di mana PKI layak dikenai biaya administrasi ekstra.
Service Auditing
Sampai sekarang, kami telah membahas beberapa teknologi yang dapat Anda terapkan untuk meningkatkan keamanan Anda. Namun, sebagian besar keamanan menganalisis sistem Anda, memahami permukaan serangan yang tersedia, dan mengunci komponen sebaik mungkin.
Audit layanan adalah proses untuk menemukan layanan apa yang berjalan di server di infrastruktur Anda. Seringkali, sistem operasi default dikonfigurasi untuk menjalankan layanan tertentu saat boot. Menginstal perangkat lunak tambahan terkadang dapat menarik dependensi yang juga dimulai secara otomatis.
Audit layanan adalah cara untuk mengetahui layanan apa yang sedang berjalan di sistem Anda, port mana yang mereka gunakan untuk komunikasi, dan protokol apa yang diterima. Informasi ini dapat membantu Anda mengkonfigurasi pengaturan firewall Anda.
Bagaimana cara meningkatkan keamanan?
Server memulai banyak proses untuk keperluan internal dan menangani klien eksternal. Masing-masing merupakan permukaan serangan yang diperluas untuk pengguna jahat. Semakin banyak layanan yang Anda jalankan, semakin besar kemungkinan ada kerentanan yang ada pada perangkat lunak Anda yang mudah diakses.
Setelah Anda memiliki ide bagus tentang layanan jaringan apa yang berjalan di mesin Anda, Anda dapat mulai menganalisis layanan ini. Beberapa pertanyaan yang ingin Anda tanyakan kepada diri sendiri untuk masing-masing adalah:
Haruskah layanan ini berjalan?Apakah layanan berjalan pada antarmuka yang tidak perlu? Haruskah itu terikat pada satu IP?Apakah aturan firewall Anda terstruktur untuk mengizinkan lalu lintas yang sah ke layanan ini?Apakah aturan firewall menghalangi lalu lintas yang tidak sah?Apakah Anda memiliki metode untuk menerima peringatan keamanan tentang kerentanan untuk masing-masing layanan ini?Jenis audit layanan ini harus menjadi praktik standar saat mengkonfigurasi server baru di infrastruktur Anda.
Seberapa Sulitnya Melaksanakannya?
Melakukan audit layanan dasar sangat sederhana. Anda dapat mengetahui layanan mana yang mendengarkan port pada setiap antarmuka dengan menggunakan perintah netstat. Contoh sederhana yang menunjukkan nama program, PID, dan alamat yang digunakan untuk mendengarkan lalu lintas TCP dan UDP adalah:
Anda akan melihat output yang terlihat seperti ini:
Kolom utama yang perlu Anda perhatikan adalah nama Proto, Local Address, dan PID / Program. Jika alamatnya adalah 0.0.0.0, maka layanan tersebut menerima koneksi pada semua interface.
File Auditing dan Intrusion Detection Systems
Pengauditan file adalah proses membandingkan sistem saat ini dengan catatan karakteristik file dan file dari sistem Anda saat keadaannya diketahui-baik. Ini digunakan untuk mendeteksi perubahan pada sistem yang mungkin telah diotorisasi.
Sistem deteksi intrusi, atau IDS, adalah perangkat lunak yang memonitor sistem atau jaringan untuk aktivitas yang tidak sah. Banyak implementasi IDS berbasis host menggunakan audit file sebagai metode untuk memeriksa apakah sistem telah berubah.
Bagaimana Mereka Meningkatkan Keamanan?
Serupa dengan audit tingkat layanan di atas, jika Anda serius dalam memastikan sistem yang aman, sangat berguna untuk dapat melakukan audit tingkat file pada sistem Anda. Hal ini dapat dilakukan secara berkala oleh administrator atau sebagai bagian dari proses otomatis dalam IDS.
Strategi ini adalah beberapa cara untuk benar-benar yakin bahwa filesystem Anda belum diubah oleh beberapa pengguna atau proses. Karena berbagai alasan, penyusup sering ingin tetap tersembunyi sehingga mereka dapat terus mengeksploitasi server untuk jangka waktu yang lama. Mereka mungkin mengganti binari dengan versi yang dikompromikan. Melakukan audit terhadap filesystem akan memberi tahu Anda jika ada file yang telah diubah, memungkinkan Anda untuk percaya diri dalam integritas lingkungan server Anda.
Seberapa Sulitnya Melaksanakannya?
Melaksanakan IDS atau melakukan audit file bisa menjadi proses yang sangat intensif. Konfigurasi awal melibatkan sistem auditing tentang perubahan non-standar yang telah Anda buat ke server dan menentukan jalur yang harus dikecualikan untuk membuat pembacaan dasar.
Ini juga membuat operasi sehari-hari lebih banyak terlibat. Ini mempersulit prosedur pemutakhiran karena Anda perlu memeriksa ulang sistem sebelum menjalankan pembaruan dan kemudian menciptakan kembali baseline setelah menjalankan pembaruan untuk menangkap perubahan pada versi perangkat lunak. Anda juga perlu melepaskan laporan ke lokasi lain sehingga penyusup tidak dapat mengubah audit untuk menutupi jejak mereka.
Meskipun hal ini dapat meningkatkan beban administrasi Anda, karena dapat memeriksa sistem Anda terhadap salinan yang diketahui baik adalah satu-satunya cara untuk memastikan bahwa file belum diubah tanpa sepengetahuan Anda. Beberapa sistem audit auditing / intrusi populer adalah Tripwire dan Aide.
Isolated Execution Environments
Mengisolasi lingkungan eksekusi mengacu pada metode di mana komponen individual dijalankan di dalam ruang khusus mereka sendiri.
Ini bisa berarti memisahkan komponen aplikasi diskrit Anda ke server mereka sendiri atau mungkin merujuk pada konfigurasi layanan Anda untuk beroperasi di lingkungan chroot atau kontainer. Tingkat isolasi sangat bergantung pada persyaratan aplikasi dan kenyataan infrastruktur Anda.
Bagaimana Mereka Meningkatkan Keamanan?
Mengisolasi proses Anda ke dalam lingkungan eksekusi individu meningkatkan kemampuan Anda untuk mengisolasi masalah keamanan yang mungkin timbul. Serupa dengan bagaimana bulkheads dan kompartemen dapat membantu mengatasi pelanggaran lambung kapal, memisahkan komponen individual Anda dapat membatasi akses penyusup ke bagian lain dari infrastruktur Anda.
Seberapa Sulitnya Melaksanakannya?
Bergantung pada jenis penahanan yang Anda pilih, mengisolasi aplikasi Anda bisa relatif sederhana. Dengan mengemas komponen individual Anda ke dalam wadah, Anda dapat dengan cepat mencapai ukuran isolasi tertentu, namun perhatikan bahwa Docker tidak menganggap wadahnya sebagai fitur keamanan.
Menyiapkan lingkungan chroot untuk masing-masing bagian dapat memberikan beberapa tingkat isolasi juga, tapi ini juga metode isolasi yang sangat mudah karena seringkali ada cara untuk memecahkan lingkungan chroot. Memindahkan komponen ke mesin khusus adalah tingkat isolasi terbaik, dan dalam banyak kasus mungkin paling mudah, namun mungkin lebih mahal untuk mesin tambahan.
Kesimpulan
Strategi yang diuraikan di atas hanyalah beberapa penyempurnaan yang dapat Anda lakukan untuk meningkatkan keamanan sistem Anda. Penting untuk disadari, meski lebih baik terlambat daripada sebelumnya, tindakan pengamanan mengurangi keefektifannya semakin lama Anda menunggu untuk menerapkannya. Keamanan tidak bisa menjadi renungan dan harus diimplementasikan sejak awal bersamaan dengan layanan dan aplikasi yang Anda berikan.