Hadoopin ennakkoedellytysten asettaminen ja turvallisuuden kovettaminen - osa 2


Hadoop Cluster Building on askel askeleelta prosessi, jossa prosessi alkaa tarvittavien palvelinten ostamisesta, asennuksesta telineeseen, kaapeloinnista jne. Ja sijoittamisesta Datacentreen. Sitten meidän on asennettava käyttöjärjestelmä, se voidaan tehdä kickstartilla reaaliaikaisessa ympäristössä, jos klusterin koko on suuri. Kun käyttöjärjestelmä on asennettu, meidän on valmisteltava palvelin Hadoop-asennusta varten ja palvelimet on valmisteltava organisaation tietoturvakäytäntöjen mukaisesti.

  • Hadoop-palvelimen käyttöönoton parhaat käytännöt CentOS/RHEL 7: ssä - osa 1

Tässä artikkelissa käymme läpi Clouderan suosittelemat käyttöjärjestelmän tason vaatimukset. Olemme myös korostaneet joitain tärkeitä tietoturvakovetusvihjeitä CIS-vertailuarvon tuotantopalvelimille. Nämä turvallisuuden kovettuminen voivat olla erilaisia vaatimusten mukaan.

Cloudera Hadoop -edellytysten asettaminen

Tässä keskustelemme Clouderan suosittelemista käyttöjärjestelmän tason vaatimuksista.

Transparent Huge Page (THP) on oletusarvoisesti käytössä Linux-koneissa, jotka ovat huonossa vuorovaikutuksessa Hadoopin kuormitusten kanssa ja heikentävät Clusterin yleistä suorituskykyä. Joten meidän on poistettava tämä käytöstä, jotta voimme saavuttaa optimaalisen suorituskyvyn seuraavalla kaikukomennolla.

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

Oletuksena vm.swappiness-arvo on 30 tai 60 useimmille Linux-koneille.

# sysctl vm.swappiness

Suurempaa swappiness-arvoa ei suositella Hadoop-palvelimille, koska se voi aiheuttaa pitkiä roskakorin taukoja. Ja korkeamman swappiness-arvon avulla tiedot voidaan tallentaa välimuistiin muistin vaihtamiseksi, vaikka meillä olisi tarpeeksi muistia. Pienempi swappiness-arvo voi saada fyysisen muistin sisältämään enemmän muistisivuja.

# sysctl vm.swappiness=1

Tai voit avata tiedoston /etc/sysctl.conf ja lisätä "vm.swappiness = 1" loppuun.

vm.swappiness=1

Jokaisella Hadoop-palvelimella on oma vastuunsa useiden palvelujen (demonien) ollessa käynnissä. Kaikki palvelimet kommunikoivat keskenään usein eri tarkoituksiin.

Esimerkiksi Datanode lähettää sydämen sykkeen Namenodelle 3 sekunnin välein, jotta Namenode varmistaa, että Datanode on elossa.

Jos kaikki viestintä tapahtuu demonien välillä eri palvelimien välillä palomuurin kautta, se on ylimääräinen taakka Hadoopille. Joten on suositeltavaa poistaa palomuuri käytöstä Clusterin yksittäisissä palvelimissa.

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

Jos pidämme SELinuxin käytössä, se aiheuttaa ongelmia asennettaessa Hadoopia. Koska Hadoop on klusterilaskenta, Cloudera Manager tavoittaa kaikki klusterin palvelimet Hadoopin ja sen palveluiden asentamiseksi ja luo tarvittavat palveluhakemistot missä vain.

Jos SELinux on käytössä, se ei anna Cloudera Managerin hallita asennusta haluamallaan tavalla. Joten SELinuxin käyttöönotto on este Hadoopille ja se aiheuttaa suorituskykyongelmia.

Voit tarkistaa SELinuxin tilan alla olevan komennon avulla.

# sestatus

Avaa nyt/etc/selinux/config-tiedosto ja poista SELINUX käytöstä kuvan mukaisesti.

SELinux=disabled

Kun olet poistanut SELinuxin käytöstä, sinun on käynnistettävä järjestelmä uudelleen, jotta se olisi aktiivinen.

# reboot

Hadoop Clusterissa kaikkien palvelimien tulee olla ajan synkronoituja, jotta vältetään kellonsiirtovirheet. RHEL/CentOS 7: ssä on sisäänrakennettu ajanotto verkon kellon ja ajan synkronointia varten, mutta Cloudera suosittelee NTP: n käyttöä.

Meidän on asennettava NTP ja määritettävä se. Kun se on asennettu, lopeta chronyd ja poista käytöstä. Koska palvelimella, jolla on sekä ntpd että chronyd, Cloudera Manager harkitsee chronydia ajan synkronointia varten, se heittää virheen, vaikka meillä olisi aikaa synkronoituna ntp: n kautta.

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

Kuten edellä mainitsimme, emme tarvitse chronyd aktiivista, koska käytämme ntpd: tä. Tarkista chronydin tila, jos se on käynnissä, pysäytä ja poista käytöstä. Oletusarvoisesti chronyd on pysäytetty, ellei meidän tarvitse käynnistää sitä käyttöjärjestelmän asennuksen jälkeen, meidän on poistettava käytöstä turvallisemman puolen vuoksi.

# systemctl status chronyd
# systemctl disable chronyd

Meidän on asetettava isäntänimi FQDN: llä (Fully Qualified Domain Name). Jokaisella palvelimella tulisi olla yksilöllinen Canonical-nimi. Isäntänimen selvittämiseksi meidän on joko määritettävä DNS tai/etc/hosts. Tässä aiomme määrittää/etc/hosts.

