Búsqueda de sitios web

Configuración de requisitos previos de Hadoop y refuerzo de seguridad - Parte 2


Hadoop Cluster Building es un proceso paso a paso en el que el proceso comienza con la compra de los servidores necesarios, el montaje en el bastidor, el cableado, etc. y la colocación en el centro de datos. Luego necesitamos instalar el sistema operativo, esto se puede hacer usando kickstart en el entorno de tiempo real si el tamaño del clúster es grande. Una vez instalado el sistema operativo, debemos preparar el servidor para la instalación de Hadoop y debemos preparar los servidores de acuerdo con las políticas de seguridad de la organización.

Requisitos

  • Mejores prácticas para implementar Hadoop Server en CentOS/RHEL 7 – Parte 1

En este artículo, analizaremos los requisitos previos a nivel del sistema operativo recomendados por Cloudera. Además, hemos destacado algunos consejos importantes para reforzar la seguridad según el CIS Benchmark para servidores de producción. Estos refuerzos de seguridad pueden ser diferentes según los requisitos.

Configuración de los requisitos previos de Cloudera Hadoop

Aquí, analizaremos los requisitos previos a nivel del sistema operativo recomendados por Cloudera.

1. Desactivar la página enorme transparente

De forma predeterminada, la Página enorme transparente (THP) está habilitada en máquinas Linux que interactúan mal con las cargas de trabajo de Hadoop y degrada el rendimiento general de Cluster. Por lo tanto, debemos desactivar esto para lograr un rendimiento óptimo utilizando el siguiente comando echo.

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

2. Cambiar el intercambio de VM

De forma predeterminada, el valor vm.swappiness es 30 o 60 para la mayoría de las máquinas Linux.

sysctl vm.swappiness

No se recomienda tener un valor más alto de swappiness para los servidores Hadoop porque puede causar pausas prolongadas en la recolección de basura. Y, con el valor de intercambio más alto, los datos se pueden almacenar en caché para intercambiar memoria incluso si tenemos suficiente memoria. Reducir el valor de intercambio puede hacer que la memoria física contenga más páginas de memoria.

sysctl vm.swappiness=1

O puede abrir el archivo /etc/sysctl.conf y agregar "vm.swappiness=1" al final.

vm.swappiness=1

3. Deshabilitar el cortafuegos

Cada servidor Hadoop tendrá su propia responsabilidad con múltiples servicios (daemons) ejecutándose en él. Todos los servidores se comunicarán entre sí de manera frecuente para diversos fines.

Por ejemplo, Datanode enviará un latido a Namenode cada 3 segundos para que Namenode se asegure de que el Datanode esté activo.

Si toda la comunicación ocurre entre los demonios en diferentes servidores a través del Firewall, será una carga adicional para Hadoop. Por lo tanto, es una buena práctica desactivar el firewall en los servidores individuales del clúster.

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

4. Deshabilite SELinux

Si mantenemos SELinux habilitado, causará problemas al instalar Hadoop. Como Hadoop es un clúster informático, Cloudera Manager llegará a todos los servidores del clúster para instalar Hadoop y sus servicios y creará los directorios de servicios necesarios donde sea necesario.

Si SELinux está habilitado, no permitirá que Cloudera Manager gobierne la instalación como quiere. Por lo tanto, habilitar SELinux será un obstáculo para Hadoop y provocará problemas de rendimiento.

Puede comprobar el estado de SELinux utilizando el siguiente comando.

sestatus

Ahora, abra el archivo /etc/selinux/config y desactive SELINUX como se muestra.

SELinux=disabled

Después de deshabilitar SELinux, debe reiniciar el sistema para activarlo.

reboot

5. Instalar servicios NTP

En Hadoop Cluster, todos los servidores deben estar sincronizados con la hora para evitar errores de compensación del reloj. RHEL/CentOS 7 tiene chronyd incorporado para la sincronización del reloj/hora de la red, pero Cloudera recomienda usar NTP.

Necesitamos instalar NTP y configurarlo. Una vez instalado, detenga 'chronyd' y desactívelo. Porque, si un servidor tiene ntpd y chronyd ejecutándose, Cloudera Manager considerará chronyd para la sincronización horaria, entonces arrojará un error incluso si tenemos la hora sincronizada mediante ntp.

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

6. Desactivar Chronyd

Como mencionamos anteriormente, no necesitamos chronyd activo ya que estamos usando ntpd. Verifique el estado de chronyd, si se está ejecutando, deténgalo y desactívelo. De forma predeterminada, chronyd se detiene a menos que lo iniciemos después de la instalación del sistema operativo, solo necesitamos desactivarlo para mayor seguridad.

systemctl status chronyd
systemctl disable chronyd

7. Establezca FQDN (nombre de dominio completo)

