„Hadoop“ išankstinių sąlygų nustatymas ir saugumo stiprinimas – 2 dalis


Hadoop klasterio kūrimas – tai žingsnis po žingsnio procesas, kai procesas prasideda nuo reikalingų serverių įsigijimo, montavimo į stovo, laidų ir t. t. ir patalpinimo į duomenų centrą. Tada turime įdiegti OS, tai galima padaryti naudojant „kickstart“ realiojo laiko aplinkoje, jei klasterio dydis yra didelis. Įdiegę OS, turime paruošti serverį „Hadoop“ diegimui ir turime paruošti serverius pagal organizacijos saugos politiką.

Reikalavimai

  • Geriausia „Hadoop“ serverio diegimo „CentOS/RHEL 7“ praktika – 1 dalis

Šiame straipsnyje apžvelgsime Cloudera rekomenduojamas OS lygio sąlygas. Be to, mes pabrėžėme keletą svarbių saugos stiprinimo patarimų pagal CIS etaloną gamybiniams serveriams. Šie saugumo grūdinimas gali būti skirtingas, atsižvelgiant į reikalavimus.

„Cloudera Hadoop“ išankstinės sąlygos

Čia aptarsime Cloudera rekomenduojamas OS lygio sąlygas.

1. Išjunkite skaidrų didžiulį puslapį

Pagal numatytuosius nustatymus Permatomas didžiulis puslapis (THP) įgalintas „Linux“ įrenginiuose, kurie prastai sąveikauja su Hadoop darbo krūviais, ir tai pablogina bendrą klasterio našumą. Taigi, norėdami pasiekti optimalų našumą naudodami šią echo komandą, turime tai išjungti.

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

2. Pakeiskite VM apsikeitimą

Pagal numatytuosius nustatymus vm.swappiness reikšmė yra 30 arba 60 daugumoje „Linux“ įrenginių.

sysctl vm.swappiness

Didesnė sukeitimo vertė nerekomenduojama Hadoop serveriams, nes tai gali sukelti ilgas šiukšlių surinkimo pauzes. Be to, esant didesnei apsikeitimo vertei, duomenys gali būti talpykloje, kad būtų pakeista atmintis, net jei turime pakankamai atminties. Sumažinus apsikeitimo vertę, fizinėje atmintyje gali būti daugiau atminties puslapių.

sysctl vm.swappiness=1

Arba galite atidaryti failą /etc/sysctl.conf ir pabaigoje pridėti "vm.swappiness=1".

vm.swappiness=1

3. Išjunkite ugniasienę

Kiekvienas „Hadoop“ serveris turės savo atsakomybę, nes jame veikia kelios paslaugos (demonai). Visi serveriai dažnai bendraus tarpusavyje įvairiais tikslais.

Pavyzdžiui, Datanode siųs širdies plakimą į Namenode kas 3 sekundes, kad Namenode įsitikintų, jog Datanode yra gyvas.

Jei visas ryšys vyksta tarp demonų skirtinguose serveriuose per ugniasienę, tai bus papildoma našta Hadoop. Taigi geriausia praktika išjungti ugniasienę atskiruose klasterio serveriuose.

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

4. Išjunkite SELinux

Jei paliksime įgalintą SELinux, diegiant Hadoop kils problemų. Kadangi Hadoop yra klasterio kompiuterija, Cloudera Manager pasieks visus klasterio serverius, kad įdiegtų Hadoop ir jos paslaugas, ir kurs reikalingus paslaugų katalogus, kur to reikės.

Jei SELinux įjungtas, jis neleis Cloudera Manager valdyti diegimą, kaip ji nori. Taigi, SELinux įjungimas bus kliūtis Hadoop ir sukels našumo problemų.

Galite patikrinti SELinux būseną naudodami toliau pateiktą komandą.

sestatus

Dabar atidarykite failą /etc/selinux/config ir išjunkite SELINUX, kaip parodyta.

SELinux=disabled

Išjungę SELinux, turite iš naujo paleisti sistemą, kad ji būtų aktyvi.

reboot

5. Įdiekite NTP paslaugas

Hadoop klasteryje visi serveriai turi būti sinchronizuoti laikai, kad būtų išvengta laikrodžio poslinkio klaidų. RHEL/CentOS 7 yra integruotas chronyd, skirtas tinklo laikrodžio/laiko sinchronizavimui, tačiau „Cloudera“ rekomenduoja naudoti NTP.

Turime įdiegti NTP ir jį sukonfigūruoti. Įdiegę sustabdykite „chronyd“ ir išjunkite. Nes jei serveryje veikia ir ntpd, ir chronyd, „Cloudera Manager“ atsižvelgs į chronyd laiko sinchronizavimui, tada jis parodys klaidą, net jei mes turime laiko sinchronizuoti per ntp.

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

6. Išjungti Chronyd

Kaip minėjome anksčiau, mums nereikia aktyvaus chronyd, nes naudojame ntpd. Patikrinkite chronyd būseną, jei ji veikia, sustabdykite ir išjunkite. Pagal numatytuosius nustatymus chronyd yra sustabdytas, nebent kol nepaleisime jos įdiegę OS, tiesiog turime išjungti, kad būtų saugesnė.

systemctl status chronyd
systemctl disable chronyd

7. Nustatykite FQDN (visiškai kvalifikuotą domeno pavadinimą)

Turime nustatyti hostname su FQDN (Fully Qualified Domain Name). Kiekvienas serveris turi turėti unikalų kanoninį pavadinimą. Norėdami išspręsti pagrindinio kompiuterio pavadinimą, turime sukonfigūruoti DNS arba /etc/hosts. Čia mes sukonfigūruosime /etc/hosts.

