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


Hadoop Cluster Building es un proceso paso a paso en el que el proceso comienza desde 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, 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.

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

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

Configuración de los requisitos previos de Cloudera Hadoop

Aquí, discutiremos los requisitos previos a nivel de sistema operativo recomendados por Cloudera.

De forma predeterminada, Transparent Huge Page (THP) está habilitado en máquinas Linux que interactúan de manera deficiente con las cargas de trabajo de Hadoop y degrada el rendimiento general del Cluster. Por lo tanto, debemos deshabilitar esto para lograr un rendimiento óptimo usando el siguiente comando de eco.

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

De forma predeterminada, el valor de 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 intercambio 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. Bajar 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 u003d 1" al final.

vm.swappiness=1

Cada servidor Hadoop tendrá su propia responsabilidad con múltiples servicios (demonios) ejecutándose en eso. 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 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 deshabilitar el firewall en los servidores individuales en Cluster.

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

Si mantenemos SELinux habilitado, causará problemas al instalar Hadoop. Como Hadoop es una computación en clúster, 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 quiera. Entonces, habilitar SELinux será un obstáculo para Hadoop y causará problemas de rendimiento.

Puede verificar el estado de SELinux usando 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

En Hadoop Cluster, todos los servidores deben tener sincronización horaria para evitar errores de desplazamiento del reloj. El 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 tanto ntpd como chronyd en ejecución, Cloudera Manager considerará chronyd para la sincronización de la hora, entonces arrojará un error incluso si tenemos la hora sincronizada a través de ntp.

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

Como mencionamos anteriormente, no necesitamos chronyd active ya que estamos usando ntpd. Compruebe el estado de chronyd, si está funcionando, 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 deshabilitarlo para un lado más seguro.

# systemctl status chronyd
# systemctl disable chronyd

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, solo Cloudera Manager puede comunicar todos los servidores con su nombre de host.

# hostnamectl set-hostname master1.tecmint.com

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.

Como Hadoop se compone de Java, todos los hosts deben tener instalado Java 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 endurecimiento de Hadoop

En esta sección, nos dirigiremos a la seguridad del entorno de Harden Hadoop ...

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 de inserción. Utilice los siguientes comandos para verificar si está deshabilitado o no, si no, deshabilítelo.

# systemctl disable autofs
# systemctl is-enabled autofs

El archivo de configuración de grub contiene información crítica de 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 se ha vinculado como /etc/grub2.conf y garantiza que grub.cfg sea propiedad del usuario root.

# cd /boot/grub2

Utilice el siguiente comando para verificar que Uid y Gid sean ambos 0/root y "group" u "other" no deberían tener ningún permiso.

# stat /boot/grub2/grub.cfg

Utilice el siguiente comando para eliminar los permisos de otros y del grupo.

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

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 pueden 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 en el 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

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

Utilice el siguiente comando para eliminarlo.

# yum remove prelink

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

# systemctl disable <service name>

  • Deshabilitar los servicios de red: asegúrese de que los servicios de red: cargos, horario diurno, descarte, eco, hora no estén habilitados. Estos servicios de red son para depurar y probar, se recomienda inhabilitarlos, lo que puede minimizar el ataque remoto.
  • Deshabilitar TFTP y FTP: ambos protocolos no admitirán la confidencialidad de los datos o las credenciales. Es una buena práctica no tener en el servidor a menos que se requiera explícitamente. La mayoría de estos protocolos están instalados y habilitados en servidores de archivos.
  • Deshabilitar 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 Master/Management (donde la WebUI de los servicios debe configurarse como CM, Hue, etc.), podemos deshabilitar HTTP en otros nodos trabajadores que pueden evitar los posibles ataques.

Resumen

Hemos pasado por la preparación del servidor, que consiste en los requisitos previos de Cloudera Hadoop y un poco de refuerzo de la seguridad. Los requisitos previos del nivel de sistema operativo definidos por Cloudera son obligatorios para la instalación sin problemas de Hadoop. Por lo general, se preparará un script 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 mover el clúster a Operación/Producción.