它是由 Apache 基金会构建的 HTTP 服务器。 HTTP 代表超文本传输协议,它通过服务器端程序对超文本和多媒体文档进行解码。 HTTP 守护程序(后台进程)程序运行并为来自任何 HTTP 客户端(例如 Web 浏览器)的请求提供服务。需要注意的是,Apache HTTP Server 只能提供静态内容,例如文本或媒体,而不能提供静态内容。在网页加载期间发生变化。为了通过脚本技术/协议提供动态内容,例如通用网关接口 (CGI)、Java 服务器页面 (JSP) 等。
什么是 Apache 模块?
如上所述,Apache HTTP Server 是一个基本的 Web 服务器,可用于提供非动态内容。尽管如此,它也不提供任何功能,例如身份验证、请求加密、日志记录,Support,SSL,Heartbeat,LDAP,Caching,等。因此,它提供了特殊的程序模块来扩展Apache HTTP Server的核心功能。
什么是 Apache mod_ldap 模块和 mod_authnz_ldap.so 模块?
轻量级目录访问协议(LDAP)用于存储主体(用户、组织、功能 ID、服务帐户等)的数据库。它有一个支持 LDAP 的服务器。 mod_ldap 是一个 Apache 模块,它向 Apache 服务器提供 LDAP 的核心功能。同样,mod_authnz_ldap 是另一个模块,它允许 LDAP 目录存储数据库以对这些主体进行基本身份验证。
Cloudera Data Platform Web 服务有什么问题?
Cloudera 数据平台 (CDP) 是一个大数据 a> 提供 Hadoop、YARN、Spark、Impala、HUE、Hive、Kafka、NiFi、 等开源服务的平台,用于数据仓库、实时数据处理、数据分析、机器学习、可扩展性、安全性和许多其他先进功能。其中许多服务公开 Web 用户界面 (Web UI),这些界面提供静态内容,但不受任何身份验证机制的控制,因此违反了整体安全治理最佳实践。
Apache 模块如何提供帮助
Apache LDAP 模块有助于控制这些服务的身份验证,并确保只有经过授权的个人才能访问这些 Web UI。以下是保护这些 Web UI 安全所需的一些最佳实践。
- 对于任何现有的 CDP 服务,请确定可访问 Web UI 的端口或端口列表。
- 确保所有这些 Web UI 均启用了 SSL/TLS。
- 使用 Apache HTTP 模块添加身份验证以启用身份验证和授权。
代码演示
让我们启用 Hadoop Datanode Web 用户界面的身份验证。 Datanode UI工作在端口号50075上,当启用SSL/TLS时,端口号更改为50470。
启用它的过程是通过反向代理完成的,这是通过安装和配置 Apache HTTP Server、上述 Apache LDAP 模块以及启用软件防火墙 (IPTables) 来完成的。
操作系统:RedHat Enterprise Linux/CentOS 7.9
Cloudera 数据平台:v7.x
以下是启用此功能的步骤。
- 安装 httpd 服务器。
yum -y install httpd
-
安装身份验证所需的 ldap_mod 软件包。
yum -y install ldap_mod
-
安装 iptables 服务包
yum -y 安装 iptables-services
-
创建一个文件并为其指定任意名称,我们将其称为 datanode.conf。该文件的内容如下所述。将此文件放入目录 /etc/httpd/conf.d/
-
为 iptables 创建一个新文件。给它起任何名字;我们称之为 iptables_config。该文件的内容如下所述。将此文件放在目录
/etc/sysconfig/iptables/
中
# iptables 服务的配置
*筛选
:输入接受[0:0]
:转发接受[0:0]
:输出接受[0:0]
#接受来自所有IP地址的流量
-A 输入 -s <添加您的子网> -p tcp -m tcp --dport 50470 -j 接受
#丢弃50470端口上的流量
-A 输入 -p tcp -m tcp --dport 50470 -j 删除
提交
-
我们现在需要在 httpd 目录中加载 LDAP 模块。创建一个新文件并添加以下内容。将文件命名为 01-ldap.conf。要放置在
/etc/httpd/conf.modules.d/
的目录
LoadModule authnz_ldap_module 模块/mod_authnz_ldap.so
LoadModule ldap_module 模块/mod_ldap.so
-
上述更改完成后,重新启动HTTPD和iptables服务;下面的命令可用于执行相同的操作。
sysconfig iptables 重新启动
sysconfig httpd 重新启动
服务重新启动后,Datanode WebUI 将开始在端口 50471 上运行,打开其 WebUI 将需要身份验证,即您的 LDAP 用户 ID 和密码。
此安全机制的局限性
Apache HTTPD 反向代理实现不支持 Kerberos 身份验证。 Kerberos 是一项允许平台的用户和服务相互验证的服务。因此,如果您为 Web UI 启用了 Kerberos 服务,则上述实现将不起作用。