Pesquisa de site

Configurando pré-requisitos do Hadoop e reforço de segurança - Parte 2


Hadoop Cluster Building é um processo passo a passo onde o processo começa com a compra dos servidores necessários, montagem no rack, cabeamento, etc. e colocação no Datacenter. Então precisamos instalar o sistema operacional, isso pode ser feito usando kickstart no ambiente de tempo real se o tamanho do cluster for grande. Uma vez instalado o SO, precisamos preparar o servidor para instalação do Hadoop e preparar os servidores de acordo com as políticas de segurança da Organização.

Requisitos

  • Melhores práticas para implantação do servidor Hadoop no CentOS/RHEL 7 – Parte 1

Neste artigo, examinaremos os pré-requisitos de nível de sistema operacional recomendados pela Cloudera. Além disso, destacamos algumas dicas importantes de fortalecimento de segurança de acordo com o CIS Benchmark para servidores de produção. Este endurecimento de segurança pode ser diferente de acordo com os requisitos.

Configurando os pré-requisitos do Cloudera Hadoop

Aqui discutiremos os pré-requisitos de nível de sistema operacional recomendados pela Cloudera.

1. Desative a página enorme transparente

Por padrão, Transparent Huge Page (THP) é habilitado em máquinas Linux que interagem mal com cargas de trabalho Hadoop e degrada o desempenho geral do cluster. Portanto, precisamos desabilitar isso para obter o desempenho ideal usando o seguinte comando echo.

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

2. Alterar a troca de VMs

Por padrão, o valor vm.swappiness é 30 ou 60 para a maioria das máquinas Linux.

sysctl vm.swappiness

Ter um valor mais alto de swappiness não é recomendado para servidores Hadoop porque pode causar longas pausas na coleta de lixo. E, com o valor de troca mais alto, os dados podem ser armazenados em cache para trocar memória, mesmo se tivermos memória suficiente. Reduzir o valor de troca pode fazer com que a memória física contenha mais páginas de memória.

sysctl vm.swappiness=1

Ou você pode abrir o arquivo /etc/sysctl.conf e adicionar "vm.swappiness=1" no final.

vm.swappiness=1

3. Desative o Firewall

Cada servidor Hadoop terá sua própria responsabilidade com vários serviços (daemons) em execução nele. Todos os servidores se comunicarão entre si de maneira frequente para diversos fins.

Por exemplo, Datanode enviará uma pulsação para Namenode a cada 3 segundos para que Namenode certifique-se de que o Datanode esteja ativo.

Se toda a comunicação acontecer entre os daemons em diferentes servidores através do Firewall, será um fardo extra para o Hadoop. Portanto, é uma prática recomendada desabilitar o firewall nos servidores individuais do Cluster.

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

4. Desative o SELinux

Se mantivermos o SELinux ativado, isso causará problemas durante a instalação do Hadoop. Como o Hadoop é uma computação em cluster, o Cloudera Manager alcançará todos os servidores do cluster para instalar o Hadoop e seus serviços e criará os diretórios de serviços necessários sempre que necessário.

Se o SELinux estiver habilitado, ele não permitirá que o Cloudera Manager controle a instalação como deseja. Portanto, habilitar o SELinux será um obstáculo para o Hadoop e causará problemas de desempenho.

Você pode verificar o status do SELinux usando o comando abaixo.

sestatus

Agora, abra o arquivo /etc/selinux/config e desative o SELINUX conforme mostrado.

SELinux=disabled

Após desabilitar o SELinux, você precisa reinicializar o sistema para torná-lo ativo.

reboot

5. Instale os serviços NTP

No Cluster Hadoop, todos os servidores devem ser Sincronizados com o horário para evitar erros de deslocamento do relógio. O RHEL/CentOS 7 tem o chronyd integrado para sincronização de relógio/hora da rede, mas Cloudera recomenda usar NTP.

Precisamos instalar o NTP e configurá-lo. Uma vez instalado, pare ‘chronyd‘ e desative. Porque, se um servidor tiver ntpd e chronyd em execução, o Cloudera Manager considerará chronyd para sincronização de horário, então gerará um erro mesmo se temos tempo sincronizado através do NTP.

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

6. Desative o Chronyd

Como mencionamos acima, não precisamos do chronyd ativo, pois estamos usando o ntpd. Verifique o status do chronyd, se ele estiver em execução, pare e desative. Por padrão, o chronyd é interrompido, a menos que o iniciemos após a instalação do sistema operacional, basta desativá-lo para maior segurança.

systemctl status chronyd
systemctl disable chronyd

7. Defina FQDN (nome de domínio totalmente qualificado)

Temos que definir o nome do host com FQDN (nome de domínio totalmente qualificado). Cada servidor deve ter um nome canônico exclusivo. Para resolver o nome do host, precisamos configurar o DNS ou /etc/hosts. Aqui vamos configurar /etc/hosts.

