新增使用者

Linode 上剛裝好的 Ubuntu Linux 是直接用 root 登入的,沒有一般使用者帳號,但如果所有的動作都使用 root 來操作,會給系統帶來很大的風險,通常我們都會一般帳號來登入,必要時才切換成 root 權限,以避免下錯指令等意外發生。

在 Ubuntu Linux 下新增一個使用者:

adduser myuser

myuser 這個使用者加入 sudo 群組:

usermod -a -G sudo myuser

這樣設定好之後,在用這個帳號以 SSH 登入:

ssh myuser@12.34.56.78

然後測試看看是否能使用 sudo

sudo su

如果能取得 root 權限就表示沒問題了。

SSH 金鑰認證登入

SSH 公開金鑰認證可以大幅增加伺服器的安全性,我們可以使用 ssh-keygen 在自己的電腦中產生金鑰後,再將公鑰放進伺服器中:

ssh-keygen
scp ~/.ssh/id_rsa.pub myuser@12.34.56.78:

接著再到伺服器上,建立 .ssh 目錄,把公鑰放置在 .ssh/authorized_keys

mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys

設定好檔案權限:

chown -R myuser:myuser .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

設定好之後,記得要測試 myuser 這個使用者是否可以不需要密碼登入 SSH。

停用 SSH 密碼登入

編輯 /etc/ssh/sshd_config,將密碼登入功能關閉:

PasswordAuthentication no

同時也停用 root 登入:

PermitRootLogin no

重新啟動 SSH 伺服器:

sudo service ssh restart

防火牆

防火牆我習慣使用 ufw 來設定:

sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http/tcp
sudo ufw allow https/tcp
ufw allow from 12.34.0.0/16

這裡開啟 SSH、HTTP 與 HTTPS 這幾個連接埠,另外對 12.34.0.0/16 這個子網域開放所有的連線,用來開發與測試用。

Fail2Ban

Fail2Ban 可以用來阻擋一些來自網路上的惡意攻擊,當它偵測到來自網路的某個 IP 不斷嘗試入侵系統時,會建立一個暫時性的防火牆規則,將攻擊者的 IP 封鎖。Fail2Ban 可以用下列指令安裝:

sudo apt-get install fail2ban

安裝完成後,Fail2Ban 預設只會對 SSH 進行監控,若要更改設定可以將自己的設定寫在 /etc/fail2ban/jail.local 設定檔中,在這個檔案中,我們也可以設定當偵測到幾次登入失敗後才開始阻擋 IP(maxretry),還有每次阻擋 IP 的時間長度(bantime)。修改設定之後,記得重新啟動 Fail2Ban:

service fail2ban restart

更多 Linode 相關的教學,可以參考本站 Linode 相關的文章

參考資料:Linode(Getting Started with Linode)Linode(Securing Your Server)