介紹
當您首次創建新的Rocky Linux 9伺服器時,作為初始設置的一部分,有一些配置步驟是您應該在早期進行的。這將提高伺服器的安全性和可用性,為您搭建堅實的基礎。
第1步 — 以root身份登錄
要登錄伺服器,您需要知道您的伺服器的公共IP地址。您還需要密碼或者,如果您安裝了用於身份驗證的SSH密鑰,則需要root用戶帳戶的私鑰。如果您尚未登錄伺服器,建議您參考我們的文檔,了解有關如何使用SSH連接到Droplet的詳細過程。
如果您尚未連接到伺服器,請使用以下命令以root用戶身份登錄(用您伺服器的公共IP地址替換命令中的突出顯示部分):
- ssh root@your_server_ip
接受有关主机真实性的警告,如果出现。如果您使用密码验证,请提供您的root密码以登录。如果您使用带有口令保护的SSH密钥,可能会在每个会话的第一次使用密钥时提示您输入口令。如果这是您首次使用密码登录服务器,您可能还会被提示更改root密码。
关于Root
root用户是Linux环境中的管理员用户,拥有非常广泛的权限。由于root帐户的特权较高,建议您不要经常使用它。这是因为root帐户具有进行非常破坏性更改的能力,甚至可能是意外的。
因此,下一步是设置一个具有日常工作中减小影响范围的备用用户帐户。这个帐户在必要时仍然可以获得增加的特权。
第2步 —— 创建新用户
一旦以root身份登录,您可以创建一个新用户帐户,以后将用该帐户登录。
這個例子創建了一個名為sammy的新使用者,但你應該用你喜歡的任何使用者名稱替換它:
- adduser sammy
接下來,為sammy
使用者設定一個強密碼:
- passwd sammy
系統將提示你輸入密碼兩次。完成後,你的使用者將準備好使用,但首先你會賦予這個使用者額外的權限,以便使用sudo
指令。這將允許你在需要時以root身份運行指令。
第三步 — 賦予管理權限
現在,你有了一個擁有常規帳戶權限的新使用者帳戶。然而,有時你可能需要執行管理任務。
為了避免必須登出你的常規使用者,然後再以root帳戶登入,你可以設置所謂的“超級使用者”或root權限給你的常規帳戶。這將允許你的常規使用者在每個指令前加上sudo
來以管理權限運行指令。
要將這些權限添加到你的新使用者,你需要將新使用者添加到wheel群組。在Rocky Linux 9上,屬於wheel群組的使用者默認被允許使用sudo
指令。
作為root,執行以下命令將新用戶添加到wheel組(用你的新用戶名替換突出顯示的單詞):
- usermod -aG wheel sammy
現在,以常規用戶身份登錄後,您可以在命令前輸入sudo
以以超級用戶權限執行操作。
第4步 — 設置防火牆
防火牆為您的服務器提供了基本的安全級別。這些應用程序負責拒絕流向您的服務器的每個端口的流量,除非您明確批准的那些端口/服務。Rocky Linux有一個名為firewalld
的服務來執行此功能。一個名為firewall-cmd
的工具用於配置firewalld
防火牆策略。
注意:如果您的服務器運行在DigitalOcean上,您可以選擇使用DigitalOcean Cloud Firewalls而不是firewalld
。為避免可能難以調試的衝突規則,一次只能使用一個防火牆。
首先安裝firewalld
:
- dnf install firewalld -y
默認的firewalld
配置允許ssh
連接,因此您可以立即打開防火牆:
- systemctl start firewalld
檢查服務的狀態以確保它已啟動:
- 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
實用程式來獲取和設定防火牆的策略資訊。
首先,讓我們列出已經允許的服務:
- firewall-cmd --permanent --list-all
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:
要查看您可以按名稱啟用的其他服務,輸入:
- firewall-cmd --get-services
要添加應該允許的服務,請使用--add-service
標誌:
- firewall-cmd --permanent --add-service=http
這將添加http
服務並允許傳入的TCP流量到端口80
。在重新載入防火牆後,配置將更新:
- firewall-cmd --reload
請記住,您必須明確地為您稍後可能配置的任何其他服務(或端口)打開防火牆。
步驟5 — 啟用常規用戶的外部訪問
現在您有一個供日常使用的常規非root用戶,您需要確保可以使用它來SSH進入您的伺服器。
注意:在验证您可以使用新用户登录并使用sudo
之前,您应该保持以root身份登录。这样,如果出现问题,您可以进行故障排除并进行任何必要的更改,如root。如果您使用DigitalOcean Droplet并且在root SSH连接时遇到问题,您可以使用DigitalOcean控制台登录到Droplet。
为配置新用户的SSH访问的过程取决于您服务器的root帐户是使用密码还是SSH密钥进行身份验证。
如果Root帐户使用密码身份验证
如果您使用密码登录到root帐户,则为SSH启用了密码身份验证。您可以通过打开新的终端会话并使用新用户名进行SSH来登录到新用户帐户:
- ssh sammy@your_server_ip
输入常规用户密码后,您将登录。请记住,如果需要以管理员权限运行命令,请在其前面键入sudo
,如下所示:
- 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 将无法找到并使用它们。
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
现在,在本地机器上的新终端中,用您的非 root 用户打开一个新的 SSH 会话:
- ssh sammy@your_server_ip
您应该登录到新用户帐户,无需使用密码。请记住,如果需要以管理员权限运行命令,请在其前面键入 sudo
,如下所示:
- sudo command_to_run
在每个会话的第一次使用 sudo
时(以及以后的一段时间内),将提示您输入常规用户密码。
结论
此時,您的伺服器已經建立了堅實的基礎。您現在可以在伺服器上安裝您需要的任何軟件。例如,您可以開始安裝 Nginx 網頁伺服器。
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-9