Ricerca nel sito web

Configurazione dei prerequisiti Hadoop e rafforzamento della sicurezza - Parte 2


Hadoop Cluster Building è un processo passo dopo passo in cui il processo inizia con l'acquisto dei server richiesti, il montaggio nel rack, il cablaggio, ecc. e il posizionamento nel data center. Quindi dobbiamo installare il sistema operativo; è possibile farlo utilizzando kickstart nell'ambiente in tempo reale se la dimensione del cluster è grande. Una volta installato il sistema operativo, dobbiamo preparare il server per l'installazione di Hadoop e dobbiamo preparare i server in base alle politiche di sicurezza dell'organizzazione.

Requisiti

  • Best practice per la distribuzione del server Hadoop su CentOS/RHEL 7 – Parte 1

In questo articolo esamineremo i prerequisiti a livello di sistema operativo consigliati da Cloudera. Inoltre, abbiamo evidenziato alcuni importanti suggerimenti per il rafforzamento della sicurezza secondo il CIS Benchmark per i server di produzione. Tali Security Hardening possono essere diversi a seconda delle esigenze.

Configurazione dei prerequisiti Cloudera Hadoop

Qui discuteremo dei prerequisiti a livello di sistema operativo consigliati da Cloudera.

1. Disabilita la pagina enorme trasparente

Per impostazione predefinita, Transparent Huge Page (THP) è abilitato nelle macchine Linux che interagiscono scarsamente con i carichi di lavoro Hadoop e riduce le prestazioni generali del cluster. Quindi dobbiamo disabilitarlo per ottenere prestazioni ottimali utilizzando il seguente comando echo.

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

2. Cambia la Swappiness delle VM

Per impostazione predefinita, il valore vm.swappiness è 30 o 60 per la maggior parte delle macchine Linux.

sysctl vm.swappiness

Avere un valore più alto di swappiness non è consigliato per i server Hadoop perché può causare lunghe pause nella raccolta dei rifiuti. Inoltre, con il valore di swappiness più elevato, i dati possono essere memorizzati nella cache per scambiare memoria anche se disponiamo di memoria sufficiente. Abbassare il valore di swappiness può far sì che la memoria fisica contenga più pagine di memoria.

sysctl vm.swappiness=1

Oppure puoi aprire il file /etc/sysctl.conf e aggiungere "vm.swappiness=1" alla fine.

vm.swappiness=1

3. Disabilita il firewall

Ciascun server Hadoop avrà la propria responsabilità con più servizi (demoni) in esecuzione su di esso. Tutti i server comunicheranno tra loro in modo frequente per vari scopi.

Ad esempio, Datanode invierà un heartbeat a Namenode ogni 3 secondi in modo che Namenode si assicurerà che il Datanode sia attivo.

Se tutta la comunicazione avviene tra i demoni su server diversi tramite il firewall, sarà un onere aggiuntivo per Hadoop. Quindi è consigliabile disabilitare il firewall nei singoli server nel cluster.

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

4. Disabilitare SELinux

Se manteniamo abilitato SELinux, causeranno problemi durante l'installazione di Hadoop. Poiché Hadoop è un cluster computing, Cloudera Manager raggiungerà tutti i server del cluster per installare Hadoop e i suoi servizi e creerà le directory dei servizi necessarie ovunque richiesto.

Se SELinux è abilitato, non consentirà a Cloudera Manager di governare l'installazione come desidera. Pertanto, abilitare SELinux sarà un ostacolo per Hadoop e causerà problemi di prestazioni.

Puoi controllare lo stato di SELinux utilizzando il comando seguente.

sestatus

Ora apri il file /etc/selinux/config e disabilita SELINUX come mostrato.

SELinux=disabled

Dopo aver disabilitato SELinux, è necessario riavviare il sistema per renderlo attivo.

reboot

5. Installa i servizi NTP

In Hadoop Cluster, tutti i server dovrebbero essere sincronizzati nell'ora per evitare errori di offset dell'orologio. RHEL/CentOS 7 ha chronyd integrato per la sincronizzazione dell'orologio/ora della rete, ma Cloudera consiglia di utilizzare NTP.

Dobbiamo installare NTP e configurarlo. Una volta installato, interrompi "chronyd" e disabilitalo. Poiché, se un server ha sia ntpd che chronyd in esecuzione, Cloudera Manager considererà chronyd per la sincronizzazione dell'ora, quindi genererà un errore anche se abbiamo il tempo sincronizzato tramite ntp.

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

6. Disabilita Chronyd

Come accennato in precedenza, non abbiamo bisogno di chronyd attivo poiché utilizziamo ntpd. Controlla lo stato di chronyd, se è in esecuzione fermalo e disabilitalo. Per impostazione predefinita, chronyd viene arrestato a meno che non lo avviiamo dopo l'installazione del sistema operativo, dobbiamo solo disabilitarlo per maggiore sicurezza.

systemctl status chronyd
systemctl disable chronyd

7. Imposta FQDN (nome di dominio completo)

