Zoeken op website

Hadoop-vereisten en beveiliging instellen - Deel 2


Hadoop Cluster Building is een stapsgewijs proces waarbij het proces begint met de aanschaf van de benodigde servers, montage in het rack, bekabeling, etc. en plaatsing in het datacentrum. Vervolgens moeten we het besturingssysteem installeren. Dit kan worden gedaan met kickstart in de realtime omgeving als de clustergrootte groot is. Nadat het besturingssysteem is geïnstalleerd, moeten we de server voorbereiden op de Hadoop-installatie en moeten we de servers voorbereiden volgens het beveiligingsbeleid van de organisatie.

Vereisten

  • Best practices voor het implementeren van Hadoop Server op CentOS/RHEL 7 – Deel 1

In dit artikel bespreken we de vereisten op besturingssysteemniveau die worden aanbevolen door Cloudera. We hebben ook enkele belangrijke tips voor het verbeteren van de beveiliging uitgelicht volgens de CIS Benchmark voor productieservers. Deze beveiligingsverhardingen kunnen verschillen afhankelijk van de vereisten.

Vereisten voor Cloudera Hadoop instellen

Hier bespreken we de vereisten op besturingssysteemniveau die worden aanbevolen door Cloudera.

1. Schakel de transparante grote pagina uit

Standaard is Transparent Huge Page (THP) ingeschakeld op Linux-machines die slecht communiceren met Hadoop-workloads en dit verslechtert de algehele prestaties van Cluster. We moeten dit dus uitschakelen om optimale prestaties te bereiken met behulp van de volgende echo-opdracht.

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

2. Wijzig de VM-swappiness

Standaard is de waarde vm.swappiness 30 of 60 voor de meeste Linux-machines.

sysctl vm.swappiness

Een hogere waarde voor swappiness wordt niet aanbevolen voor Hadoop-servers, omdat dit tot lange pauzes bij het verzamelen van afval kan leiden. En met de hogere swappiness-waarde kunnen gegevens in de cache worden opgeslagen om geheugen uit te wisselen, zelfs als we voldoende geheugen hebben. Als u de swappiness-waarde verlaagt, kan het fysieke geheugen meer geheugenpagina's bevatten.

sysctl vm.swappiness=1

Of u kunt het bestand /etc/sysctl.conf openen en aan het einde "vm.swappiness=1" toevoegen.

vm.swappiness=1

3. Schakel Firewall uit

Elke Hadoop-server heeft zijn eigen verantwoordelijkheid en er draaien meerdere services (daemons). Alle servers zullen regelmatig met elkaar communiceren voor verschillende doeleinden.

Datanode stuurt bijvoorbeeld elke 3 seconden een hartslag naar Namenode, zodat Namenode ervoor zorgt dat de Datanode leeft.

Als alle communicatie tussen de daemons over verschillende servers via de Firewall plaatsvindt, zal dit een extra last voor Hadoop zijn. Het is dus het beste om de firewall op de afzonderlijke servers in Cluster uit te schakelen.

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

4. Schakel SELinux uit

Als we SELinux ingeschakeld houden, zal dit problemen veroorzaken tijdens het installeren van Hadoop. Omdat Hadoop clustercomputing is, zal Cloudera Manager alle servers in het cluster bereiken om Hadoop en zijn services te installeren en waar nodig de nodige servicedirectory's aanmaken.

Als SELinux is ingeschakeld, zal Cloudera Manager de installatie niet naar eigen inzicht kunnen besturen. Het inschakelen van SELinux zal dus een obstakel zijn voor Hadoop en prestatieproblemen veroorzaken.

Je kunt de status van SELinux controleren door het onderstaande commando te gebruiken.

sestatus

Open nu het bestand /etc/selinux/config en schakel SELINUX uit, zoals weergegeven.

SELinux=disabled

Na het uitschakelen van SELinux moet je het systeem opnieuw opstarten om het actief te maken.

reboot

5. Installeer NTP-services

In Hadoop Cluster moeten alle servers Tijdgesynchroniseerd zijn om klokafwijkingsfouten te voorkomen. De RHEL/CentOS 7 heeft chronyd ingebouwd voor netwerkklok-/tijdsynchronisatie, maar Cloudera raadt aan om NTP te gebruiken.

We moeten NTP installeren en configureren. Eenmaal geïnstalleerd, stop ‘chronyd‘ en schakel uit. Omdat, als een server waarop zowel ntpd als chronyd actief is, Cloudera Manager chronyd in overweging zal nemen voor tijdsynchronisatie, en er een foutmelding zal verschijnen, zelfs als we hebben de tijd gesynchroniseerd via ntp.

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

6. Schakel Chronyd uit

Zoals we hierboven vermeldden, hebben we chronyd actief niet nodig omdat we ntpd gebruiken. Controleer de status van chronyd, of deze actief is, stop en schakel uit. Standaard wordt chronyd gestopt, tenzij we het starten na de installatie van het besturingssysteem. We moeten het alleen uitschakelen voor een veiligere kant.

systemctl status chronyd
systemctl disable chronyd

7. FQDN (volledig gekwalificeerde domeinnaam) instellen

We moeten de hostnaam instellen met FQDN (Fully Qualified Domain Name). Elke server moet een unieke canonieke naam hebben. Om de hostnaam om te zetten, moeten we de DNS of /etc/hosts configureren. Hier gaan we /etc/hosts configureren.