Tenemos que configurar el nombre de host con FQDN (Nombre de dominio completo). Cada servidor debe tener un nombre canónico único. Para resolver el nombre de host, necesitamos configurar el DNS o /etc/hosts. Aquí vamos a configurar /etc/hosts.

La dirección IP y el FQDN de cada servidor deben ingresarse en /etc/hosts de todos los servidores. Entonces sólo Cloudera Manager podrá comunicar todos los servidores con su nombre de host.

hostnamectl set-hostname master1.linux-console.net

A continuación, configure el archivo /etc/hosts. Por ejemplo: – Si tenemos un clúster de 5 nodos con 2 maestros y 3 trabajadores, podemos configurar /etc/hosts como se muestra a continuación.

8. Instalación de un kit de desarrollo de Java (JDK)

Como Hadoop se compone de Java, todos los hosts deben tener Java instalado con la versión adecuada. Aquí vamos a tener OpenJDK. De forma predeterminada, Cloudera Manager instalará OracleJDK, pero Cloudera recomienda tener OpenJDK.

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

Seguridad y refuerzo de Hadoop

En esta sección, abordaremos la seguridad del entorno Harden Hadoop...

1. Deshabilitar el montaje automático

El montaje automático 'autofs' permite el montaje automático de dispositivos físicos como USB, CD/DVD. El usuario con acceso físico puede conectar su USB o cualquier medio de almacenamiento para acceder a los datos insertados. Utilice los siguientes comandos para verificar si está deshabilitado o no; si no, desactívelo.

systemctl disable autofs
systemctl is-enabled autofs

2. Configuración de arranque seguro

El archivo de configuración grub contiene información crítica sobre la configuración de inicio y las credenciales para desbloquear las opciones de inicio. El archivo de configuración de grub 'grub.cfg' ubicado en /boot/grub2 y está vinculado como /etc/grub2.conf y garantiza grub.cfg es propiedad del usuario root.

cd /boot/grub2

Utilice el siguiente comando para comprobar que Uid y Gid sean 0/root y 'group' o 'other' no debería tener ningún permiso.

stat /boot/grub2/grub.cfg

Utilice el siguiente comando para eliminar permisos de otros y grupos.

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

3. Establezca la contraseña del cargador de arranque

Esta configuración evita otros reinicios no autorizados del servidor. es decir, requiere una contraseña para reiniciar el servidor. Si no está configurado, los usuarios no autorizados pueden iniciar el servidor y realizar cambios en las particiones de inicio.

Utilice el siguiente comando para establecer la contraseña.

grub2-mkpasswd-pbkdf2

Agregue la contraseña creada anteriormente al archivo /etc/grub.d/01_users.

A continuación, vuelva a generar el archivo de configuración de grub.

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

4. Eliminar la herramienta de prevínculo

Prelink es un programa de software que puede aumentar la vulnerabilidad en un servidor si usuarios malintencionados pueden comprometer bibliotecas comunes como libc.

Utilice el siguiente comando para eliminarlo.

yum remove prelink

5. Deshabilite los servicios no deseados

Deberíamos considerar deshabilitar algunos servicios/protocolos para evitar posibles ataques.

systemctl disable <service name>
  • Desactivar servicios de red: asegúrese de que los servicios de red (cargas, horario diurno, descarte, eco y hora) no estén habilitados. Estos servicios de red son para depuración y prueba; se recomienda desactivarlos para minimizar el ataque remoto.
  • Desactivar TFTP y FTP: ambos protocolos no admitirán la confidencialidad de los datos o las credenciales. Es una buena práctica no tenerlo en el servidor a menos que se requiera explícitamente. En su mayoría, estos protocolos están instalados y habilitados en servidores de archivos.
  • Desactivar DHCP: DHCP es el protocolo que asignará dinámicamente la dirección IP. Se recomienda desactivarlo a menos que sea un servidor DHCP para evitar posibles ataques.
  • Desactivar HTTP: HTTP es el protocolo que se puede utilizar para alojar contenido web. Además de los servidores maestros/de administración (donde se deben configurar la interfaz de usuario web de los servicios como CM, Hue, etc.), podemos deshabilitar HTTP en otros nodos trabajadores, lo que puede evitar posibles ataques.

Resumen

Hemos pasado por la preparación del servidor, que consta de requisitos previos de Cloudera Hadoop y algo de refuerzo de seguridad. Los requisitos previos a nivel de sistema operativo definidos por Cloudera son obligatorios para la instalación sin problemas de Hadoop. Por lo general, se preparará un guión de refuerzo con el uso del CIS Benchmark y se utilizará para auditar y remediar el incumplimiento en tiempo real.

En una instalación mínima de CentOS/RHEL 7, solo se instalan funcionalidades/software básicos, esto evitará riesgos y vulnerabilidades no deseados. Aunque se trata de una instalación mínima, se realizarán múltiples iteraciones de auditoría de seguridad antes de instalar Hadoop, incluso después de construir el clúster, antes de pasar el clúster a Operación/Producción.