Hadoop Viraussetzungen a Sécherheetshärden opsetzen - Deel 2


Hadoop Cluster Building ass e Schrëtt fir Schrëtt Prozess wou de Prozess ufänkt vum Kaf vun den erfuerderleche Serveren, Montéierung an de Rack, Kabling, asw. Da musse mir den OS installéieren, et kann mat Kickstart am Echtzäitëmfeld gemaach ginn wann d'Clustergréisst grouss ass. Eemol OS installéiert, da musse mir de Server op Hadoop Installatioun virbereeden a mir mussen d'Servere virbereeden no der Sécherheetspolitik vun der Organisatioun.

  • Best Practices fir den Hadoop Server op CentOS/RHEL 7 z'installéieren - Deel 1

An dësem Artikel wäerte mir duerch OS-Niveau Viraussetzunge goen, recommandéiert vun Cloudera. Och hu mir e puer wichteg Sécherheetshärden Tipps no dem CIS Benchmark fir Produktiounsserver beliicht. Dës Sécherheetshärden kënnen ënnerschiddlech sinn no den Ufuerderunge.

Astelle Cloudera Hadoop Viraussetzunge

Hei wäerte mir d'OS-Niveau Viraussetzunge diskutéieren, déi vun Cloudera recommandéiert sinn.

Par défaut ass Transparent Huge Page (THP) a Linux Maschinnen aktivéiert déi schlecht mat Hadoop Workloads interagéieren an et degradéiert d'Gesamtleeschtung vum Cluster. Also musse mir dëst auszeschalten fir optimal Leeschtung z'erreechen andeems Dir de folgenden Echo Kommando benotzt.

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

Par défaut ass de vm.swappiness Wäert 30 oder 60 fir déi meescht vun de Linux Maschinnen.

# sysctl vm.swappiness

E méi héije Wäert vu Swappiness ze hunn ass net fir Hadoop Serveren recommandéiert well et laang Drecksammlung Pausen verursaache kann. A mat dem méi héije Swappinesswäert kënnen d'Donnéeën cache ginn fir Erënnerung ze tauschen, och wa mir genuch Erënnerung hunn. De Swappiness-Wäert erofsetzen kann kierperlech Erënnerung maachen fir méi Erënnerungssäiten ze enthalen.

# sysctl vm.swappiness=1

Oder Dir kënnt d'Datei /etc/sysctl.conf opmaachen an \vm.swappiness=1\ um Enn addéieren.

vm.swappiness=1

All Hadoop Server wäert seng eege Verantwortung hunn mat multiple Servicer (Daemonen) op deem lafen. All d'Servere kommunizéieren dacks matenee fir verschidden Zwecker.

Zum Beispill schéckt Datanode en Häerzschlag op Namenode fir all 3 Sekonnen, sou datt Namenode sécher ass datt d'Datanode lieweg ass.

Wann all d'Kommunikatioun tëscht den Daemonen iwwer verschidde Serveren iwwer d'Firewall passéiert, wäert et eng extra Belaaschtung fir Hadoop sinn. Also et ass bescht Praxis fir d'Firewall an den eenzelne Serveren am Cluster auszeschalten.

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

Wa mir de SELinux aktivéiert halen, wäert et Probleemer verursaachen beim Installéiere vun Hadoop. Well Hadoop e Cluster Computing ass, wäert de Cloudera Manager all d'Serveren am Cluster erreechen fir Hadoop a seng Servicer z'installéieren an et erstellt néideg Serviceverzeichnisser wou och ëmmer néideg.

Wann SELinux aktivéiert ass, léisst et net Cloudera Manager d'Installatioun regéieren wéi se wëllt. Also, SELinux z'aktivéieren wäert en Hindernis fir Hadoop sinn an et wäert Performanceprobleemer verursaachen.

Dir kënnt de Status vu SELinux iwwerpréiwen andeems Dir de Kommando hei drënner benotzt.

# sestatus

Elo, öffnen d' /etc/selinux/config Datei an deaktivéiert SELINUX wéi gewisen.

SELinux=disabled

Nodeems Dir SELinux deaktivéiert hutt, musst Dir de System nei starten fir et aktiv ze maachen.

# reboot

Am Hadoop Cluster sollten all Server Zäitsynchroniséiert sinn fir Aueroffsetfehler ze vermeiden. De RHEL/CentOS 7 huet Chronyd inbuilt fir Netzwierk Auer/Zäit Synchroniséierung, awer Cloudera recommandéiert NTP ze benotzen.

Mir mussen NTP installéieren an et konfiguréieren. Eemol installéiert, stoppen 'chronyd'an deaktivéieren. Well, wann e Server souwuel ntpd wéi och chronyd lafen, wäert Cloudera Manager Chronyd fir Zäit Synchroniséierung betruecht, da wäert et e Feeler geheien och wa mir Zäit duerch ntp synchroniséiert hunn.

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

Wéi mir uewen ernimmt, brauche mir net Chronyd aktiv well mir ntpd benotzen. Check de Status vun chronyd, wann et leeft stoppen an auszeschalten. Par défaut gëtt Chronyd gestoppt ausser bis mir et no der OS Installatioun starten, just musse mir auszeschalten fir méi sécher Säit.

# systemctl status chronyd
# systemctl disable chronyd

Mir mussen den Hostnumm mat FQDN (Full Qualified Domain Name) setzen. All Server soll en eenzegaartegen kanoneschen Numm hunn. Fir den Hostnumm ze léisen, musse mir entweder den DNS oder /etc/hosts konfiguréieren. Hei wäerte mir /etc/hosts konfiguréieren.

