![受 Linux 内核保护的安全变量](https://linux22.com/image/9983/%E5%8F%97%20Linux%20%E5%86%85%E6%A0%B8%E4%BF%9D%E6%8A%A4%E7%9A%84%E5%AE%89%E5%85%A8%E5%8F%98%E9%87%8F.png)
是否有可能将变量置于 Linux 内核的监管之下?
例如,只能递增的计数器、可以写入但只能在身份验证后读取的变量。
理想情况下,重新启动后具有持久性,并且在启动之间不可更改。
我可以想到一个内核模块,它允许通过 /proc 文件系统访问变量并将值存储在内核密钥环中。
但是我找不到解决方案。
用例例如是软件 eFusehttps://en.wikipedia.org/wiki/EFUSE以及安全地存储用户空间变量的能力。
答案1
您可以使用 Redis 来存储数据结构并在重新启动后获取它们,因为该服务在关闭时会保存缓存。
Redis 不使用 proc,在用户域级别运行,并且默认情况下以 6379/TCP 与它通信。
还有一些语言的 API/扩展,包括 python 和 PHP。
您还可以进行一些诊断,并通过远程登录向其发送一些命令/ wget
/ curl
。
它可以受密码保护。
在 Debian 上安装它
sudo apt-get install redis-server
。
Redis 是一个开源(BSD 许可)内存数据结构存储,用作数据库、缓存和消息代理。它支持数据结构,例如字符串、散列、列表、集合、具有范围查询的排序集、位图、超级日志和具有半径查询的地理空间索引。 Redis 具有内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久性......
Redis 是一个开源的、先进的键值存储,也是构建高性能、可扩展的 Web 应用程序的合适解决方案。
Redis 具有三个使其与众不同的主要特点。
Redis 将其数据库完全保存在内存中,仅使用磁盘进行持久化。
与许多键值数据存储相比,Redis 具有相对丰富的数据类型。
Redis 可以将数据复制到任意数量的从站。
答案2
考虑到您最初的问题和随后的评论,答案是否定的。
是否有可能将变量置于 Linux 内核的监管之下?
理想情况下,重新启动后具有持久性,并且在启动之间不可更改。
我可以想到一个内核模块,它允许通过 /proc 文件系统访问变量并将值存储在内核密钥环中。
如果您正在寻找一种安全存储数据的方法,那么您需要某种数据库以及确保所存储数据完整性的方法 - 这通常涉及加密技术。这本身就产生了几个需要仔细解决的问题,例如密钥管理、存储加密等。
内核提供的持久数据存储选项非常少。前面提到的钥匙圈可能会有所帮助,但其用途略有不同。我从未研究过此类子系统的安全性,因此我无法评论其对于您的用例的强度。
答案3
您可以使用 Redis 来存储数据结构并在重新启动后获取它们,因为系统在宕机时会保留存储。只需转到下面的链接即可对您有所帮助。