安裝完CentOS 7 后必做的七件事

CentOS是最多人用來運行服務器的 Linux 版本,最新版本是 CentOS 7。當你興趣勃勃地在一臺主機或 VPS 上安裝 CentOS 7 后,首要的工作肯定是加強它的安全性,以下列出的七件事,是你進一步配置系統和安裝其他軟件前必須做的。

1. 更改 root 密碼

若果你是自行安裝 CentOS 7 的話,安裝程序會讓你自行設定 root 的密碼。不過很多 VPS 服務商只會提供預先安裝好的 CentOS 7 映像檔,這種情況下他們會透過主控界面告訴你 root 的密碼,這個密碼的安全性誰也不知道,它是如何產生的呢?隨機性可靠嗎?復雜性足夠嗎?服務商的服務器是否記錄了密碼的副本?我們實在有必要第一時間重設這個密碼。

首先使用?ssh?登入服務器,在 Windows 可以使用?Putty、Tera Term、或者在?Cygwin?環境下執行?OpenSSH。在 Mac 和 Linux 上只需在終端機 (terminal) 中執行以下指令便可以了,比 Windows 簡單得多:

首次 ssh 到服務器

由于你從來沒有使用過 ssh 聯系到這臺服務器,你的電腦會把服務器的加密公鑰下載,然后詢問你是否信任它,這臺新鮮安裝好的 CentOS 7 應該還未引起黑客的興趣,也不大可能在這么短的時間內被攻陷,所以可以放心接受這個加密公鑰。跟著輸入 root 的密碼登入服務器:

輸入 root 密碼兩次

登入后立即更改 root 的密碼,你需要輸入新密碼兩次:

更改 root 密碼

好的密碼應該同時包含數字、小寫英文字母、大寫英文字母、和標點符號,最少 15 個字符,這樣的密碼強度大概有 90 bit,勉強可以應付密碼被“暴力破解”,當然我假設了你的密碼是真正隨機產生,有些人喜歡把個人資料例如名字、出生日期、車牌號碼、地址、配偶和子女的名字等等崁入密碼中,或者使用字典里的字詞拼湊密碼,這樣密碼的強度將會大幅下降,甚至不堪一擊,這些問題我曾經在《如何管理密碼?》討論過。

網上有很多隨機密碼產生器,例如?RANDOM.ORG,大都可用,但記緊必須使用 HTTPS 造訪這些網站。如果你有使用“密碼夾萬”一類的軟件,不妨使用它們內建的密碼產生器。

完成后不要登出系統,使用另一個視窗用新密碼嘗試登入,即使失敗也可以在原來的視窗重復以上步驟。

2. 新增一個普通帳號

這一步連同下一步,相當于為一個城市筑起兩道城墻,既可加強防衛,也建立了一道警報機制,當敵人(黑客)卒然來襲,第一道城墻被襲擊和破壞,我們還有第二道城墻阻延一下,有時間部署防衛甚至反擊。所以這是一個很多人忽略,但其實非常重要的步驟。

首先我們新增一個帳號:

新增一個帳號

這個新帳號 ahhang 沒有默認密碼,即是說登入 ahhang 時系統不用輸入密碼!所以我們立即要設定密碼:

設定 ahhang 的密碼

有些人認為不應該把建立帳號和設定密碼兩件事分開來做,一來可能會不慎遺忘,二來也給黑客一道時間縫隙登入這個新帳號,所以他們會在?adduser?指令中一并提供加密后的默認密碼,方法是加入?-p?參數,不過這樣做也有風險,因為黑客可以透過列出系統的進程,得知加密了的新密碼,然后把密碼破解。

3. 禁止 root 使用 ssh 登入

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

修改為:

最后輸入以下指令重新啟動?sshd

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

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

4. 使用非常規的 ssh 端口

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

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

修改為:

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

跟著重新啟動?sshd

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

跟著啟動:

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

設定防火墻方法一:

復制?firewalld?有關?sshd?的設定檔案:

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

修改為:

儲存后重新加載?firewalld

設定防火墻方法二:

輸入以下指令:

就是這樣簡單!

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

5. 啟用公鑰驗證登入?ssh

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

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

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

建立帳號的 RSA 加密鑰匙

這個指令會創造兩個檔案,一個名為?id_rsa,是你的 RSA 密鑰,另一個是?id_rsa.pub,是你的 RSA 公鑰。公鑰必需上傳到服務器并且附加于用戶帳號里面的?.ssh/authorized_keys?檔案中,這個檔案儲存所有可透過?ssh?登入到這一個帳號的公鑰,一行一條公鑰:

上傳 RSA 公鑰到服務器

