Hadoop Ön Koşullarını Kurma ve Güvenlik Güçlendirmesi - Bölüm 2


Hadoop Küme Oluşturma, sürecin gerekli sunucuların satın alınması, rafa monte edilmesi, kablolanması vb. ve Veri Merkezine yerleştirilmesiyle başladığı adım adım bir süreçtir. Daha sonra işletim sistemini kurmamız gerekiyor, eğer küme boyutu büyükse, gerçek zamanlı ortamda kickstart kullanılarak yapılabilir. İşletim sistemi kurulduktan sonra sunucuyu Hadoop Kurulumu için hazırlamamız gerekiyor ve sunucuları Kurumun güvenlik politikalarına göre hazırlamamız gerekiyor.

Gereksinimler

  • Hadoop Sunucusunu CentOS/RHEL 7'de Dağıtmaya Yönelik En İyi Uygulamalar – Bölüm 1

Bu makalede, Cloudera tarafından önerilen işletim sistemi düzeyindeki ön koşulları ele alacağız. Ayrıca, Üretim sunucuları için CIS Karşılaştırmasına göre bazı önemli Güvenlik Güçlendirme ipuçlarını da vurguladık. Bu güvenlik sertleştirmeleri gereksinimlere göre farklı olabilir.

Cloudera Hadoop Önkoşullarını Ayarlama

Burada Cloudera tarafından önerilen işletim sistemi düzeyindeki ön koşulları tartışacağız.

1. Şeffaf Büyük Sayfayı Devre Dışı Bırak

Varsayılan olarak, Hadoop iş yükleriyle zayıf etkileşime giren Linux makinelerinde Şeffaf Büyük Sayfa (THP) etkindir ve bu, Cluster'ın genel performansını düşürür. Bu nedenle, aşağıdaki echo komutunu kullanarak en iyi performansı elde etmek için bunu devre dışı bırakmamız gerekir.

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

2. VM Değişimini Değiştirin

Varsayılan olarak, Linux makinelerinin çoğu için vm.swappiness değeri 30 veya 60'dır.

sysctl vm.swappiness

Takas değerinin daha yüksek olması, Hadoop sunucuları için önerilmez çünkü bu, uzun Çöp toplama duraklamalarına neden olabilir. Ve daha yüksek takas değeri sayesinde, yeterli hafızamız olsa bile veriler hafızayı takas etmek için önbelleğe alınabilir. Değiştirilebilirlik değerinin düşürülmesi, fiziksel belleğin daha fazla bellek sayfası içermesini sağlayabilir.

sysctl vm.swappiness=1

Veya /etc/sysctl.conf dosyasını açabilir ve sonuna "vm.swappiness=1" ekleyebilirsiniz.

vm.swappiness=1

3. Güvenlik Duvarını Devre Dışı Bırakın

Her Hadoop sunucusu, üzerinde çalışan birden fazla hizmetin (arka plan programlarının) kendi sorumluluğuna sahip olacaktır. Tüm sunucular çeşitli amaçlarla birbirleriyle sık sık iletişim kuracaktır.

Örneğin, Datanode, Namenode'a her 3 saniyede bir kalp atışı gönderecek ve böylece Namenode, Datanode'un canlı olduğundan emin olacaktır.

Tüm iletişim farklı sunuculardaki arka plan programları arasında Güvenlik Duvarı aracılığıyla gerçekleşirse, bu Hadoop için ekstra bir yük olacaktır. Bu nedenle, Cluster'daki ayrı sunuculardaki güvenlik duvarını devre dışı bırakmak en iyi uygulamadır.

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

4. SELinux'u devre dışı bırakın

SELinux'u etkin tutarsak, Hadoop yüklenirken sorunlara neden olacaktır. Hadoop bir küme bilişim olduğundan, Cloudera Manager Hadoop'u ve hizmetlerini yüklemek için kümedeki tüm sunuculara ulaşacak ve gereken yerde gerekli hizmet dizinlerini oluşturacaktır.

SELinux etkinse Cloudera Manager'ın kurulumu istediği gibi yönetmesine izin vermeyecektir. Dolayısıyla SELinux'un etkinleştirilmesi Hadoop'a engel teşkil edecek ve performans sorunlarına neden olacaktır.

