本文介绍 munge 的工作作用、原理、安装和演示。munge
是一个用于创建和验证凭据的身份验证服务,为了在HPC集群环境中使用,它被设计为高度可伸缩的。
作用
解决高性能计算(HPC)控制节点和计算节点的通信认证,常见的认证方式有:
- authd
- munge:允许进程对一组具有
相同
普通用户(UID)和组(GID)
的主机对另一个本地
或远程
的进程进行身份验证。这些主机组成了 共享密码密钥
的 安全领域(security realm)
。此安全领域中的客户端可以在不使用 root特权
、保留端口
或 特定于平台
的创建和验证凭据。
简单的说是通过对数据(payload
)的加解密(或者称编码
),实现数据的安全传输。
安装
wget https://github.com/dun/munge/releases/download/munge-0.5.14/munge-0.5.14.tar.xz
yum install yum install -y bzip2-devel openssl-devel zlib-devel
rpmbuild -tb --without verify munge-0.5.14.tar.xz
cd /root/rpmbuild/RPMS/x86_64
rpm -ivh munge-0.5.14-1.el7.x86_64.rpm munge-devel-0.5.14-1.el7.x86_64.rpm munge-libs-0.5.14-1.el7.x86_64.rpm
yum install -y munge
使用
munge
安装完成后,会自动创建 munge
用户和组
创建密钥
$ sudo -u munge /usr/sbin/mungekey -v
mungekey: Info: Created "/etc/munge/munge.key" with 1024-bit key
$ ls -lh /etc/munge/munge.key
-rw------- 1 munge munge 128 Jul 25 03:16 /etc/munge/munge.key
# 或
dd if=/dev/urandom bs=1 count=1024 >/etc/munge/munge.key
chmod 0400 /etc/munge/munge.key
chown munge:munge /etc/munge/munge.key
说明:
/etc/munge/munge.key
也可以手动创建,必须保证其内容在32个字节以上,文件权限为600
- 生成的
/etc/munge/munge.key
文件需要分发到其他需要使用的节点,该文件的用户和组均为 munge
,文件权限为600
启动进程
systemctl enable munge
systemctl start munge
# 检查状态
systemctl status munge
测试
# 编码测试,-n 为 --no-input,即空字符串
$ munge -n
MUNGE:AwQFAAB0Pj/eUncugCTwVuIg7dPoLF0Cs5JJqahDNJa/dFAJCp+OItn2tulAiBns84Q1rmT273F15hSxM+ZTtw1mV7qUhEKcp5KlK5d0t5Ms1DSd0I8FvXXiCHyWOV4DiXs7so8=:
# 对字符串编码
$ munge -s "xiexianbin"
MUNGE:AwQFAAC7zLFmnfulEtFaSsUxB5sNcHJGVnXVUCUqSQN6h93/8OxCB+zrEu0dqmxX+TeONVy6gHZz3ZhgCeQpA6U1+fqvwXXyhmd/vcZfmRh0S+4OtYkrISkEyQsryHW862yg34WZvXHLNNk2YfcTV78Bk2vT:
$ munge -s "xiexianbin" | unmunge
STATUS: Success (0)
ENCODE_HOST: munge-1 (172.20.0.100)
ENCODE_TIME: 2021-07-25 16:51:35 -0400 (1627458695)
DECODE_TIME: 2021-07-25 16:51:35 -0400 (1627458695)
TTL: 300
CIPHER: aes128 (4)
MAC: sha256 (5)
ZIP: none (0)
UID: root (0)
GID: root (0)
LENGTH: 10
xiexianbin
$ munge -s "xiexianbin" -t 10 | ssh 172.20.0.101 unmunge
STATUS: Success (0)s
ENCODE_HOST: munge-1 (172.20.0.100)
ENCODE_TIME: 2021-07-25 16:52:14 -0400 (1627458734)
DECODE_TIME: 2021-07-25 16:52:16 -0400 (1627458736)
TTL: 10
CIPHER: aes128 (4)
MAC: sha256 (5)
ZIP: none (0)
UID: root (0)
GID: root (0)
LENGTH: 10
xiexianbin
$ ssh 172.20.0.101 munge -s "xiexianbin" -t 10 | unmunge
root@172.20.0.101's password:
STATUS: Success (0)
ENCODE_HOST: munge-2 (172.20.0.101)
ENCODE_TIME: 2021-07-25 16:52:56 -0400 (1627458776)
DECODE_TIME: 2021-07-25 16:52:56 -0400 (1627458776)
TTL: 10
CIPHER: aes128 (4)
MAC: sha256 (5)
ZIP: none (0)
UID: root (0)
GID: root (0)
LENGTH: 10
xiexianbin
使用
一般和 slum
一起使用,配置 /etc/slurm/slurm.conf
:
AuthType=auth/munge
FaQ
munge 在多网卡环境中,可能会存在 DNS
超时 10s 的问题,参考1,参考2
可以通过禁用 dns
规避。