眾多安全事件調查表明,超過 80% 的 Unix/Linux 系統失陷源於配置疏忽與管理失誤,而非內核零日漏洞。本文構建從賬號審計、服務最小化、訪問控制、日志審計到入侵檢測的纵深防御體系,助您構建經得起實戰考驗的安全基線。
finger 服務默認暴露:登錄用戶、家目錄、Shell、郵件狀態、.plan 內容等。攻擊者可通過 finger @target 批量枚舉有效賬號,配合弱口令噴灑實現橫向移動。
systemctl disable --now fingerd 或 yum remove finger-server 徹底禁用。who、w、last 等本地命令。SMTP 命令 EXPN 可展開郵件列表別名,VRFY 可驗證用戶是否存在。攻擊者可構建有效郵箱字典實施釣魚或密碼噴灑。
sendmail.mc 中設置 define(`confPRIVACY_FLAGS', `noexpn,novrfy') 重新編譯生效。systemctl disable --now postfix/sendmail。Options -Indexes (Apache) / autoindex off; (Nginx)。chmod 750、屬主為專用賬號、放置於獨立目錄並配置 ScriptAlias。lp, nuucp, guest 等) → 安裝後立即 passwd -l 鎖定或刪除。編輯 /etc/security/pwquality.conf (或 /etc/pam.d/system-auth):
minlen = 14
dcredit = -1 # 至少 1 個數字
ucredit = -1 # 至少 1 個大寫
lcredit = -1 # 至少 1 個小寫
ocredit = -1 # 至少 1 個特殊字符
retry = 3
enforce_for_root
/etc/pam.d/password-auth 添加:
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
account required pam_faillock.so
# /etc/ssh/sshd_config
Port 2222 # 非標準端口減少掃描噪音
PermitRootLogin no # 禁止 root 直接登錄
PubkeyAuthentication yes # 僅允許公鑰認證
PasswordAuthentication no # 禁用密碼認證
PermitEmptyPasswords no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers admin@10.0.0.0/8 # 限制來源 IP 與用戶
修改後 sshd -t 測試配置,systemctl reload sshd 生效。
/etc/fstab 關鍵分區添加:
/dev/sda2 /home ext4 defaults,nosuid,nodev,noexec 0 2
/dev/sda3 /tmp ext4 defaults,nosuid,nodev,noexec 0 2
/dev/sda4 /var ext4 defaults,nosuid,nodev 0 2
nosuid:忽略 SUID/SGID 位,防提權。nodev:不解析設備文件。noexec:禁止執行二進制文件(適用於 /tmp、/home、/var/www)。/etc/sysctl.d/99-hardening.conf# 網絡防護
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv6.conf.all.disable_ipv6 = 1 # 若不使用 IPv6
# 內核自我保護
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.yama.ptrace_scope = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
執行 sysctl --system 生效。
/etc/rsyslog.d/90-remote.conf:
*.* @@logserver.example.com:514 # 雙 @ 表示 TCP,單 @ 為 UDP
# 或使用 RELP 可靠傳輸
*.* :omrelp:logserver.example.com:2514
/etc/audit/rules.d/99-custom.rules:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k privilege
-w /usr/bin/sudo -p x -k priv_exec
-a always,exit -F arch=b64 -S execve -k exec
# AIDE 初始化
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 定時檢查 (cron.daily)
0 3 * * * /usr/sbin/aide --check | mail -s "AIDE Report" root
rkhunter --update --propupd
rkhunter -c --sk # 定時掃描
chkrootkit # 輕量級補充
iptables -I INPUT -j DROP / 物理斷網 / 安全組封禁。dd if=/dev/sda of=/mnt/forensics/sda.img bs=4M status=progress 全盤鏡像;volatility 分析內存。last -i、grep "Accepted" /var/log/secure、find / -mtime -1 -type f -perm /4000 (近期新增 SUID)。
yum update --security / apt list --upgradable 定期打補丁;訂閱 CVE/OVAL 源。安全無絕對,唯有構建「預防-檢測-響應-預測」閉環,並持續投入資源迭代優化,才能在攻防博弈中保持主動。願本文體系化指南成為您構建鋼鐵防線的藍圖。