Kuweka Masharti ya Awali ya Hadoop na Ugumu wa Usalama - Sehemu ya 2


Jengo la Nguzo la Hadoop ni mchakato wa hatua kwa hatua ambapo mchakato huanza kutoka kwa ununuzi wa seva zinazohitajika, kupachika kwenye rack, cabling, nk na kuweka kwenye Datacentre. Kisha tunahitaji kusakinisha OS, inaweza kufanywa kwa kutumia kickstart katika mazingira ya wakati halisi ikiwa ukubwa wa nguzo ni kubwa. Mara baada ya OS kusakinishwa, basi tunahitaji kutayarisha seva kwa ajili ya Usakinishaji wa Hadoop na tunahitaji kuandaa seva kulingana na sera za usalama za Shirika.

  • Mbinu Bora za Kutuma Seva ya Hadoop kwenye CentOS/RHEL 7 – Sehemu ya 1

Katika makala haya, tutapitia mahitaji ya awali ya kiwango cha OS yaliyopendekezwa na Cloudera. Pia, tumeangazia vidokezo muhimu vya Ugumu wa Usalama kulingana na Benchmark ya CIS kwa seva za Uzalishaji. Ugumu huu wa usalama unaweza kuwa tofauti kulingana na mahitaji.

Kuweka Mahitaji ya Awali ya Cloudera Hadoop

Hapa, tutajadili mahitaji ya awali ya kiwango cha OS yaliyopendekezwa na Cloudera.

Kwa chaguomsingi, Transparent Huge Page (THP) imewashwa katika mashine za Linux ambazo huingiliana vibaya na mizigo ya kazi ya Hadoop na inashusha utendakazi wa jumla wa Nguzo. Kwa hivyo tunahitaji kuzima hii ili kufikia utendaji bora kwa kutumia amri ifuatayo ya echo.

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

Kwa chaguo-msingi, thamani ya vm.swappiness ni 30 au 60 kwa mashine nyingi za Linux.

# sysctl vm.swappiness

Kuwa na thamani ya juu ya ubadilishaji haipendekezwi kwa seva za Hadoop kwa sababu inaweza kusababisha kusitisha kwa muda mrefu kwa ukusanyaji wa Taka. Na, kwa thamani ya juu ya ubadilishaji, data inaweza kuhifadhiwa ili kubadilishana kumbukumbu hata kama tuna kumbukumbu ya kutosha. Kupunguza thamani ya ubadilishaji kunaweza kufanya kumbukumbu ya kimwili iwe na kurasa nyingi za kumbukumbu.

# sysctl vm.swappiness=1

Au, unaweza kufungua faili /etc/sysctl.conf na kuongeza \vm.swappiness=1\ mwishoni.

vm.swappiness=1

Kila seva ya Hadoop itakuwa na jukumu lake na huduma nyingi (daemons) zinazoendesha hiyo. Seva zote zitakuwa zikiwasiliana kwa njia ya mara kwa mara kwa madhumuni mbalimbali.

Kwa Mfano, Datanode itatuma mpigo wa moyo kwa Namenode kwa kila sekunde 3 ili Namenode ihakikishe kuwa Datanode iko hai.

Ikiwa mawasiliano yote yatafanyika kati ya daemoni kwenye seva tofauti kupitia Firewall, itakuwa mzigo wa ziada kwa Hadoop. Kwa hivyo ni mazoezi bora kuzima ngome kwenye seva za kibinafsi kwenye Nguzo.

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

Ikiwa tutaweka SELinux ikiwashwa, itasababisha matatizo wakati wa kusakinisha Hadoop. Kwa vile Hadoop ni kompyuta ya nguzo, Kidhibiti cha Cloudera kitafikia seva zote kwenye kikundi ili kusakinisha Hadoop na huduma zake na itaunda saraka za huduma zinazohitajika popote inapohitajika.

