Postavljanje Hadoop preduvjeta i sigurnosno jačanje - 2. dio


Hadoop Cluster Building je proces korak po korak u kojem proces počinje od kupovine potrebnih servera, montiranja u stalak, kabliranja, itd. i postavljanja u Datacenter. Zatim moramo instalirati OS, to se može uraditi pomoću kickstarta u okruženju u realnom vremenu ako je veličina klastera velika. Kada se OS instalira, onda moramo pripremiti server za Hadoop instalaciju i moramo pripremiti servere u skladu sa sigurnosnim politikama Organizacije.

Zahtjevi

  • Najbolje prakse za implementaciju Hadoop servera na CentOS/RHEL 7 – 1. dio

U ovom članku ćemo proći kroz preduvjete na nivou OS-a koje preporučuje Cloudera. Također, istakli smo neke važne savjete za jačanje sigurnosti prema CIS mjerilu za proizvodne servere. Ova sigurnosna otvrdnjavanja mogu biti različita u skladu sa zahtjevima.

Postavljanje preduvjeta za Cloudera Hadoop

Ovdje ćemo razgovarati o preduvjetima na nivou OS koje preporučuje Cloudera.

1. Onemogućite Transparentnu ogromnu stranicu

Prema zadanim postavkama, Ogromna transparentna stranica (THP) je omogućena na Linux mašinama koje slabo komuniciraju sa Hadoop radnim opterećenjem i to degradira ukupne performanse klastera. Dakle, moramo ovo onemogućiti da bismo postigli optimalne performanse koristeći sljedeću echo komandu.

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

2. Promijenite VM Swappiness

Po defaultu, vrijednost vm.swappiness je 30 ili 60 za većinu Linux mašina.

sysctl vm.swappiness

Imati veću vrijednost swappiness se ne preporučuje za Hadoop servere jer može uzrokovati duge pauze u prikupljanju smeća. A, s višom vrijednošću zamjene, podaci se mogu keširati za zamjenu memorije čak i ako imamo dovoljno memorije. Smanjenje vrijednosti zamjene 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 zaštitni zid

Svaki Hadoop server će imati sopstvenu odgovornost sa više servisa (demona) koji rade na njemu. Svi serveri će međusobno komunicirati na čest način u različite svrhe.

Na primjer, Datanode će slati otkucaj srca Namenodeu svake 3 sekunde tako da će Namenode osigurati da je Datanode živ.

Ako se sva komunikacija odvija između demona preko različitih servera preko Firewall-a, to će biti dodatni teret za Hadoop. Stoga je najbolja praksa da onemogućite zaštitni zid na pojedinačnim serverima u Clusteru.

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

4. Onemogućite SELinux

Ako zadržimo SELinux uključenim, to će uzrokovati probleme prilikom instaliranja Hadoop-a. Kako je Hadoop klaster računarstvo, Cloudera Manager će doći do svih servera u klasteru da instalira Hadoop i njegove usluge i kreirat će potrebne direktorije usluga gdje god je to potrebno.

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

Možete provjeriti status SELinuxa korištenjem 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 ponovo pokrenuti sistem da biste ga učinili aktivnim.

reboot

5. Instalirajte NTP usluge

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

Moramo instalirati NTP i konfigurirati ga. Jednom instaliran, zaustavite „chronyd“ i onemogućite. Jer, ako server koji ima pokrenut i ntpd i chronyd, Cloudera Manager će uzeti u obzir chronyd za vremensku sinhronizaciju, tada će izbaciti grešku čak i ako imamo sinkronizirano vrijeme 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 chronyd aktivan jer koristimo ntpd. Provjerite status chronyd, ako radi zaustavite i onemogućite. Prema zadanim postavkama, chronyd je zaustavljen osim ako ga ne pokrenemo nakon instalacije OS-a, samo ga moramo onemogućiti radi sigurnije strane.

systemctl status chronyd
systemctl disable chronyd

7. Postavite FQDN (potpuno kvalificirano ime domene)

Moramo postaviti ime hosta sa FQDN (Potpuno kvalificirano ime domene). Svaki server bi trebao imati jedinstveno kanonsko ime. Da bismo riješili ime hosta, moramo ili konfigurirati DNS ili /etc/hosts. Ovdje ćemo konfigurirati /etc/hosts.

IP adresu i FQDN svakog servera treba uneti u /etc/hosts svih servera. Tada samo Cloudera Manager može komunicirati sa svim serverima sa svojim imenom hosta.