Dobbiamo impostare il nome host con FQDN (Nome di dominio completamente qualificato). Ogni server dovrebbe avere un nome canonico univoco. Per risolvere il nome host, dobbiamo configurare il DNS o /etc/hosts. Qui configureremo /etc/hosts.

L'indirizzo IP e il FQDN di ciascun server devono essere inseriti in /etc/hosts di tutti i server. Quindi solo Cloudera Manager può comunicare tutti i server con il suo nome host.

hostnamectl set-hostname master1.linux-console.net

Successivamente, configura il file /etc/hosts. Ad esempio: – Se abbiamo un cluster a 5 nodi con 2 master e 3 lavoratori, possiamo configurare /etc/hosts come di seguito.

8. Installazione di un kit di sviluppo Java (JDK)

Poiché Hadoop è composto da Java, tutti gli host dovrebbero avere Java installato con la versione appropriata. Qui avremo OpenJDK. Per impostazione predefinita, Cloudera Manager installerà OracleJDK ma Cloudera consiglia di avere OpenJDK.

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

Sicurezza e rafforzamento di Hadoop

In questa sezione, rafforzeremo la sicurezza dell'ambiente Hadoop...

1. Disabilitare il montaggio automatico

Il montaggio automatico "autofs" consente il montaggio automatico di dispositivi fisici come USB, CD/DVD. L'utente con accesso fisico può collegare la propria USB o qualsiasi supporto di archiviazione per accedere ai dati inseriti. Utilizzare i comandi seguenti per verificare se è disabilitato o meno, in caso contrario disabilitarlo.

systemctl disable autofs
systemctl is-enabled autofs

2. Impostazioni di avvio sicuro

Il file di configurazione grub contiene informazioni critiche sulle impostazioni di avvio e sulle credenziali per sbloccare le opzioni di avvio. Il file di configurazione di grub 'grub.cfg' si trova in /boot/grub2 ed è stato collegato come /etc/grub2.conf e garantisce grub.cfg è di proprietà dell'utente root.

cd /boot/grub2

Utilizza il comando seguente per verificare che Uid e Gid siano entrambi 0/root e 'group' o 'altro' non dovrebbe avere alcuna autorizzazione.

stat /boot/grub2/grub.cfg

Utilizzare il comando seguente per rimuovere le autorizzazioni da altri e gruppi.

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

3. Impostare la password del bootloader

Questa impostazione evita altri riavvii non autorizzati del server. cioè, richiede una password per riavviare il server. Se non è impostata, gli utenti non autorizzati possono avviare il server e apportare modifiche alle partizioni di avvio.

Utilizzare il comando seguente per impostare la password.

grub2-mkpasswd-pbkdf2

Aggiungi la password creata sopra nel file /etc/grub.d/01_users.

Successivamente, rigenera il file di configurazione di grub.

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

4. Rimuovere lo strumento Prelink

Prelink è un programma software che può aumentare la vulnerabilità di un server se utenti malintenzionati riescono a compromettere librerie comuni come libc.

Utilizzare il comando seguente per rimuoverlo.

yum remove prelink

5. Disabilita i servizi indesiderati

Dovremmo considerare la disabilitazione di alcuni servizi/protocolli per evitare potenziali attacchi.

systemctl disable <service name>
  • Disabilita servizi di rete: assicurati che i servizi di rete (addebiti, diurna, scarto, eco, ora) non siano abilitati. Questi servizi di rete servono per il debug e il test, si consiglia di disabilitarli per ridurre al minimo l'attacco remoto.
  • Disabilita TFTP e FTP: entrambi i protocolli non supporteranno la riservatezza dei dati o delle credenziali. È consigliabile non averlo nel server a meno che non sia richiesto esplicitamente. Per lo più questi protocolli sono installati e abilitati sui fileserver.
  • Disabilita DHCP: DHCP è il protocollo che allocherà dinamicamente l'indirizzo IP. Si consiglia di disabilitarlo a meno che non si tratti di un server DHCP per evitare potenziali attacchi.
  • Disabilita HTTP: HTTP è il protocollo che può essere utilizzato per ospitare contenuti web. Oltre ai server master/di gestione (dove la WebUI dei servizi deve essere configurata come CM, Hue, ecc.), possiamo disabilitare HTTP su altri nodi di lavoro che possono evitare potenziali attacchi.

Riepilogo

Abbiamo completato la preparazione del server che consiste nei prerequisiti Cloudera Hadoop e alcuni miglioramenti della sicurezza. I prerequisiti a livello di sistema operativo definiti da Cloudera sono obbligatori per la corretta installazione di Hadoop. Di solito, verrà preparato uno script di rafforzamento con l'uso del benchmark CIS e utilizzato per verificare e correggere la non conformità in tempo reale.

In un'installazione minima di CentOS/RHEL 7, vengono installate solo le funzionalità/il software di base, ciò eviterà rischi e vulnerabilità indesiderati. Anche se si tratta di un'installazione minima, verranno eseguite più iterazioni di controllo della sicurezza prima di installare Hadoop, anche dopo aver creato il cluster, prima di spostare il cluster in Operazione/Produzione.