SELinux ikiwashwa, haitaruhusu Kidhibiti cha Cloudera kutawala usakinishaji inavyotaka. Kwa hivyo, kuwezesha SELinux itakuwa kikwazo kwa Hadoop na itasababisha maswala ya utendaji.

Unaweza kuangalia hali ya SELinux kwa kutumia amri hapa chini.

# sestatus

Sasa, fungua /etc/selinux/config faili na afya SELINUX kama inavyoonyeshwa.

SELinux=disabled

Baada ya kulemaza SELinux, unahitaji kuwasha upya mfumo ili uifanye kazi.

# reboot

Katika Kundi la Hadoop, seva zote zinapaswa Kuwa Zimesawazishwa kwa Wakati ili kuepuka hitilafu za kurekebisha saa. RHEL/CentOS 7 ina chronyd iliyojengewa ndani kwa ajili ya kusawazisha saa/saa ya mtandao, lakini Cloudera inapendekeza kutumia NTP.

Tunahitaji kusakinisha NTP na kuisanidi. Mara tu ikiwa imesakinishwa, acha 'chronyd' na uzime. Kwa sababu, ikiwa seva inayo ntpd na chronyd zinazoendeshwa, Kidhibiti cha Cloudera kitazingatia chronyd kwa ulandanishi wa muda, basi itatupa hitilafu hata kama tuna muda wa kusawazisha kupitia ntp.

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

Kama tulivyotaja hapo juu, hatuitaji chronyd amilifu tunapotumia ntpd. Angalia hali ya chronyd, ikiwa inaendesha stop na kuzima. Kwa chaguo-msingi, chronyd imesimamishwa isipokuwa hadi tuianze baada ya usakinishaji wa OS, tunahitaji tu kuzima kwa upande salama.

# systemctl status chronyd
# systemctl disable chronyd

Tunapaswa kuweka jina la mpangishaji na FQDN (Jina la Kikoa Lililohitimu Kamili). Kila seva inapaswa kuwa na jina la kipekee la Kikanuni. Ili kutatua jina la mpangishaji, ama tunahitaji kusanidi DNS au /etc/hosts. Hapa, tutasanidi /etc/hosts.

Anwani ya IP na FQDN ya kila seva inapaswa kuingizwa katika /etc/hosts ya seva zote. Kisha Kidhibiti cha Cloudera pekee kinaweza kuwasiliana na seva zote kwa jina la mpangishi wake.

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

Ifuatayo, sanidi /etc/hosts faili. Kwa Mfano: - Ikiwa tuna nguzo 5 za nodi na mabwana 2 na wafanyikazi 3, tunaweza kusanidi /etc/hosts kama hapa chini.

Kama Hadoop inaundwa na Java, wapangishi wote wanapaswa kuwa na Java iliyosanikishwa na toleo linalofaa. Hapa tutakuwa na OpenJDK. Kwa chaguomsingi, Kidhibiti cha Cloudera kitasakinisha OracleJDK lakini, Cloudera inapendekeza kuwa na OpenJDK.

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

Usalama wa Hadoop na Ugumu

Katika sehemu hii, tutaenda kwa usalama wa mazingira wa Harden Hadoop…

Kuweka kiotomatiki 'otomatiki' huruhusu uwekaji kiotomatiki wa vifaa halisi kama USB, CD/DVD. Mtumiaji aliye na ufikiaji halisi anaweza kuambatisha USB yake au njia yoyote ya Hifadhi ili kufikia data ya kuingiza. Tumia amri zilizo hapa chini ili kuthibitisha ikiwa imezimwa au la, ikiwa haijazimwa.

# systemctl disable autofs
# systemctl is-enabled autofs

Faili ya usanidi wa grub ina habari muhimu ya mipangilio ya kuwasha na vitambulisho ili kufungua chaguzi za kuwasha. Faili ya usanidi wa grub 'grub.cfg' iliyoko /boot/grub2 na imeunganishwa kama /etc/grub2.conf na kuhakikisha grub.cfg inamilikiwa na mtumiaji wa mizizi.

