在监狱环境中运行 Tor 服务

在监狱环境中运行 Tor 服务

我想破解我的 FreeBSD 旧机器,主要用于暗网活动。问题:

在创建监狱期间我应该担心这些错误吗?

Warning: Some services already seem to be listening on all IP, (including 127.0.1.1)
  This may cause some confusion, here they are:
root     ntpd       58008 20 udp6   *:123                 *:*
root     ntpd       58008 21 udp4   *:123                 *:*
root     lpd        48726 6  tcp6   *:515                 *:*
root     lpd        48726 7  tcp4   *:515                 *:*
Warning: Some services already seem to be listening on IP 192.168.1.105
  This may cause some confusion, here they are:
root     ntpd       58008 23 udp4   192.168.1.105:123     *:*
Warning: Some services already seem to be listening on all IP, (including 192.168.1.105)
  This may cause some confusion, here they are:
root     ntpd       58008 20 udp6   *:123                 *:*
root     ntpd       58008 21 udp4   *:123                 *:*
root     lpd        48726 6  tcp6   *:515                 *:*
root     lpd        48726 7  tcp4   *:515                 *:

假设来自这台机器的所有流量都将通过 Tor 路由,监狱是否应该有权访问环回接口和公共以太网接口?监狱之间是否需要设置虚拟网络接口进行通信?

答案1

否 - 监狱不需要访问环回或公共接口。而且您可以不使用虚拟网络接口 (VNET/VIMAGE),除非您想要进行 VLAN 标记或更高级的操作。

我通常做的是克隆环回接口。然后我有一个仅用于监狱和监狱流量的内部接口。然后我使用 pf 防火墙管理访问。您并不具体 - 但看起来您正在使用该脚本ezjail。我只使用基本系统附带的内容 - 但概念是相同的。您在监狱中设置的许多服务将引用*:port0.0.0.0:port。这将绑定到任何可用的 IP 地址,您可以看到这些错误。如果您将这些服务明确绑定到监狱中可用的地址,您将不会看到这些错误。

我的/etc/jail.conf看起来像这样:

# Global settings applied to all jails.
host.hostname = "${name}.jail";
interface = "lo1";
path = "/usr/local/jails/${name}";
mount.fstab = "/usr/local/jails/${name}.fstab";
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;

# Only needed for PostgreSQL:
# allow.sysvipc;

myjail1 { ip4.addr = 172.17.2.1; }
myjail2 { ip4.addr = 172.17.2.2; }
myjail3 { ip4.addr = 172.17.2.3; }

设置lo1/etc/rc.conf

cloned_interfaces="lo1"
ifconfig_lo1="inet 172.17.2.0 netmask 255.255.255.0"

以前我单独设置每个 IP,/etc/rc.conf但这并不是真正需要的。上面 2 行 in/etc/rc.conf和引用lo1in/etc/jail.conf就足够了。但如果您愿意,可以预先为地址别名:

ifconfig_lo1_alias0="inet 172.17.2.1 netmask 255.255.255.255"
ifconfig_lo1_alias1="inet 172.17.2.2 netmask 255.255.255.255"
ifconfig_lo1_alias2="inet 172.17.2.3 netmask 255.255.255.255"

然后退出的东西进来/etc/pf.conf。您可以使用任何您想要的名称 - 但我默认使用顶部的这些宏:

##########
# Macros #
##########
if=             "em0"          # Realtek = "re0", Intel = "igb0" or "em0" - Whatever your interface is named.
jif=            "lo1"          # We use the clone of lo0 for jail traffic        
loopback=       "lo0"
jnet=           $jif:network

jailhost=       "1.1.1.1"      # I put my public IP here.

#jails
jail1=          "172.17.2.1"       # Describe my jail
jail2=          "172.17.2.2"       # do.
jail3=          "172.17.2.3"       # do.

#aliases for services
tornode=       $jail1
web=           $jail2
mail=          $jail3

剩下的就是典型的防火墙设置。

如果我想要从外部通过 SSH 访问(在端口 1234 上)到特定的监狱,我将有一个 NAT 规则。这将映射到端口 22 上的 Jail1。

rdr pass log inet proto tcp from any to ($if) port 1234 -> $jail1 port ssh

因此,如果您有多个在端口 22 上运行 SSH 的监狱,那么您将收到您看到的错误,因为默认 SSH 配置绑定到 0.0.0.0。如果您绑定到特定的 IP 地址,您将不会看到该错误。

如果您查看/etc/ssh/sshd_configjail1您将默认拥有:

#ListenAddress 0.0.0.0

然后,您只需将其绑定到监狱的特定 IP:

ListenAddress 172.17.2.1

回到/etc/pf.conf。如果我希望tornode能够访问我的web监狱,那么我明确允许访问端口 80 和 443。

pass on $jif proto tcp from $tornode to $web port http
pass on $jif proto tcp from $tornode to $web port https

如果你想在监狱内测试 http,web那么我还需要声明:

pass on $jif proto tcp from $web to $web port http

许多道路通罗马,但以上是一个甜蜜且简单的设置,对我来说效果很好。

相关内容