Jokaisen palvelimen IP-osoite ja FQDN tulee syöttää kaikkien palvelimien tiedostoon/etc/hosts. Sitten vain Cloudera Manager voi kommunikoida kaikki palvelimet isäntänimellään.

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

Määritä seuraavaksi/etc/hosts-tiedosto. Esimerkki: - Jos meillä on 5 solmuklusteria, joissa on 2 päällikköä ja 3 työntekijää, voimme määrittää/etc/hosts seuraavasti.

Koska Hadoop koostuu Java-ohjelmasta, kaikkien isäntien tulisi olla Java-asennettuna asianmukaisella versiolla. Täällä meillä on OpenJDK. Oletuksena Cloudera Manager asentaa OracleJDK: n, mutta Cloudera suosittelee OpenJDK: n käyttämistä.

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

Hadoop-turvallisuus ja kovettuminen

Tässä osiossa aiomme siirtyä Harden Hadoopin ympäristöturvallisuuteen ...

Automaattisen automaattisen asennuksen avulla fyysiset laitteet, kuten USB, CD/DVD, voidaan asentaa automaattisesti. Käyttäjä, jolla on fyysinen pääsy, voi liittää USB-muistin tai minkä tahansa tallennusvälineen, jotta hän pääsee lisäämään tietoja. Käytä alla olevia komentoja varmistaaksesi, onko se poistettu käytöstä vai ei, jos et poista sitä käytöstä.

# systemctl disable autofs
# systemctl is-enabled autofs

Grub-määritystiedosto sisältää tärkeitä tietoja käynnistysasetuksista ja tunnistetiedoista käynnistysvaihtoehtojen avaamiseksi. Grub-määritystiedosto grub.cfg sijaitsee osoitteessa/boot/grub2 ja se on linkitetty nimellä /etc/grub2.conf ja varmistetaan, että grub.cfg on pääkäyttäjän omistuksessa.

# cd /boot/grub2

Käytä alla olevaa komentoa tarkistaaksesi, että Uid ja Gid ovat molemmat 0/root ja ryhmällä tai muulla ei pitäisi olla lupaa.

# stat /boot/grub2/grub.cfg

Poista alla olevien komentojen käyttöoikeudet muilta ja ryhmiltä.

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

Tämä asetus välttää palvelimen muun luvattoman uudelleenkäynnistyksen. Toisin sanoen palvelimen uudelleenkäynnistäminen vaatii salasanan. Jos sitä ei ole asetettu, luvattomat käyttäjät voivat käynnistää palvelimen ja tehdä muutoksia käynnistysosioihin.

Määritä salasana alla olevan komennon avulla.

# grub2-mkpasswd-pbkdf2

Lisää yllä luotu salasana tiedostoon /etc/grub.d/01_users.

Luo seuraavaksi grub-määritystiedosto uudelleen.

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

Prelink on ohjelmisto, joka voi lisätä palvelimen haavoittuvuutta, jos haitalliset käyttäjät voivat vaarantaa yleiset kirjastot, kuten libc.

Poista se käyttämällä alla olevaa komentoa.

# yum remove prelink

Meidän tulisi harkita joidenkin palveluiden/protokollien poistamista käytöstä mahdollisten hyökkäysten välttämiseksi.

# systemctl disable <service name>

  • Poista verkkopalvelut käytöstä - Varmista, että verkkopalvelut - maksut, päivät, hylkääminen, kaiku ja aika eivät ole käytössä. Nämä verkkopalvelut ovat virheenkorjausta ja testausta varten. On suositeltavaa poistaa käytöstä, mikä voi minimoida etähyökkäyksen.
  • Poista TFTP ja FTP käytöstä - molemmat protokollat eivät tue tietojen tai tunnistetietojen luottamuksellisuutta. On parasta, ettei sitä ole palvelimessa, ellei sitä vaadita nimenomaisesti. Suurimmaksi osaksi nämä protokollat on asennettu ja otettu käyttöön Tiedostopalvelimissa.
  • Poista DHCP käytöstä - DHCP on protokolla, joka jakaa dynaamisesti IP-osoitteen. On suositeltavaa poistaa käytöstä, ellei se ole DHCP-palvelin mahdollisten hyökkäysten välttämiseksi.
  • Poista HTTP käytöstä - HTTP on protokolla, jota voidaan käyttää verkkosisällön isännöimiseen. Sen lisäksi, että Master/Management-palvelimet (joissa palvelujen WebUI on määritettävä, kuten CM, Hue jne.), Voimme poistaa HTTP: n käytöstä muissa työntekijäsolmuissa, jotta vältetään mahdolliset hyökkäykset.

Yhteenveto

Olemme käyneet läpi palvelinvalmistelun, joka koostuu Cloudera Hadoopin ennakkoedellytyksistä ja tietystä suojauksen kovettumisesta. Clouderan määrittelemät käyttöjärjestelmän tason ennakkovaatimukset ovat pakollisia Hadoopin sujuvalle asennukselle. Yleensä kovettuva skripti valmistetaan CIS-vertailuarvon avulla ja sitä käytetään todentamaan ja korjaamaan sääntöjenvastaisuus reaaliajassa.

CentOS/RHEL 7: n vähimmäisasennuksessa asennetaan vain perustoiminnot/ohjelmistot, mikä estää ei-toivotut riskit ja haavoittuvuudet. Vaikka se on vähäinen asennus, tietoturvatarkastukset tehdään useita kertoja ennen Hadoopin asentamista, jopa klusterin rakentamisen jälkeen, ennen kuin klusteri siirretään Operation/Production -palveluun.