介紹
當您首次創建一個新的Rocky Linux 8伺服器時,有一些配置步驟您應該在基本設置中盡早完成。這將提高您伺服器的安全性和可用性,並為後續操作打下堅實的基礎。
步驟1 — 以root身份登錄
要登錄您的伺服器,您需要知道您的伺服器的公共IP地址。您還需要密碼或者,如果您安裝了用於驗證的SSH金鑰,則需要root用戶帳戶的私鑰。如果您尚未登錄到伺服器,您可能需要參考我們的文檔如何使用SSH連接到您的Droplet,該文檔詳細介紹了此過程。
如果您尚未連接到伺服器,請立即以root用戶身份使用以下命令登錄(將命令中的突出顯示部分替換為您的伺服器的公共IP地址):
接受主機驗證警告,如果出現的話。如果您正在使用密碼驗證,請提供您的root密碼以登錄。如果您使用的是帶有密碼保護的SSH金鑰,您可能會在每個會話的第一次使用該金鑰時被提示輸入密碼。如果這是您首次使用密碼登錄到伺服器,您可能還會被提示更改root密碼。
關於 Root
在 Linux 環境中,root 使用者是管理使用者,具有非常廣泛的特權。由於root帳戶的特權提升,強烈建議您不要定期使用它。這是因為root帳戶所具有的部分權力包括即使是意外地進行非常破壞性的更改。因此,下一步是建立一個具有日常工作範圍限制的替代使用者帳戶。這個帳戶仍然可以在必要時獲得增加的特權。
步驟 2 — 創建新使用者
一旦您以root身份登錄,您可以創建我們從現在開始使用的新使用者帳戶。
這個範例創建了一個名為sammy的新使用者,但你可以用任何你喜歡的使用者名稱來取代它:
接下來,為sammy
使用者設置一個強密碼:
你將會被提示兩次輸入密碼。完成後,你的使用者將可以使用,但首先我們會給這個使用者額外的權限來使用sudo
命令。這將允許我們在必要時以root身份運行命令。
步驟3 — 授予管理權限
現在,我們有了一個具有常規帳戶權限的新使用者帳戶。然而,我們有時可能需要執行管理任務。
為了避免不得不退出我們的常規使用者並以root帳戶重新登錄,我們可以為我們的常規帳戶設置所謂的“超級使用者”或root權限。這將允許我們的常規使用者在每個命令前加上sudo
詞來以管理員權限運行命令。
為了為我們的新使用者添加這些權限,我們需要將新使用者添加到wheel群組中。在Rocky Linux 8上,預設情況下,屬於wheel群組的使用者被允許使用sudo
命令。
作為 root,運行以下命令將您的新用戶添加到 wheel 群組(將突出顯示的單詞替換為您的新用戶名):
現在,以您的常規用戶身份登錄後,您可以在命令前輸入 sudo
以使用超級用戶權限執行操作。
第 4 步 — 設置基本防火牆
防火牆為您的服務器提供基本安全級別。這些應用程序負責阻止對您的服務器的每個端口的流量,除非您已明確批准了那些端口/服務。Rocky Linux 有一個名為 firewalld
的服務來執行此功能。一個名為 firewall-cmd
的工具用於配置 firewalld
防火牆策略。
注意:如果您的服務器運行在 DigitalOcean 上,您可以選擇使用 DigitalOcean 云防火牆 而不是 firewalld
。我們建議一次只使用一個防火牆,以避免可能難以調試的衝突規則。
首先安裝 firewalld
:
默認的 firewalld
配置允許 ssh
連接,因此我們可以立即啟動防火牆:
檢查服務狀態以確保已啟動:
Output● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago
Docs: man:firewalld(1)
Main PID: 13180 (firewalld)
Tasks: 2 (limit: 5059)
Memory: 22.4M
CGroup: /system.slice/firewalld.service
└─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
請注意,它既是active
又是enabled
,這意味著如果伺服器重新啟動,它將會預設啟動。
現在服務已經啟動,我們可以使用firewall-cmd
工具來獲取和設置防火牆的策略信息。
首先讓我們列出已經允許的服務:
Outputpublic (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
要查看可以按名稱啟用的其他服務,輸入:
要添加應該允許的服務,請使用--add-service
標誌:
這將添加http
服務並允許傳入的TCP流量到端口80
。在重新加載防火牆後,配置將更新:
請記住,您將不得不明確地為以後可能配置的任何其他服務(或端口)打開防火牆。
步驟5 —— 為您的普通用戶啟用外部訪問
現在我們有了一個用於日常使用的常規非root用戶,我們需要確保我們可以使用它來SSH到我們的伺服器。
注意:在确认您可以使用新用户登录并使用sudo
之前,我们建议保持登录为root。这样,如果出现问题,您可以作为root进行故障排除并进行任何必要的更改。如果您使用的是DigitalOcean Droplet并且在root SSH连接中遇到问题,您可以通过DigitalOcean控制台登录到Droplet。
为新用户配置SSH访问的过程取决于您的服务器的root帐户是使用密码还是SSH密钥进行身份验证。
如果Root帐户使用密码身份验证
如果您使用密码登录到您的root帐户,则SSH已启用密码身份验证。您可以通过打开新的终端会话并使用新用户名的SSH来SSH到您的新用户帐户:
输入您的常规用户密码后,您将登录。请记住,如果您需要以管理员权限运行命令,请在其前面键入sudo
,就像这样:
在每个会话中首次使用sudo
时,您将被要求输入常规用户密码(以及以后的一段时间)。
為了增強您的伺服器安全性,我們強烈建議設置SSH密鑰,而不是使用密碼驗證。按照我們的指南 在Rocky Linux 8上設置SSH密鑰 來學習如何配置基於密鑰的驗證。
如果根帳戶使用SSH密鑰驗證
如果您使用SSH密鑰登錄到您的 根 帳戶 ,那麼SSH將禁用密碼驗證。您需要將您的公鑰副本添加到新用戶的 ~/.ssh/authorized_keys
文件中才能成功登錄。
由於您的公鑰已經在伺服器上的 根 帳戶的 ~/.ssh/authorized_keys
文件中,我們可以將該文件和目錄結構複製到我們的新用戶帳戶。
使用 rsync
命令最簡單地複製具有正確所有者和權限的文件。這將複製 根 用戶的 .ssh
目錄,保留權限並修改文件所有者,所有這些操作都在一個命令中完成。請確保更改以下命令中的突出顯示部分以匹配您的常規用戶名稱:
注意: rsync
命令处理以斜杠结尾和不以斜杠结尾的源和目标有所不同。在使用 rsync
时,请确保源目录(~/.ssh
)没有以斜杠结尾(检查确保你没有使用 ~/.ssh/
)。
如果你意外地在命令中添加了斜杠,rsync
将会复制根帐户的 ~/.ssh
目录的内容到 sudo
用户的主目录,而不是复制整个 ~/.ssh
目录结构。文件将会在错误的位置,SSH 将无法找到并使用它们。
现在,在本地机器上的一个新终端中,用你的非根用户打开一个新的 SSH 会话:
你应该已经登录到新用户账户,而不需要使用密码。记住,如果你需要以管理员权限运行命令,请在命令前加上 sudo
,就像这样:
在每个会话中首次使用 sudo
时(以及之后的一段时间),你将被要求输入常规用户密码。
结论
此时,你已经为你的服务器建立了一个坚实的基础。你现在可以在服务器上安装任何你需要的软件。
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8