是否有任何东西(特别是在 Linux 机器中)可以从客户端跳转到服务器,并且能够执行根级任务,例如以自动方式停止服务? (与服务无关)
示例:从服务器端的 dnsmasq 运行的 DHCP 服务器向客户端发出地址。客户端收到地址并以某种方式告诉服务器“好吧,我们都很好,你现在可以停止 dnsmasq”。这可以做到吗?如果是这样,怎么办?
充分意识到这将是一个巨大的安全漏洞,我猜测在许多情况下需要涉及某种身份验证,但我很好奇这是否可能。我想不出我见过这样的例子。
答案1
一种安全的方法是通过 ssh 执行此操作。创建特定于服务的用户(“dhcpkiller”)和私钥/公钥对,以便客户端可以运行以下命令:
ssh dhcpkiller@dhcpserver pkill dnsmasq
这个一行脚本由您的 dhcp 环境触发,这可能以多种方式发生,具体取决于客户端上的 DHCP 套件。引用 dhclient / RHEL 联机帮助页:
在 dhclient 为接口带来新的 IP 地址、子网掩码和路由后,在 REBOOT/BOUND 状态下,它将立即检查可执行文件是否存在
/etc/dhcp/dhclient-up-hooks script
,并且来源 如果找到的话。该脚本可以处理环境中默认不处理的 DHCP 选项。当dhclient需要调用客户端配置脚本时,它会在环境中定义一组变量,然后调用/sbin/dhclient-script。在所有情况下,$reason 都设置为调用脚本的原因名称。当前定义了以下原因:MEDIUM、PREINIT、BOUND、RENEW、REBIND、REBOOT、EXPIRE、FAIL、STOP、RELEASE、NBI 和 TIMEOUT