Rocky Linux 8 的初始服务器设置

介紹

當您首次創建一個新的Rocky Linux 8伺服器時,有一些配置步驟您應該在基本設置中盡早完成。這將提高您伺服器的安全性和可用性,並為後續操作打下堅實的基礎。

步驟1 — 以root身份登錄

要登錄您的伺服器,您需要知道您的伺服器的公共IP地址。您還需要密碼或者,如果您安裝了用於驗證的SSH金鑰,則需要root用戶帳戶的私鑰。如果您尚未登錄到伺服器,您可能需要參考我們的文檔如何使用SSH連接到您的Droplet,該文檔詳細介紹了此過程。

如果您尚未連接到伺服器,請立即以root用戶身份使用以下命令登錄(將命令中的突出顯示部分替換為您的伺服器的公共IP地址):

  1. ssh root@your_server_ip

接受主機驗證警告,如果出現的話。如果您正在使用密碼驗證,請提供您的root密碼以登錄。如果您使用的是帶有密碼保護的SSH金鑰,您可能會在每個會話的第一次使用該金鑰時被提示輸入密碼。如果這是您首次使用密碼登錄到伺服器,您可能還會被提示更改root密碼。

關於 Root

在 Linux 環境中,root 使用者是管理使用者,具有非常廣泛的特權。由於root帳戶的特權提升,強烈建議您不要定期使用它。這是因為root帳戶所具有的部分權力包括即使是意外地進行非常破壞性的更改。因此,下一步是建立一個具有日常工作範圍限制的替代使用者帳戶。這個帳戶仍然可以在必要時獲得增加的特權。

步驟 2 — 創建新使用者

一旦您以root身份登錄,您可以創建我們從現在開始使用的新使用者帳戶。

這個範例創建了一個名為sammy的新使用者,但你可以用任何你喜歡的使用者名稱來取代它:

  1. adduser sammy

接下來,為sammy使用者設置一個強密碼:

  1. passwd sammy

你將會被提示兩次輸入密碼。完成後,你的使用者將可以使用,但首先我們會給這個使用者額外的權限來使用sudo命令。這將允許我們在必要時以root身份運行命令。

步驟3 — 授予管理權限

現在,我們有了一個具有常規帳戶權限的新使用者帳戶。然而,我們有時可能需要執行管理任務。

為了避免不得不退出我們的常規使用者並以root帳戶重新登錄,我們可以為我們的常規帳戶設置所謂的“超級使用者”或root權限。這將允許我們的常規使用者在每個命令前加上sudo詞來以管理員權限運行命令。

為了為我們的新使用者添加這些權限,我們需要將新使用者添加到wheel群組中。在Rocky Linux 8上,預設情況下,屬於wheel群組的使用者被允許使用sudo命令。

作為 root,運行以下命令將您的新用戶添加到 wheel 群組(將突出顯示的單詞替換為您的新用戶名):

  1. usermod -aG wheel sammy

現在,以您的常規用戶身份登錄後,您可以在命令前輸入 sudo 以使用超級用戶權限執行操作。

第 4 步 — 設置基本防火牆

防火牆為您的服務器提供基本安全級別。這些應用程序負責阻止對您的服務器的每個端口的流量,除非您已明確批准了那些端口/服務。Rocky Linux 有一個名為 firewalld 的服務來執行此功能。一個名為 firewall-cmd 的工具用於配置 firewalld 防火牆策略。

注意:如果您的服務器運行在 DigitalOcean 上,您可以選擇使用 DigitalOcean 云防火牆 而不是 firewalld。我們建議一次只使用一個防火牆,以避免可能難以調試的衝突規則。

首先安裝 firewalld

  1. dnf install firewalld -y

默認的 firewalld 配置允許 ssh 連接,因此我們可以立即啟動防火牆:

  1. systemctl start firewalld

檢查服務狀態以確保已啟動:

  1. systemctl status firewalld
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工具來獲取和設置防火牆的策略信息。

首先讓我們列出已經允許的服務:

  1. firewall-cmd --permanent --list-all
Output
public (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:

要查看可以按名稱啟用的其他服務,輸入:

  1. firewall-cmd --get-services

要添加應該允許的服務,請使用--add-service標誌:

  1. firewall-cmd --permanent --add-service=http

這將添加http服務並允許傳入的TCP流量到端口80。在重新加載防火牆後,配置將更新:

  1. firewall-cmd --reload

請記住,您將不得不明確地為以後可能配置的任何其他服務(或端口)打開防火牆。

步驟5 —— 為您的普通用戶啟用外部訪問

現在我們有了一個用於日常使用的常規非root用戶,我們需要確保我們可以使用它來SSH到我們的伺服器。

注意:在确认您可以使用新用户登录并使用sudo之前,我们建议保持登录为root。这样,如果出现问题,您可以作为root进行故障排除并进行任何必要的更改。如果您使用的是DigitalOcean Droplet并且在root SSH连接中遇到问题,您可以通过DigitalOcean控制台登录到Droplet

为新用户配置SSH访问的过程取决于您的服务器的root帐户是使用密码还是SSH密钥进行身份验证。

如果Root帐户使用密码身份验证

如果您使用密码登录到您的root帐户,则SSH已启用密码身份验证。您可以通过打开新的终端会话并使用新用户名的SSH来SSH到您的新用户帐户:

  1. ssh sammy@your_server_ip

输入您的常规用户密码后,您将登录。请记住,如果您需要以管理员权限运行命令,请在其前面键入sudo,就像这样:

  1. sudo command_to_run

在每个会话中首次使用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 将无法找到并使用它们。

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

现在,在本地机器上的一个新终端中,用你的非用户打开一个新的 SSH 会话:

  1. ssh sammy@your_server_ip

你应该已经登录到新用户账户,而不需要使用密码。记住,如果你需要以管理员权限运行命令,请在命令前加上 sudo,就像这样:

  1. sudo command_to_run

在每个会话中首次使用 sudo 时(以及之后的一段时间),你将被要求输入常规用户密码。

结论

此时,你已经为你的服务器建立了一个坚实的基础。你现在可以在服务器上安装任何你需要的软件。

Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8