Keamanan pada data center merupakan hal yang mendasar
untuk diterapkan. Eksistensi data dalam server menjadi tanggung jawab bagi
pengelola untuk menjaganya agar tetap aman, tidak rusak ataupun hilang. Berikut
beberapa perangkat keamanan yang digunakan data center yang sering kita jumpai.
Kita juga 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.
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.
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.
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.
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.
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).
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.
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:
sudo netstat -plunt
Anda akan melihat output yang terlihat seperti ini:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp
0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd
tcp
0 0 0.0.0.0:80 0.0.0.0:* LISTEN 919/nginx
tcp6
0 0 :::22 :::* LISTEN 887/sshd
tcp6
0 0 :::80 :::* LISTEN 919/nginx
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.
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.
Isolated Execution Environments
Mengisolasi lingkungan eksekusi mengacu pada metode di mana komponen individual dijalankan di dalam ruang khusus mereka sendir
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.
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.
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.