最近在服務(wù)器的安全性這個問題上吃了點虧,于是決定寫幾篇Linux服務(wù)器初始化相關(guān)的文章,來記錄這次踩坑的成果。盡早的設(shè)置會讓服務(wù)器更加的安全,提高它的可用性,為后續(xù)的部署程序打下基礎(chǔ)。
一、root登錄
在我們買下一臺云服務(wù)器之后,就可以從控制臺中拿到服務(wù)器的ip以及賬號密碼。這時我們可以通過
ssh root@SERVER_IP_ADDRESS
這個命令來連接服務(wù)器。如果出現(xiàn)了接受有關(guān)主機(jī)的真實性的警告,就選擇同意,在輸入密碼之后,就能完成登錄過程。
root是什么
在Unix與類Unix系統(tǒng)中,root是在所有模式(單/多用戶)下對所有文件與程序擁有一切權(quán)限的用戶(也即超級用戶)的約定俗成的通名。
二、創(chuàng)建新用戶
root賬號的權(quán)限是非常大的,所以在我們第一次登錄了root賬號之后,我們就應(yīng)該準(zhǔn)備一個新賬號,以后登錄就使用這個新賬號。所以接下來的步驟我們準(zhǔn)備創(chuàng)建一個新用戶。
例如我要創(chuàng)建一個名為"leon"的新用戶。
adduser leon
確認(rèn)之后,我們需要先給賬戶設(shè)置一個密碼。之后系統(tǒng)會問我們一些信息,包括全名,家庭電話,工作電話等等。如果可以的話,給賬戶設(shè)置一個強(qiáng)度較高的密碼并且記住,也可以選擇性的留下你的其他信息。
三、賦予root權(quán)限
我們剛剛創(chuàng)建的leon是一個常規(guī)賬戶權(quán)限的賬戶,但是我們在日常的使用中可能需要超級管理員的權(quán)限,使用這一權(quán)限的方法是在命令前加上sudo,例如:
sudo vi /etc/hosts
為了避免權(quán)限不夠的情況,我們要酌情的給一些確實需要并且值得信任的賬戶root權(quán)限,當(dāng)我們使用root賬戶登錄時這樣操作,
usermod -aG sudo leon
現(xiàn)在我們的用戶leon就已經(jīng)有了運行超級用戶權(quán)限的命令。
四、使用ssh來登錄服務(wù)器
使用ssh密鑰來登錄服務(wù)器可以很好的提高服務(wù)器的安全性,這個操作我在之前的博客里已經(jīng)寫過,在這里我就貼個鏈接吧。
在完成ssh登錄服務(wù)器的配置之后,我們來說說怎么禁用密碼的驗證方式來提高服務(wù)器的安全性。
五、設(shè)置禁用密碼登錄
如果我們允許服務(wù)器能通過密碼驗證登錄的話,那么任意一個得到我們賬號密碼的壞人,就可能登錄到服務(wù)器上進(jìn)行破壞性的操作。所以為了服務(wù)器的安全考慮,我推薦大家禁止使用密碼驗證的方式來登錄服務(wù)器。畢竟我們在信任的電腦上已經(jīng)配置了ssh-key了。
警告??:一定要配置好ssh-key能夠登錄服務(wù)器了,才執(zhí)行這一步的操作,否則你的服務(wù)器就永遠(yuǎn)登錄不上去了,只能重裝恢復(fù)了,可能會導(dǎo)致數(shù)據(jù)丟失。
使用root賬戶或者sudo命令,打開ssh的配置文件:
sudo vi /etc/ssh/sshd_config
查找Passwordauthentication選項,刪除他前面的注釋#,然后將他的值改為no。
# sshd_config 禁用密碼登錄設(shè)置
PasswordAuthentication no
接下來找到如下兩個配置,如果跟我下面保持一致,則不更改,否則更改為一致,默認(rèn)配置就是如下的值:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
當(dāng)你完成這些更改后,保存并使用, 使用:wq保存退出。
重啟ssh的程序
sudo systemctl reload sshd
現(xiàn)在密碼驗證就已經(jīng)關(guān)閉了,你只能使用ssh來進(jìn)行身份驗證。
在你退出這個登錄連接之前,最好開一個新窗口,對自己的配置進(jìn)行驗證,首先確認(rèn)ssh可以成功登錄,免得等一下無法登錄,再嘗試使用另一個賬號來登錄服務(wù)器,如果拒絕了密碼訪問,那么我們的配置就成功了。
六、設(shè)置防火墻
Ubuntu 16.04服務(wù)器可以使用UFW防火墻來確保只允許與某些服務(wù)的連接。我們可以很容易地使用這個應(yīng)用程序設(shè)置基本的防火墻。
不同的應(yīng)用程序可以在安裝時向UFW注冊其配置文件。這些配置文件允許UFW按名稱管理這些應(yīng)用程序。 OpenSSH,該服務(wù)允許我們現(xiàn)在連接到我們的服務(wù)器,已在UFW注冊了一個配置文件。
您可以通過鍵入以下內(nèi)容查看此內(nèi)容:
sudo ufw app list
可以看到以下內(nèi)容
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
我們需要確保防火墻允許ssh連接,所以我們通過如下命令來允許這些連接:
sudo ufw allow OpenSSH
使用如下命令來啟用防火墻:
sudo ufw enable
我們也可以自行查看防火墻的狀態(tài):
sudo ufw status
可以看到:
Status: active
To Action From
-- ------ ----
Apache Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
例如iOS的api接口,微信小程序的配置需要使用https協(xié)議,那我們要打開443的端口訪問,可以使用如下命令打開端口:
sudo ufw allow 443 允許外部訪問443端口
到這里我們的服務(wù)器的基本配置也就已經(jīng)完成了,接下來就可以單獨為數(shù)據(jù)庫打造安全訪問的配置了。