O endereço IP e FQDN de cada servidor devem ser inseridos em /etc/hosts de todos os servidores. Então, apenas o Cloudera Manager poderá comunicar todos os servidores com seu nome de host.

hostnamectl set-hostname master1.linux-console.net

Em seguida, configure o arquivo /etc/hosts. Por exemplo: – Se tivermos um cluster de 5 nós com 2 mestres e 3 trabalhadores, podemos configurar o /etc/hosts conforme abaixo.

8. Instalando um Kit de Desenvolvimento Java (JDK)

Como o Hadoop é composto de Java, todos os hosts devem ter o Java instalado com a versão apropriada. Aqui teremos o OpenJDK. Por padrão, o Cloudera Manager instalará o OracleJDK, mas a Cloudera recomenda ter o OpenJDK.

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

Segurança e fortalecimento do Hadoop

Nesta seção, iremos para a segurança do ambiente Harden Hadoop…

1. Desative a montagem automática

A montagem automática ‘autofs’ permite a montagem automática de dispositivos físicos como USB, CD/DVD. O usuário com acesso físico pode conectar seu USB ou qualquer meio de armazenamento para acessar os dados inseridos. Use os comandos abaixo para verificar se está desabilitado ou não, se não desabilitar.

systemctl disable autofs
systemctl is-enabled autofs

2. Configurações de inicialização segura

O arquivo de configuração grub contém informações críticas sobre configurações de inicialização e credenciais para desbloquear opções de inicialização. O arquivo de configuração do grub 'grub.cfg' localizado em /boot/grub2 e está vinculado como /etc/grub2.conf e garante grub.cfg é propriedade do usuário root.

cd /boot/grub2

Use o comando abaixo para verificar se Uid e Gid são ambos 0/root e 'group' ou 'other' não deve ter nenhuma permissão.

stat /boot/grub2/grub.cfg

Use o comando abaixo para remover permissões de outro grupo.

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

3. Defina a senha do bootloader

Esta configuração evita outras reinicializações não autorizadas do servidor. ou seja, é necessária uma senha para reinicializar o servidor. Se não estiver definido, usuários não autorizados poderão inicializar o servidor e fazer alterações nas partições de inicialização.

Use o comando abaixo para definir a senha.

grub2-mkpasswd-pbkdf2

Adicione a senha criada acima ao arquivo /etc/grub.d/01_users.

Em seguida, gere novamente o arquivo de configuração do grub.

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

4. Remover ferramenta de pré-link

Prelink é um programa de software que pode aumentar a vulnerabilidade em um servidor se usuários mal-intencionados puderem comprometer bibliotecas comuns, como a libc.

Use o comando abaixo para removê-lo.

yum remove prelink

5. Desative serviços indesejados

Devemos considerar desabilitar alguns serviços/protocolos para evitar possíveis ataques.

systemctl disable <service name>
  • Desativar serviços de rede – Certifique-se de que os serviços de rede – cobranças, período diurno, descarte, eco, horário não estejam ativados. Esses serviços de rede são para depuração e teste, é recomendável desativá-los, o que pode minimizar o ataque remoto.
  • Desativar TFTP e FTP – Ambos os protocolos não suportam a confidencialidade dos dados ou credenciais. É uma prática recomendada não ter no servidor, a menos que seja explicitamente necessário. Principalmente esses protocolos são instalados e habilitados em servidores de arquivos.
  • Desativar DHCP – DHCP é o protocolo que alocará dinamicamente o endereço IP. Recomenda-se desativá-lo, a menos que seja um servidor DHCP, para evitar possíveis ataques.
  • Desativar HTTP – HTTP é o protocolo que pode ser usado para hospedar conteúdo da web. Além dos servidores Master/Management (onde WebUI de serviços devem ser configurados como CM, Hue, etc), podemos desabilitar o HTTP em outros nós de trabalho, o que pode evitar ataques potenciais.

Resumo

Passamos pela preparação do servidor, que consiste em Pré-requisitos do Cloudera Hadoop e alguns reforços de segurança. Os pré-requisitos de nível de sistema operacional definidos pela Cloudera são obrigatórios para a instalação tranquila do Hadoop. Normalmente, um script de proteção será preparado com o uso do CIS Benchmark e usado para auditar e remediar não conformidades em tempo real.

Em uma instalação mínima do CentOS/RHEL 7, apenas funcionalidades/softwares básicos são instalados, o que evitará riscos e vulnerabilidades indesejados. Mesmo que seja uma instalação mínima, várias iterações de auditoria de segurança serão feitas antes da instalação do Hadoop, mesmo após a construção do cluster, antes de mover o cluster para operação/produção.