Rocky Linux 9 的初始伺服器設定

介紹

當您首次創建新的Rocky Linux 9伺服器時,作為初始設置的一部分,有一些配置步驟是您應該在早期進行的。這將提高伺服器的安全性和可用性,為您搭建堅實的基礎。

第1步 — 以root身份登錄

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

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

  1. ssh root@your_server_ip

接受有关主机真实性的警告,如果出现。如果您使用密码验证,请提供您的root密码以登录。如果您使用带有口令保护的SSH密钥,可能会在每个会话的第一次使用密钥时提示您输入口令。如果这是您首次使用密码登录服务器,您可能还会被提示更改root密码。

关于Root

root用户是Linux环境中的管理员用户,拥有非常广泛的权限。由于root帐户的特权较高,建议您不要经常使用它。这是因为root帐户具有进行非常破坏性更改的能力,甚至可能是意外的。

因此,下一步是设置一个具有日常工作中减小影响范围的备用用户帐户。这个帐户在必要时仍然可以获得增加的特权。

第2步 —— 创建新用户

一旦以root身份登录,您可以创建一个新用户帐户,以后将用该帐户登录。

這個例子創建了一個名為sammy的新使用者,但你應該用你喜歡的任何使用者名稱替換它:

  1. adduser sammy

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

  1. passwd sammy

系統將提示你輸入密碼兩次。完成後,你的使用者將準備好使用,但首先你會賦予這個使用者額外的權限,以便使用sudo指令。這將允許你在需要時以root身份運行指令。

第三步 — 賦予管理權限

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

為了避免必須登出你的常規使用者,然後再以root帳戶登入,你可以設置所謂的“超級使用者”或root權限給你的常規帳戶。這將允許你的常規使用者在每個指令前加上sudo來以管理權限運行指令。

要將這些權限添加到你的新使用者,你需要將新使用者添加到wheel群組。在Rocky Linux 9上,屬於wheel群組的使用者默認被允許使用sudo指令。

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

  1. usermod -aG wheel sammy

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

第4步 — 設置防火牆

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

注意:如果您的服務器運行在DigitalOcean上,您可以選擇使用DigitalOcean Cloud Firewalls而不是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 Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago Docs: man:firewalld(1) Main PID: 15060 (firewalld) Tasks: 4 (limit: 10938) Memory: 28.1M CPU: 6.127s CGroup: /system.slice/firewalld.service └─15060 /usr/bin/python3 -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来登录到新用户帐户:

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

第一次每个会话(以及以后定期)使用sudo时,将要求输入您的常规用户密码。

為了增強伺服器的安全性,您應該設置SSH金鑰,而不是使用密碼驗證。請按照在Rocky Linux 9上設置SSH金鑰的指南來了解如何配置基於金鑰的身份驗證。

如果根帳戶使用SSH金鑰身份驗證

如果您使用SSH金鑰登錄到您的根帳戶,那麼SSH的密碼驗證就會被禁用。您需要將您的公鑰副本添加到新用戶的〜/ .ssh / authorized_keys文件中以成功登錄。

由於您的公鑰已經在伺服器上的帳戶的〜/ .ssh / authorized_keys文件中,您可以複製該文件和目錄結構到您的新用戶帳戶。

使用rsync命令以正確的所有權和權限複製文件是最直接的方法。這將複製用戶的 .ssh 目錄,保留權限並修改文件擁有者,全部在一個命令中。請確保更改下面命令中的突出顯示部分,以匹配您的常規用戶名:

注意: rsync 命令对以斜杠结尾和不以斜杠结尾的源和目标处理方式不同。在使用以下 rsync 命令时,请确保源目录(~/.ssh不包含尾随斜杠(检查确保未使用 ~/.ssh/)。

如果您不小心在命令中添加了尾随斜杠,rsync 将会将 内容root 账户的 ~/.ssh 目录复制到 sudo 用户的主目录,而不是复制整个 ~/.ssh 目录结构。文件将位于错误的位置,SSH 将无法找到并使用它们。

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

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

  1. ssh sammy@your_server_ip

您应该登录到新用户帐户,无需使用密码。请记住,如果需要以管理员权限运行命令,请在其前面键入 sudo,如下所示:

  1. sudo command_to_run

在每个会话的第一次使用 sudo 时(以及以后的一段时间内),将提示您输入常规用户密码。

结论

此時,您的伺服器已經建立了堅實的基礎。您現在可以在伺服器上安裝您需要的任何軟件。例如,您可以開始安裝 Nginx 網頁伺服器

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