保護ssh伺服器的最佳方法

保護Linux系統的SSH連線以保護系統和資料。系統管理員和家庭使用者都需要加固和保護面向網際網路的計算機,但SSH可能很複雜。這裡有十個簡單的快速勝利來幫助保護您的SSH伺服器。...

保護Linux系統的SSH連線以保護系統和資料。系統管理員和家庭使用者都需要加固和保護面向網際網路的計算機,但SSH可能很複雜。這裡有十個簡單的快速勝利來幫助保護您的SSH伺服器。

ssh安全基礎

SSH代表Secure Shell。“SSH”這個名稱可以互換地表示SSH協議本身或允許系統管理員和使用者使用該協議與遠端計算機進行安全連線的軟體工具。

SSH協議是一種加密協議,用於在不安全的網路(如internet)上提供安全連線。Linux中的SSH構建在OpenSSH專案的可移植版本上。它是在一個經典的客戶機-伺服器模型中實現的,SSH伺服器接受來自SSH客戶機的連線。客戶端用於連線到伺服器並向遠端使用者顯示會話。伺服器接受連線並執行會話。

在預設配置中,SSH伺服器將偵聽傳輸控制協議(TCP)埠22上的傳入連線。因為這是一個標準化的、眾所周知的埠,所以它是威脅參與者和惡意機器人的目標。

威脅參與者會啟動機器人程式,掃描一系列IP地址,尋找開放的埠。然後探測埠以檢視是否存在可利用的漏洞。認為“我很安全,壞人瞄準的目標比我更大更好”是錯誤的推理。機器人並不是根據任何優點來選擇目標,而是有條不紊地尋找能夠突破的系統。

如果你還沒有保護好你的系統,你就把自己列為受害者。

安全摩擦

安全摩擦是指當您實施安全措施時,使用者和其他人將經歷的任何程度的惱怒。我們有很長的記憶,還記得把新使用者介紹給計算機系統,聽到他們用可怕的聲音問他們是否真的必須在每次登入主機時輸入密碼。對他們來說是安全摩擦。

(順便說一句,密碼的發明歸功於費爾南多·J·科爾巴託,他是電腦科學家萬神殿中的另一位人物,他的共同工作促成了Unix的誕生。)

引入安全措施通常會給某人帶來某種形式的摩擦。企業主必須為此付出代價。計算機使用者可能需要改變他們熟悉的做法,或者記住另一組身份驗證細節,或者新增額外的步驟才能成功連線。系統管理員將有額外的工作要做,以實施和維護新的安全措施。

加固和鎖定一個Linux或Unix類作業系統可能會非常複雜,非常迅速。我們在這裡介紹的是一組易於實現的步驟,這些步驟將提高您的計算機的安全性,而無需第三方應用程式,也無需挖掘防火牆。

這些步驟並不是SSH安全性的最終決定,但它們將使您遠離預設設定,而且不會有太多摩擦。

使用ssh協議版本2

2006年,SSH協議從版本1更新到版本2。這是一次重大的升級。有太多的變化和改進,特別是在加密和安全性方面,版本2與版本1不向後相容。要防止來自版本1客戶端的連線,可以規定您的計算機只接受來自版本2客戶端的連線。

為此,請編輯/etc/ssh/sshd\u配置檔案。在這篇文章中我們將經常這樣做。無論何時需要編輯此檔案,都要使用以下命令:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

新增行:

Protocol 2

保護ssh伺服器的最佳方法

然後儲存檔案。我們將重新啟動SSH守護程序。同樣,在本文中,我們將經常這樣做。這是在每種情況下使用的命令:

sudo systemctl restart sshd

保護ssh伺服器的最佳方法

讓我們檢查一下我們的新設定是否有效。我們將跳到另一臺機器,並嘗試SSH到我們的測試機器上。我們將使用-1(protocol1)選項強制ssh命令使用protocolversion1。

ssh -1 [email protected]

保護ssh伺服器的最佳方法

太好了,我們的連線請求被拒絕了。讓我們確保我們仍然可以連線到協議2。我們將使用-2(協議2)選項來證明這個事實。

ssh -2 [email protected]

保護ssh伺服器的最佳方法

SSH伺服器正在請求我們的密碼這一事實是一個積極的跡象,表明已經建立了連線,並且您正在與伺服器進行互動。實際上,因為現代SSH客戶機將預設使用協議2,所以只要客戶機是最新的,我們就不需要指定協議2。