Het IP-adres en de FQDN van elke server moeten worden ingevoerd in /etc/hosts van alle servers. Dan kan alleen Cloudera Manager alle servers communiceren met de hostnaam.

hostnamectl set-hostname master1.linux-console.net

Configureer vervolgens het bestand /etc/hosts. Bijvoorbeeld: – Als we een cluster van 5 knooppunten hebben met 2 masters en 3 werkers, kunnen we de /etc/hosts configureren zoals hieronder.

8. Een Java Development Kit (JDK) installeren

Omdat Hadoop bestaat uit Java, zouden op alle hosts Java geïnstalleerd moeten zijn met de juiste versie. Hier hebben we OpenJDK. Standaard zal Cloudera Manager OracleJDK installeren, maar Cloudera raadt aan om OpenJDK te gebruiken.

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

Hadoop-beveiliging en verharding

In deze sectie gaan we naar de omgevingsbeveiliging van Harden Hadoop…

1. Schakel automatisch koppelen uit

Automounting ‘autofs‘ maakt het automatisch mounten van fysieke apparaten zoals USB, CD/DVD mogelijk. Gebruikers met fysieke toegang kunnen hun USB of een ander opslagmedium aansluiten voor toegang tot invoeggegevens. Gebruik de onderstaande opdrachten om te verifiëren of deze is uitgeschakeld of niet, zo niet, schakel deze dan uit.

systemctl disable autofs
systemctl is-enabled autofs

2. Instellingen voor veilig opstarten

Het grub configuratiebestand bevat cruciale informatie over de opstartinstellingen en inloggegevens om opstartopties te ontgrendelen. Het grub-configuratiebestand 'grub.cfg' bevindt zich op /boot/grub2 en is gelinkt als /etc/grub2.conf en zorg ervoor dat grub.cfg is eigendom van de rootgebruiker.

cd /boot/grub2

Gebruik het onderstaande commando om te controleren of Uid en Gid beide 0/root en 'group' of 'andere' mag geen toestemming hebben.

stat /boot/grub2/grub.cfg

Gebruik de onderstaande opdracht om machtigingen van other en group te verwijderen.

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

3. Stel het Bootloader-wachtwoord in

Deze instelling voorkomt ander ongeoorloofd opnieuw opstarten van de server. dat wil zeggen: er is een wachtwoord vereist om de server opnieuw op te starten. Als dit niet is ingesteld, kunnen ongeautoriseerde gebruikers de server opstarten en wijzigingen aanbrengen in de opstartpartities.

Gebruik de onderstaande opdracht om het wachtwoord in te stellen.

grub2-mkpasswd-pbkdf2

Voeg het hierboven gemaakte wachtwoord toe aan het /etc/grub.d/01_users bestand.

Genereer vervolgens het grub-configuratiebestand opnieuw.

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

4. Verwijder Prelink-tool

Prelink is een softwareprogramma dat de kwetsbaarheid van een server kan vergroten als kwaadwillende gebruikers gemeenschappelijke bibliotheken zoals libc kunnen binnendringen.

Gebruik de onderstaande opdracht om het te verwijderen.

yum remove prelink

5. Schakel ongewenste services uit

We moeten overwegen om sommige services/protocollen uit te schakelen om potentiële aanvallen te voorkomen.

systemctl disable <service name>
  • Netwerkdiensten uitschakelen – Zorg ervoor dat de netwerkdiensten – kosten, dag, weggooien, echo, tijd niet zijn ingeschakeld. Deze netwerkservices zijn bedoeld voor foutopsporing en testen. Het wordt aanbevolen om deze uit te schakelen, waardoor de aanval op afstand kan worden geminimaliseerd.
  • TFTP en FTP uitschakelen – Beide protocollen ondersteunen de vertrouwelijkheid van de gegevens of inloggegevens niet. Het is het beste om deze niet op de server te hebben, tenzij dit expliciet vereist is. Meestal worden deze protocollen geïnstalleerd en ingeschakeld op fileservers.
  • DHCP uitschakelen – DHCP is het protocol dat het IP-adres dynamisch toewijst. Het wordt aanbevolen om deze uit te schakelen, tenzij het een DHCP-server is, om mogelijke aanvallen te voorkomen.
  • HTTP uitschakelen – HTTP is het protocol dat kan worden gebruikt om webinhoud te hosten. Afgezien van Master/Management-servers (waar WebUI van services moeten worden geconfigureerd zoals CM, Hue, enz.), kunnen we HTTP uitschakelen op andere werkknooppunten, waardoor potentiële aanvallen kunnen worden vermeden.

Samenvatting

We hebben de servervoorbereiding doorlopen, die bestaat uit Cloudera Hadoop-vereisten en wat beveiligingsverbeteringen. Vereisten op besturingssysteemniveau gedefinieerd door Cloudera zijn verplicht voor een soepele installatie van Hadoop. Meestal wordt een verhardingsscript opgesteld met behulp van de CIS Benchmark en gebruikt om niet-naleving in realtime te controleren en te verhelpen.

Bij een minimale installatie van CentOS/RHEL 7 worden alleen basisfunctionaliteiten/software geïnstalleerd, dit voorkomt ongewenste risico's en kwetsbaarheden. Ook al is het een minimale installatie, er zullen meerdere iteraties van beveiligingsaudits worden uitgevoerd voordat Hadoop wordt geïnstalleerd, zelfs nadat het cluster is gebouwd, voordat het cluster in gebruik/productie wordt gebracht.