Recherche de site Web

Configuration des prérequis Hadoop et renforcement de la sécurité - Partie 2


La Hadoop Cluster Building est un processus étape par étape dans lequel le processus commence par l'achat des serveurs requis, le montage dans le rack, le câblage, etc. et le placement dans le centre de données. Ensuite, nous devons installer le système d'exploitation, cela peut être fait en utilisant kickstart dans l'environnement temps réel si la taille du cluster est grande. Une fois le système d'exploitation installé, nous devons préparer le serveur pour l'installation de Hadoop et nous devons préparer les serveurs conformément aux politiques de sécurité de l'organisation.

Exigences

  • Meilleures pratiques pour le déploiement du serveur Hadoop sur CentOS/RHEL 7 – Partie 1

Dans cet article, nous passerons en revue les prérequis au niveau du système d'exploitation recommandés par Cloudera. Nous avons également mis en évidence quelques conseils importants en matière de renforcement de la sécurité selon le CIS Benchmark pour les serveurs de production. Ces durcissements de sécurité peuvent être différents selon les besoins.

Configuration des prérequis de Cloudera Hadoop

Nous aborderons ici les prérequis au niveau du système d'exploitation recommandés par Cloudera.

1. Désactivez la grande page transparente

Par défaut, la Transparent Huge Page (THP) est activée sur les machines Linux qui interagissent mal avec les charges de travail Hadoop et dégrade les performances globales du cluster. Nous devons donc désactiver cela afin d'obtenir des performances optimales à l'aide de la commande echo suivante.

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

2. Modifier l'échange de VM

Par défaut, la valeur vm.swappiness est 30 ou 60 pour la plupart des machines Linux.

sysctl vm.swappiness

Avoir une valeur de swappiness plus élevée n'est pas recommandé pour les serveurs Hadoop car cela peut provoquer de longues pauses dans le garbage collection. Et, avec la valeur de swappiness plus élevée, les données peuvent être mises en cache pour échanger de la mémoire même si nous disposons de suffisamment de mémoire. Réduire la valeur de swappiness peut faire en sorte que la mémoire physique contienne plus de pages de mémoire.

sysctl vm.swappiness=1

Vous pouvez également ouvrir le fichier /etc/sysctl.conf et ajouter "vm.swappiness=1" à la fin.

vm.swappiness=1

3. Désactivez le pare-feu

Chaque serveur Hadoop aura sa propre responsabilité avec plusieurs services (démons) exécutés dessus. Tous les serveurs communiqueront entre eux de manière fréquente à diverses fins.

Par exemple, Datanode enverra un battement de cœur à Namenode toutes les 3 secondes afin que Namenode s'assure que le Datanode est vivant.

Si toutes les communications ont lieu entre les démons sur différents serveurs via le pare-feu, cela représentera une charge supplémentaire pour Hadoop. Il est donc recommandé de désactiver le pare-feu sur les serveurs individuels du cluster.

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

4. Désactivez SELinux

Si nous gardons SELinux activé, cela entraînera des problèmes lors de l'installation de Hadoop. Comme Hadoop est un cluster informatique, Cloudera Manager atteindra tous les serveurs du cluster pour installer Hadoop et ses services et créera les répertoires de services nécessaires partout où cela est nécessaire.

Si SELinux est activé, il ne permettra pas à Cloudera Manager de gérer l'installation comme il le souhaite. Ainsi, l’activation de SELinux constituera un obstacle à Hadoop et entraînera des problèmes de performances.

Vous pouvez vérifier l'état de SELinux en utilisant la commande ci-dessous.

sestatus

Maintenant, ouvrez le fichier /etc/selinux/config et désactivez SELINUX comme indiqué.

SELinux=disabled

Après avoir désactivé SELinux, vous devez redémarrer le système pour le rendre actif.

reboot

5. Installez les services NTP

Dans le Hadoop Cluster, tous les serveurs doivent être synchronisés dans le temps pour éviter les erreurs de décalage d'horloge. Le RHEL/CentOS 7 intègre chronyd pour la synchronisation de l'horloge et de l'heure du réseau, mais Cloudera recommande d'utiliser NTP.

Nous devons installer NTP et le configurer. Une fois installé, arrêtez « chronyd » et désactivez-le. Parce que, si un serveur exécutant à la fois ntpd et chronyd, Cloudera Manager prendra en compte chronyd pour la synchronisation de l'heure, il générera alors une erreur même si nous avons le temps synchronisé via ntp.

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

6. Désactivez Chronyd

Comme nous l'avons mentionné ci-dessus, nous n'avons pas besoin de chronyd actif car nous utilisons ntpd. Vérifiez l'état de chronyd, s'il est en cours d'exécution, arrêtez-le et désactivez-le. Par défaut, chronyd est arrêté à moins que nous ne le démarrions après l'installation du système d'exploitation, il suffit de le désactiver pour plus de sécurité.

systemctl status chronyd
systemctl disable chronyd

7. Définir le FQDN (nom de domaine complet)

Nous devons définir le nom d'hôte avec le FQDN (Nom de domaine entièrement qualifié). Chaque serveur doit avoir un nom canonique unique. Pour résoudre le nom d'hôte, nous devons soit configurer le DNS, soit /etc/hosts. Ici, nous allons configurer /etc/hosts.

