Postavljanje preduvjeta za Hadoop i jačanje sigurnosti - 2. dio


Izgradnja Hadoop klastera proces je korak po korak gdje proces počinje kupnjom potrebnih poslužitelja, montažom u stalak, kabliranjem itd. i postavljanjem u podatkovni centar. Zatim moramo instalirati OS, to se može učiniti pomoću kickstarta u stvarnom vremenu ako je veličina klastera velika. Nakon instaliranja OS-a, moramo pripremiti poslužitelj za instalaciju Hadoop-a i moramo pripremiti poslužitelje u skladu sa sigurnosnim politikama organizacije.

Zahtjevi

  • Najbolje prakse za implementaciju Hadoop poslužitelja na CentOS/RHEL 7 – 1. dio

U ovom ćemo članku proći kroz preduvjete na razini OS-a koje preporučuje Cloudera. Također, istaknuli smo neke važne savjete za jačanje sigurnosti prema CIS mjerilu za proizvodne poslužitelje. Ova sigurnosna ojačanja mogu biti različita prema zahtjevima.

Postavljanje Cloudera Hadoop preduvjeta

Ovdje ćemo raspravljati o preduvjetima na razini OS-a koje preporučuje Cloudera.

1. Onemogućite Transparent Huge Page

Prema zadanim postavkama, Transparent Huge Page (THP) omogućena je u Linux strojevima koji slabo komuniciraju s radnim opterećenjima Hadoop i degradira ukupnu izvedbu klastera. Stoga ovo moramo onemogućiti kako bismo postigli optimalnu izvedbu korištenjem sljedeće naredbe echo.

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

2. Promijenite VM Swappiness

Prema zadanim postavkama, vrijednost vm.swappiness je 30 ili 60 za većinu Linux strojeva.

sysctl vm.swappiness

Imati veću vrijednost swappiness ne preporučuje se za Hadoop poslužitelje jer može uzrokovati dugotrajne pauze sakupljanja smeća. A uz veću vrijednost swappinessa, podaci se mogu predmemorirati u swap memoriju čak i ako imamo dovoljno memorije. Niža vrijednost swappinessa može učiniti da fizička memorija sadrži više memorijskih stranica.

sysctl vm.swappiness=1

Ili, možete otvoriti datoteku /etc/sysctl.conf i dodati "vm.swappiness=1" na kraju.

vm.swappiness=1

3. Onemogućite vatrozid

Svaki Hadoop poslužitelj će imati vlastitu odgovornost s višestrukim servisima (daemoni) koji se izvode na njemu. Svi poslužitelji međusobno će komunicirati na čest način u različite svrhe.

Na primjer, Datanode će slati otkucaje srca Namenodeu svake 3 sekunde kako bi Namenode provjerio je li Datanode živ.

Ako se sva komunikacija odvija između demona preko različitih poslužitelja preko Vatrozida, to će biti dodatno opterećenje za Hadoop. Stoga je najbolja praksa onemogućiti vatrozid na pojedinačnim poslužiteljima u klasteru.

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

4. Onemogućite SELinux

Ako SELinux držimo omogućenim, to će uzrokovati probleme pri instaliranju Hadoop-a. Kako je Hadoop računalstvo u klasteru, Cloudera Manager će doći do svih poslužitelja u klasteru kako bi instalirao Hadoop i njegove usluge i stvorit će potrebne direktorije usluga gdje god je potrebno.

Ako je SELinux omogućen, neće dopustiti Cloudera Manageru da upravlja instalacijom kako želi. Dakle, omogućavanje SELinuxa bit će prepreka za Hadoop i uzrokovat će probleme s performansama.

Status SELinuxa možete provjeriti pomoću donje naredbe.

sestatus

Sada otvorite datoteku /etc/selinux/config i onemogućite SELINUX kao što je prikazano.

SELinux=disabled

Nakon što onemogućite SELinux, morate ponovno pokrenuti sustav da bi bio aktivan.

reboot

5. Instalirajte NTP usluge

U Hadoop klasteru svi bi poslužitelji trebali biti Vremenski sinkronizirani kako bi se izbjegle pogreške pomaka sata. RHEL/CentOS 7 ima ugrađen chronyd za mrežnu sinkronizaciju sata/vremena, ali Cloudera preporučuje korištenje NTP.

Moramo instalirati NTP i konfigurirati ga. Nakon instaliranja zaustavite 'chronyd' i onemogućite ga. Jer, ako poslužitelj ima pokrenute i ntpd i chronyd, Cloudera Manager će uzeti u obzir chronyd za sinkronizaciju vremena, tada će izbaciti pogrešku čak i ako imamo vrijeme sinkronizirano preko ntp-a.

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

6. Onemogućite Chronyd

Kao što smo gore spomenuli, ne treba nam aktivan chronyd jer koristimo ntpd. Provjerite status chronyd, ako radi, zaustavite ga i onemogućite. Prema zadanim postavkama, chronyd je zaustavljen osim ako ga ne pokrenemo nakon instalacije OS-a, samo ga trebamo onemogućiti radi sigurnije strane.

systemctl status chronyd
systemctl disable chronyd

7. Postavite FQDN (potpuno kvalificirani naziv domene)

Moramo postaviti naziv glavnog računala s FQDN (Potpuno kvalificirani naziv domene). Svaki poslužitelj mora imati jedinstveno kanonsko ime. Da bismo riješili naziv hosta, moramo konfigurirati DNS ili /etc/hosts. Ovdje ćemo konfigurirati /etc/hosts.

