Поиск по сайту:

Настройка необходимых компонентов Hadoop и усиление безопасности — часть 2


Создание кластера Hadoop — это пошаговый процесс, который начинается с покупки необходимых серверов, их установки в стойку, прокладки кабелей и т. д. и размещения в центре обработки данных. Затем нам нужно установить ОС, это можно сделать с помощью кикстарта в среде реального времени, если размер кластера большой. После установки ОС нам необходимо подготовить сервер для установки Hadoop, а также подготовить серверы в соответствии с политиками безопасности организации.

Требования

  • Лучшие практики по развертыванию сервера Hadoop на CentOS/RHEL 7 — часть 1

В этой статье мы рассмотрим предварительные условия на уровне ОС, рекомендованные Cloudera. Кроме того, мы выделили несколько важных советов по усилению безопасности согласно CIS Benchmark для производственных серверов. Эти меры безопасности могут быть разными в зависимости от требований.

Настройка необходимых компонентов Cloudera Hadoop

Здесь мы обсудим предварительные требования на уровне ОС, рекомендованные Cloudera.

1. Отключить прозрачную огромную страницу

По умолчанию Прозрачная огромная страница (THP) включена на компьютерах Linux, которые плохо взаимодействуют с рабочими нагрузками Hadoop и снижают общую производительность кластера. Поэтому нам нужно отключить это, чтобы добиться оптимальной производительности, используя следующую команду echo.

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

2. Изменить обмен виртуальными машинами

По умолчанию значение vm.swappiness составляет 30 или 60 для большинства компьютеров Linux.

sysctl vm.swappiness

Использование более высокого значения подкачки не рекомендуется для серверов Hadoop, поскольку это может привести к длительным приостановкам сборки мусора. А при более высоком значении подкачки данные можно кэшировать для подкачки памяти, даже если у нас достаточно памяти. Уменьшение значения подкачки может привести к тому, что физическая память будет содержать больше страниц памяти.

sysctl vm.swappiness=1

Или вы можете открыть файл /etc/sysctl.conf и добавить в конец "vm.swappiness=1".

vm.swappiness=1

3. Отключите брандмауэр.

Каждый сервер Hadoop будет нести собственную ответственность за несколько служб (демонов), работающих на нем. Все серверы будут часто взаимодействовать друг с другом для различных целей.

Например, Datanode будет отправлять контрольный сигнал Namenode каждые 3 секунды, чтобы Namenode проверял, что Datanode работает.

Если весь обмен данными между демонами на разных серверах осуществляется через брандмауэр, это станет дополнительной нагрузкой для Hadoop. Поэтому лучше всего отключить брандмауэр на отдельных серверах в кластере.

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

4. Отключите SELinux.

Если мы оставим SELinux включенным, это вызовет проблемы при установке Hadoop. Поскольку Hadoop представляет собой кластерную систему, Cloudera Manager обратится ко всем серверам в кластере для установки Hadoop и его служб, а также создаст необходимые каталоги служб там, где это необходимо.

Если SELinux включен, Cloudera Manager не сможет управлять установкой по своему усмотрению. Таким образом, включение SELinux станет препятствием для Hadoop и приведет к проблемам с производительностью.

Вы можете проверить статус SELinux, используя команду ниже.

sestatus

Теперь откройте файл /etc/selinux/config и отключите SELINUX, как показано.

SELinux=disabled

После отключения SELinux необходимо перезагрузить систему, чтобы она стала активной.

reboot

5. Установите службы NTP.

В кластере Hadoop все серверы должны быть синхронизированы по времени, чтобы избежать ошибок смещения часов. В RHEL/CentOS 7 встроен chronyd для синхронизации сетевых часов и времени, но Cloudera рекомендует использовать NTP.

Нам нужно установить NTP и настроить его. После установки остановите «chronyd» и отключите его. Потому что, если на сервере работают как ntpd, так и chrony, Cloudera Manager будет рассматривать chrony для синхронизации времени, тогда он выдаст ошибку, даже если у нас время синхронизируется через ntp.

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

6. Отключить Хронид

Как мы упоминали выше, нам не нужен активный chronyd, поскольку мы используем ntpd. Проверьте статус chronyd, если он работает, остановите и отключите его. По умолчанию chronyd остановлен, если только мы не запустим его после установки ОС, просто нам нужно отключить его в целях безопасности.

systemctl status chronyd
systemctl disable chronyd

7. Установите полное доменное имя (полное доменное имя).

Нам нужно установить имя хоста с FQDN (полное доменное имя). Каждый сервер должен иметь уникальное каноническое имя. Чтобы разрешить имя хоста, нам нужно настроить DNS или /etc/hosts. Здесь мы собираемся настроить /etc/hosts.