ssh [email protected]

保護ssh伺服器的最佳方法

我們的聯絡被接受了。因此,只有較弱和不太安全的協議1連線被拒絕。

避開埠22

埠22是SSH連線的標準埠。如果您使用不同的埠,它會透過對系統的模糊性增加一點安全性。默默無聞的安全性從來都不是一種真正的安全措施,我在其他文章中對此進行了抨擊。事實上,一些更聰明的攻擊機器人會探測所有開啟的埠並確定它們攜帶的是哪種服務,而不是依賴於一個簡單的埠查詢列表並假設它們提供通常的服務。但使用非標準埠有助於降低22埠的噪音和不良流量。

要配置非標準埠,請編輯SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

刪除“Port”行開頭的雜湊,並用您選擇的埠號替換“22”。儲存配置檔案並重新啟動SSH守護程式:

sudo systemctl restart sshd

讓我們看看有什麼影響。在另一臺計算機上,我們將使用ssh命令連線到伺服器。ssh命令預設使用埠22:

ssh [email protected]

保護ssh伺服器的最佳方法

我們的聯絡被拒絕了。讓我們使用-p(port)選項重試並指定埠470:

ssh -p 479 [email protected]

保護ssh伺服器的最佳方法

我們的聯絡被接受了。

使用tcp包裝器篩選連線

TCP Wrappers是一個易於理解的訪問控制列表。它允許您根據連線請求的特徵(如IP地址或主機名)排除和允許連線。TCP包裝器應該與正確配置的防火牆結合使用,而不是代替防火牆。在我們的特定場景中,我們可以透過使用TCP包裝器來相當程度地收緊內容。

TCP包裝器已經安裝在用於研究本文的ubuntu18.04lts機器上。它必須安裝在Manjaro18.10和Fedora30上。

要在Fedora上安裝,請使用以下命令:

sudo yum install tcp_wrappers

保護ssh伺服器的最佳方法

要在Manjaro上安裝,請使用以下命令:

sudo pacman -Syu tcp-wrappers

保護ssh伺服器的最佳方法

涉及兩個檔案。一個持有允許列表,另一個持有拒絕列表。使用以下命令編輯拒絕列表:

sudo gedit /etc/hosts.deny

保護ssh伺服器的最佳方法

這將開啟gedit編輯器,其中載入了deny檔案。

保護ssh伺服器的最佳方法

您需要新增行:

ALL : ALL

然後儲存檔案。阻止所有未經授權的訪問。我們現在需要授權您希望接受的連線。為此,您需要編輯允許檔案:

sudo gedit /etc/hosts.allow

保護ssh伺服器的最佳方法

這將開啟gedit編輯器,其中載入了allow檔案。

保護ssh伺服器的最佳方法

我們已經添加了SSH守護程式名稱SSHD,以及允許建立連線的計算機的IP地址。儲存檔案,看看限制和許可權是否有效。

首先,我們將嘗試從不在主機.允許檔案:

保護ssh伺服器的最佳方法

連線被拒絕。我們現在將嘗試從IP地址為192.168.4.23的計算機進行連線:

保護ssh伺服器的最佳方法

我們的聯絡被接受了。

我們這裡的例子有點殘酷,只有一臺計算機可以連線。TCP包裝器非常通用,而且比這更靈活。它支援主機名、萬用字元和子網掩碼以接受來自IP地址範圍的連線。我們鼓勵您檢視手冊頁。

拒絕沒有密碼的連線請求

雖然這是一種不好的做法,但是Linux系統管理員可以建立一個沒有密碼的使用者帳戶。這意味著來自該帳戶的遠端連線請求將沒有密碼可供檢查。這些連線將被接受,但未經驗證。

SSH的預設設定接受不帶密碼的連線請求。我們可以很容易地更改它,並確保所有連線都經過身份驗證。

我們需要編輯您的SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

滾動檔案,直到看到帶有“#permittentypasswords no.”的行。從行的開頭刪除雜湊並儲存檔案。重新啟動SSH守護程式:

sudo systemctl restart sshd

使用ssh金鑰而不是密碼

SSH金鑰提供了登入SSH伺服器的安全方法。密碼可以猜測,破解,或暴力強迫。SSH金鑰不會受到此類攻擊。