Aşağıdaki komutu kullanarak SELinux'un durumunu kontrol edebilirsiniz.

sestatus

Şimdi /etc/selinux/config dosyasını açın ve gösterildiği gibi SELINUX'u devre dışı bırakın.

SELinux=disabled

SELinux'u devre dışı bıraktıktan sonra aktif hale getirmek için sistemi yeniden başlatmanız gerekir.

reboot

5. NTP Hizmetlerini yükleyin

Hadoop Kümesi'nde, saat farkı hatalarını önlemek için tüm sunucuların Zamanla Senkronize Edilmiş olması gerekir. RHEL/CentOS 7, ağ saati/saat senkronizasyonu için dahili chronyd'ye sahiptir, ancak Cloudera NTP kullanılmasını önerir.

NTP'yi kurup yapılandırmamız gerekiyor. Kurulduktan sonra 'chronyd'yi durdurun ve devre dışı bırakın. Çünkü hem ntpd hem de chronyd çalıştıran bir sunucu varsa, Cloudera Manager zaman senkronizasyonu için chronyd'yi dikkate alacak, bu durumda bile hata verecektir. ntp aracılığıyla senkronize edilmiş zamanımız var.

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

6. Chronyd'i devre dışı bırakın

Yukarıda da bahsettiğimiz gibi ntpd kullandığımız için chronyd'in aktif olmasına gerek yok. Durdur ve devre dışı bırak çalışıyorsa chronyd'nin durumunu kontrol edin. Varsayılan olarak chronyd, işletim sistemi kurulumundan sonra başlatmadığımız sürece durdurulur; yalnızca daha güvenli olması için devre dışı bırakmamız gerekir.

systemctl status chronyd
systemctl disable chronyd

7. FQDN'yi (Tam Nitelikli Alan Adı) Ayarlayın

Ana makine adını FQDN (Tam Nitelikli Alan Adı) ile ayarlamamız gerekir. Her sunucunun benzersiz bir Kanonik adı olmalıdır. Ana bilgisayar adını çözümlemek için DNS'yi veya /etc/hosts'u yapılandırmamız gerekir. Burada /etc/hosts'u yapılandıracağız.

Her sunucunun IP adresi ve FQDN'si, tüm sunucuların /etc/hosts dosyasına girilmelidir. Bu durumda yalnızca Cloudera Manager tüm sunucularla ana bilgisayar adıyla iletişim kurabilir.

hostnamectl set-hostname master1.linux-console.net

Daha sonra /etc/hosts dosyasını yapılandırın. Örnek: – Eğer 2 master ve 3worker’dan oluşan 5 düğüm kümemiz varsa /etc/hosts’u aşağıdaki gibi yapılandırabiliriz.

8. Java Geliştirme Kitinin (JDK) Kurulumu

Hadoop Java'dan oluştuğundan, tüm ana makinelerde uygun sürümle birlikte Java yüklü olmalıdır. Burada OpenJDK'ye sahip olacağız. Varsayılan olarak, Cloudera Manager OracleJDK'yi yükleyecektir ancak Cloudera, OpenJDK'ye sahip olmanızı önerir.

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

Hadoop Güvenliği ve Sertleştirme

Bu bölümde Harden Hadoop ortam güvenliğine geçeceğiz…

1. Otomatik Montajı Devre Dışı Bırakın

Otomatik bağlama 'autofs', USB, CD/DVD gibi fiziksel cihazların otomatik olarak bağlanmasına olanak tanır. Fiziksel erişimi olan kullanıcı, eklenen verilere erişim için USB'sini veya herhangi bir Depolama ortamını ekleyebilir. Devre dışı bırakılıp bırakılmadığını, devre dışı bırakılmadıysa doğrulamak için aşağıdaki komutları kullanın.

systemctl disable autofs
systemctl is-enabled autofs

2. Güvenli Önyükleme Ayarları

grub yapılandırma dosyası, önyükleme seçeneklerinin kilidini açmak için önyükleme ayarlarına ve kimlik bilgilerine ilişkin kritik bilgileri içerir. Grup yapılandırma dosyası 'grub.cfg' /boot/grub2 konumunda bulunur ve /etc/grub2.conf olarak bağlanmıştır ve emin olun grub.cfg kök kullanıcıya aittir.

