1. 系統更新與補丁管理
定期運行sudo apt update && sudo apt upgrade命令,確保系統和軟件包為最新版本,修補已知安全漏洞;配置unattended-upgrades軟件包實現自動安全更新,避免因未及時修復漏洞導致系統暴露風險。
2. 最小安裝與依賴優化
安裝系統時選擇“最小安裝”選項,或使用aptitude、apt的--no-install-recommends參數,避免安裝不必要的軟件包和依賴,減少系統潛在的攻擊面。
3. 防火墻配置
使用ufw(Uncomplicated Firewall)工具設置默認策略為“拒絕所有傳入連接”,僅允許必要的端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口)對外開放;對于復雜網絡環境,可使用iptables配置精細化規則,限制入站和出站流量。
4. 用戶權限與SSH安全
創建普通用戶并賦予必要權限,避免直接使用root賬戶進行日常操作;禁用root用戶通過SSH遠程登錄(修改/etc/ssh/sshd_config文件中的PermitRootLogin no),更改SSH默認端口(如從22改為2222),啟用SSH密鑰認證(替代密碼認證),防止暴力破解。
5. 安全增強工具
啟用AppArmor(Debian默認支持)限制程序權限,通過配置文件約束進程可訪問的資源和操作;安裝fail2ban防止SSH暴力破解,自動封禁多次嘗試失敗的IP地址;使用auditd記錄系統活動,便于追蹤異常行為。
6. 日志與監控
配置logwatch或journalctl實時監控系統日志,定期審查/var/log/auth.log(認證日志)、/var/log/syslog(系統日志)等文件,識別潛在的安全威脅(如異常登錄、未授權訪問)。
1. 鏡像安全
python:3.11-alpine、node:16-alpine),避免使用未經驗證的第三方鏡像;Alpine等小型鏡像體積小、依賴少,可顯著降低攻擊面。Trivy、Docker Scan(Docker Desktop內置)、Snyk等工具掃描鏡像,檢測已知漏洞(如CVE)、惡意軟件或不安全配置;將掃描集成到CI/CD流水線,設置“高危漏洞阻止部署”的安全門禁。node:16-alpine作為構建階段,node:16-alpine作為運行階段。2. 容器運行時安全
RUN adduser -D appuser),并以該用戶身份運行容器(USER appuser);避免容器以root用戶運行,降低逃逸或提權風險。--memory(內存限制)、--cpus(CPU限制)、--pids(進程數限制)等參數限制容器資源,防止容器因資源耗盡導致宿主機崩潰;例如,docker run --memory=512m --cpus=2 myapp:latest。--privileged參數(賦予容器root權限),如需特定能力(如綁定低端口),使用--cap-add添加必要能力(如NET_BIND_SERVICE),并通過--cap-drop移除多余能力(如ALL);設置容器為“只讀文件系統”(--read-only=true),防止惡意修改文件。3. 網絡安全
docker network create --driver bridge secure-network),將不同安全域的服務部署到不同網絡,限制容器間非必要的通信;默認情況下,自定義bridge網絡中的容器無法直接互通。-p 8080:80),避免暴露敏感服務(如數據庫的3306端口);結合宿主機防火墻(如ufw)限制訪問源(如僅允許公司IP訪問8080端口)。4. 鏡像簽名與可信發布
使用Docker Content Trust(DCT)或Sigstore/cosign對鏡像進行簽名,確保鏡像未被篡改;拉取鏡像時啟用簽名驗證(export DOCKER_CONTENT_TRUST=1),防止拉取惡意鏡像;企業級場景可使用Harbor、Quay等倉庫的簽名與掃描功能,實現鏡像的全生命周期安全管理。
5. 運行時安全檢查
定期使用Docker Bench for Security(docker-bench-security.sh)檢查Docker主機和容器的安全配置,識別不符合最佳實踐的項目(如特權容器、root用戶運行的容器);使用Falco監控容器運行時行為,及時發現異常(如容器內執行rm -rf /、連接敏感端口)。