这个守护进程通过TCP端口8006使用HTTPS暴露了整个{pve} API。它以`www-data`用户身份运行,并且具有非常有限的权限。需要更多权限的操作会转发给本地的`pvedaemon`。
针对其他节点的请求将自动转发到那些节点。这意味着您可以通过连接到单个 {pve} 节点来管理整个集群。
基于主机的访问控制
可以配置类似于`‘apache2’'的访问控制列表。值从文件`/etc/default/pveproxy`读取。例如:
ALLOW_FROM="10.0.0.1-10.0.0.5,192.168.0.0/22" DENY_FROM="all" POLICY="allow"
IP地址可以使用`Net::IP`理解的任何语法来指定。名称`all`是`0/0`和`::/0`(意味着所有IPv4和IPv6地址)的别名。
默认策略是`允许`。
匹配项 | POLICY=deny | POLICY=allow |
---|---|---|
仅允许匹配 |
允许 |
允许 |
仅拒绝匹配 |
拒绝 |
拒绝 |
无匹配项 |
拒绝 |
允许 |
同时匹配允许与拒绝 |
拒绝 |
允许 |
监听 IP 地址
默认情况下,pveproxy
和 spiceproxy
守护进程监听通配符地址,并接受来自 IPv4 和 IPv6 客户端的连接。
通过在`/etc/default/pveproxy`中设置`LISTEN_IP`,您可以控制`pveproxy`和`spiceproxy`守护进程绑定到哪个IP地址。需要在系统上配置IP地址。
将`sysctl`的`net.ipv6.bindv6only`设置为非默认值`1`将导致守护进程只接受来自IPv6客户端的连接,同时通常也会引起许多其他问题。如果您设置了这个配置,我们建议删除`sysctl`设置,或者将`LISTEN_IP`设置为`0.0.0.0`(这将只允许IPv4客户端)。
LISTEN_IP` 可用于只限制套接字到内部接口,从而减少对公共互联网的暴露,例如:
LISTEN_IP="192.0.2.1"
同样,您也可以设置一个IPv6地址:
LISTEN_IP="2001:db8:85a3::1"
请注意,如果您要指定一个链路本地IPv6地址,您需要提供接口本身的名称。例如:
LISTEN_IP="fe80::c463:8cff:feb9:6a4e%vmbr0"
Warning
|
集群中的节点需要访问`pveproxy`以进行通信,可能位于不同的子网之上。不推荐在集群系统上设置`LISTEN_IP`。 |
要应用更改,您需要重启节点或完全重启 pveproxy
和 spiceproxy
服务:
systemctl restart pveproxy.service spiceproxy.service
Note
|
不像`reload`,重新启动`pveproxy`服务可能会中断一些长时间运行的工作进程,例如来自虚拟客户机的正在运行的控制台或shell。因此,请使用维护窗口来使这一变更生效。 |
SSL加密套件
你可以通过 /etc/default/pveproxy
中的 CIPHERS
(适用于TLS ⇐ 1.2)和 CIPHERSUITES
(适用于TLS >= 1.3)键来定义密码列表。例如
CIPHERS="ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256" CIPHERSUITES="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
以上是默认设置。有关所有可用选项的列表,请参阅openssl包中的ciphers(1)手册页。
此外,您可以设置客户端在 /etc/default/pveproxy
中选择使用的加密方法(默认是客户端和 pveproxy
双方都可用的列表中的第一个加密方法)。
HONOR_CIPHER_ORDER=0
支持的TLS版本
不安全的SSL版本2和3已经无条件地禁用在pveproxy上。TLS版本1.1以下在最近的OpenSSL版本上默认是禁用的,这一点被`pveproxy`所遵守(参见`/etc/ssl/openssl.cnf`)。
要禁用TLS版本1.2或1.3,请在`/etc/default/pveproxy`中设置以下内容:
DISABLE_TLS_1_2=1
或者,相应地:
DISABLE_TLS_1_3=1
Note
|
除非有特别的理由,否则不建议手动调整支持的TLS版本。 |
Diffie-Hellman 参数
您可以通过在`/etc/default/pveproxy`中设置`DHPARAMS`为包含PEM格式DH参数的文件路径,来定义使用的Diffie-Hellman参数,例如
DHPARAMS="/path/to/dhparams.pem"
如果没有设置这个选项,将使用内置的`skip2048`参数。
Note
|
DH参数只有在协商使用DH密钥交换算法的密码套件时才会被用到。 |
备选HTTPS证书
你可以将证书更换为外部证书,或者更换为通过ACME获得的证书。
pveproxy使用`/etc/pve/local/pveproxy-ssl.pem`和`/etc/pve/local/pveproxy-ssl.key`(如果存在),如果不存在,则回退到使用`/etc/pve/local/pve-ssl.pem`和`/etc/pve/local/pve-ssl.key`。私钥不得使用密码短语。
通过在 /etc/default/pveproxy
中设置 TLS_KEY_FILE
可以覆盖证书私钥 /etc/pve/local/pveproxy-ssl.key
的位置,例如:
TLS_KEY_FILE="/secrets/pveproxy.key"
Note
|
包含的ACME集成不遵守此设置。 |
请参阅文档的主机系统管理章节以获取详细信息。
响应压缩
默认情况下,如果客户端支持,pveproxy`会使用gzip HTTP级别的压缩对可压缩内容进行压缩。这可以在
/etc/default/pveproxy`中禁用。
COMPRESSION=0