Vyhledávání na webu

Předpoklady nastavení Hadoopu a posílení zabezpečení – část 2


Hadoop Cluster Building je proces krok za krokem, kdy proces začíná nákupem požadovaných serverů, montáží do racku, kabeláže atd. a umístěním v datovém centru. Poté musíme nainstalovat OS, lze to provést pomocí kickstartu v prostředí reálného času, pokud je velikost clusteru velká. Po instalaci OS musíme připravit server na instalaci Hadoop a musíme připravit servery podle bezpečnostních zásad organizace.

Požadavky

  • Nejlepší postupy pro nasazení serveru Hadoop na CentOS/RHEL 7 – část 1

V tomto článku si projdeme předpoklady na úrovni operačního systému, které doporučuje Cloudera. Také jsme zdůraznili některé důležité tipy pro posílení zabezpečení podle CIS Benchmarku pro produkční servery. Tyto bezpečnostní kalení se mohou lišit podle požadavků.

Předpoklady nastavení Cloudera Hadoop

Zde probereme předpoklady na úrovni operačního systému, které doporučuje Cloudera.

1. Zakažte průhlednou obrovskou stránku

Ve výchozím nastavení je Transparent Huge Page (THP) povolena na počítačích se systémem Linux, které špatně komunikují s pracovní zátěží Hadoop a snižují celkový výkon Clusteru. Musíme to tedy zakázat, abychom dosáhli optimálního výkonu pomocí následujícího příkazu echo.

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

2. Změňte výměnu virtuálních počítačů

Ve výchozím nastavení je hodnota vm.swappiness pro většinu počítačů se systémem Linux 30 nebo 60.

sysctl vm.swappiness

Vyšší hodnota swappiness se pro servery Hadoop nedoporučuje, protože může způsobit dlouhé pauzy ve sběru odpadu. A s vyšší hodnotou swappiness lze data ukládat do mezipaměti za účelem swapování paměti, i když máme dostatek paměti. Snížení hodnoty swappiness může způsobit, že fyzická paměť bude obsahovat více stránek paměti.

sysctl vm.swappiness=1

Nebo můžete otevřít soubor /etc/sysctl.conf a na konec přidat "vm.swappiness=1".

vm.swappiness=1

3. Vypněte bránu firewall

Každý server Hadoop bude mít svou vlastní odpovědnost, protože na něm běží více služeb (démonů). Všechny servery spolu budou často komunikovat pro různé účely.

Například Datanode bude posílat tlukot srdce do Namenode každé 3 sekundy, takže Namenode zajistí, že Datanode je naživu.

Pokud veškerá komunikace probíhá mezi démony napříč různými servery přes Firewall, bude to pro Hadoop další zátěž. Nejlepším postupem je tedy deaktivovat firewall na jednotlivých serverech v Clusteru.

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

4. Zakažte SELinux

Pokud ponecháme SELinux povolený, způsobí to problémy při instalaci Hadoop. Protože Hadoop je clusterový výpočetní systém, Cloudera Manager dosáhne všechny servery v clusteru, aby nainstaloval Hadoop a jeho služby, a vytvoří potřebné adresáře služeb, kdykoli to bude potřeba.

Pokud je povolen SELinux, nedovolí Cloudera Manageru, aby řídil instalaci, jak chce. Takže povolení SELinuxu bude překážkou pro Hadoop a způsobí problémy s výkonem.

Stav SELinuxu můžete zkontrolovat pomocí příkazu níže.

sestatus

Nyní otevřete soubor /etc/selinux/config a deaktivujte SELINUX podle obrázku.

SELinux=disabled

Po deaktivaci SELinuxu musíte restartovat systém, aby byl aktivní.

reboot

5. Nainstalujte služby NTP

V Hadoop Cluster by všechny servery měly být synchronizovány v čase, aby se předešlo chybám posunu hodin. RHEL/CentOS 7 má vestavěný chronyd pro síťovou synchronizaci hodin/času, ale Cloudera doporučuje použít NTP.

Musíme nainstalovat NTP a nakonfigurovat jej. Po instalaci zastavte „chronyd“ a deaktivujte. Protože pokud server, na kterém běží jak ntpd, tak chronyd, Cloudera Manager zváží chronyd pro synchronizaci času, pak vyvolá chybu, i když čas máme synchronizovaný přes ntp.

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

6. Vypněte Chronyd

Jak jsme uvedli výše, nepotřebujeme aktivní chronyd, protože používáme ntpd. Zkontrolujte stav chronyd, pokud běží, zastavte a deaktivujte. Ve výchozím nastavení je chronyd zastaven, pokud jej nespustíme po instalaci operačního systému, pouze jej musíme deaktivovat pro bezpečnější stranu.

systemctl status chronyd
systemctl disable chronyd

7. Nastavte FQDN (plně kvalifikovaný název domény)

Musíme nastavit název hostitele na FQDN (Plně kvalifikovaný název domény). Každý server by měl mít jedinečný kanonický název. K překladu názvu hostitele musíme nakonfigurovat DNS nebo /etc/hosts. Zde nakonfigurujeme /etc/hosts.

