新增使用者
在 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)
繼續閱讀: 12