hostnamectl set-hostname master1.linux-console.net

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

8. Instaliranje Java razvojnog kompleta (JDK)

Kako se Hadoop sastoji od Jave, svi hostovi bi trebali imati instaliranu Javu sa odgovarajućom verzijom. Ovdje ćemo imati OpenJDK. Podrazumevano, Cloudera Manager će instalirati OracleJDK, ali Cloudera preporučuje da imate OpenJDK.

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

Hadoop sigurnost i učvršćivanje

U ovom odeljku ćemo ići na Harden Hadoop bezbednost okruženja…

1. Onemogućite automatsko montiranje

Automatsko montiranje „autofs“ omogućava automatsko montiranje fizičkih uređaja kao što su USB, CD/DVD. Korisnik sa fizičkim pristupom može priključiti svoj USB ili bilo koji memorijski medij za pristup umetnutim podacima. Koristite donje naredbe da provjerite da li je onemogućeno ili ne, ako ne i onemogućite.

systemctl disable autofs
systemctl is-enabled autofs

2. Postavke sigurnog pokretanja

Konfiguracijski fajl grub sadrži kritične informacije o postavkama pokretanja i vjerodajnicama za otključavanje opcija pokretanja. Grub konfiguracijski fajl 'grub.cfg' koji se nalazi na /boot/grub2 i povezan je kao /etc/grub2.conf i osigurajte grub.cfg je u vlasništvu root korisnika.

cd /boot/grub2

Koristite naredbu ispod da provjerite Uid i Gid su i 0/root i 'group' ili ' >drugo' ne bi trebalo imati nikakvu dozvolu.

stat /boot/grub2/grub.cfg

Koristite donju naredbu da uklonite dozvole za druge i grupe.

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

3. Postavite lozinku pokretača

Ova postavka izbjegava druga neovlaštena ponovno pokretanje servera. tj. Za ponovno pokretanje servera potrebna je lozinka. Ako nije postavljeno, neovlašteni korisnici mogu pokrenuti server i mogu napraviti promjene na particijama za pokretanje.

Koristite naredbu ispod da postavite lozinku.

grub2-mkpasswd-pbkdf2

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

Zatim ponovo generirajte konfiguracijsku datoteku grub.

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

4. Uklonite alat za pretvezivanje

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

Koristite donju naredbu da je uklonite.

yum remove prelink

5. Onemogućite neželjene usluge

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

systemctl disable <service name>
  • Onemogući mrežne usluge – Osigurajte da mrežne usluge – naknade, dan, odbacivanje, odjek, vrijeme nisu omogućene. Ove mrežne usluge služe za otklanjanje grešaka i testiranje, preporučljivo je onemogućiti što može smanjiti daljinski napad.
  • Onemogući TFTP i FTP – Oba protokola neće podržavati povjerljivost podataka ili vjerodajnica. Najbolje je ne imati na serveru osim ako se to izričito ne zahtijeva. Uglavnom su ovi protokoli instalirani i omogućeni na Fileserverima.
  • Onemogući DHCP – DHCP je protokol koji će dinamički dodijeliti IP adresu. Preporučljivo je onemogućiti osim ako se radi o DHCP serveru kako biste izbjegli potencijalne napade.
  • Onemogući HTTP – HTTP je protokol koji se može koristiti za hostovanje web sadržaja. Osim Master/Management servera (gdje se WebUI servisa treba konfigurirati kao CM, Hue, itd.), možemo onemogućiti HTTP na drugim radničkim čvorovima što može izbjeći potencijalne napade.

Sažetak

Prošli smo kroz pripremu servera koja se sastoji od Cloudera Hadoop preduslova i određenih sigurnosnih pojačanja. Preduslovi na nivou OS koje je definisao Cloudera su obavezni za nesmetanu instalaciju Hadoop-a. Obično će se skripta za učvršćivanje pripremiti uz korištenje CIS Benchmark-a i koristiti za reviziju i otklanjanje neusklađenosti u realnom vremenu.

U minimalnoj instalaciji CentOS/RHEL 7, instalirane su samo osnovne funkcionalnosti/softver, što će izbjeći neželjene rizike i ranjivosti. Iako se radi o minimalnoj instalaciji, višestruke iteracije sigurnosne revizije će se obaviti prije instaliranja Hadoop-a, čak i nakon izgradnje klastera, prije premještanja klastera u rad/proizvodnju.