将 TCP/IP 打印机通过 NAT 连接到路由器相应端口是否安全?我会从黑客那里得到不需要的文档吗?或者这不是一个大问题?
答案1
请记住,即使打印机固件(假设它是打印机而不是 CUPS 之类的打印服务器)也存在安全漏洞。有报道称打印机上安装了“机器人”。您可能会收到来自人们的随机消息,就像垃圾传真一样。
答案2
如果您可以运行 ssh(以及 Linux 等),则可以设置 VPN。您也可以考虑 OpenVPN 或 IPSec。但是,对于小型且特别特别指定部署...ssh
可能是最简单的,可以在大多数地方、通过大多数 NAT/NAPT 和其他奇怪的本地网络工作。(想想我们在当地咖啡店的笔记本电脑上的 WiFi)。
OpenSSH 4.3 版及更高版本支持 VPN 隧道功能。因此,您可以ssh
使用以下选项启动连接:-w0:0
... 和(假设您已制作好/dev/net/tun
设备并执行了适当的tunctl
操作以启用任何类型的 TAP/tun 网络)。
一旦建立了这样的隧道,您就应该能够通过该隧道安全地访问您的打印机、文件共享、电子邮件、内部网络交互等。
最终我会写一个关于这个的正确 HOWTO(我在网上找到的大多数 HOWTO 都缺少一些细节)。我还想尝试一些方法,让它以非 root 身份运行,并给它加上一个包装器,以便在断开连接时自动重启等等。但这里有一些基本说明。
我假设您运行的是 Linux ... Debian 或 Ubuntu。(应该可以在任何较新的发行版下工作,并且对于 RHEL/CentOS 或 Novell 来说可能更容易一些,因为我认为它们的命令tunctl
在不同的包中)。
创建静态高度量拒绝路由:
路由添加-主机 172.31.1.2 拒绝
创建您的主
tun
设备:cd /dev/ && MAKEDEV tun; ls -l /dev/net/tun*
运行
tunctl
以在下一个可用隧道上设置持久性(tun0
等等)。tunctl -t tun0 ## -u $SOMEUSER ???
(该tunctl
命令似乎可以从uml 实用程序这个包看起来很奇怪,因为它与 OpenVPN、Vtun 以及现在的 OpenSSH/VPN 配置一起使用,与用户模式 Linux 完全不同;而且它似乎做出了“神奇的”持久更改,我还没弄清楚它存储在哪里。我真的得去读一下源代码了!
- 添加
PermitTunnel yes
或PermitTunnel point-to-point
/etc/ssh/sshd_config
创建密钥对
ssh-keygen
从客户端将公钥部署到服务器:
cat /.../.ssh/id_*.pub | ssh "root@$VPNGATE" 'cat >> /root/.ssh/authorized_keys'
authorized_keys
(注意:使用受限访问密钥执行此操作的详细信息,在添加sudo
NOPASSWD:条目的密钥末尾添加所述限制,ifup
等等ifdown
。(请参阅:显圣的阴影更多细节)。
运行以下脚本:
ssh -f -w0:0“root@$VPNGATE”'ifconfig tun0 172.31.1.2 pointopoint 172.31.1.1 mtu 536 启动'
ifconfig tun0 172.31.1.1 pointopoint 172.31.1.2 mtu 536 启动
... 现在您应该有一个可以正常工作的 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 用户访问的繁琐细节。