Vzpostavitev predpogojev za Hadoop in varnostno utrjevanje - 2. del


Hadoop Cluster Building je korak za korakom, kjer se postopek začne z nakupom potrebnih strežnikov, namestitvijo v stojalo, kabli itd. In postavitvijo v Datacentre. Nato moramo namestiti OS, to lahko storimo s pomočjo kickstart v realnem času, če je velikost gruče velika. Ko je OS nameščen, moramo strežnik pripraviti na namestitev Hadoop in strežnike moramo pripraviti v skladu z varnostnimi politikami organizacije.

  • Najboljše prakse za razmestitev strežnika Hadoop na CentOS/RHEL 7 - 1. del

V tem članku bomo preučili predpogoje na ravni OS, ki jih priporoča Cloudera. Prav tako smo izpostavili nekaj pomembnih nasvetov za varnostno utrjevanje v skladu s CIS Benchmark za produkcijske strežnike. Ta zaščitna kaljenja se lahko razlikujejo glede na zahteve.

Nastavitev predpogojev za Cloudera Hadoop

Tu bomo razpravljali o predpogojih na ravni OS, ki jih priporoča Cloudera.

Privzeto je Transparent Huge Page (THP) omogočena v napravah Linux, ki slabo delujejo z delovnimi obremenitvami Hadoop in poslabšajo splošno zmogljivost grozda. Zato moramo to onemogočiti, da dosežemo optimalno delovanje z uporabo naslednjega ukaza echo.

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

Privzeto je vrednost vm.swappiness 30 ali 60 za večino naprav Linux.

# sysctl vm.swappiness

Višja vrednost zamenjave ni priporočljiva za strežnike Hadoop, ker lahko povzroči daljše prekinitve zbiranja smeti. In z višjo vrednostjo zamenjave lahko podatke predpomnite za zamenjavo pomnilnika, tudi če imamo dovolj pomnilnika. Če znižate vrednost zamenjave, lahko fizični pomnilnik vsebuje več pomnilniških strani.

# sysctl vm.swappiness=1

Lahko pa odprete datoteko /etc/sysctl.conf in na koncu dodate \"vm.swappiness = 1 \" .

vm.swappiness=1

Vsak strežnik Hadoop bo sam odgovoren za to, da se na njem izvaja več storitev (demoni). Vsi strežniki bodo pogosto komunicirali med seboj za različne namene.

Na primer, Datanode pošlje srčni utrip Namenode vsake 3 sekunde, tako da bo Namenode zagotovil, da je Datanode živa.

Če se prek požarnega zidu zgodi vsa komunikacija med demoni med različnimi strežniki, bo to Hadoopu dodatno breme. Zato je najboljša praksa, da onemogočite požarni zid v posameznih strežnikih v gruči.

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

Če ohranimo omogočen SELinux, bo med namestitvijo Hadoopa povzročal težave. Ker je Hadoop računalništvo z grozdi, bo Cloudera Manager dosegel vse strežnike v grozdu, da bo namestil Hadoop in njegove storitve, in po potrebi ustvaril potrebne imenike storitev.

Če je SELinux omogočen, Cloudera Manager ne bo dovolil, da bi nameščal, kot želi. Omogočanje SELinux bo torej ovira Hadoopu in bo povzročalo težave z zmogljivostjo.

Stanje SELinux lahko preverite z uporabo spodnjega ukaza.

# sestatus

Zdaj odprite datoteko/etc/selinux/config in onemogočite SELINUX, kot je prikazano.

SELinux=disabled

Ko onemogočite SELinux, morate sistem znova zagnati, da bo aktiven.

# reboot

V Hadoop Clusterju morajo biti vsi strežniki sinhronizirani s časom, da se preprečijo napake pri odmiku ure. RHEL/CentOS 7 ima vgrajen chronyd za sinhronizacijo omrežne ure/časa, vendar Cloudera priporoča uporabo NTP.

Namestiti moramo NTP in ga konfigurirati. Ko je nameščen, ustavite 'chronyd' in ga onemogočite. Če bo strežnik z ntpd in chronyd tekel, bo Cloudera Manager upošteval chronyd za časovno sinhronizacijo, potem bo vrgel napako, tudi če imamo čas sinhroniziran prek ntp.

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

Kot smo že omenili, ne potrebujemo aktivnega chronyda, ker uporabljamo ntpd. Preverite stanje chronyda, če deluje, ustavite in onemogočite. Chronyd je privzeto ustavljen, razen če ga zaženemo po namestitvi OS, ga moramo samo onemogočiti za varnejšo stran.

# systemctl status chronyd
# systemctl disable chronyd

Ime gostitelja moramo nastaviti s FQDN (popolnoma kvalificirano ime domene). Vsak strežnik mora imeti edinstveno kanonsko ime. Če želite razrešiti ime gostitelja, moramo konfigurirati DNS ali/etc/hosts. Tukaj bomo konfigurirali/etc/hosts.