順便一提,這個檔案的存取權限必須是?0700,否則?sshd?不會讀取:

存放公鑰的檔案的權限必須是 0700

使用公鑰驗證法登入?ssh?又省力又安全,因為我們不用輸入密碼,自然也沒有密碼被盜取的憂慮,簡簡單單地輸入連線指令便可以了。

但是存放在日常電腦中的密鑰卻帶來新的安全隱患,萬一密鑰被盜取了,其他人豈不是可以隨便登入服務器?現在是“雙重驗證”(two-factor authentication) 隆重登場的時候,雙重驗證的理念是我們必須向服務器證明兩種不同性質的東西,才能成功驗證身分,第一樣是我們知道什么,第二樣是我們擁有什么。首先服務器會要求我們輸入密碼,我們知道密碼,過了第一關。跟著服務器要求我們證明擁有公鑰驗證法中的密鑰,透過上面的設定程序我們也通過了驗證,過了第二關。現在服務器才會讓我們進入系統。

設定 ssh 的雙重驗證法很簡單,使用?vim? (或任何文本編輯器) 開啟?/etc/ssh/sshd_config,在檔案的末端假如這一行:

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

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

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

每一天都有成千上萬的黑客在世界各地尋找 Linux 系統和常見軟件的安全漏洞,一有發現便會發動規模龐大而迅速的網絡攻擊,務求在我們來得及反應前把系統攻陷。不要以為黑客都只是十來歲的年輕小毛頭,大部分黑客背后都有勢力龐大、資源幾乎無限的國家機構支持,有些甚至屬于這些機構的雇員,美國的 NSA,英國的 GQHC,中國的無名黑客隊伍,都是比較明目張膽由國家支持的網絡黑幫,可見我們的系統時時刻刻都被兇狠之徒盯著,保持軟件在最新的狀態是其中一項我們必須做,也很容易做到的工作。

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

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

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

下一步就是安裝?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,尋找:

修改為:

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

yum-cron 配置檔案

最后,啟動?crond?和?yum-cron

7. 防火墻

防火墻的作用好比網絡警察,它監察所有進出系統的 IP 封包,哪些端口容許封包進入,哪些端口容許封包外出等等,都由防火墻控制,保護使用這些端口的應用程式,所以設定防火墻是極重要的工作。

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

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

檢查防火墻

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

轉載于:https://www.cnblogs.com/lxg0/articles/5335348.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272083.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272083.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python顯示小數點后幾位數_python窗口編程-3:數位處理(整數)

我們在上一次課程中(python窗口編程-2:風格與布局 ),制作了完整的計算器窗口界面,只是那個窗口沒有真正的功能,是點擊任何按鈕都會關閉。這一次,我們加入一些事件處理的功能,讓它成為一個正常工作的窗口程序…

Linux文件目錄基礎筆記

1、進入目錄名稱:cdcd命令主要是方便用戶切換到不同目錄的指令。比如:cd #只執行cd命令默認進入root的根目錄cd /home #進入home目錄,如果home目錄有testdir目錄的話,可以執行 cd testdir 進入testdir目錄。2、創建目錄命令&#…

eclipse安卓工程的構建、配置連接模擬器、安卓工程結構介紹