cd /boot/grub2

Uid ve Gid'in her ikisinin de 0/root ve 'group' veya ' olup olmadığını kontrol etmek için aşağıdaki komutu kullanın >other' herhangi bir izne sahip olmamalıdır.

stat /boot/grub2/grub.cfg

Diğer ve gruptaki izinleri kaldırmak için aşağıdaki komutu kullanın.

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

3. Önyükleyici Şifresini Ayarlayın

Bu ayar, sunucunun diğer izinsiz yeniden başlatılmasını önler. yani, sunucuyu yeniden başlatmak için bir şifre gerekir. Ayarlanmazsa, yetkisiz kullanıcılar sunucuyu önyükleyebilir ve önyükleme bölümlerinde değişiklik yapabilir.

Şifreyi ayarlamak için aşağıdaki komutu kullanın.

grub2-mkpasswd-pbkdf2

Yukarıda oluşturulan şifreyi /etc/grub.d/01_users dosyasına ekleyin.

Daha sonra grub yapılandırma dosyasını yeniden oluşturun.

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

4. Ön Bağlantı Aracını Kaldır

Prelink, kötü niyetli kullanıcıların libc gibi ortak kitaplıkları tehlikeye atması durumunda sunucudaki güvenlik açığını artırabilecek bir yazılım programıdır.

Kaldırmak için aşağıdaki komutu kullanın.

yum remove prelink

5. İstenmeyen Hizmetleri Devre Dışı Bırakın

Potansiyel saldırılardan kaçınmak için bazı hizmetleri/protokolleri devre dışı bırakmayı düşünmeliyiz.

systemctl disable <service name>
  • Ağ Hizmetlerini Devre Dışı Bırak – Ağ hizmetlerinin (ücretler, gündüz, atma, yankı, saat) etkinleştirilmediğinden emin olun. Bu Ağ hizmetleri hata ayıklama ve test amaçlıdır; uzaktan saldırıyı en aza indirebilecek devre dışı bırakılması önerilir.
  • TFTP ve FTP'yi devre dışı bırakın – Her iki protokol de verilerin veya kimlik bilgilerinin gizliliğini desteklemez. Açıkça gerekmedikçe sunucuda bulunmamak en iyi uygulamadır. Çoğunlukla bu protokoller Dosya Sunucularına kurulur ve etkinleştirilir.
  • DHCP'yi Devre Dışı Bırak – DHCP, IP adresini dinamik olarak tahsis edecek protokoldür. Olası saldırılardan kaçınmak için DHCP sunucusu olmadığı sürece devre dışı bırakılması önerilir.
  • HTTP'yi Devre Dışı Bırak – HTTP, web içeriğini barındırmak için kullanılabilecek protokoldür. Ana/Yönetim sunucularının yanı sıra (hizmetlerin WebUI'sinin CM, Hue vb. gibi yapılandırılacağı yer), potansiyel saldırıları önleyebilecek diğer çalışan düğümlerde HTTP'yi devre dışı bırakabiliriz.

Özet

Cloudera Hadoop Önkoşullarından ve bazı güvenlik iyileştirmelerinden oluşan sunucu hazırlığını tamamladık. Hadoop'un sorunsuz kurulumu için Cloudera tarafından tanımlanan işletim sistemi düzeyindeki ön koşullar zorunludur. Genellikle, CIS Karşılaştırması kullanılarak bir sağlamlaştırma senaryosu hazırlanacak ve uyumsuzluğu gerçek zamanlı olarak denetlemek ve düzeltmek için kullanılacaktır.

Minimum CentOS/RHEL 7 kurulumunda yalnızca temel işlevler/yazılım yüklenir; bu, istenmeyen riskleri ve güvenlik açıklarını önleyecektir. Minimum Kurulum olmasına rağmen, Hadoop kurulmadan önce, hatta küme oluşturulduktan sonra, Kümeyi Operasyona/Üretime taşımadan önce birden fazla güvenlik denetimi yinelemesi yapılacaktır.