我正在考慮通過 Internet 共享列印機,這意味著什麼?
NAT 到路由器適當埠上的 TCP/IP 列印機是否安全?我會從黑客那裡得到不需要的文件,還是這不是一個大問題?
請記住,即使是列印機韌體(假設它是列印機而不是像 CUPS 這樣的列印伺服器)也存在安全漏洞。有報導稱列印機安裝了“機器人”。您可能會收到來自人們的隨機消息,就像垃圾傳真一樣。
如果您可以執行 ssh(和 Linux 等),則可以設置 VPN。你也可以考慮 OpenVPN 或 IPSec。但是,對於小型且特別是ad hoc部署……
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 person 536 up
…您現在應該有一個有效的 VPN 隧道。這
ifconfig
將創建一個具有較低指標的路由,這樣就可以了。您現在可以訪問 $VPNGATE 上的任何服務(包括其列印機、NFS 等),只要您通過專用的 PPP 調製解調器連接撥入它即可。注意:要訪問$VPNGATE後面的其他系統, 您必須確保這些系統知道您的 172.31。. (VPN) 路由(至少它們的預設路由器應該有指向的靜態路由 $ VPNGATE … for the return trips, of course. Alternatively you could perform NAT on $ VPNGATE 使您的所有遠端/筆記型電腦流量“看起來像”從 $VPNGATE 到網路其餘部分的流量。無論哪種方式,您都必須
sysctl -w net.ipv4.ip_forward
(在 $VPNGATE 上),就像對任何其他類型的路由一樣。如您所見,這是一個非常粗略的大綱,我必須為自己的使用找出更多細節。
- 究竟在
tunctl
做什麼?它在哪裡儲存這些設置更改?- 這些隧道的最佳 MTU 是多少?(通過同樣以 1500 MTU 執行的加密/多路復用通道執行 1500 MTU 介面聽起來是錯誤的)!
- 我應該如何檢測到它關閉的連結並將其恢復?(例如,我應該何時使用
tunctl -d
或明確使用ifconfig tun0 0.0.0.0 down
)。- 關於限制非 root 使用者訪問的繁瑣細節。