CentOS 7安装之后的七个事

1、 更改 root 密碼
自行安裝 CentOS 7 的,安裝程序會讓你自行設定 root 的密碼。
首先使用 ssh 登入服务器,在 Windows 可以使用 Putty、Tera Term、或者在 Cygwin 環境下執行 OpenSSH。在 Mac 和 Linux 上只需在終端機 (terminal) 中執行以下指令便可以了,比 Windows 簡單得多:
在这里插入图片描述

2、 新增一個普通帳號
在这里插入图片描述

這個新帳號 ahhang 沒有預設密碼,即是說登入 ahhang 時系統不用輸入密碼!所以我們立即要設定密碼:
在这里插入图片描述

3. 禁止 root 使用 ssh 登入

CentOS 7 預設容許任何帳號透過 ssh 登入,包括 root 和一般帳號,為了不讓 root 帳號被黑客暴力入侵,我們必須禁止 root 帳號的 ssh 功能,事實上 root 也沒有必要 ssh 登入伺服器,因為只要使用 su 或 sudo (當然需要輸入 root 的密碼) 普通帳號便可以擁有 root 的權限。使用 vim (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,尋找:

#PermitRootLogin yes1#PermitRootLogin yes

修改為:

PermitRootLogin no1PermitRootLogin no

最後輸入以下指令重新啟動 sshd:

systemctl restart sshd.service1systemctl restart sshd.service

這樣黑客要取得 root 的權限,必須破解 root 和一個普通用戶的密碼,難度增加了。

完成後不要登出系統,使用另一個視窗嘗試登入 root 和普通帳號,測試無誤便可進行下一步。

4. 使用非常規的 ssh 端口
Ssh 預設使用端口 22,這是在 IANA 註冊的官方端口,但沒有人說 ssh 不能使用其他端口,很多黑客專門向伺服器的 22 端口發動攻擊,即使你的伺服器固若金湯、牢不可破,但是要系統日以繼夜接受攻擊,消耗的系統資源(網絡、處理器、記憶體等等)也不會少,何況它是否真的牢不可破還說不定呢!所以有必要讓 ssh 使用其他端口,只讓有權使用 ssh 的用戶知道。

使用 vim (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,尋找:

#Port 221#Port 22

修改為:

Port 108371Port 10837

你可以把 10837 改為任何 1024 – 65535 之間的任何數字,若果怕與某些系統服務發生衝突,可以參考一下這裏。

跟著重新啟動 sshd:

systemctl restart sshd.service1systemctl restart sshd.service

然後是設定防火牆,CentOS 7 的內核已經有防火牆 netfilter,但你的系統未必安裝了用戶界面,較前版本的 CentOS 預設使用 iptables,但 CentOS 7 開始使用效能更高、穩定性更好的 firewalld,若果伺服器尚未安裝 firewalld,可以使用以下指令安裝,不確定是否已經安裝的話也可以輸入這個指令,它會告訴你已經安裝然後退出。

yum install -y firewalld

跟著啟動:

systemctl start firewalld1systemctl start firewalld

設定 firewalld 的方法有兩個,第一個是修改 firewalld 有關 sshd 的設定,把端口 22 改為 10837,這是正統的做法,但步驟比較多;第二個是要求 firewalld 開啓端口 10837,不指定它屬於哪一個服務,這個做法通常處理臨時的端口開啓/封鎖,步驟簡單,但是日後你要是忘記了這個端口為甚麼開啟了呢什麼時候開啟的呢為了哪一項服務開啟呢可能有點麻煩。我兩種方法都會介紹一下,但作為專業的系統管理員(即使不是真正的專業,也應該具備這樣的心態),我推薦使用第一種方法。

設定防火牆方法一:

複製 firewalld 有關 sshd 的設定檔案:

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/1cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

使用 vim (或任何文本編輯器) 開啓 /etc/firewalld/services/ssh.xml,尋找:

1

修改為:

1

儲存後重新載入 firewalld:

firewall-cmd --reload1firewall-cmd --reload

設定防火牆方法二:

輸入以下指令:

firewall-cmd --zone=public --add-port=10837/tcp --permanent1firewall-cmd --zone=public --add-port=10837/tcp --permanent

就是這樣簡單!

不論使用哪種方法,完成後不要登出系統,使用另一個視窗嘗試登入,例如:

ssh -p 10837 [email protected] -p 10837 [email protected]

5. 啟用公鑰驗證登入 ssh

現在只有普通帳號才能透過 ssh 登入伺服器,但是 ssh 提供一個更先進更安全的驗證方法:公鑰驗證法。

首先每一名用戶建立一對加密鑰匙(密鑰和公鑰),密鑰儲存在日常使用的電腦,公鑰則儲存在伺服器,使用 ssh 聯繫到伺服器的時候,電腦會把一些建立連線請求的資料,其中包括帳號名稱和公鑰,並且把部分資料用密鑰製作數碼簽署,一股腦兒送到伺服器,伺服器檢查自己的「公鑰庫」是否包含送來的公鑰,有的話再驗證數碼簽署,成功的話便直接登入伺服器,無需輸入帳號密碼。

第一步在日常使用的電腦上使用 ssh-keygen 指令建立一對加密鑰匙,它會詢問儲存加密鑰匙的檔案名稱,和把鑰匙加密的密碼,檔案名稱使用預設的路徑和名稱便可以,密碼則無需輸入:

在这里插入图片描述
這個指令會創造兩個檔案,一個名為 id_rsa,是你的 RSA 密鑰,另一個是 id_rsa.pub,是你的 RSA 公鑰。公鑰必需上傳到伺服器並且附加於用戶帳號裏面的 .ssh/authorized_keys 檔案中,這個檔案儲存所有可透過 ssh 登入到這一個帳號的公鑰,一行一條公鑰:

在这里插入图片描述
順便一提,目錄 .ssh 和 authorized_keys 除了 owner 之外,其他人均不能有寫入的權限,否則 sshd 不會讀取,換句話說,兩者最寬鬆的權限是 755:

在这里插入图片描述
設定 ssh 的雙重驗證法很簡單,使用 vim (或任何文本編輯器) 開啓 /etc/ssh/sshd_config,在檔案的末端假如這一行:

AuthenticationMethods publickey,password1AuthenticationMethods publickey,password

它告訴伺服器用戶必須擁有合法的公鑰,和輸入正確的密碼才能成功登入。修改完成後重新啟動 sshd:

systemctl restart sshd.service1systemctl restart sshd.service

完成後不要登出系統,使用另一個視窗嘗試登入,測試無誤便可進行下一步。

6. 更新、更新、每天更新、每天自動更新

首先我們立即手動更新所有預先安裝的軟件:

yum -y update1yum -y update

跟著設定系統定時自動更新,第一步確定伺服器是否安裝了自動執行指令的工具,跟著使用 yum 一個名叫 yum-cron 插件。

CentOS 7 使用數個軟件來自動執行指令:cron、anacron、at 和 batch,其中 cron 和 anacron 用來定期重複執行指令,At 和 batch 則用來在特定時間執行一次性的指令。我們將會使用 cron 和 anacron,兩者的分別這裏不細表了,將來有機會再討論,現在使用以下指令安裝 cron 和 anacron:

yum -y install cronie1yum -y install cronie

下一步就是安裝 yum-cron:

yum -y install yum-cron1yum -y install yum-cron

其實你可以使用一個指令同時安裝 cronie 和 yum-cron,甚至單獨安裝 yum-cron 也可以,因為 yum 會自動檢測到 yum-cron 需要 cronie 然後自動替你安裝,上面分開兩個指令純粹令大家容易明白。

完成後系統多了數個檔案,比較重要的包括:

/etc/cron.daily/0yum.cron

Anacron 每天執行這個檔案一次,它根據配置檔案 /etc/yum/yum-cron.conf 來更新軟件/etc/yum/yum-cron.conf

這是每天執行 yum-cron 的配置檔案,預設只會下載更新的軟件,並不安裝,用意是讓管理員檢視 yum-cron 的輸出,選取需要更新的軟件進行手動安裝。

跟著我們修改配置檔案,讓 yum-cron 自動更新軟件,使用 vim (或任何文本編輯器) 開啓 /etc/yum/yum-cron.conf,尋找:

apply_updates = no1apply_updates = no

修改為:

apply_updates = yes1apply_updates = yes

確認一下 update_messages = yes, download_updates = yes, apply_updates = yes,正如下圖:

在这里插入图片描述
最後,啟動 crond 和 yum-cron:

systemctl start crond systemctl start yum-cron12systemctl start crondsystemctl start yum-cron

7. 防火牆

過濾封包功能的 netfilter 已經內建在 CentOS 7 的內核,但是配置 netfilter 的界面程式 firewalld 卻未必有安裝,不論是否已經安裝,都可以執行下面的安裝指令:

yum install firewalld1yum install firewalld

跟著查看一下防火牆現在開啟了哪些服務和端口:

firewall-cmd --list-all1firewall-cmd --list-all

在这里插入图片描述

上圖可見防火牆只開啟了 DHCP 客戶端和 ssh 兩個服務的通訊端口,倘若日後安裝了其他網絡軟件,例如網站伺服器、域名伺服器等等,必須要檢查安裝程式有否開啓他們的通訊端口,沒有的話便要手動開啓。如果好像前面第四點那樣使用了非常規的通訊端口,也可能要手動配置防火牆,防火牆詳細的配置方法超出了本文的討論範圍,將來有機會再談。

猜你喜欢

转载自blog.csdn.net/qq_40907977/article/details/88565130