安卓工程構建及第一個安卓程序運行: 首先新建安卓工程: 然后填寫APP信息,下面的包名一般都是公司域名的倒寫,包名中不能有中文,否則會報錯。 然后配置一些安卓app的選項 有關app啟動的圖標(就像QQ的企鵝一…

android eclipse 導入idea項目

將以下代碼復制到.project中 <?xml version"1.0" encoding"UTF-8"?> <projectDescription> <name>IDEATest</name> <comment/> <projects/> <buildSpec> <buildCommand> <name>com.android.ide.…

Linux中su和sudo的用法整理

一、為什么會有su和sudo命令&#xff1f;主要是因為在實際工作當中需要在Linux不同用戶之間進行切換。root用戶權限最高很多時候需要root用戶才能執行一些關鍵命令。所以需要臨時切換為root用戶。工作完成后&#xff0c;考慮到系統的安全性避免誤操作需要切換為普通用戶。su和s…

codeforces 650B - Image Preview

題意&#xff1a;給你n個照片&#xff0c;從第一個照片開始看&#xff0c;如果一張照片是w&#xff0c;那么要花費b時間去反轉他&#xff0c;否則不用反轉&#xff0c;看一張從來沒看過的照片要1時間&#xff0c; 從一張滑動到另一張要a時間。如果一張照片看過&#xff0c;則不…

asp js單步調試_如何使用Chrome的控制臺高效的調試Javascript代碼?

引言在我們的日常開發中我們常常會遇到JavaScript的調試問題&#xff0c;而我們解決問題的傳統解決方案就是使用大量的console.log或者console對象的其他方法&#xff0c;這會給我們帶來很多不便&#xff0c;特別是遇到復雜問題的時候&#xff0c;可能會出現大量的console.log&…

安卓App的啟動過程、安卓布局分類及布局和頁面的關系

Android App 啟動流程: 當你想要啟動一個app時&#xff0c;首先得點擊該app桌面圖標。那點擊圖標時到底發生了什么呢&#xff1f;先看個理論知識 .Launcher: launcher其實就是一個app&#xff0c;從功能上說&#xff0c;是對手機上其他app的一個管理和啟動&#xff0c;從代碼…

Linux文件默認權限和umask筆記

關于Linux文件默認權限的問題&#xff0c;可以實際先嘗試一下如下命令&#xff1a;root用戶登錄[rootlocalhost test]# touch file1[rootlocalhost test]# ls-l file1-rw-r--r-- 1 root root 0 May 5 08:28 file1 #輸出結果 對應的數字權限 644[rootlocalhost test]# touch fi…

Android相對布局(RelativeLayout)常用屬性、練習使用按鍵、文本框等控件、線性布局(LinearLayout)屬性

RelativeLayout中子控件常用屬性&#xff1a; 子控件默認是從父控件的左上角開始排列的 相對于父控件 android:layout_alignParentTop"true" 和父控件的頂部對齊android:layout_alignParentBottom"true" 和父控件的底部對齊android:layout_alignPar…

Seata AT模式

基本思路 先決條件 支持本地ACID事務的關系數據庫。通過JDBC訪問數據庫的Java應用程序。 整體機制 從兩個階段提交協議的演變&#xff1a; 階段1&#xff1a;在同一本地事務中提交業務數據和回滾日志&#xff0c;然后釋放本地鎖和連接資源。階段2&#xff1a; 對于提交情況…

自媒體各大平臺收益對比_哪些自媒體平臺沒有新手期,適合小白擼收益?

2-26把我設置為星標&#xff0c;不錯過每一次的干貨&#xff5e;各大自媒體平臺的新手期總是讓小白們望而卻步&#xff0c;特別是百家號審核非常嚴格&#xff0c;如果沒思路、沒人指導&#xff0c;過新手有難度。不過&#xff0c;還是有很多平臺對新手寶寶很友好&#xff0c;沒…

Linux關于文件的權限筆記

1、調整文件的權限命令&#xff1a;chmodLinux的每個文件都定義了文件的擁有者&#xff1a;u(user)、擁有組&#xff1a;g&#xff08;group&#xff09;、其他人&#xff1a;o&#xff08;others&#xff09;權限&#xff0c;對應的權限用rwx的組合來定義。使用chmod命令&…

presentViewController和pushViewController

iPhone開發中從一個視圖跳到另一個視圖有三種方法&#xff1a;1、self.view addSubView:view 、self.window addSubView,需要注意的是&#xff0c;這個方法只是把頁面加在當前頁面。此時在用self.navigationControler.pushViewController和 pushViewController 是不行的。要想使…

啟動rrt什么意思_python學習第144課--創建虛擬機、設置虛擬機參數以及啟動虛擬機...

【每天幾分鐘&#xff0c;從零入門python編程的世界&#xff01;】上節我們介紹了下載虛擬機以及centOS的相關事項&#xff0c;現在我們創建虛擬機。●創建虛擬機安裝好virtualbox之后&#xff0c;我們點擊Oracle VM VirtualBox打開管理器&#xff0c;界面如下圖&#xff1a;你…

Android按鍵響應的幾種方式、安卓頁面的跳轉、頁面跳轉傳參、頁面自動跳轉、Activity(頁面)的生命周期

按鍵響應的第一種方式&#xff1a; 在XML文件里面設置按鍵的onClick綁定函數。就像下面的代碼&#xff0c;給Button設置onClick屬性&#xff0c;在按鍵被按下的時候&#xff0c;會調用java文件里面的onClickbtton1這個函數&#xff0c;因為現已將它和這個按鈕進行了綁定。利用…

pycharm體驗

查看python版本 退出 exit()

Linux文本檢索命令grep筆記

grep是在linux系統中基于行文本非常實用檢索工具&#xff0c;通過該命令可以將匹配到的結果信息輸出到終端控制臺。語法格式&#xff1a;grep [-ivnc] 需要匹配的內容 文件名常用參數說明&#xff1a;-i 檢索的時候不區分大小寫-c 檢索到的匹配行數-n 檢索到的匹配行顯式具體的…