标签: jail

我将把 FreeBSD 自动挂载器切成小块,然后在油中煮沸

我试图将主目录的层次结构暴露给许多 FreeBSD 监狱。主目录的配置使得每个目录都是唯一的 ZFS 数据集。监狱用于开发工作,因此会定期创建和销毁。

我的第一个想法是简单地使用nullfs挂载/home到 jail,但nullfs不提供任何访问从属文件系统的方法。

我的第二个想法是通过 NFS 导出目录,然后在每个 jail 中运行自动挂载程序守护程序 (amd)。如果可以在监狱内执行 NFS 挂载,这将是有效的。但事实并非如此。

我的第三个想法是在主机上运行 amd 并将nullfs挂载到监狱中……但是 amd 对nullfs 的支持不存在。

我的第四个想法是回到使用 NFS 导出目录,因为 amd 当然可以与 NFS 一起使用,对吗?不幸的是,amd 不是在目标挂载点上挂载目录,而是喜欢在临时位置 ( /.amd_mnt/...)挂载东西,然后创建符号链接……当然,这在 jail 环境中是无用的。

那么也许您可以使用nullfs将 的子目录暴露/.amd_mnt给监狱?不!这让我们回到了我的第一次尝试,我们发现无法使用nullfs访问从属文件系统。

然后我的头爆炸了。

我正在尝试做的事情有没有好的解决方案?一个糟糕的解决方案是在启动 jail 之后运行一个脚本,该脚本将为每个主目录创建多个nullfs挂载点,但这非常笨拙——它需要定期运行以考虑新目录或删除的目录。所以基本上我将不得不编写一个糟糕的自动挂载程序。

一定会有更好的办法。帮助我,Serverfault,你是我唯一的希望!

更新 1:我突然想到我可以用 解决部分问题pam_mount,尽管这充其量是不完整的。此外,文档中不清楚是否pam_mount可以自动创建目标挂载点。如果它需要先验存在挂载点,那么这个解决方案不会比我已经提出的坏自动挂载器更好。

更新 2:如下面的答案中所讨论的,VFCF_JAILNFS 文件系统上的设置确实允许 jails 执行 NFS 挂载。不幸的是,自动挂载程序继续无用的行为,并且当在监狱中运行时,它似乎非常擅长以这样的方式陷入困境,以至于需要重新启动系统才能删除进程条目。

freebsd zfs central-processing-unit jail automount

41
推荐指数
1
解决办法
2345
查看次数

Fail2ban jail.local 与 jail.conf

jail.local 文件是作为 jail.conf 的覆盖还是作为 jail.conf 的替代

当我从教程中学习Fail2Ban时,他们中的大多数人通常会说要么将 jail.conf 复制到 jail.local 并在那里进行编辑,其中一些人说要创建一个新的 jail.local 文件并提供一堆要复制的设置和粘贴。但他们没有解决的是 jail.local 如何与 jail.conf 一起工作。这些是2个场景:

  1. 覆盖:如果jail.local 充当jail.conf 文件的覆盖,那么我需要做的只是将我想要覆盖的必要配置添加到jail.conf 中给出的默认值中。在这种情况下,我不需要添加 SSH 配置等,因为它已经包含在 jail.conf 中。

  2. 替换:如果jail.conf 在jail.local 存在时无效,那么我需要在jail.local 中添加所有规则,然后编辑我想要修改的规则。

你能确认当 jail.local 存在时 jail.conf 会发生什么吗?如果 jail.local 的行为就像是在 jail.conf 文件之上的覆盖,那么对我来说,只需添加几行我想添加的规则就更容易了,这也使维护和可读性变得容易。什么是最好的方法?

firewall iptables jail fail2ban debian-wheezy

28
推荐指数
1
解决办法
2万
查看次数

SFTP:监禁(chrooted)目录中的文件符号链接

