Konfigurere Hadoop-forutsetninger og sikkerhetsherding – del 2


Hadoop Cluster Building er en trinnvis prosess hvor prosessen starter fra kjøp av nødvendige servere, montering i rack, kabling osv. og plassering i Datasenter. Deretter må vi installere OS, det kan gjøres ved hjelp av kickstart i sanntidsmiljøet hvis klyngestørrelsen er stor. Når OS er installert, må vi forberede serveren for Hadoop-installasjon, og vi må klargjøre serverne i henhold til organisasjonens sikkerhetspolicyer.

  • Beste fremgangsmåter for distribusjon av Hadoop Server på CentOS/RHEL 7 – Del 1

I denne artikkelen vil vi gå gjennom forutsetninger på OS-nivå anbefalt av Cloudera. Vi har også fremhevet noen viktige sikkerhetsherdingstips i henhold til CIS Benchmark for Production-servere. Disse sikkerhetsherdingene kan være forskjellige i henhold til kravene.

Oppsett av Cloudera Hadoop Forutsetninger

Her vil vi diskutere forutsetningene på OS-nivå anbefalt av Cloudera.

Som standard er Transparent Huge Page (THP) aktivert i Linux-maskiner som samhandler dårlig med Hadoop-arbeidsbelastninger, og det forringer den generelle ytelsen til Cluster. Så vi må deaktivere dette for å oppnå optimal ytelse ved å bruke følgende ekkokommando.

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

Som standard er vm.swappiness-verdien 30 eller 60 for de fleste Linux-maskiner.

# sysctl vm.swappiness

Det anbefales ikke å ha en høyere bytteverdi for Hadoop-servere fordi det kan føre til lange pauser i søppelinnsamlingen. Og med den høyere bytteverdien kan data bufres for å bytte minne selv om vi har nok minne. Reduser bytteverdien kan få fysisk minne til å inneholde flere minnesider.

# sysctl vm.swappiness=1

Eller du kan åpne filen /etc/sysctl.conf og legge til \vm.swappiness=1\ på slutten.

vm.swappiness=1

Hver Hadoop-server vil ha sitt eget ansvar med flere tjenester (demoner) som kjører på den. Alle serverne vil kommunisere med hverandre på en hyppig måte for ulike formål.

For eksempel vil Datanode sende et hjerteslag til Namenode hvert 3. sekund slik at Namenode vil sørge for at Datanode er i live.

Hvis all kommunikasjon skjer mellom demonene på tvers av forskjellige servere via brannmuren, vil det være en ekstra belastning for Hadoop. Så det er best praksis å deaktivere brannmuren i de individuelle serverne i Cluster.

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

Hvis vi holder SELinux aktivert, vil det forårsake problemer mens du installerer Hadoop. Siden Hadoop er en klyngedatabehandling, vil Cloudera Manager nå alle serverne i klyngen for å installere Hadoop og dets tjenester, og den vil opprette nødvendige tjenestekataloger der det er nødvendig.

Hvis SELinux er aktivert, vil det ikke la Cloudera Manager styre installasjonen slik den vil. Så å aktivere SELinux vil være en hindring for Hadoop, og det vil føre til ytelsesproblemer.

Du kan sjekke statusen til SELinux ved å bruke kommandoen nedenfor.

# sestatus

Åpne nå filen /etc/selinux/config og deaktiver SELINUX som vist.

SELinux=disabled

Etter å ha deaktivert SELinux, må du starte systemet på nytt for å gjøre det aktivt.

# reboot

I Hadoop Cluster bør alle serverne være tidssynkroniserte for å unngå klokkeforskyvningsfeil. RHEL/CentOS 7 har chronyd innebygd for nettverksklokke/tidssynkronisering, men Cloudera anbefaler å bruke NTP.

Vi må installere NTP og konfigurere den. Når den er installert, stopp 'chronyd' og deaktiver. Fordi hvis en server som har både ntpd og chronyd kjører, vil Cloudera Manager vurdere chronyd for tidssynkronisering, så vil den gi en feil selv om vi har tid synkronisert gjennom ntp.

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

Som vi nevnte ovenfor, trenger vi ikke chronyd aktiv da vi bruker ntpd. Sjekk statusen til chronyd, hvis den kjører, stopp og deaktiver. Som standard stoppes chronyd med mindre vi starter den etter OS-installasjon, bare vi må deaktivere for en tryggere side.

# systemctl status chronyd
# systemctl disable chronyd

Vi må sette vertsnavnet med FQDN (Fully Qualified Domain Name). Hver server bør ha et unikt kanonisk navn. For å løse vertsnavnet må vi enten konfigurere DNS eller /etc/hosts. Her skal vi konfigurere /etc/hosts.