生成SSH金鑰時,需要建立一對金鑰。一個是公鑰,另一個是私鑰。公鑰已安裝在要連線的伺服器上。私鑰,顧名思義,在您自己的計算機上是安全的。

SSH金鑰允許您在沒有密碼的情況下建立連線,而密碼與使用密碼身份驗證的連線相比更安全。

當您發出連線請求時,遠端計算機將使用其公鑰副本建立一條加密訊息,並將其傳送回您的計算機。因為它是用您的公鑰加密的,所以您的計算機可以用您的私鑰解除加密。

然後,您的計算機從訊息中提取一些資訊,特別是會話ID,對其進行加密,並將其傳送回伺服器。如果伺服器可以用您的公鑰副本對其進行解密,並且如果訊息中的資訊與伺服器傳送給您的資訊匹配,則確認您的連線來自您。

這裡,一個擁有SSH金鑰的使用者正在連線192.168.4.11的伺服器。請注意,不會提示他們輸入密碼。

ssh [email protected]

保護ssh伺服器的最佳方法

SSH金鑰本身值得一篇文章。很方便,我們有一個給你。下面介紹如何建立和安裝SSH金鑰。

相關:如何從Linux Shell建立和安裝SSH金鑰

完全禁用密碼驗證

當然,使用SSH金鑰的邏輯擴充套件是,如果所有遠端使用者都被迫採用它們,則可以完全關閉密碼驗證。

我們需要編輯您的SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

滾動檔案,直到看到以“#PasswordAuthentication yes”開頭的行。刪除行開頭的雜湊,將“yes”更改為“no”,然後儲存檔案。重新啟動SSH守護程式:

sudo systemctl restart sshd

禁用x11轉發

X11轉發允許遠端使用者透過SSH會話從伺服器執行圖形應用程式。在威脅參與者或惡意使用者手中,GUI介面可以使他們的惡意目的更容易實現。

網路安全的一個標準咒語是,如果你沒有真正的理由開啟它,就把它關掉。我們將透過編輯您的SSH配置檔案來完成此操作:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

滾動檔案,直到看到以“#X11Forwarding no.”開頭的行。從行的開頭刪除雜湊並儲存檔案。重新啟動SSH守護程式:

sudo systemctl restart sshd

設定空閒超時值

如果有一個已建立的SSH連線到您的計算機,並且在一段時間內沒有任何活動,則可能會帶來安全風險。使用者有可能離開了辦公桌,正在其他地方忙碌。任何經過他們辦公桌的人都可以坐下來開始使用他們的計算機,並透過SSH使用您的計算機。

設定超時限制要安全得多。如果非活動時段與時間限制匹配,SSH連線將被丟棄。我們將再次編輯您的SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

滾動檔案,直到看到以“#ClientAliveInterval 0”開頭的行。從行的開頭刪除雜湊,將數字0更改為所需的值。我們用了300秒,也就是5分鐘。儲存檔案,然後重新啟動SSH守護程式:

sudo systemctl restart sshd

設定密碼嘗試的限制

定義身份驗證嘗試次數的限制有助於阻止密碼猜測和暴力攻擊。在指定的身份驗證請求數之後,使用者將從SSH伺服器斷開連線。預設情況下,沒有限制。但這很快就得到了糾正。

同樣,我們需要編輯您的SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

滾動檔案,直到看到以“#maxauthries 0”開頭的行。刪除行開頭的雜湊#,將數字0更改為所需的值。我們這裡用了3個。進行更改時儲存檔案並重新啟動SSH守護程式:

sudo systemctl重啟sshd

我們可以透過嘗試連線並故意輸入錯誤的密碼來測試這一點。

保護ssh伺服器的最佳方法

請注意,MaxAuthTries number似乎比使用者允許的嘗試次數多了一次。在兩次錯誤的嘗試之後,我們的測試使用者斷開了連線。maxauthries設定為3。

禁用根登入

在Linux計算機上以root使用者身份登入是不好的做法。您應該以普通使用者身份登入,並使用sudo執行需要root許可權的操作。更重要的是,您不應該允許root登入到SSH伺服器。只允許普通使用者連線。如果他們需要執行管理任務,他們也應該使用sudo。如果您被迫允許root使用者登入,您至少可以強制他們使用SSH金鑰。