我正在尝试设置 sftp,以便一些受信任的人可以访问/编辑/创建一些文件。我已将用户监禁到他们的主目录 (/home/name) 中,但遇到了问题。我希望他们也能够访问 VPS 的其他部分,因为它也是一个游戏服务器、网络主机等,我希望他们能够完全控制他们被监禁的目录之外的文件。

我尝试创建指向所需目录的符号链接 (ln -s),但没有按预期工作。我尝试 (cp -rl) 访问我想要访问的文件并且它起作用了 - 他们可以编辑其目录中的文件并更改存储在监狱外的文件。但是他们不能创建新文件(他们可以,但不会在监狱外更新)。我知道我可能没有以“正确的方式”这样做,但是我该怎么做才能做我想做的事?

cp jail chroot sftp symlink

26
推荐指数
1
解决办法
4万
查看次数

OpenSSH 类似于“内部 sftp”,但对于 SCP?

我正在运行 Debian stable,我希望为我的 'sftponly' 组中的用户建立以下环境:

  • 入狱
  • 可以用SFTP传输
  • 可以用SCP转移
  • 无法使用 SSH 交互登录

从我的实验和研究来看,sshd_config 中的以下节似乎让我达到了 90%:

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

这给了我监禁的 SFTP 而没有 SSH,这很好。但它也禁用了 SCP,这不太理想,因为很多客户端是使用 SCP 而不是 SFTP 的遗留脚本进程(我们正在替换的服务器支持这两种协议),并且因为这些客户端不受我们的控制并且很容易修改后,完全禁用 SCP 可能不切实际。

此配置将禁用 SCP 是有道理的,因为传入的 SCP 连接会导致 sshd 以该用户的身份通过用户的登录 shell 生成一个“scp”进程。如果不是特殊的“internal-sftp”处理程序,SFTP 似乎通常也是如此。

所以,我想我的问题是:有没有一种方法可以达到与“internal-sftp”相同的效果,但对于 SCP,而不使用像 scponly 和 rssh 这样的第三方工具?'internal-sftp' 的真正好处在于它不需要用支持文件设置监狱,或处理可能被利用的第三方 setuid 二进制文件(特别是 rssh,它有被利用的历史)。

ssh jail chroot sftp scp

19
推荐指数
1
解决办法
2万
查看次数

FreeBSD Jails 或 Docker 实例

FreeBSD 上的 jails 和 Linux 上的 Docker 之间的主要区别是什么?一个比另一个更安全或更高效吗?Jails 比 Docker 实例更古老,因此可以认为代码本身更安全。但是 Jails 永远不会“流行起来”,所以也许它们不如 Docker 实例好?或者仅仅是因为 Linux 比 FreeBSD 更受欢迎?

freebsd jail docker

19
推荐指数
1
解决办法
1万
查看次数

如何在 FreeBSD 的监狱中启动 shell?

我可以访问一个以前设置的 FreeBSD 盒子,上面有许多监狱。其中一个监狱是一个 SQL 服务器,它没有启用 ssh。

如何从主机访问该监狱上的 shell?(我拥有它的 root 权限。)

freebsd unix shell jail

13
推荐指数
1
解决办法
2万
查看次数

SSH_ORIGINAL_COMMAND 变量未设置

我正在使用两台服务器,都运行 FreeBSD 8.4-RELEASE-p1 和 OpenSSH_6.1p1。ssh_config位于 中的两个服务器的文件/etc/ssh是相同的。两台服务器都配置为允许用户使用 SSH 远程进入被监禁的环境。

作为测试,我使用以下命令在两台服务器上使用 SSH 密钥登录到测试用户的监狱:

ssh -i ~/.ssh/private_key test-user@server.mydomain.com hello
Run Code Online (Sandbox Code Playgroud)

并且这authorized_keys两种情况下的文件都指定了以下要在身份验证后运行的命令,附加到公钥(两台服务器上的权限相同):

command="~/test.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Run Code Online (Sandbox Code Playgroud)

其中test.sh只需执行以下操作:

#!/bin/sh

