Menyiapkan Prasyarat Hadoop dan Penguatan Keamanan - Bagian 2


Pembangunan Cluster Hadoop adalah proses langkah demi langkah yang prosesnya dimulai dari pembelian server yang diperlukan, pemasangan ke rak, pemasangan kabel, dll., dan penempatan di Pusat Data. Kemudian kita perlu menginstal OS, hal ini dapat dilakukan dengan menggunakan kickstart di lingkungan real-time jika ukuran clusternya besar. Setelah OS terinstal, maka kita perlu menyiapkan server untuk Instalasi Hadoop dan kita perlu menyiapkan server sesuai dengan kebijakan keamanan Organisasi.

Persyaratan

  • Praktik Terbaik untuk Menerapkan Server Hadoop di CentOS/RHEL 7 – Bagian 1

Dalam artikel ini, kita akan membahas prasyarat tingkat OS yang direkomendasikan oleh Cloudera. Selain itu, kami telah menyoroti beberapa tips penting Pengerasan Keamanan menurut CIS Benchmark untuk server Produksi. Pengerasan keamanan ini dapat berbeda sesuai dengan kebutuhan.

Menyiapkan Prasyarat Cloudera Hadoop

Di sini, kita akan membahas prasyarat tingkat OS yang direkomendasikan oleh Cloudera.

1. Nonaktifkan Halaman Besar Transparan

Secara default, Halaman Besar Transparan (THP) diaktifkan di mesin Linux yang berinteraksi buruk dengan beban kerja Hadoop dan menurunkan kinerja Cluster secara keseluruhan. Jadi kita perlu menonaktifkan ini untuk mencapai kinerja optimal menggunakan perintah echo berikut.

echo never > /sys/kernel/mm/transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/defrag 

2. Ubah Pertukaran VM

Secara default, nilai vm.swappiness adalah 30 atau 60 untuk sebagian besar mesin Linux.

sysctl vm.swappiness

Memiliki nilai swappiness yang lebih tinggi tidak disarankan untuk server Hadoop karena dapat menyebabkan jeda pengumpulan sampah yang lama. Dan, dengan nilai swappiness yang lebih tinggi, data dapat di-cache untuk menukar memori meskipun kita memiliki cukup memori. Menurunkan nilai swappiness dapat membuat memori fisik memuat lebih banyak halaman memori.

sysctl vm.swappiness=1

Atau, Anda dapat membuka file /etc/sysctl.conf dan menambahkan "vm.swappiness=1" di akhir.

vm.swappiness=1

3. Nonaktifkan Firewall

Setiap server Hadoop akan memiliki tanggung jawabnya sendiri terhadap beberapa layanan (daemon) yang berjalan pada server tersebut. Semua server akan sering berkomunikasi satu sama lain untuk berbagai tujuan.

Misalnya, Datanode akan mengirimkan detak jantung ke Namenode setiap 3 detik sehingga Namenode akan memastikan bahwa Datanode masih hidup.

Jika semua komunikasi terjadi antar daemon di server berbeda melalui Firewall, ini akan menjadi beban tambahan bagi Hadoop. Jadi praktik terbaiknya adalah menonaktifkan firewall di masing-masing server di Cluster.

iptables-save > ~/firewall.rules
systemctl stop firewalld
systemctl disable firewall

4. Nonaktifkan SELinux

Jika kami tetap mengaktifkan SELinux, hal ini akan menyebabkan masalah saat memasang Hadoop. Karena Hadoop adalah komputasi cluster, Cloudera Manager akan menjangkau semua server di cluster untuk menginstal Hadoop dan layanannya dan akan membuat direktori layanan yang diperlukan kapan pun diperlukan.

Jika SELinux diaktifkan, Cloudera Manager tidak akan dapat mengatur instalasi sesuai keinginannya. Jadi, mengaktifkan SELinux akan menjadi hambatan bagi Hadoop dan akan menyebabkan masalah kinerja.

Anda dapat memeriksa status SELinux dengan menggunakan perintah di bawah ini.

sestatus

Sekarang, buka file /etc/selinux/config dan nonaktifkan SELINUX seperti yang ditunjukkan.

SELinux=disabled

Setelah menonaktifkan SELinux, Anda perlu me-reboot sistem untuk mengaktifkannya.

reboot

5. Instal Layanan NTP

Di Kluster Hadoop, semua server harus Disinkronkan Waktu untuk menghindari kesalahan offset jam. RHEL/CentOS 7 memiliki chronyd bawaan untuk sinkronisasi jam/waktu jaringan, namun Cloudera menyarankan untuk menggunakan NTP.

Kita perlu menginstal NTP dan mengkonfigurasinya. Setelah terinstal, hentikan 'chronyd' dan nonaktifkan. Karena, jika server menjalankan ntpd dan chronyd berjalan, Cloudera Manager akan mempertimbangkan chronyd untuk sinkronisasi waktu, maka ia akan menimbulkan kesalahan meskipun kami punya waktu yang disinkronkan melalui ntp.

yum -y install ntp
systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd

6. Nonaktifkan Chronyd

Seperti yang kami sebutkan di atas, kami tidak memerlukan chronyd aktif karena kami menggunakan ntpd. Periksa status chronyd, apakah sedang berjalan, hentikan dan nonaktifkan. Secara default, chronyd dihentikan kecuali sampai kita memulainya setelah instalasi OS, kita hanya perlu menonaktifkannya agar lebih aman.

systemctl status chronyd
systemctl disable chronyd

7. Tetapkan FQDN (Nama Domain Sepenuhnya Memenuhi Syarat)