IP adresu i FQDN svakog poslužitelja treba unijeti u /etc/hosts svih poslužitelja. Tada samo Cloudera Manager može komunicirati sa svim poslužiteljima sa svojim imenom hosta.

hostnamectl set-hostname master1.linux-console.net

Zatim konfigurirajte datoteku /etc/hosts. Na primjer: – Ako imamo klaster od 5 čvorova s 2 gospodara i 3 radnika, možemo konfigurirati /etc/hosts kao ispod.

8. Instaliranje Java Development Kit-a (JDK)

Kako se Hadoop sastoji od Jave, svi hostovi trebaju imati Javu instaliranu s odgovarajućom verzijom. Ovdje ćemo imati OpenJDK. Prema zadanim postavkama, Cloudera Manager će instalirati OracleJDK, ali Cloudera preporučuje OpenJDK.

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

Hadoop sigurnost i jačanje

U ovom odjeljku govorit ćemo o sigurnosti okoline Harden Hadoop...

1. Onemogućite automatsko montiranje

Automatsko montiranje ‘autofs’ omogućuje automatsko montiranje fizičkih uređaja kao što su USB, CD/DVD. Korisnik s fizičkim pristupom može priključiti svoj USB ili bilo koji medij za pohranu za pristup umetnutim podacima. Upotrijebite donje naredbe da provjerite je li onemogućen ili ne, ako nije onemogućite ga.

systemctl disable autofs
systemctl is-enabled autofs

2. Postavke sigurnog pokretanja

Konfiguracijska datoteka grub sadrži kritične informacije o postavkama pokretanja i vjerodajnicama za otključavanje opcija pokretanja. Konfiguracijska datoteka grub 'grub.cfg' koja se nalazi na /boot/grub2 i povezana je kao /etc/grub2.conf i osigurava grub.cfg je u vlasništvu root korisnika.

cd /boot/grub2

Upotrijebite naredbu u nastavku da provjerite jesu li Uid i Gid i 0/root i 'group' ili 'ostalo' ne bi trebao imati nikakvu dozvolu.

stat /boot/grub2/grub.cfg

Upotrijebite donju naredbu za uklanjanje dopuštenja za druge i grupe.

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

3. Postavite lozinku za pokretanje sustava

Ova postavka izbjegava druga neovlaštena ponovna pokretanja poslužitelja. tj. Za ponovno pokretanje poslužitelja potrebna je lozinka. Ako nije postavljeno, neovlašteni korisnici mogu pokrenuti poslužitelj i mogu mijenjati particije za pokretanje.

Upotrijebite donju naredbu za postavljanje lozinke.

grub2-mkpasswd-pbkdf2

Dodajte gore stvorenu lozinku u datoteku /etc/grub.d/01_users.

Zatim ponovno generirajte grub konfiguracijsku datoteku.

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

4. Uklonite alat za prethodno povezivanje

Prelink je softverski program koji može povećati ranjivost na poslužitelju ako zlonamjerni korisnici mogu ugroziti uobičajene biblioteke kao što je libc.

Koristite donju naredbu da biste ga uklonili.

yum remove prelink

5. Onemogućite neželjene usluge

Trebali bismo razmotriti onemogućavanje nekih usluga/protokola kako bismo izbjegli moguće napade.

systemctl disable <service name>
  • Onemogući mrežne usluge – Provjerite mrežne usluge – naknade, dan, odbacivanje, jeka, vrijeme nisu omogućene. Ove mrežne usluge služe za otklanjanje pogrešaka i testiranje, preporuča se onemogućiti što može minimizirati daljinski napad.
  • Onemogući TFTP i FTP – Oba protokola neće podržavati povjerljivost podataka ili vjerodajnica. Najbolja je praksa ne imati ga na poslužitelju osim ako to nije izričito potrebno. Uglavnom su ti protokoli instalirani i omogućeni na poslužiteljima datoteka.
  • Onemogući DHCP – DHCP je protokol koji će dinamički dodijeliti IP adresu. Preporuča se onemogućiti osim ako se ne radi o DHCP poslužitelju kako bi se izbjegli mogući napadi.
  • Onemogući HTTP – HTTP je protokol koji se može koristiti za hostiranje web sadržaja. Osim glavnih/upravljačkih poslužitelja (gdje se WebUI usluga treba konfigurirati kao što su CM, Hue itd.), možemo onemogućiti HTTP na drugim radnim čvorovima čime se mogu izbjeći potencijalni napadi.

Sažetak

Prošli smo kroz pripremu poslužitelja koja se sastoji od Cloudera Hadoop preduvjeta i određenog sigurnosnog ojačanja. Preduvjeti za razinu OS-a koje definira Cloudera obavezni su za glatku instalaciju Hadoopa. Obično će se skripta za učvršćivanje pripremiti uz korištenje CIS Benchmarka i koristiti za reviziju i ispravljanje neusklađenosti u stvarnom vremenu.

U minimalnoj instalaciji CentOS/RHEL 7 instalirane su samo osnovne funkcionalnosti/softver, čime će se izbjeći neželjeni rizik i ranjivosti. Iako se radi o minimalnoj instalaciji, nekoliko iteracija sigurnosne revizije bit će obavljeno prije instaliranja Hadoopa, čak i nakon izgradnje klastera, prije premještanja klastera u rad/proizvodnju.