保護 Ubuntu 伺服器對於保護您的資料、應用程式和基礎架構免受惡意攻擊至關重要。無論您託管的是網站、資料庫還是應用程式,實施強而有力的安全實務都能確保伺服器抵禦各種弱點。本文將介紹保護 Ubuntu 伺服器的實用步驟,包括設定防火牆、安全地設定 SSH、使用fail2ban等工具和其他強化技巧。
上一篇文章:
01. Ubuntu Server 簡介 – SysOSX: AI & Cloud
02. 如何設定您的第一台 Ubuntu 伺服器:初學者指南 – SysOSX: AI & Cloud
03. 掌握適用於 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud
04. 管理 Ubuntu Server 上的使用者和權限:完整指南 – SysOSX: AI & Cloud
05. Ubuntu Server 網路基礎:完整指南 – SysOSX: AI & Cloud
06. 在 Ubuntu Server 上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud
07.修補和更新 Ubuntu Server:完整指南 – SysOSX: AI & Cloud
為什麼伺服器安全很重要?
伺服器通常保存著敏感資料,並且對業務營運至關重要。如果沒有適當的安全措施,攻擊者可以利用弱點獲得未授權存取、破壞服務或竊取資訊。遵循這些實用步驟,您可以顯著降低遭受攻擊的風險,並確保伺服器保持安全。
1. 保持系統更新
定期更新對於修補安全弱點和保持伺服器安全至關重要。Ubuntu 會及時為其套件和核心提供更新。
更新伺服器的步驟:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
此外,請啟用unattended-upgrades以自動執行安全性更新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
2. 使用 UFW 設定防火牆
防火牆是抵禦未授權存取的第一道防線。Ubuntu 包含UFW(Uncomplicated Firewall),它簡化了防火牆管理。
設定 UFW 的步驟:
- 啟用 UFW:
sudo ufw enable
- 允許 SSH 連線:
sudo ufw allow ssh
- 允許特定連接埠(例如,Web 伺服器的 HTTP 和 HTTPS):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
- 檢查防火牆狀態:
sudo ufw status
預設情況下,UFW 會封鎖所有傳入連線,只允許明確放行的連線,從而確保伺服器受到保護。
3. 保護 SSH 存取
SSH 是遠端伺服器管理的主要方法,但它經常成為暴力破解攻擊的目標。保護 SSH 對於降低未授權存取的風險至關重要。
保護 SSH 的技巧:
- 變更預設 SSH 連接埠:
- 編輯 SSH 設定檔:
sudo nano /etc/ssh/sshd_config
- 變更預設連接埠(例如,從
22變更為2222),然後重新啟動 SSH 服務:
sudo systemctl restart ssh
- 更新 UFW 規則,以允許存取新的連接埠:
sudo ufw allow 2222/tcp
- 停用 root 登入:
在/etc/ssh/sshd_config中,設定:
PermitRootLogin no
- 使用 SSH 金鑰驗證:
- 產生 SSH 金鑰組:
ssh-keygen -t rsa -b 4096
- 將公開金鑰複製到伺服器:
ssh-copy-id username@server-ip
- 限制 SSH 存取:
透過編輯/etc/hosts.allow和/etc/hosts.deny檔案。
4. 安裝和設定 Fail2Ban
Fail2Ban是一款透過監控記錄檔並封鎖表現出可疑行為的 IP 位址來保護伺服器免受暴力破解攻擊的工具。
設定 Fail2Ban 的步驟:
- 安裝 Fail2Ban:
sudo apt install fail2ban
- 建立本機設定檔:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- 設定 SSH 保護:
編輯/etc/fail2ban/jail.local並啟用 SSH jail:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
- 重新啟動 Fail2Ban:
sudo systemctl restart fail2ban
Fail2Ban 現在將監控 SSH 記錄,並在多次登入失敗後封鎖相關 IP。
5. 停用不必要的服務
執行不必要的服務會增加伺服器的攻擊面。請找出並停用不需要的服務。
停用服務的步驟:
- 列出使用中的服務:
sudo systemctl list-units --type=service
- 停止並停用未使用的服務:
sudo systemctl stop service-name
sudo systemctl disable service-name
6. 使用高強度密碼和使用者帳戶
弱密碼是一種常見弱點。請確保所有使用者帳戶都使用高強度且唯一的密碼。
使用者帳戶安全技巧:
- 使用密碼管理工具產生和儲存高強度密碼。
- 定期稽核使用者帳戶並移除未使用的帳戶:
sudo awk -F: '{ print $1}' /etc/passwd
7. 啟用雙因素驗證 (2FA)
雙因素驗證為 SSH 登入程序增加了一層額外的安全保護。您可以使用Google Authenticator.
啟用 2FA 的步驟:
- 安裝 Google Authenticator:
sudo apt install libpam-google-authenticator
- 為您的使用者設定 2FA:
執行下列命令並依照提示操作:
google-authenticator
- 在 SSH 中啟用 2FA:
編輯/etc/pam.d/sshd並新增:
auth required pam_google_authenticator.so
重新啟動 SSH 服務:
sudo systemctl restart ssh
8. 監控記錄和系統活動
定期監控伺服器記錄有助於及早發現可疑活動。
記錄監控工具:
- Syslog:檢查一般系統記錄:
sudo less /var/log/syslog
- Auth 記錄:檢視驗證嘗試:
sudo less /var/log/auth.log
考慮使用Logwatch或OSSEC等工具進行自動記錄分析和警示。
9. 定期執行備份
即使採取了強而有力的安全措施,備份對於從攻擊或資料遺失中復原仍然至關重要。
備份選項:
- 使用rsync建立本機備份:
rsync -av /data /backup/
- 使用Duplicity等工具自動執行備份,或整合雲端式解決方案,例如AWS S3或Google Cloud Storage.
10. 其他強化技巧
- 安裝防毒軟體:使用ClamAV等工具掃描惡意軟體。
sudo apt install clamav
sudo clamscan -r /path/to/scan
- 保護 Web 應用程式:如果託管網站,請使用ModSecurity等工具防範常見的 Web 弱點。
- 啟用 AppArmor:AppArmor 為應用程式提供強制存取控制。
sudo apt install apparmor
sudo aa-status
結論
保護 Ubuntu 伺服器需要採取主動的方法,將系統更新、防火牆設定、SSH 強化以及 Fail2Ban 等工具結合起來。遵循這些步驟並定期監控伺服器,您可以建立針對潛在威脅的強大防禦。
如需了解更多資訊,請參閱官方Ubuntu 安全指南.
接下來:Ubuntu Server 上的稽核與記錄
保護伺服器固然重要,但保持對其運作狀況的可見性同樣關鍵。稽核和記錄 使您能夠監控系統活動、識別異常並有效地疑難排解問題。
在下一節中,我們將介紹:
- 系統稽核和記錄的重要性。
- 使用auditd追蹤和記錄系統事件。
- 使用logrotate設定記錄輪替,以有效率地管理記錄檔。
- 監控
/var/log目錄中的關鍵事件。
這些實務將協助您保持問責、發現潛在威脅並確保伺服器的可靠性。
敬請期待,我們將深入介紹協助您有效稽核和監控 Ubuntu 伺服器的工具和技術。
3 thoughts on “08. Securing Your Ubuntu Server: Practical Steps for Hardening and Protection”