标签: jails

Linux LXC vs FreeBSD jail

在安全性、稳定性和性能方面,LXC(Linux 容器)FreeBSD 的监狱之间有什么显着区别吗?

乍一看,这两种方法看起来非常相似。

linux freebsd jails virtualization lxc

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

如何在没有 root 的情况下“监禁”一个进程?

如果我是 root,我可以简单地创建一个虚拟用户/组,相应地设置文件权限并以该用户身份执行该过程。但是我不是,所以有没有办法在没有root的情况下实现这一目标?

jails permissions not-root-user

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

Linux:有没有方便的方法来执行将其绑定到所选 IP 地址的程序?

在 FreeBSD 4.9 中,只需一个命令即可轻松完成,例如

jail [-u username]  path hostname ip-number command
Run Code Online (Sandbox Code Playgroud)

如果路径是/你像往常一样运行相同的程序,但它的所有网络通信都被限制为仅使用给定的 IP 地址作为源。有时它非常方便。

现在在 Linux 中有 LXC,它看起来与 FreeBSD jail(或 Solaris 的区域)非常相似——你能想出类似的方式来执行程序吗?

linux freebsd ip jails lxc

11
推荐指数
1
解决办法
1599
查看次数

有没有一种简单的方法来创建一个 FreeBSD rc 脚本?

我有一个 FreeBSD jail,我在其中使用以下命令运行服务器:

/usr/sbin/daemon /path/to/script.py
Run Code Online (Sandbox Code Playgroud)

目前,每次我重新启动机器和监狱启动时,我都必须运行这个命令。我想让这个命令从/etc/rc. 有没有一种简单的方法可以为daemon命令创建 FreeBSD rc 脚本?


更新:我通读了有关 rc scripts 的 BSD 文档,并从中创建了以下脚本/etc/rc.d/pytivo

#!/bin/sh

. /etc/rc.subr

name=pytivo
rcvar=pytivo_enable
procname="/usr/local/pytivo/pyTivo.py"

command="/usr/sbin/daemon -u jnet $procname"

load_rc_config $name
run_rc_command "$1"
Run Code Online (Sandbox Code Playgroud)

这可以在监狱启动时启动我想要作为守护进程的 python 脚本......(给定pytivo_enable="YES"是 in /etc/rc.conf)但是 rc 脚本不知道守护进程是否正在运行(它认为它不是在运行时)和当我尝试启动它时它会发出警告:

[root@meryl /home/jnet]# /etc/rc.d/pytivo start
[: /usr/sbin/daemon: unexpected operator
Starting pytivo.
[root@meryl /home/jnet]# 
Run Code Online (Sandbox Code Playgroud)

所以它很接近,并且有效,但我觉得我应该能够获得比这更好的功能。

startup freebsd jails shell-script daemon

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

我怎样才能安全地给某人一个贝壳?

我有一个关于向某人提供 shell 帐户的问题。它有多安全?他可以阅读 /etc。我如何提供一个安全的 shell 帐户,该帐户只会将用户限制在某些垃圾箱和他自己的家中?是 chroot 监狱的唯一途径吗?

linux security users jails

7
推荐指数
1
解决办法
417
查看次数

bash 如何知道它是如何被调用的?

我已经安装jailkitUbuntu 12.04,我已经建立了一个用户的shell来/bin/bash-但是当它被调用运行/etc/bash.bashrc,而不是/etc/profile

如果您以前没有使用jailkit过这里是它的要点:

  1. 系统根目录的“监禁”版本在某处创建,例如 /home/jail
  2. 被监禁的用户主目录移动到该文件夹​​内,如 /home/jail/home/testuser
  3. 相关配置文件被复制到 /home/jail/etc/ - 包括有限的 /etc/passwd
  4. 您希望允许访问的程序被复制到相应的目录中,例如 /bin/bash
  5. 当一个被监禁的用户登录时,他们被 chroot 到 /etc/jail/ 并且看不到上面的任何文件

所以我有一个testuser这样的条目/etc/passwd

testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
Run Code Online (Sandbox Code Playgroud)

在文件中/home/jail/etc/passwd有一个条目,如:

testuser:1001:1003::/home/testuser:/bin/bash
Run Code Online (Sandbox Code Playgroud)

我已经阅读了bash(1),所以我认为问题在于 bash 认为它没有被作为登录 shell 调用:

当 bash 作为交互式登录 shell 或作为具有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 读取并执行命令(如果该文件存在)。

我知道这bash实际上是被调用的,/usr/sbin/jk_chrootsh但我不明白如何bash确定它是什么类型的外壳,以及它应该运行哪组启动文件。

我想看看我是否可以解决这个问题 - 但我不明白:

bash 如何知道它是如何被调用的?

ps:我也看了,login(1)运气不好。

bash login ubuntu jails

7
推荐指数
2
解决办法
789
查看次数

LXC 可以用于监狱已安装浏览器的实例吗?

是否可以在桌面系统上使用 LXC 来限制浏览器和其他过去已被证明容易受到某些类型攻击的软件。所以我想要实现的是监禁,比如 Firefox,仍然能够查看它的窗口等,但要确保它只能读写“气泡内”的任何东西,而不是主机系统。

lxc-sshdLXC 中的示例容器表明这样的事情应该是可能的(应用程序级容器),但我只在最多需要 TTY 的程序中看到了这一点。

这也可以在 KDE、GNOME、Unity 下工作吗?

jails browser lxc

7
推荐指数
1
解决办法
4007
查看次数

在使用“我的”X Server 的麦克风和扬声器时以另一个用户身份运行 Viber

我用GNOME运行Fedora,最近为 linux安装了Viber。它非常好,一切正常。

由于Viber不是开源软件,我决定以另一个用户身份运行它,以确保它无法在没有我同意的情况下访问我的文件,方法是创建一个user:group viber:viber。如果我尝试从属于我或任何其他用户的Viber文件内部打开,它无法读取它们。目标实现,但部分实现。现在,我偶然发现了另一个问题,即Viber仅适用于消息,当我尝试拨打电话时,它说找不到麦克风和扬声器?这种感觉,我知道为什么(我运行X服务器(GNOME)为自己Viber的作为振动:振动(用户:组))。

如何让Viber 同时运行viber:viber,让它使用麦克风和扬声器,同时运行 GNOME 会话myusername:myusername

SELinux 解决方案也是受欢迎的,但有具体的例子!chroot不是解决方案,因为据我所知,它会导致与上述相同的问题。

编辑 1:

运行它的exec是:su - viber -c /opt/viber/Viber

security fedora gnome jails selinux

7
推荐指数
1
解决办法
1668
查看次数

如何监禁 fastcgi 服务器(或网络代理服务器)?

如果您有一个网络服务器(例如 nginx),您通常会使用 fast-cgi 服务器或其他应用程序 http-server 来获取动态内容。这意味着在这两种情况下,web-server 进程和 fast-cgi(或 application-http-server 进程 - 在下面称为 slave)之间有一个很好的进程分离。

网络服务器的配置使得 fast-cgi 通过套接字或 http 请求被代理。

如果从属进程中存在安全问题,则为从属和 Web 服务器创建不同的用户可以保护文件系统位置。

但是我如何在 Linux 下更多地监禁从进程?

(例如无法上网、发邮件等)

我可以想到以下路线:

  • SELinux
  • Linux 系统命名空间('containers', cgroups

在当前发行版(例如 Debian)上,最方便的方法是什么?在实践中如何做到?任何配置示例?

jails cgroups

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

如何挂载主机系统的目录以在 FreeBSD jail 中使用?

我在 FreeBSD 9.0-STABLE 上执行以下操作:

mount_nullfs /foo /jail/foo
Run Code Online (Sandbox Code Playgroud)

在此之后,从主机系统中,安装工程。所以这有效:

touch /foo/bar && ls /jail/foo/bar
Run Code Online (Sandbox Code Playgroud)

但是当我进入监狱时,挂载的目录是空的:

jexec 1 tcsh
ls /foo/bar
Run Code Online (Sandbox Code Playgroud)

我得到:

ls: /foo/bar: No such file or directory
Run Code Online (Sandbox Code Playgroud)

/foo 完全是空的。

当在主机系统中找到的 chroot 中挂载时,如何让挂载目录中的文件正确显示?

freebsd chroot jails directory mount

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