最後一次,我們必須編輯您的SSH配置檔案:

sudo gedit /etc/ssh/sshd_config

保護ssh伺服器的最佳方法

在檔案中滾動,直到看到以“#permitrotlogin prohibite password”開頭的行。從行的開頭刪除雜湊。

  • 如果要阻止root使用者登入,請將“禁止密碼”替換為“否”。
  • 如果您要允許root使用者登入,但強制他們使用SSH金鑰,請保留“禁止密碼”。

儲存更改並重新啟動SSH守護程式:

sudo systemctl restart sshd

最後一步

當然,如果您根本不需要在您的計算機上執行SSH,請確保它已被禁用。

sudo systemctl stop sshd sudo systemctl disable sshd

如果你不開啟窗戶,沒人能爬進去。

  • 發表於 2021-04-03 01:55
  • 閱讀 ( 47 )
  • 分類:網際網路

你可能感興趣的文章

用堡壘主機保護您的網路只需3個步驟

... 安裝SSH後,請確保將SSH伺服器設定為使用金鑰而不是密碼進行身份驗證。確保您的堡壘主機的IP與上面的埠轉發規則中設定的IP相同。 ...

  • 發佈於 2021-03-12 01:44
  • 閲讀 ( 60 )

在linux上保護隱私的10大技巧

... 1密碼保護您的帳戶 ...

  • 發佈於 2021-03-13 08:16
  • 閲讀 ( 59 )

ssh和vpn的區別是什麼?哪個更安全?

...透過向任何人**VPN接入來賺錢。他們經常在許多國家建立伺服器。人們被吸引到這些服務是因為各種各樣的原因,這些原因與連線到僱主的基礎設施無關。 ...

  • 發佈於 2021-03-14 04:40
  • 閲讀 ( 66 )

如何將資料從raspberry pi複製到pc:5種方法

...的方法來複制資料到計算機和從計算機。它可以執行網路伺服器,媒體伺服器,復古遊戲機等等。 ...

  • 發佈於 2021-03-15 10:48
  • 閲讀 ( 62 )

如何用ssh遠端管理linux伺服器

伺服器管理仍然是一項必要的任務,有時也很麻煩。使用遠端伺服器或無頭伺服器尤其困難。謝天謝地,有了安全Shell(SSH)。secureshell是一種網路協議,允許網路服務在不安全的網路上執行。 ...

  • 發佈於 2021-03-15 17:05
  • 閲讀 ( 55 )

如何直接連線到樹莓皮沒有網際網路

... 不過,這裡建議大家耐心等待。Pi將首先嚐試從DHCP伺服器獲取IP地址,然後在失敗時,預設為169.254.x.x範圍內的專用地址。您可能還發現,在PC或膝上型電腦上切換到飛航模式非常有用,以確保與網路上的其他裝置不混淆。...

  • 發佈於 2021-03-16 08:17
  • 閲讀 ( 54 )

哪種檔案傳輸方法最適合您的家庭網路?

當您建立自己的檔案伺服器或網路連線儲存時,您可能會驚訝地發現,您需要花多少心思來移動檔案。 ...

  • 發佈於 2021-03-19 07:34
  • 閲讀 ( 57 )

如何在一個樹莓圓周率主持自己的網站

... 或者您可以嘗試將一個樹莓Pi轉換成一個web伺服器,它能夠執行基本的web伺服器軟體。最棒的是,設定起來很簡單。 ...

  • 發佈於 2021-03-21 14:29
  • 閲讀 ( 58 )

linux的7個最佳VPN

...成後,可以透過鍵入expressvpn connect從命令列連線到最近的伺服器。要檢視可用伺服器的列表,請鍵入expressvpn list。要連線到特定伺服器,請使用expressvpn connect[LOCATION]。要斷開與ExpressVPN的連線,請鍵入ExpressVPN disconnect。 ...

  • 發佈於 2021-03-23 10:05
  • 閲讀 ( 99 )

ssh是什麼?它代表什麼?

... SSH使用上述兩種加密型別在客戶機-伺服器模型中建立安全連線。當客戶機試圖建立與伺服器的連線時,每一方都會通訊其加密協議。 ...

  • 發佈於 2021-03-28 08:50
  • 閲讀 ( 55 )
莓醞
莓醞

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