如何在不使用 iptables 的情况下限制传出的 ssh 流量仅到达某些主机

如何在不使用 iptables 的情况下限制传出的 ssh 流量仅到达某些主机

我们的一个 ssh 服务器充当跳转主机。用户只能继续访问某些目标主机。这可以通过以下方式实现iptables,但目前这不是理想的解决方案。

我检查了man ssh_config是否可以在系统范围内配置这种情况ssh_config,但没有找到任何提示。

除了 iptables 之外,还有其他想法可以实现这一点吗?

答案1

向目标添加有效路由,向 null 添加更通用的路由。然后,只有定义的目标路由才可供用户使用。问题是这对所有用户都可用

答案2

你可以使用类似这样的东西

#! /bin/sh

MSG='********************************
1 = host1
2 = anotherhost
3 = host3

0 = exit
********************************'

host=none

while test none = "$host"
do
  echo "$MSG"
  echo -n 'your choice: '
  read choice
  case "$choice" in
  1) host=host1.domain.com;;
  2) host=anotherhost.xy.de;;
  3) host=just.go.here;;
  0) exit;;
  esac
done

ssh $host

作为 jumphost 上 ssh 用户的登录 shell。如果您将其保存为 /usr/bin/ssh-choice,请不要忘记将 /usr/bin/ssh-choice 添加到 /etc/shells。

汤姆汤姆汤姆

答案3

我不太清楚该如何设置,但也许禁用跳转主机上的 shell 登录,只允许特定用户将端口转发到特定主机,然后执行 openssh 的 -J 选项 (ProxyJump) 可以解决这个问题?sshd_config 的 Match 指令可能会有所帮助。

答案4

从主机的路由表中删除除跳转主机之外的所有内容,或者将阻止连接的防火墙放在主机本身以外的其他地方。

相关内容