Kiekvieno serverio IP adresą ir FQDN reikia įvesti visų serverių /etc/hosts. Tada tik Cloudera Manager gali susisiekti su visais serveriais naudodamas prieglobos pavadinimą.

hostnamectl set-hostname master1.linux-console.net

Tada sukonfigūruokite failą /etc/hosts. Pavyzdžiui: – Jei turime 5 mazgų grupę su 2 pagrindiniais ir 3 darbuotojais, galime sukonfigūruoti /etc/hosts, kaip nurodyta toliau.

8. „Java“ kūrimo rinkinio (JDK) diegimas

Kadangi Hadoop sudaro Java, visuose pagrindiniuose kompiuteriuose turi būti įdiegta Java su atitinkama versija. Čia mes turėsime OpenJDK. Pagal numatytuosius nustatymus Cloudera Manager įdiegs OracleJDK, tačiau Cloudera rekomenduoja turėti OpenJDK.

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

Hadoop saugumas ir grūdinimas

Šiame skyriuje mes eisime į Harden Hadoop aplinkos saugumą…

1. Išjunkite automatinį montavimą

Automatinis prijungimas „autofs“ leidžia automatiškai prijungti fizinius įrenginius, pvz., USB, CD/DVD. Vartotojas, turintis fizinę prieigą, gali prijungti savo USB arba bet kurią laikmeną, kad pasiektų įterptus duomenis. Naudokite toliau pateiktas komandas, kad patikrintumėte, ar jis išjungtas, ar ne, jei ne, išjunkite.

systemctl disable autofs
systemctl is-enabled autofs

2. Saugios įkrovos nustatymai

Konfigūracijos faile grub yra svarbios informacijos apie įkrovos nustatymus ir kredencialus, kad būtų galima atrakinti įkrovos parinktis. Grub konfigūracijos failas „grub.cfg“, esantis adresu /boot/grub2 ir susietas kaip /etc/grub2.conf ir įsitikinkite, kad grub.cfg priklauso root naudotojui.

cd /boot/grub2

Naudokite toliau pateiktą komandą, kad patikrintumėte, ar Uid ir Gid yra 0/root ir group arba >kita“ neturėtų turėti jokio leidimo.

stat /boot/grub2/grub.cfg

Norėdami pašalinti kitų ir grupės leidimus, naudokite toliau pateiktą komandą.

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

3. Nustatykite Bootloader slaptažodį

Šis nustatymas apsaugo nuo kito neteisėto serverio paleidimo iš naujo. ty, norint iš naujo paleisti serverį, reikalingas slaptažodis. Jei jis nenustatytas, neleistini vartotojai gali paleisti serverį ir keisti įkrovos skaidinius.

Norėdami nustatyti slaptažodį, naudokite toliau pateiktą komandą.

grub2-mkpasswd-pbkdf2

Pridėkite anksčiau sukurtą slaptažodį į failą /etc/grub.d/01_users.

Tada iš naujo sugeneruokite grub konfigūracijos failą.

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

4. Pašalinkite Prelink Tool

Prelink yra programinė įranga, kuri gali padidinti serverio pažeidžiamumą, jei kenkėjiški vartotojai gali pažeisti įprastas bibliotekas, pvz., libc.

Norėdami jį pašalinti, naudokite toliau pateiktą komandą.

yum remove prelink

5. Išjunkite nepageidaujamas paslaugas

Turėtume apsvarstyti galimybę išjungti kai kurias paslaugas/protokolus, kad išvengtume galimų atakų.

systemctl disable <service name>
  • Išjungti tinklo paslaugas – įsitikinkite, kad tinklo paslaugos nėra įjungtos – mokesčiai, dienos laikas, išmetimas, aidas, laikas. Šios tinklo paslaugos skirtos derinimui ir testavimui, rekomenduojama išjungti, kurios gali sumažinti nuotolinę ataką.
  • Išjungti TFTP ir FTP – abu protokolai nepalaikys duomenų ar kredencialų konfidencialumo. Geriausia praktika neturėti serveryje, nebent to aiškiai reikalaujama. Dažniausiai šie protokolai yra įdiegti ir įjungti failų serveriuose.
  • Išjungti DHCP – DHCP yra protokolas, kuris dinamiškai paskirs IP adresą. Norint išvengti galimų atakų, rekomenduojama išjungti, nebent tai yra DHCP serveris.
  • Išjungti HTTP – HTTP yra protokolas, kurį galima naudoti žiniatinklio turiniui priglobti. Išskyrus pagrindinius/valdymo serverius (kur turi būti sukonfigūruota paslaugų WebUI, pvz., CM, Hue ir tt), galime išjungti HTTP kituose darbuotojo mazguose, kurie gali išvengti galimų atakų.

Santrauka

Atlikome serverio paruošimo procesą, kurį sudaro „Cloudera Hadoop“ išankstinės sąlygos ir tam tikri saugumo patobulinimai. Norint sklandžiai įdiegti „Hadoop“, „Cloudera“ apibrėžtos būtinos OS lygio sąlygos yra privalomos. Paprastai griežtinimo scenarijus parengiamas naudojant CIS etaloną ir naudojamas neatitikimams tikrinti ir ištaisyti realiuoju laiku.

Minimaliai įdiegus CentOS/RHEL 7, įdiegiamos tik pagrindinės funkcijos/programinė įranga, todėl išvengsite nepageidaujamos rizikos ir pažeidžiamumų. Net jei tai yra minimalus diegimas, prieš diegiant „Hadoop“ bus atliekamos kelios saugos audito iteracijos, net ir sukūrus klasterį, prieš perkeliant klasterį į eksploatavimo/gamybos sritį.