IP Adress an FQDN vun all Server sollen an /etc/hosts vun all de Serveren aginn ginn. Da kann nëmmen de Cloudera Manager all Server mat sengem Hostnumm kommunizéieren.

# hostnamectl set-hostname master1.linux-console.net

Als nächst, konfiguréieren /etc/hosts Datei. Zum Beispill: - Wa mir 5 Node Cluster mat 2 Masters an 3 Aarbechter hunn, kënne mir den /etc/hosts konfiguréieren wéi hei ënnen.

Well Hadoop aus Java besteet, sollten all Hosten Java mat der entspriechender Versioun installéiert hunn. Hei wäerte mir OpenJDK hunn. Par défaut wäert Cloudera Manager OracleJDK installéieren, awer Cloudera recommandéiert OpenJDK ze hunn.

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

Hadoop Sécherheet an Hardening

An dëser Sektioun wäerte mir op Harden Hadoop Ëmfeld Sécherheet goen ...

Automounting 'autofs' erlaabt automatesch Montéierung vu kierperlechen Apparater wéi USB, CD/DVD. Benotzer mat kierperlechen Zougang kann hiren USB oder all Späichermedium befestigen fir Zougang zu Insertdaten. Benotzt déi folgend Kommandoen fir z'iwwerpréiwen ob et behënnert ass oder net, wann net deaktivéiert.

# systemctl disable autofs
# systemctl is-enabled autofs

D'Grub Konfiguratiounsdatei enthält kritesch Informatioun iwwer Bootastellungen an Umeldungsinformatiounen fir Bootoptiounen ze spären. D'Grub Configuratiounsdatei 'grub.cfg' läit um /boot/grub2 an et ass verlinkt als /etc/grub2.conf a suergt fir datt grub.cfg vum root Benotzer Besëtz ass.

# cd /boot/grub2

Benotzt de Kommando ënnen fir ze kontrolléieren Uid a Gid sinn souwuel 0/root an 'Grupp' oder 'aner' sollten keng Erlaabnis hunn.

# stat /boot/grub2/grub.cfg

Benotzt de Kommando ënnen fir Permissiounen vun aneren a Grupp ze läschen.

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

Dës Astellung vermeit aner onautoriséiert Neistart vum Server. Ee, Et erfuerdert e Passwuert fir de Server nei ze starten. Wann et net gesat ass, kënnen onerlaabt Benotzer de Server booten a kënnen Ännerungen un de Bootpartitionen maachen.

Benotzt de Kommando hei ënnen fir d'Passwuert ze setzen.

# grub2-mkpasswd-pbkdf2

Füügt dat uewe erstallt Passwuert an /etc/grub.d/01_users Datei.

Als nächst generéiert d'Grub Konfiguratiounsdatei nei.

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

Prelink ass e Softwareprogramm dee Schwachstelle kann op engem Server erhéijen wann béiswëlleg Benotzer gemeinsame Bibliothéike wéi libc kompromittéiere kënnen.

Benotzt de Kommando hei ënnen fir et ze läschen.

# yum remove prelink

Mir sollten iwwerleeë fir e puer Servicer/Protokoller auszeschalten fir potenziell Attacken ze vermeiden.

# systemctl disable <service name>

  • Netzwierkservicer auszeschalten - Vergewëssert Iech datt d'Netzwierkservicer - Käschten, Dageszäit, ewechhuelen, Echo, Zäit sinn net aktivéiert. Dës Netzwierkservicer si fir Debugging an Testen, et ass recommandéiert auszeschalten wat d'Fernattack miniméiere kann.
  • TFTP & FTP auszeschalten - Béid de Protokoll wäert d'Vertraulechkeet vun den Donnéeën oder Umeldungsinformatiounen net ënnerstëtzen. Et ass bescht Praxis net am Server ze hunn, ausser et ass explizit erfuerderlech. Meeschtens sinn dës Protokoller op Dateiserver installéiert an aktivéiert.
  • DHCP auszeschalten - DHCP ass de Protokoll deen d'IP Adress dynamesch allokéiert. Et ass recommandéiert fir auszeschalten ausser et ass en DHCP Server fir potenziell Attacken ze vermeiden.
  • HTTP auszeschalten - HTTP ass de Protokoll dee benotzt ka ginn fir Webinhalt ze hosten. Ausser Master-/Management-Server (wou WebUI vu Servicer solle konfiguréiert sinn wéi CM, Hue, etc), kënne mir HTTP op aneren Aarbechternoden ausschalten, déi potenziell Attacke vermeiden.

Resumé

Mir sinn duerch d'Serverpräparatioun gaang, déi aus Cloudera Hadoop Viraussetzungen an e puer Sécherheetshärung besteet. OS Niveau Viraussetzunge definéiert vu Cloudera sinn obligatoresch fir déi glat Installatioun vun Hadoop. Normalerweis gëtt e Verhärtungsskript mat der Benotzung vum CIS Benchmark virbereet a benotzt fir d'Net-Konformitéit an Echtzäit ze kontrolléieren an ze sanéieren.

An enger minimaler Installatioun vu CentOS/RHEL 7 ginn nëmmen Basisfunktioune/Software installéiert, dëst wäert ongewollte Risiko a Schwachstelle vermeiden. Och wann et Minimal Installatioun ass, gi verschidde Iteratiounen vu Sécherheetsauditéierung gemaach ier Dir Hadoop installéiert, och nodeems de Cluster gebaut gouf, ier de Cluster an Operatioun/Produktioun geplënnert ass.