# cd /boot/grub2

Tumia amri iliyo hapa chini kuangalia Uid na Gid zote ni 0/root na 'kundi' au 'nyingine' hazipaswi kuwa na ruhusa yoyote.

# stat /boot/grub2/grub.cfg

Tumia amri iliyo hapa chini ili kuondoa ruhusa kutoka kwa wengine na kikundi.

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

Mpangilio huu huepuka uanzishaji upya mwingine ambao haujaidhinishwa wa seva. yaani, Inahitaji nenosiri ili kuwasha upya seva. Ikiwa haijawekwa, watumiaji wasioidhinishwa wanaweza kuwasha seva na wanaweza kufanya mabadiliko kwenye sehemu za boot.

Tumia amri iliyo hapa chini kuweka nenosiri.

# grub2-mkpasswd-pbkdf2

Ongeza nenosiri lililoundwa hapo juu kwenye faili ya /etc/grub.d/01_users.

Ifuatayo, toa tena faili ya usanidi wa grub.

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

Prelink ni programu ya programu inayoweza kuongeza hatari katika seva ikiwa watumiaji hasidi wanaweza kuathiri maktaba za kawaida kama vile libc.

Tumia amri iliyo hapa chini ili kuiondoa.

# yum remove prelink

Tunapaswa kuzingatia kuzima baadhi ya huduma/itifaki ili kuepuka mashambulizi yanayoweza kutokea.

# systemctl disable <service name>

  • Zima Huduma za Mtandao - Hakikisha huduma za mtandao - malipo, mchana, kutupa, mwangwi, saa hazijawashwa. Huduma hizi za Mtandao ni za utatuzi na majaribio, inashauriwa kuzima ambayo inaweza kupunguza shambulio la mbali.
  • Zima TFTP na FTP - Itifaki zote mbili hazitasaidia usiri wa data au vitambulisho. Ni mazoezi bora kutokuwa kwenye seva isipokuwa inahitajika kwa uwazi. Mara nyingi itifaki hizi husakinishwa na kuwezeshwa kwenye Seva za Faili.
  • Zima DHCP - DHCP ni itifaki ambayo itasambaza anwani ya IP kwa nguvu. Inapendekezwa kuzima isipokuwa kama seva ya DHCP ili kuepuka mashambulizi yanayoweza kutokea.
  • Zima HTTP - HTTP ni itifaki inayoweza kutumika kupangisha maudhui ya wavuti. Kando na seva za Mwalimu/Usimamizi (ambapo WebUI ya huduma itasanidiwa kama vile CM, Hue, n.k), tunaweza kuzima HTTP kwenye nodi nyingine za wafanyakazi ambazo zinaweza kuepuka mashambulizi yanayoweza kutokea.

Muhtasari

Tumepitia utayarishaji wa seva ambao unajumuisha Masharti ya Awali ya Cloudera Hadoop na ugumu fulani wa usalama. Masharti ya awali ya kiwango cha OS yaliyofafanuliwa na Cloudera ni ya lazima kwa usakinishaji laini wa Hadoop. Kwa kawaida, hati ngumu itatayarishwa kwa matumizi ya Benchmark ya CIS na kutumika kukagua na kurekebisha kutofuata katika muda halisi.

Katika usakinishaji mdogo wa CentOS/RHEL 7, utendakazi/programu za kimsingi pekee ndizo zimesakinishwa, hii itaepuka hatari na udhaifu usiohitajika. Ingawa ni Usakinishaji Ndogo marudio mengi ya ukaguzi wa usalama yatafanywa kabla ya kusakinisha Hadoop, hata baada ya kujenga nguzo, kabla ya kuhamisha Nguzo kwenye Uendeshaji/Uzalishaji.