IP adresa a FQDN každého serveru by měly být zadány v /etc/hosts všech serverů. Pak pouze Cloudera Manager může komunikovat se všemi servery se svým názvem hostitele.

hostnamectl set-hostname master1.linux-console.net

Dále nakonfigurujte soubor /etc/hosts. Například: – Pokud máme cluster s 5 uzly se 2 hlavními a 3 pracovníky, můžeme nakonfigurovat /etc/hosts, jak je uvedeno níže.

8. Instalace sady Java Development Kit (JDK)

Protože Hadoop se skládá z Java, všichni hostitelé by měli mít nainstalovanou Java s příslušnou verzí. Zde budeme mít OpenJDK. Ve výchozím nastavení Cloudera Manager nainstaluje OracleJDK, ale Cloudera doporučuje mít OpenJDK.

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

Hadoop Security and Hardening

V této části se podíváme na zabezpečení prostředí Harden Hadoop…

1. Zakažte automatické připojení

Automatické připojení „autofs“ umožňuje automatické připojení fyzických zařízení, jako je USB, CD/DVD. Uživatel s fyzickým přístupem může připojit své USB nebo jakékoli paměťové médium pro přístup k vloženým datům. Pomocí níže uvedených příkazů ověřte, zda je deaktivována nebo ne, pokud ne, deaktivujte ji.

systemctl disable autofs
systemctl is-enabled autofs

2. Nastavení zabezpečeného spouštění

Konfigurační soubor grub obsahuje důležité informace o nastavení spouštění a pověření k odemknutí možností spouštění. Konfigurační soubor grub 'grub.cfg' umístěný na /boot/grub2 a je propojen jako /etc/grub2.conf a zajistit grub.cfg je vlastněn uživatelem root.

cd /boot/grub2

Pomocí níže uvedeného příkazu zkontrolujte, zda Uid a Gid jsou obě 0/root a 'group' nebo 'other' by neměl mít žádné oprávnění.

stat /boot/grub2/grub.cfg

Pomocí níže uvedeného příkazu odeberte oprávnění ostatním a skupinám.

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

3. Nastavte heslo zavaděče

Toto nastavení zabrání dalšímu neoprávněnému restartování serveru. tj. Vyžaduje heslo pro restartování serveru. Pokud není nastaveno, mohou neoprávnění uživatelé zavést server a provádět změny v zaváděcích oddílech.

Pro nastavení hesla použijte níže uvedený příkaz.

grub2-mkpasswd-pbkdf2

Přidejte výše vytvořené heslo do souboru /etc/grub.d/01_users.

Dále znovu vygenerujte konfigurační soubor grub.

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

4. Odstraňte nástroj Prelink Tool

Prelink je softwarový program, který může zvýšit zranitelnost serveru, pokud uživatelé se zlými úmysly mohou ohrozit běžné knihovny, jako je libc.

K odstranění použijte níže uvedený příkaz.

yum remove prelink

5. Zakažte nežádoucí služby

Měli bychom zvážit deaktivaci některých služeb/protokolů, abychom se vyhnuli potenciálním útokům.

systemctl disable <service name>
  • Zakázat síťové služby – Zajistěte, aby síťové služby – poplatky, den, vyřazení, ozvěna, čas nejsou povoleny. Tyto síťové služby slouží k ladění a testování, doporučuje se je deaktivovat, což může minimalizovat vzdálený útok.
  • Zakázat TFTP a FTP – Oba protokoly nebudou podporovat důvěrnost dat ani pověření. Nejlepší je nemít na serveru, pokud to není výslovně vyžadováno. Většinou jsou tyto protokoly nainstalovány a povoleny na souborových serverech.
  • Zakázat DHCP – DHCP je protokol, který dynamicky přiděluje IP adresu. Doporučuje se zakázat, pokud se nejedná o server DHCP, abyste se vyhnuli potenciálním útokům.
  • Zakázat HTTP – HTTP je protokol, který lze použít k hostování webového obsahu. Kromě Master/Management serverů (kde se má konfigurovat WebUI služeb jako CM, Hue atd.) můžeme zakázat HTTP na jiných pracovních uzlech, čímž se vyhneme případným útokům.

souhrn

Prošli jsme přípravou serveru, která se skládá z Cloudera Hadoop Pre-rekvizity a určitého posílení zabezpečení. Předpoklady na úrovni OS definované Cloudera jsou povinné pro bezproblémovou instalaci Hadoop. Obvykle bude zpřísňovací skript připraven s použitím CIS Benchmarku a použit k auditu a nápravě neshody v reálném čase.

Při minimální instalaci CentOS/RHEL 7 se nainstalují pouze základní funkce/software, čímž se vyhnete nechtěným rizikům a zranitelnostem. I když se jedná o minimální instalaci, před instalací Hadoopu, i po sestavení clusteru, před přesunem clusteru do provozu/produkce bude provedeno několik iterací auditu zabezpečení.