对用户强加 tmux 的有效性

对用户强加 tmux 的有效性

如果你看STIG 参考号 V-230349你会看到全文,我即将对其进行总结。

最初的陈述或规则标题是RHEL 8 必须确保会话控制在 shell 初始化时自动启动。

它要求:

# /etc/profile.d/tmux.sh

if [ "$PS1" ]; then
  parent=$(ps -o ppid= -p $$)
  name=$(ps -o comm= -p $parent)
  case "$name" in (sshd|login) tmux ;; esac
fi

在一种情况下,仅提供以下信息:

讨论:Tmux 是一个终端多路复用器,可以从单个屏幕创建、访问和控制多个终端。红帽认可 tmux 作为推荐的会话控制包。

其中没有提及有关安全性的原因或基本原理,但如果您在该规则上进行网络搜索,您可以阅读更多似乎试图证明其合理性的细节。另外后续相关安全规则也要求

#  /etc/tmux.conf

set -g lock-command vlock
bind X lock-session
set -g lock-after-time 900 

因此,每当用户通过 ssh 连接到 Linux 以及 VNC 会话中任何打开的终端窗口时,该 设置都会/etc/profile.d/tmux.sh导致运行,然后设置会导致在 15 分钟内未输入字符的情况下在任何 tmux 会话中出现密码提示。那个 tmux 窗口。tmuxtmux.conf

我的问题是针对那些使用tmux[按预期]并且了解它的人(因为我从不使用 tmux)这是使用 tmux 的好还是坏方法? 除了在 Linux 的任何终端窗口中强制出现密码提示之外,也就是说,如果用户不直接键入exit杀死 tmux 并在没有它的情况下正常继续。然而我的经验是,99% 的用户都不懂 Linux,甚至不了解 tmux。第一个抱怨是他们输入 exit 但现在他们的窗口没有关闭。

但对于tmux知识分子来说tmux,在任何地方都强制使用这样的用法是否会带来大量打开和遗忘 tmux 会话的风险? ...因为 Tmux 是一个终端多路复用器,可以从一个屏幕创建、访问和控制多个终端;因此,作为管理员,我不希望用户运行他们一无所知或不知道如何管理的东西。

答案1

STIG 的在线版本要求exec tmux;这样就避免了tmux一启动就退出的解决方法,也避免了用户需要退出两次。

不知道的用户tmux不应该最终留下tmux会话:他们不会在内部启动更多窗口tmux,因此当他们退出 shell 时,tmux也会退出。

通过这样的设置,有些用户最终会受到惩罚:了解它tmux并将其用于长期会话。每当系统强制tmux为他们启动时,此类用户就必须手动切换到之前的会话 ( Ctrlb()。那些用户最终可能会留下tmux会话,尽管开销很小。

就我个人而言,我不介意这样的设置,只要将其更改为自动重新加入属于登录用户的任何分离会话即可。(类似于tmux has-session && exec tmux attach-session || exec tmux。)

答案2

screen我多年来一直使用类似的配置,但可以将我的登录重新连接到上一个会话。 (这是一种便利措施,而不是安全措施,因此会话没有应用密码。)

一般来说,它的效果非常好。有时,会话会被标记为“活动”而不是“分离”,通常是在网络连接中断时会话空闲(无输入/输出)。这可以通过从 shell 或本身(如果支持)设置空闲超时来解决tmux

我使用的一个版本exec screen在直接 shell 中完全失败。这是客户端(程序)调用的内容:

ssh -q -tt "$host" \
        "screen -dr $session || screen -S $session -l $* || screen -l $* || screen || bash -i || sh -i"

其中$host引用远程目标主机,并且$session是使用我用于匹配断开连接的会话的已知前缀格式化的会话名称。

相关内容