Kita harus menyetel nama host dengan FQDN (Nama Domain yang Memenuhi Syarat). Setiap server harus memiliki nama Canonical yang unik. Untuk menyelesaikan nama host, kita perlu mengkonfigurasi DNS atau /etc/hosts. Di sini, kita akan mengonfigurasi /etc/hosts.

Alamat IP dan FQDN setiap server harus dimasukkan di /etc/hosts semua server. Maka hanya Cloudera Manager yang dapat mengkomunikasikan semua server dengan nama hostnya.

hostnamectl set-hostname master1.linux-console.net

Selanjutnya, konfigurasikan file /etc/hosts. Contoh: – Jika kita memiliki 5 cluster node dengan 2 master dan 3 pekerja, kita dapat mengkonfigurasi /etc/hosts seperti di bawah ini.

8. Menginstal Java Development Kit (JDK)

Karena Hadoop terdiri dari Java, semua host harus menginstal Java dengan versi yang sesuai. Di sini kita akan memiliki OpenJDK. Secara default, Cloudera Manager akan menginstal OracleJDK namun, Cloudera merekomendasikan untuk memiliki OpenJDK.

yum -y install java-1.8.0-openjdk-devel
java -version

Keamanan dan Pengerasan Hadoop

Di bagian ini, kita akan membahas keamanan lingkungan Harden Hadoop…

1. Nonaktifkan Pemasangan Otomatis

Pemasangan otomatis 'autofs' memungkinkan pemasangan otomatis perangkat fisik seperti USB, CD/DVD. Pengguna dengan akses fisik dapat menyambungkan USB atau media Penyimpanan apa pun untuk mengakses data yang dimasukkan. Gunakan perintah di bawah ini untuk memverifikasi apakah dinonaktifkan atau tidak, jika tidak nonaktifkan.

systemctl disable autofs
systemctl is-enabled autofs

2. Pengaturan Boot Aman

File konfigurasi grub berisi informasi penting tentang pengaturan boot dan kredensial untuk membuka opsi boot. File konfigurasi grub 'grub.cfg' terletak di /boot/grub2 dan telah ditautkan sebagai /etc/grub2.conf dan pastikan grub.cfg dimiliki oleh pengguna root.

cd /boot/grub2

Gunakan perintah di bawah ini untuk memeriksa Uid dan Gid keduanya 0/root dan 'group' atau 'lainnya' tidak boleh memiliki izin apa pun.

stat /boot/grub2/grub.cfg

Gunakan perintah di bawah ini untuk menghapus izin dari orang lain dan grup.

chmod og-rwx /boot/grub2/grub.cfg

3. Tetapkan Kata Sandi Bootloader

Pengaturan ini menghindari reboot server yang tidak sah. yaitu, memerlukan kata sandi untuk me-reboot server. Jika tidak disetel, pengguna yang tidak berwenang dapat mem-boot server dan membuat perubahan pada partisi boot.

Gunakan perintah di bawah ini untuk mengatur kata sandi.

grub2-mkpasswd-pbkdf2

Tambahkan kata sandi yang dibuat di atas ke file /etc/grub.d/01_users.

Selanjutnya, buat kembali file konfigurasi grub.

grub2-mkconfig > /boot/grub2/grub.cfg

4. Hapus Alat Prelink

Prelink adalah program perangkat lunak yang dapat meningkatkan kerentanan di server jika pengguna jahat dapat menyusupi pustaka umum seperti libc.

Gunakan perintah di bawah ini untuk menghapusnya.

yum remove prelink

5. Nonaktifkan Layanan yang Tidak Diinginkan

Kita harus mempertimbangkan untuk menonaktifkan beberapa layanan/protokol untuk menghindari potensi serangan.

systemctl disable <service name>
  • Nonaktifkan Layanan Jaringan – Pastikan layanan jaringan – biaya, siang hari, pembuangan, gema, waktu tidak diaktifkan. Layanan Jaringan ini untuk debugging dan pengujian, disarankan untuk menonaktifkannya yang dapat meminimalkan serangan jarak jauh.
  • Nonaktifkan TFTP & FTP – Kedua protokol tersebut tidak akan mendukung kerahasiaan data atau kredensial. Praktik terbaiknya adalah tidak menyimpannya di server kecuali diperlukan secara eksplisit. Sebagian besar protokol ini diinstal dan diaktifkan di Fileservers.
  • Nonaktifkan DHCP – DHCP adalah protokol yang akan mengalokasikan alamat IP secara dinamis. Disarankan untuk menonaktifkan kecuali server DHCP untuk menghindari potensi serangan.
  • Nonaktifkan HTTP – HTTP adalah protokol yang dapat digunakan untuk menghosting konten web. Selain server Master/Manajemen (tempat layanan WebUI dikonfigurasi seperti CM, Hue, dll), kami dapat menonaktifkan HTTP pada node pekerja lain yang dapat menghindari potensi serangan.

Ringkasan

Kami telah melalui persiapan server yang terdiri dari Prasyarat Cloudera Hadoop dan beberapa peningkatan keamanan. Prasyarat tingkat OS yang ditentukan oleh Cloudera bersifat wajib untuk kelancaran instalasi Hadoop. Biasanya, skrip pengerasan akan disiapkan dengan menggunakan CIS Benchmark dan digunakan untuk mengaudit dan memulihkan ketidakpatuhan secara real-time.

Dalam instalasi minimal CentOS/RHEL 7, hanya fungsi/perangkat lunak dasar yang diinstal, hal ini akan menghindari risiko dan kerentanan yang tidak diinginkan. Meskipun Instalasi Minimal, beberapa iterasi audit keamanan akan dilakukan sebelum menginstal Hadoop, bahkan setelah membangun cluster, sebelum memindahkan Cluster ke Operasi/Produksi.