Hadoopi eeltingimuste seadistamine ja turvalisuse karastamine - 2. osa


Hadoopi klastrite loomine on samm-sammult protsess, kus protsess algab vajalike serverite ostmisest, riiulile paigaldamisest, kaablite paigaldamisest jne ja Datacentre'i paigutamisest. Siis peame installima OS-i, seda saab teha reaalajas keskkonnas kickstardi abil, kui klastri suurus on suur. Kui operatsioonisüsteem on installitud, peame serveri Hadoopi installimiseks ette valmistama ja serverid vastavalt organisatsiooni turbepoliitikatele ette valmistama.

  • Hadoop Serveri juurutamise parimad tavad CentOS/RHEL 7-le - 1. osa

Selles artiklis tutvume Cloudera soovitatud OS-i eeltingimustega. Samuti oleme välja toonud mõned olulised turvalisuse karastamise näpunäited vastavalt CISi tootmise serverite võrdlusalusele. Need turvalisuse karastused võivad vastavalt nõuetele erineda.

Cloudera Hadoopi eeltingimuste seadistamine

Siin käsitleme Cloudera soovitatud OS-i eeltingimusi.

Vaikimisi on Transparent Huge Page (THP) lubatud Linuxi masinates, mis halvasti suhtlevad Hadoopi töökoormustega ja see halvendab klastri üldist jõudlust. Seega peame järgmise kajakäsu abil optimaalse jõudluse saavutamiseks selle keelama.

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

Vaikimisi on vm.swappiness väärtus enamiku Linuxi masinate puhul 30 või 60.

# sysctl vm.swappiness

Hadoopi serverite jaoks pole soovitatav kasutada suuremat väärtust, kuna see võib põhjustada pikki prügiveo pause. Kõrgema väärtusega saab andmeid vahemällu vahetada ka siis, kui meil on piisavalt mälu. Vahetusväärtuse alandamine võib muuta füüsilise mälu mahuks rohkem mälulehti.

# sysctl vm.swappiness=1

Või võite avada faili /etc/sysctl.conf ja selle lõppu lisada "vm.swappiness = 1" .

vm.swappiness=1

Igal Hadoopi serveril on oma vastutus, kui sellel töötavad mitmed teenused (deemonid). Kõik serverid suhtlevad omavahel erinevatel eesmärkidel sageli.

Näiteks saadab Datanode Namenode'ile iga 3 sekundi tagant südamelöögi, nii et Namenode veendub, et Datanode on elus.

Kui kogu side toimub tulemüüri kaudu deemonite vahel erinevate serverite vahel, on see Hadoopile lisakoormus. Seega on parim tava tulemüüri keelamine klastri üksikutes serverites.

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

Kui hoiame SELinuxi lubatuna, tekitab see Hadoopi installimisel probleeme. Kuna Hadoop on klastrite arvutus, jõuab Cloudera Manager kõigi klastri serveriteni, et Hadoop ja selle teenused installida, ning loob vajaduse korral vajalikud teenusekataloogid.

Kui SELinux on lubatud, ei lase see Cloudera Manageril installimist juhtida nii, nagu soovib. Nii et SELinuksi lubamine on Hadoopile takistuseks ja see põhjustab jõudlusprobleeme.

SELinuksi olekut saate kontrollida alloleva käsu abil.

# sestatus

Nüüd avage fail/etc/selinux/config ja keelake SELINUX, nagu näidatud.

SELinux=disabled

Pärast SELinuksi keelamist peate süsteemi aktiivseks muutmiseks taaskäivitama.

# reboot

Hadoop Clusteris peaksid kõik serverid olema aja sünkroniseeritud, et vältida kella nihke vigu. RHEL/CentOS 7 on kronüüdi sisseehitatud võrgu kella/aja sünkroonimiseks, kuid Cloudera soovitab kasutada NTP-d.

Peame installima NTP ja selle konfigureerima. Pärast installimist peatage ‘chronyd’ ja keelake. Sest kui serveril, kus töötab nii ntpd kui ka chronyd, arvestab Cloudera Manager aja sünkroonimiseks kronüüdi, loob see vea ka siis, kui meil on aeg ntp kaudu sünkroonitud.

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

Nagu me eespool mainisime, ei vaja me kronüüdi aktiivset, kuna kasutame ntpd-d. Kontrollige kronüüdi olekut, kui see töötab, peatage ja keelake. Vaikimisi on chronyd peatatud, kui me ei alusta seda pärast OS-i installimist, peame selle turvalisema külje jaoks välja lülitama.

# systemctl status chronyd
# systemctl disable chronyd

Peame hosti nime määrama FQDN-ga (täielikult kvalifitseeritud domeeninimi). Igal serveril peaks olema unikaalne kanooniline nimi. Hosti nime lahendamiseks peame kas konfigureerima DNS-i või/etc/hosts. Siin seadistame/etc/hosts.