IP-адрес и полное доменное имя каждого сервера необходимо ввести в /etc/hosts всех серверов. Тогда только Cloudera Manager сможет связываться со всеми серверами по своему имени хоста.

hostnamectl set-hostname master1.linux-console.net

Затем настройте файл /etc/hosts. Например: – Если у нас есть кластер из 5 узлов с 2 главными и 3 рабочими узлами, мы можем настроить /etc/hosts, как показано ниже.

8. Установка пакета разработки Java (JDK)

Поскольку Hadoop состоит из Java, на всех хостах должна быть установлена Java соответствующей версии. Здесь у нас будет OpenJDK. По умолчанию Cloudera Manager установит OracleJDK, но Cloudera рекомендует использовать OpenJDK.

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

Безопасность и усиление Hadoop

В этом разделе мы рассмотрим безопасность среды Harden Hadoop…

1. Отключить автомонтирование

Автоматическое монтирование «autofs» позволяет автоматически монтировать физические устройства, такие как USB, CD/DVD. Пользователь с физическим доступом может подключить свой USB-накопитель или любой носитель данных для доступа к вставляемым данным. Используйте приведенные ниже команды, чтобы проверить, отключена ли она или нет, если не отключите ее.

systemctl disable autofs
systemctl is-enabled autofs

2. Настройки безопасной загрузки

Файл конфигурации grub содержит важную информацию о настройках загрузки и учетные данные для разблокировки параметров загрузки. Файл конфигурации grub «grub.cfg», расположенный по адресу /boot/grub2, связан как /etc/grub2.conf и обеспечивает grub.cfg принадлежит пользователю root.

cd /boot/grub2

Используйте приведенную ниже команду, чтобы проверить, что Uid и Gid имеют значения 0/root и «group» или «other' не должно иметь никаких разрешений.

stat /boot/grub2/grub.cfg

Используйте команду ниже, чтобы удалить разрешения для других и группы.

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

3. Установите пароль загрузчика.

Эта настройка позволяет избежать других несанкционированных перезагрузок сервера. т. е. для перезагрузки сервера требуется пароль. Если он не установлен, неавторизованные пользователи могут загружать сервер и вносить изменения в загрузочные разделы.

Используйте команду ниже, чтобы установить пароль.

grub2-mkpasswd-pbkdf2

Добавьте созданный выше пароль в файл /etc/grub.d/01_users.

Затем повторно создайте файл конфигурации grub.

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

4. Удалить инструмент предварительной ссылки

Prelink — это программа, которая может повысить уязвимость сервера, если злоумышленники могут поставить под угрозу распространенные библиотеки, такие как libc.

Используйте команду ниже, чтобы удалить его.

yum remove prelink

5. Отключите нежелательные службы.

Нам следует рассмотреть возможность отключения некоторых сервисов/протоколов, чтобы избежать потенциальных атак.

systemctl disable <service name>
  • Отключить сетевые службы. Убедитесь, что сетевые службы – оплата, дневное время, отмена, эхо, время – не включены. Эти сетевые службы предназначены для отладки и тестирования. Рекомендуется отключить их, чтобы свести к минимуму удаленную атаку.
  • Отключить TFTP и FTP – оба протокола не поддерживают конфиденциальность данных или учетных данных. Лучше всего не использовать его на сервере, если это явно не требуется. В основном эти протоколы установлены и включены на файловых серверах.
  • Отключить DHCP. DHCP – это протокол, который динамически распределяет IP-адрес. Рекомендуется отключить, если это не DHCP-сервер, чтобы избежать потенциальных атак.
  • Отключить HTTP. HTTP – это протокол, который можно использовать для размещения веб-контента. Помимо главных серверов/серверов управления (где необходимо настроить WebUI сервисов, таких как CM, Hue и т. д.), мы можем отключить HTTP на других рабочих узлах, что позволит избежать потенциальных атак.

Краткое содержание

Мы прошли подготовку сервера, которая включает в себя предварительные требования Cloudera Hadoop и некоторое усиление безопасности. Предварительные условия уровня ОС, определенные Cloudera, являются обязательными для беспрепятственной установки Hadoop. Обычно сценарий усиления безопасности подготавливается с использованием CIS Benchmark и используется для проверки и устранения несоответствий в режиме реального времени.

При минимальной установке CentOS/RHEL 7 устанавливаются только базовые функции/программное обеспечение, что позволяет избежать нежелательных рисков и уязвимостей. Несмотря на то, что это минимальная установка, перед установкой Hadoop будет выполнено несколько итераций аудита безопасности, даже после создания кластера, прежде чем перевести кластер в эксплуатацию/производство.