Naslov IP in FQDN vsakega strežnika je treba vnesti v/etc/hosts vseh strežnikov. Potem lahko samo Cloudera Manager komunicira z vsemi strežniki z imenom gostitelja.

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

Nato nastavite datoteko/etc/hosts. Na primer: - Če imamo gručo s petimi vozlišči z dvema glavnima in 3 delavci, lahko/etc/hosts konfiguriramo kot spodaj.

Ker je Hadoop sestavljen iz Jave, bi morali imeti vsi gostitelji nameščeno Javo z ustrezno različico. Tu bomo imeli OpenJDK. Cloudera Manager bo privzeto namestil OracleJDK, vendar Cloudera priporoča uporabo OpenJDK.

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

Varnost in utrjevanje Hadoop

V tem razdelku se bomo odpravili na Harden Hadoop okoljsko varnost ...

Samodejno seštevanje "samodejnih preklopov" omogoča samodejno namestitev fizičnih naprav, kot so USB, CD/DVD. Uporabnik s fizičnim dostopom lahko za dostop do vstavljenih podatkov pritrdi svoj USB ali kateri koli medij za shranjevanje. S spodnjimi ukazi preverite, ali je onemogočen ali ne, če ga ne onemogočite.

# systemctl disable autofs
# systemctl is-enabled autofs

Konfiguracijska datoteka grub vsebuje ključne informacije o nastavitvah zagona in poverilnicah za odklepanje zagonskih možnosti. Konfiguracijska datoteka grub 'grub.cfg', ki se nahaja na/boot/grub2, in je povezana kot /etc/grub2.conf ter zagotavlja, da je grub.cfg v lasti korenskega uporabnika.

# cd /boot/grub2

Z spodnjim ukazom preverite, ali sta Uid in Gid 0/root in 'group' ali 'other' ne bi smela imeti dovoljenja.

# stat /boot/grub2/grub.cfg

Z spodnjim ukazom odstranite dovoljenja drugih in skupin.

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

S to nastavitvijo se izognete neavtoriziranemu ponovnemu zagonu strežnika. to zahteva geslo za ponovni zagon strežnika. Če ni nastavljen, lahko nepooblaščeni uporabniki zaženejo strežnik in lahko spremenijo zagonske particije.

Za nastavitev gesla uporabite spodnji ukaz.

# grub2-mkpasswd-pbkdf2

Dodajte zgoraj ustvarjeno geslo v datoteko /etc/grub.d/01_users.

Nato znova ustvarite konfiguracijsko datoteko grub.

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

Prelink je program, ki lahko poveča ranljivost strežnika, če lahko zlonamerni uporabniki ogrozijo običajne knjižnice, kot je libc.

Za odstranitev uporabite spodnji ukaz.

# yum remove prelink

Razmislite o onemogočanju nekaterih storitev/protokolov, da se izognete morebitnim napadom.

# systemctl disable <service name>

  • Onemogoči omrežne storitve - Prepričajte se, da omrežne storitve - polnjenje, podnevi, zavrženje, odmev in čas niso omogočene. Te omrežne storitve so namenjene odpravljanju napak in preizkušanju. Priporočljivo je, da onemogočite, kar lahko zmanjša oddaljeni napad.
  • Onemogoči TFTP in FTP - Oba protokola ne bosta podpirala zaupnosti podatkov ali poverilnic. Najboljša praksa je, da je na strežniku ni, razen če to ni izrecno zahtevano. Večinoma so ti protokoli nameščeni in omogočeni na datotečnih strežnikih.
  • Onemogoči DHCP - DHCP je protokol, ki bo dinamično dodeljeval naslov IP. Priporočljivo je, da onemogočite strežnik DHCP, da se izognete morebitnim napadom.
  • Onemogoči HTTP - HTTP je protokol, ki se lahko uporablja za gostovanje spletne vsebine. Poleg strežnikov Master/Management (kjer je treba konfigurirati WebUI storitev, kot so CM, Hue itd.), Lahko HTTP onemogočimo tudi na drugih vozliščih delavcev, s čimer se izognemo morebitnim napadom.

Povzetek

Prešli smo skozi pripravo strežnika, ki jo sestavljajo predpogoji za Cloudera Hadoop in nekaj okrepitve varnosti. Predpogoji na ravni OS, ki jih je opredelil Cloudera, so obvezni za nemoteno namestitev Hadoopa. Običajno se pripravi scenarij za utrjevanje z uporabo primerjalne analize CIS, ki se bo uporabljal za sprotno preverjanje in odpravo neskladnosti.

Z minimalno namestitvijo CentOS/RHEL 7 so nameščene samo osnovne funkcionalnosti/programska oprema, kar bo preprečilo neželena tveganja in ranljivosti. Čeprav gre za minimalno namestitev, se pred namestitvijo Hadoopa, tudi po izgradnji grozda, pred premikanjem grozda v obratovanje/izdelavo izvede več ponovitev varnostnega preverjanja.