Ubuntu 16.04伺服器的初始化設定
最近在伺服器的安全性這個問題上吃了點虧,於是決定寫幾篇Linux伺服器初始化相關的文章,來記錄這次踩坑的成果。儘早的設定會讓伺服器更加的安全,提高它的可用性,為後續的部署程式打下基礎。
一、root登入
在我們買下一臺雲伺服器之後,就可以從控制檯中拿到伺服器的ip以及賬號密碼。這時我們可以通過
ssh root@SERVER_IP_ADDRESS
這個命令來連線伺服器。如果出現了接受有關主機的真實性的警告,就選擇同意,在輸入密碼之後,就能完成登入過程。
root是什麼
在Unix與類Unix系統中,root是在所有模式(單/多使用者)下對所有檔案與程式擁有一切許可權的使用者(也即超級使用者)的約定俗成的通名。
二、建立新使用者
root賬號的許可權是非常大的,所以在我們第一次登入了root賬號之後,我們就應該準備一個新賬號,以後登入就使用這個新賬號。所以接下來的步驟我們準備建立一個新使用者。
例如我要建立一個名為"leon"的新使用者。
adduser leon
確認之後,我們需要先給賬戶設定一個密碼。之後系統會問我們一些資訊,包括全名,家庭電話,工作電話等等。如果可以的話,給賬戶設定一個強度較高的密碼並且記住,也可以選擇性的留下你的其他資訊。
三、賦予root許可權
我們剛剛建立的leon是一個常規賬戶許可權的賬戶,但是我們在日常的使用中可能需要超級管理員的許可權,使用這一許可權的方法是在命令前加上sudo
,例如:
sudo vi /etc/hosts
為了避免許可權不夠的情況,我們要酌情的給一些確實需要並且值得信任的賬戶root許可權,當我們使用root賬戶登入時這樣操作,
usermod -aG sudo leon
現在我們的使用者leon就已經有了執行超級使用者許可權的命令。
四、使用ssh來登入伺服器
使用ssh金鑰來登入伺服器可以很好的提高伺服器的安全性,這個操作我在之前的部落格裡已經寫過,在這裡我就貼個連結吧。
ofollow,noindex">使用ssh-key免密碼登入伺服器
在完成ssh登入伺服器的配置之後,我們來說說怎麼禁用密碼的驗證方式來提高伺服器的安全性。
五、設定禁用密碼登入
如果我們允許伺服器能通過密碼驗證登入的話,那麼任意一個得到我們賬號密碼的壞人,就可能登入到伺服器上進行破壞性的操作。所以為了伺服器的安全考慮,我推薦大家禁止使用密碼驗證的方式來登入伺服器。畢竟我們在信任的電腦上已經配置了ssh-key了。
警告:warning::一定要配置好ssh-key能夠登入伺服器了,才執行這一步的操作,否則你的伺服器就永遠登入不上去了,只能重灌恢復了,可能會導致資料丟失。
使用root賬戶或者sudo命令,開啟ssh的配置檔案:
sudo vi /etc/ssh/sshd_config
查詢Passwordauthentication
選項,刪除他前面的註釋#,然後將他的值改為no
。
# sshd_config 禁用密碼登入設定 PasswordAuthentication no
接下來找到如下兩個配置,如果跟我下面保持一致,則不更改,否則更改為一致,預設配置就是如下的值:
PubkeyAuthentication yes ChallengeResponseAuthentication no
當你完成這些更改後,儲存並使用, 使用:wq
儲存退出。
重啟ssh的程式
sudo systemctl reload sshd
現在密碼驗證就已經關閉了,你只能使用ssh來進行身份驗證。
在你退出這個登入連線之前,最好開一個新視窗,對自己的配置進行驗證,首先確認ssh可以成功登入,免得等一下無法登入,再嘗試使用另一個賬號來登入伺服器,如果拒絕了密碼訪問,那麼我們的配置就成功了。
六、設定防火牆
Ubuntu 16.04伺服器可以使用UFW防火牆來確保只允許與某些服務的連線。我們可以很容易地使用這個應用程式設定基本的防火牆。
不同的應用程式可以在安裝時向UFW註冊其配置檔案。這些配置檔案允許UFW按名稱管理這些應用程式。 OpenSSH,該服務允許我們現在連線到我們的伺服器,已在UFW註冊了一個配置檔案。
您可以通過鍵入以下內容檢視此內容:
sudo ufw app list
可以看到以下內容
Available applications: Apache Apache Full Apache Secure OpenSSH
我們需要確保防火牆允許ssh連線,所以我們通過如下命令來允許這些連線:
sudo ufw allow OpenSSH
使用如下命令來啟用防火牆:
sudo ufw enable
我們也可以自行檢視防火牆的狀態:
sudo ufw status
可以看到:
Status: active ToActionFrom ------------ Apache FullALLOWAnywhere OpenSSHALLOWAnywhere Apache Full (v6)ALLOWAnywhere (v6) OpenSSH (v6)ALLOWAnywhere (v6)
例如iOS的api介面,微信小程式的配置需要使用https協議,那我們要開啟443的埠訪問,可以使用如下命令開啟埠:
sudo ufw allow 443 允許外部訪問443埠
到這裡我們的伺服器的基本配置也就已經完成了,接下來就可以單獨為資料庫打造安全訪問的配置了。