Iga serveri IP-aadress ja FQDN tuleks sisestada kõigi serverite kataloogi/etc/hosts. Siis saab ainult Cloudera Manager suhelda kõiki servereid oma hostinimega.

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

Järgmisena seadistage fail/etc/hosts. Näide: - Kui meil on 5 sõlmeklastrit, millel on 2 ülema ja 3 töötajat, saame/etc/hosts konfigureerida nagu allpool.

Kuna Hadoop koosneb Java-st, peaksid kõik hostid Java olema installitud vastava versiooniga. Siin on meil OpenJDK. Vaikimisi installib Cloudera Manager OracleJDK, kuid Cloudera soovitab omada OpenJDK-d.

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

Hadoopi turvalisus ja karastamine

Selles osas tutvume Harden Hadoopi keskkonnaturvalisusega ...

Autofonide automaatne paigaldamine võimaldab füüsiliste seadmete, näiteks USB, CD/DVD, automaatset paigaldamist. Füüsilise juurdepääsuga kasutaja saab sisestatavatele andmetele juurdepääsu saamiseks oma USB või muu andmekandja lisada. Kasutage allolevaid käske, et kontrollida, kas see on keelatud või mitte, kui mitte, siis keelake see.

# systemctl disable autofs
# systemctl is-enabled autofs

Grubi konfiguratsioonifail sisaldab alglaadimisseadete kriitilist teavet ja mandaate alglaadimisvalikute avamiseks. Grubi konfiguratsioonifail ‘grub.cfg’ asub aadressil/boot/grub2 ja see on lingitud kui /etc/grub2.conf ning tagab, et grub.cfg kuulub root kasutajale.

# cd /boot/grub2

Kasutage allolevat käsku, et kontrollida, kas Uid ja Gid on mõlemad 0/juur ja rühmal või muul ei tohiks olla luba.

# stat /boot/grub2/grub.cfg

Kasutage allolevat käsku teiste ja grupi õiguste eemaldamiseks.

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

See seade väldib serveri muud volitamata taaskäivitamist. st Serveri taaskäivitamiseks on vaja parooli. Kui see pole seadistatud, saavad volitamata kasutajad serveri käivitada ja teha alglaadimispartitsioonidesse muudatusi.

Parooli määramiseks kasutage allolevat käsku.

# grub2-mkpasswd-pbkdf2

Lisage ülaltoodud parool faili /etc/grub.d/01_users.

Järgmisena genereerige uuesti grubi konfiguratsioonifail.

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

Prelink on tarkvaraprogramm, mis võib suurendada serveri haavatavust, kui pahatahtlikud kasutajad võivad kahjustada levinud teeke, näiteks libc.

Selle eemaldamiseks kasutage allolevat käsku.

# yum remove prelink

Võimalike rünnakute vältimiseks peaksime kaaluma mõne teenuse/protokolli keelamist.

# systemctl disable <service name>

  • Keela võrguteenused - veenduge, et võrguteenused ei oleks lubatud - tasud, päeval, ära viskamine, kaja ja kellaaeg pole lubatud. Need võrguteenused on mõeldud silumiseks ja testimiseks. Soovitatav on keelata, mis võib kaugrünnakut minimeerida.
  • Keela TFTP ja FTP - mõlemad protokollid ei toeta andmete ega mandaatide konfidentsiaalsust. Parim tava on, et seda pole serveris, kui seda pole selgesõnaliselt vaja. Enamasti on need protokollid failiserveritesse installitud ja lubatud.
  • Keela DHCP - DHCP on IP-aadressi dünaamiliselt eraldav protokoll. Võimalike rünnakute vältimiseks on soovitatav keelata, kui see pole DHCP-server.
  • Keela HTTP - HTTP on protokoll, mida saab kasutada veebisisu majutamiseks. Peale pea-/haldusserverite (kus tuleb konfigureerida teenuste WebUI, näiteks CM, Hue jne), võime HTTP keelata ka muudel töölisesõlmedel, et vältida võimalikke rünnakuid.

Kokkuvõte

Oleme läbinud serveri ettevalmistamise, mis koosneb Cloudera Hadoopi eeltingimustest ja mõnest turvalisuse karastamisest. Cloudera määratletud operatsioonisüsteemi taseme eeltingimused on Hadoopi sujuvaks installimiseks kohustuslikud. Tavaliselt koostatakse CIS-i võrdlusaluse abil karastav skript, mida kasutatakse reaalajas mittevastavuste auditeerimiseks ja parandamiseks.

CentOS/RHEL 7 minimaalsel installimisel on installitud ainult põhifunktsioonid/tarkvara, see väldib soovimatut riski ja haavatavusi. Ehkki tegemist on minimaalse installiga, tehakse enne Hadoopi installimist mitu kordust turbeauditatsiooni, isegi pärast klastri loomist, enne kui klastri operatsiooni/tootmisse viiakse.