echo SSH_ORIGINAL_COMMAND = $SSH_ORIGINAL_COMMAND
Run Code Online (Sandbox Code Playgroud)

在一台服务器上,上述sh脚本的输出显示如下:

SSH_ORIGINAL_COMMAND = hello
Run Code Online (Sandbox Code Playgroud)

但是在另一台服务器上,结果似乎没有存储在 SSH_ORIGINAL_COMMAND 中

SSH_ORIGINAL_COMMAND = 
Run Code Online (Sandbox Code Playgroud)

每个用户 jail 的相应服务器的行为是相同的。我的问题是 -SSH_ORIGINAL_COMMAND在第二台服务器的情况下,我还需要什么其他配置来允许在身份验证后设置变量?

freebsd ssh jail ssh-keys

10
推荐指数
1
解决办法
5978
查看次数

在较重的虚拟化(Xen、KVM、Hyper-V、VMVare)下使用 LXC

是否可以在较重的虚拟化(Xen DomU、KVM、Hyper-V、VMVare)下使用 LXC?我想将它用作安全(隔离)工具,限制资源消耗的能力对我来说不是优先事项。我只对是否可以以直接的方式完成感兴趣;类似于在非虚拟化服务器上​​使用 LXC。我不想在生产服务器上使用太复杂的设置。

virtualization xen jail lxc kvm-virtualization

9
推荐指数
1
解决办法
7545
查看次数

如何确定我的用户在接收 ZFS 数据集时缺少哪些权限?

我有一台 FreeNAS (11.1-U1) 和一台 FreeBSD (11.1-RELEASE-p6) 机器。在 FreeNAS 上,我想以zfs receive具有委派权限的非 root 用户身份递归快照。这似乎适用于大多数子数据集。但是 iocage 的data数据集可以安装到监狱中并从那里管理,它们失败了:

root@freebsd:~> zfs send -RI "dozer@2018-02-21" "dozer@2018-03-08"  | ssh -T -i /root/backup_key backupuser@freenas zfs receive -dvuF neo/backups/freebsd
receiving incremental stream of dozer@2018-03-03 into neo/backups/freebsd@2018-03-03
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of dozer@2018-03-07 into neo/backups/freebsd@2018-03-07
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of dozer@2018-03-08 into neo/backups/freebsd@2018-03-08
received 312B stream in 1 seconds (312B/sec)
receiving incremental stream of …
Run Code Online (Sandbox Code Playgroud)

freebsd zfs delegation jail freenas

9
推荐指数
2
解决办法
1183
查看次数

是否有用于管理了解 ZFS 的 FreeBSD jails 的工具?

FreeBSD 下的 ZFS 允许将文件系统分配给监狱,这样监狱中具有适当权限的帐户可以访问文件系统,创建新的从属文件系统,等等。至少在 8-STABLE 中,这些功能没有集成到现有/etc/rc.d/jail脚本中。基本流程类似于:

sysctl -w security.jail.enforce_statfs=0
sysctl -w security.jail.mount_allowed=1
zfs set jailed=on <filesystem>
zfs jail <jid> <filesystem>
Run Code Online (Sandbox Code Playgroud)

并且还需要暴露zfs监狱内的设备节点。

与此同时,似乎有大量工具(ezjail、jailer、warden 和一般/usr/ports/sysutils/*jail*)声称更容易/更好/更强大/等等,但其中大多数似乎只是轻微维护而不是与标准监狱脚本相比,这确实是一场胜利。

我想避免重新发明轮子。是否有与 ZFS 集成良好的监狱管理工具?我正在寻找一些可以在启动 jail 时设置必要的 devfs 规则、sysctl 设置和 zfs 属性的东西……并且理想情况下允许对 jails 进行基于名称的引用,尽管许多第三方都支持这种引用 -可悲的是,库存监狱脚本中缺少派对工具。

freebsd zfs jail

6
推荐指数
1
解决办法
4156
查看次数