L'adresse IP et le FQDN de chaque serveur doivent être saisis dans /etc/hosts de tous les serveurs. Alors seul Cloudera Manager peut communiquer à tous les serveurs avec son nom d'hôte.

hostnamectl set-hostname master1.linux-console.net

Ensuite, configurez le fichier /etc/hosts. Par exemple : – Si nous avons un cluster de 5 nœuds avec 2 maîtres et 3 travailleurs, nous pouvons configurer le /etc/hosts comme ci-dessous.

8. Installation d'un kit de développement Java (JDK)

Comme Hadoop est composé de Java, tous les hôtes doivent avoir Java installé avec la version appropriée. Ici, nous allons avoir OpenJDK. Par défaut, Cloudera Manager installera OracleJDK mais Cloudera recommande d'avoir OpenJDK.

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

Sécurité et renforcement Hadoop

Dans cette section, nous aborderons la sécurité de l'environnement Harden Hadoop…

1. Désactivez le montage automatique

Le montage automatique « autofs » permet le montage automatique de périphériques physiques tels que USB, CD/DVD. L'utilisateur disposant d'un accès physique peut connecter sa clé USB ou tout autre support de stockage pour accéder aux données insérées. Utilisez les commandes ci-dessous pour vérifier s'il est désactivé ou non, sinon désactivez-le.

systemctl disable autofs
systemctl is-enabled autofs

2. Paramètres de démarrage sécurisé

Le fichier de configuration grub contient des informations critiques sur les paramètres de démarrage et les informations d'identification permettant de déverrouiller les options de démarrage. Le fichier de configuration grub 'grub.cfg' situé dans /boot/grub2 et il a été lié en tant que /etc/grub2.conf et assurez-vous grub.cfg appartient à l'utilisateur root.

cd /boot/grub2

Utilisez la commande ci-dessous pour vérifier que Uid et Gid sont tous deux 0/root et 'group' ou 'autre' ne devrait avoir aucune autorisation.

stat /boot/grub2/grub.cfg

Utilisez la commande ci-dessous pour supprimer les autorisations des autres et du groupe.

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

3. Définissez le mot de passe du chargeur de démarrage

Ce paramètre évite tout autre redémarrage non autorisé du serveur. c'est-à-dire qu'il nécessite un mot de passe pour redémarrer le serveur. S'il n'est pas défini, les utilisateurs non autorisés peuvent démarrer le serveur et apporter des modifications aux partitions de démarrage.

Utilisez la commande ci-dessous pour définir le mot de passe.

grub2-mkpasswd-pbkdf2

Ajoutez le mot de passe créé ci-dessus au fichier /etc/grub.d/01_users.

Ensuite, régénérez le fichier de configuration grub.

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

4. Supprimer l'outil de pré-lien

Prelink est un logiciel qui peut augmenter la vulnérabilité d'un serveur si des utilisateurs malveillants peuvent compromettre des bibliothèques courantes telles que libc.

Utilisez la commande ci-dessous pour le supprimer.

yum remove prelink

5. Désactivez les services indésirables

Nous devrions envisager de désactiver certains services/protocoles pour éviter des attaques potentielles.

systemctl disable <service name>
  • Désactiver les services réseau – Assurez-vous que les services réseau – les frais, la journée, la suppression, l'écho et l'heure ne sont pas activés. Ces services réseau sont destinés au débogage et aux tests, il est recommandé de les désactiver, ce qui peut minimiser l'attaque à distance.
  • Désactiver TFTP et FTP – Les deux protocoles ne prendront pas en charge la confidentialité des données ou des informations d'identification. Il est préférable de ne pas l'avoir sur le serveur à moins que cela ne soit explicitement requis. La plupart de ces protocoles sont installés et activés sur les serveurs de fichiers.
  • Désactiver DHCP – DHCP est le protocole qui attribuera dynamiquement l'adresse IP. Il est recommandé de le désactiver sauf s'il s'agit d'un serveur DHCP pour éviter des attaques potentielles.
  • Désactiver HTTP – HTTP est le protocole qui peut être utilisé pour héberger du contenu Web. Outre les serveurs maître/gestion (où les services WebUI doivent être configurés comme CM, Hue, etc.), nous pouvons désactiver HTTP sur d'autres nœuds de travail, ce qui peut éviter les attaques potentielles.

Résumé

Nous avons suivi la préparation du serveur qui comprend les prérequis Cloudera Hadoop et un certain renforcement de la sécurité. Les pré-requis au niveau du système d'exploitation définis par Cloudera sont obligatoires pour une installation fluide de Hadoop. Habituellement, un script de renforcement sera préparé à l’aide du benchmark CIS et utilisé pour auditer et remédier aux non-conformités en temps réel.

Dans une installation minimale de CentOS/RHEL 7, seules les fonctionnalités/logiciels de base sont installés, cela évitera les risques et vulnérabilités indésirables. Même s'il s'agit d'une installation minimale, plusieurs itérations d'audit de sécurité seront effectuées avant d'installer Hadoop, même après la création du cluster, avant de déplacer le cluster en exploitation/production.