Tom Asked: 2009-08-23 21:37:24 +0800 CST2009-08-23 21:37:24 +0800 CST 2009-08-23 21:37:24 +0800 CST 我正在考虑通过 Internet 共享打印机,这意味着什么? 772 NAT 到路由器适当端口上的 TCP/IP 打印机是否安全?我会从黑客那里得到不需要的文件,还是这不是一个大问题? internet 2 个回答 Voted Best Answer sysadmin1138 2009-08-23T21:43:43+08:002009-08-23T21:43:43+08:00 请记住,即使是打印机固件(假设它是打印机而不是像 CUPS 这样的打印服务器)也存在安全漏洞。有报道称打印机安装了“机器人”。您可能会收到来自人们的随机消息,就像垃圾传真一样。 Jim Dennis 2009-08-23T23:01:05+08:002009-08-23T23:01:05+08:00 如果您可以运行 ssh(和 Linux 等),则可以设置 VPN。你也可以考虑 OpenVPN 或 IPSec。但是,对于小型部署,尤其是临时部署……ssh可能是最简单的,并且可以在大多数地方通过大多数 NAT/NAPT 和其他奇怪的本地网络工作。(想想我们的笔记本电脑在随机当地咖啡店的 WiFi)。 OpenSSH 4.3 及更高版本支持 VPN 隧道功能。因此,您可以使用...和ssh等选项开始连接-w0:0(假设您已经制作了/dev/net/tun设备并完成了适当的tunctl魔法以启用任何类型的 TAP/tun 网络)。 一旦您建立了这样的隧道,您应该能够通过该隧道安全地访问您的打印机、文件共享、电子邮件、内部网络接口等。 最终我会为此写一个适当的 HOWTO(我在网上找到的大多数都缺少一些细节)。另外,我想摆弄其中的一些,让它以非 root 身份运行,并在其周围放置一个包装器,以便在断开连接时自动重启等等。但这里有一些基本说明。 我假设您正在运行 Linux ... Debian 或 Ubuntu。(应该在任何较新的发行版下工作,并且对于 RHEL/CentOS 或 Novell 来说可能更容易一些,因为我认为这些tunctl命令将在不同的包中具有)。 创建静态高度量拒绝路由: 路由添加 -host 172.31.1.2 拒绝 创建您的主tun设备: cd /dev/ && MAKEDEV tun; ls -l /dev/net/tun* 运行tunctl以在下一个可用隧道(tun0等)上设置持久性。 tunctl -t tun0 ## -u $SOMEUSER ??? (该tunctl命令似乎可以从uml-utilities包中获得,这似乎很奇怪,因为它与 OpenVPN、Vtun 以及现在的 OpenSSH/VPN 配置一起使用,与用户模式 Linux 完全不同;而且它似乎做出了“神奇”的持久更改,我还没弄清楚这个存储在哪里。我真的必须去阅读源代码)! 添加PermitTunnel yes或PermitTunnel point-to-point到 /etc/ssh/sshd_config 创建密钥对 ssh-keygen 从客户端将公钥部署到服务器: 猫 /.../.ssh/id_*.pub | ssh "root@$VPNGATE" 'cat >> /root/.ssh/authorized_keys' (注意:有使用受限访问密钥执行此操作的详细信息,在authorized_keys添加sudoNOPASSWD: 条目ifup等时将所述限制添加到密钥末尾ifdown。(有关更多详细信息,请参见:Shadows of Epiphany)。 运行以下脚本: ssh -f -w0:0 "root@$VPNGATE" 'ifconfig tun0 172.31.1.2 pointopoint 172.31.1.1 mtu 536 up' ifconfig tun0 172.31.1.1 pointopoint 172.31.1.2 mtu 536 up ...您现在应该有一个有效的 VPN 隧道。这ifconfig将创建一个具有较低指标的路由,这样就可以了。您现在可以访问 $VPNGATE 上的任何服务(包括其打印机、NFS 等),只要您通过专用的 PPP 调制解调器连接拨入它即可。 注意:要访问$VPNGATE后面的其他系统, 您必须确保这些系统知道您的 172.31。. (VPN) 路由(至少它们的默认路由器应该有指向 $VPNGATE 的静态路由......当然,用于回程。或者,您可以在 $VPNGATE 上执行 NAT,以便您的所有远程/笔记本电脑流量“看起来像”流量从 $VPNGATE 到网络的其余部分。无论哪种方式,您都必须sysctl -w net.ipv4.ip_forward(在 $VPNGATE 上),就像任何其他类型的路由一样。 如您所见,这是一个非常粗略的大纲,我必须为自己的使用找出更多细节。 究竟在tunctl做什么?它在哪里存储这些设置更改? 这些隧道的最佳 MTU 是多少?(通过同样以 1500 MTU 运行的加密/多路复用通道运行 1500 MTU 接口听起来是错误的)! 我应该如何检测到它关闭的链接并将其恢复?(例如,我应该何时使用tunctl -d或明确使用ifconfig tun0 0.0.0.0 down)。 关于限制非 root 用户访问的繁琐细节。
请记住,即使是打印机固件(假设它是打印机而不是像 CUPS 这样的打印服务器)也存在安全漏洞。有报道称打印机安装了“机器人”。您可能会收到来自人们的随机消息,就像垃圾传真一样。
如果您可以运行 ssh(和 Linux 等),则可以设置 VPN。你也可以考虑 OpenVPN 或 IPSec。但是,对于小型部署,尤其是临时部署……
ssh
可能是最简单的,并且可以在大多数地方通过大多数 NAT/NAPT 和其他奇怪的本地网络工作。(想想我们的笔记本电脑在随机当地咖啡店的 WiFi)。OpenSSH 4.3 及更高版本支持 VPN 隧道功能。因此,您可以使用...和
ssh
等选项开始连接-w0:0
(假设您已经制作了/dev/net/tun
设备并完成了适当的tunctl
魔法以启用任何类型的 TAP/tun 网络)。一旦您建立了这样的隧道,您应该能够通过该隧道安全地访问您的打印机、文件共享、电子邮件、内部网络接口等。
最终我会为此写一个适当的 HOWTO(我在网上找到的大多数都缺少一些细节)。另外,我想摆弄其中的一些,让它以非 root 身份运行,并在其周围放置一个包装器,以便在断开连接时自动重启等等。但这里有一些基本说明。
我假设您正在运行 Linux ... Debian 或 Ubuntu。(应该在任何较新的发行版下工作,并且对于 RHEL/CentOS 或 Novell 来说可能更容易一些,因为我认为这些
tunctl
命令将在不同的包中具有)。创建静态高度量拒绝路由:
路由添加 -host 172.31.1.2 拒绝
创建您的主
tun
设备:cd /dev/ && MAKEDEV tun; ls -l /dev/net/tun*
运行
tunctl
以在下一个可用隧道(tun0
等)上设置持久性。tunctl -t tun0 ## -u $SOMEUSER ???
(该
tunctl
命令似乎可以从uml-utilities包中获得,这似乎很奇怪,因为它与 OpenVPN、Vtun 以及现在的 OpenSSH/VPN 配置一起使用,与用户模式 Linux 完全不同;而且它似乎做出了“神奇”的持久更改,我还没弄清楚这个存储在哪里。我真的必须去阅读源代码)!PermitTunnel yes
或PermitTunnel point-to-point
到/etc/ssh/sshd_config
创建密钥对
ssh-keygen
从客户端将公钥部署到服务器:
猫 /.../.ssh/id_*.pub | ssh "root@$VPNGATE" 'cat >> /root/.ssh/authorized_keys'
(注意:有使用受限访问密钥执行此操作的详细信息,在
authorized_keys
添加sudo
NOPASSWD: 条目ifup
等时将所述限制添加到密钥末尾ifdown
。(有关更多详细信息,请参见:Shadows of Epiphany)。运行以下脚本:
ssh -f -w0:0 "root@$VPNGATE" 'ifconfig tun0 172.31.1.2 pointopoint 172.31.1.1 mtu 536 up'
ifconfig tun0 172.31.1.1 pointopoint 172.31.1.2 mtu 536 up
...您现在应该有一个有效的 VPN 隧道。这
ifconfig
将创建一个具有较低指标的路由,这样就可以了。您现在可以访问 $VPNGATE 上的任何服务(包括其打印机、NFS 等),只要您通过专用的 PPP 调制解调器连接拨入它即可。注意:要访问$VPNGATE后面的其他系统, 您必须确保这些系统知道您的 172.31。. (VPN) 路由(至少它们的默认路由器应该有指向 $VPNGATE 的静态路由......当然,用于回程。或者,您可以在 $VPNGATE 上执行 NAT,以便您的所有远程/笔记本电脑流量“看起来像”流量从 $VPNGATE 到网络的其余部分。无论哪种方式,您都必须
sysctl -w net.ipv4.ip_forward
(在 $VPNGATE 上),就像任何其他类型的路由一样。如您所见,这是一个非常粗略的大纲,我必须为自己的使用找出更多细节。
tunctl
做什么?它在哪里存储这些设置更改?tunctl -d
或明确使用ifconfig tun0 0.0.0.0 down
)。