Centos

CentOS 7 VPN 伺服器

  • December 4, 2014

如何使用 CentOS 7 設置遠端 Internet Web 伺服器,使其完全被 VPN 屏蔽? 這是案例:

1.) This means that ALL requests for ANY interaction with the web server  
   would have to come through the VPN from a known user. Including  
   http/https requests.  
2.) Each server might have only 20 users who would connect to the server  
   over the internet to work with highly sensitive data that needs  
   tight security.  
3.) The users would not actually log into the OS.  
4.) Instead, the users would simply make http/https requests from pre-registered  
   devices that also contain a unique key identifying the user.  
5.) There would be one administrator who logs into the OS remotely,  
   but all other users would just have secure http/https access.  
6.) If any request came from a non-known device outside the vpn,  
   the request would be bounced off as if the server was not there.   
7.) But the server is connected to the internet and all VPN connections  
   come through the internet.  

我讀過這OpenSSH是目前版本的VPN。我喜歡它似乎可以讓你使用 1024 位加密密鑰,但我的印像是我只能使用 OpenSSH 遠端登錄到作業系統,而不是鎖定所有進入機器的路由,包括 http/https 請求。是否OpenSSH能夠如上所述鎖定整個伺服器?

我開始閱讀有關OpenVPN. 我看到這OpenVPN需要許可費。許可費並非不可能,但我想知道在嘗試付費選項之前是否有免費選項。我還想確保OpenVPN可以做我上面描述的事情。

我所讀到的pptp似乎暗示pptp只支持 128 位加密密鑰,並且可能無法完成上述所有操作。

據我所知,如果沒有定制/商業產品來鎖定所有內容,您將無法實現所需的所有功能。

在詳細說明如何滿足所需標準時,請牢記以下幾點:

典型的 VPN 解決方案添加路由。對於要添加的路由,使用者需要對客戶端電腦具有管理權限。情況並非總是如此,尤其是在使用雇主提供的硬體時。根據實施情況,現有的 VPN 解決方案有關於該主題的解決方法。據我所知,OpenVPN 在安裝客戶端時會註冊一個 Windows 服務,它會根據使用者操作的實際客戶端的請求添加路由。Tunnelblick(OpenVPN 的 OS X 客戶端)也做了一些巫術來使路由工作,並且在某些時候還需要管理權限。因此,OpenVPN 在配置客戶端以解決該問題時至少需要一些努力。

由於至少 OpenVPN 可以“連接後”添加路由,因此使用者實際上可以自己添加其他路由。假設 OpenVPN 伺服器將路由推送到一些應該可以通過 OpenVPN 訪問的主機。這會導致客戶端將路由添加到這些主機。沒有禁止使用者向其他主機添加更多路由的機制。因此,如果這些路由實際上是有效的,則可以訪問未經授權的後端。為了防止這種情況發生,伺服器上的防火牆必須是密閉的,除了允許主機的流量外,不允許任何東西。

如果您要提供的基礎設施必須可供經常從酒店訪問伺服器的員工使用,VPN 可能根本不可用。有不少酒店不轉發 VPN 連接所需的流量。在某些情況下,只允許使用埠 80 和 443。

擺脫我對 OpenVPN 的想法,據我所知,您只允許來自“受信任”設備的連接是不可能的。這將通過防火牆(在 CentOS 的情況下通常是 iptables)來實現。您想要的規則將DROP來自不受信任的設備的數據包。不幸的是,iptables 現在可以檢查設備是否受信任,因為此類資訊不是數據包的一部分。儘管至少在兼容的網路中存在以類似方式過濾的解決方案(如果您對此主題感興趣,請向 Google 諮詢通用動力公司的 PitBull Foundation)。

現在開始思考我將如何實際實施您的方案,儘管缺乏一些必需的標準。

首先,OpenSSH 不是 VPN 解決方案。它能夠建立類似 VPN 的隧道,但據我所知,其他 VPN 解決方案在性能和功能方面優於 OpenSSH 方法。

話雖如此,您提到,使用者通常只會使用 http/https 服務。這些可以通過 SSH 隧道輕鬆訪問,無需任何類似 VPN 的功能。我不會詳細介紹如何配置它,但我會指出使用 OpenSSH 的一般方法。

可能有意義的第一件事是將 SSH 守護程序配置為使用埠 80 或 443。這將使使用者能夠從幾乎任何地方連接到伺服器,甚至是酒店。

關於安全性,sshd 配置允許添加匹配使用者、主機等的規則。這意味著,您實際上可以將使用者流量限製到 OpenSSH 伺服器後面的特定主機,而無需在防火牆中過濾。這樣的規則可能如下所示:

Match User JohnDoe
   AllowTcpForwarding yes
   PermitOpen internal.resource:80 other.internal:443

安全身份驗證是強制性的。OpenSSH 可以利用 PAM 模組對使用者進行身份驗證。有多種可能性,例如針對 LDAP、Radius 等進行身份驗證。以簡單的方式使用 2 因素身份驗證的絕妙解決方案是使用 Google Authenticator,它也具有 PAM 模組。有幾個資源指出瞭如何配置 OpenSSH 以使用 Google Authenticator。

實際上,使用此解決方案時最困難的部分是客戶端發生的事情。客戶端需要一個支持隧道使用的 SSH 客戶端。最重要的是,客戶端必須知道如何使用客戶端以及如何連接到已建立的隧道。我從 shell 手動打開隧道,但典型使用者可能無法在沒有培訓的情況下完成此類任務。乍一看,這個客戶端可能有用:Auto(matic) SSH Tunnel Manager

要將我建議的解決方案與您的需求列表相匹配:

  1. 所有請求都將通過 SSH 隧道。只需通過網際網路訪問 SSH 伺服器的一個埠。查看。
  2. 如果您只是創建並允許這 20 個使用者,其他任何人都無法連接。查看。
  3. 如果配置正確,使用者將不會獲得 shell。建立隧道不需要外殼。查看。
  4. 使用 2 因素身份驗證將是我建議的替代方案,但您也可以使用每個設備的密鑰進行 pubkey-authentication。但是:這些密鑰可以轉移到其他設備。所以沒有任何進一步的研究:沒有檢查,但流量可能僅限於 http/https。
  5. root 或任何指定的使用者都可以配置為在連接時獲取 shell。查看。
  6. 不可能。
  7. 在我的解決方案中,它不是“VPN”,但是是的,訪問會以這種方式工作。查看。

引用自:https://unix.stackexchange.com/questions/171320