IP-adressen og FQDN for hver server skal angis i /etc/hosts for alle serverne. Da kan bare Cloudera Manager kommunisere alle serverne med vertsnavnet.

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

Deretter konfigurerer du filen /etc/hosts. For eksempel: – Hvis vi har 5 nodeklynger med 2 mastere og 3 arbeidere, kan vi konfigurere /etc/hosts som nedenfor.

Siden Hadoop består av Java, bør alle vertene ha Java installert med riktig versjon. Her skal vi ha OpenJDK. Som standard vil Cloudera Manager installere OracleJDK, men Cloudera anbefaler å ha OpenJDK.

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

Hadoop sikkerhet og herding

I denne delen skal vi til Harden Hadoop miljøsikkerhet...

Automatisk montering av autofs tillater automatisk montering av fysiske enheter som USB, CD/DVD. Bruker med fysisk tilgang kan koble til sin USB eller et hvilket som helst lagringsmedium for å få tilgang til innsettingsdata. Bruk kommandoene nedenfor for å bekrefte om den er deaktivert eller ikke, hvis ikke deaktiver den.

# systemctl disable autofs
# systemctl is-enabled autofs

Grub-konfigurasjonsfilen inneholder viktig informasjon om oppstartsinnstillinger og legitimasjon for å låse opp oppstartsalternativer. Grub-konfigurasjonsfilen 'grub.cfg' som ligger på /boot/grub2 og den er koblet som /etc/grub2.conf og sørg for at grub.cfg eies av root-brukeren.

# cd /boot/grub2

Bruk kommandoen nedenfor for å sjekke Uid og Gid er begge 0/root og 'gruppe' eller 'annet' skal ikke ha noen tillatelse.

# stat /boot/grub2/grub.cfg

Bruk kommandoen nedenfor for å fjerne tillatelser fra andre og grupper.

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

Denne innstillingen unngår annen uautorisert omstart av serveren. dvs. Det krever et passord for å starte serveren på nytt. Hvis det ikke er satt, kan uautoriserte brukere starte opp serveren og gjøre endringer i oppstartspartisjonene.

Bruk kommandoen nedenfor for å angi passordet.

# grub2-mkpasswd-pbkdf2

Legg til det ovenfor opprettede passordet i filen /etc/grub.d/01_users.

Deretter genererer du grub-konfigurasjonsfilen på nytt.

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

Prelink er et program som kan øke sårbarheten i en server hvis ondsinnede brukere kan kompromittere vanlige biblioteker som libc.

Bruk kommandoen nedenfor for å fjerne den.

# yum remove prelink

Vi bør vurdere å deaktivere noen tjenester/protokoller for å unngå potensielle angrep.

# systemctl disable <service name>

  • Deaktiver nettverkstjenester – Sørg for at nettverkstjenestene – avgifter, dagtid, forkast, ekko, klokkeslett ikke er aktivert. Disse nettverkstjenestene er for feilsøking og testing, det anbefales å deaktivere, noe som kan minimere fjernangrepet.
  • Deaktiver TFTP og FTP – Begge protokollen støtter ikke konfidensialiteten til dataene eller legitimasjonen. Det er best praksis å ikke ha på serveren med mindre det er eksplisitt påkrevd. For det meste er disse protokollene installert og aktivert på filservere.
  • Deaktiver DHCP – DHCP er protokollen som dynamisk tildeler IP-adressen. Det anbefales å deaktivere med mindre det er en DHCP-server for å unngå potensielle angrep.
  • Deaktiver HTTP – HTTP er protokollen som kan brukes til å være vert for webinnhold. Bortsett fra Master/Management-servere (der WebUI av tjenester skal konfigureres som CM, Hue osv.), kan vi deaktivere HTTP på andre arbeidernoder som kan unngå potensielle angrep.

Sammendrag

Vi har gått gjennom serverforberedelsen som består av Cloudera Hadoop Pre-requisites og noe sikkerhetsherding. Forutsetninger på OS-nivå definert av Cloudera er obligatoriske for jevn installasjon av Hadoop. Vanligvis vil et herdeskript bli utarbeidet ved bruk av CIS Benchmark og brukt til å revidere og rette opp manglende samsvar i sanntid.

Ved en minimal installasjon av CentOS/RHEL 7 installeres kun grunnleggende funksjonalitet/programvare, dette vil unngå uønsket risiko og sårbarheter. Selv om det er minimal installasjon vil flere gjentakelser av sikkerhetsrevisjon gjøres før installasjon av Hadoop, selv etter bygging av klyngen, før klyngen flyttes til drift/produksjon.