來源:IBM
緩衝區溢出攻擊是當前最常見、危害極高的安全手段之一。針對持續出現的威脅,本文探討 Linux 平台防範方法,總結適用企業內部伺服器 (Web、郵件、Samba、FTP、Proxy) 的安全策略。實踐證明,配置這些策略能有效提升系統防禦能力。
在電腦系統安全研究中,緩衝區溢出是廣泛存在且極度危險的漏洞。幾乎所有作業系統平台皆受影響,基於此類漏洞開發的攻擊程式具極強隱蔽性與破壞力。技術能使看似安全、運行常規服務 (DNS、ftpd 等) 的主機在秒級失去控制權。攻擊者最終目的是擾亂特權程式運行以取得控制權;若程式權限足夠,整台主機將被完全控制。CERT/CIAC 網路安全報告中「緩衝區溢出」為高頻關鍵字。
不想讓遠端登入用戶看到詳細系統資訊,修改 /etc/inetd.conf 中 telnet 設定:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
指令末尾加 -h 參數,讓 daemon 僅顯示登入提示,不洩露系統資訊 (僅在安裝 telnet 服務時必要)。
預設登入時顯示發行版名稱、版本、核心版本、主機名,洩露過多細節。安全起見僅顯示「Login:」。操作:
/etc/rc.d/rc.local,註解以下行:# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
# echo "" > /etc/issue
# echo "$R" >> /etc/issue
# echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
# cp -f /etc/issue /etc/issue.net
# echo >> /etc/issue
/etc/issue.net 與 /etc/issue:[root@snow]# rm -f /etc/issue
[root@snow]# rm -f /etc/issue.net
/etc/issue.net 為網路登入 (telnet/SSH) 見到的提示,/etc/issue 為本地登入提示。兩者均為文字檔可自訂。但刪除前必須先註解 rc.local 相關行,否則重啟會自動重建。
finger 可顯示本地/遠端已登入用戶詳細資訊,攻擊者可利用增加入侵機會。最好禁止服務:從 /usr/bin 刪除 finger 指令。若需保留,應重命名或修改權限僅允許 root 執行。
inetd 為「超級伺服器」,依網路請求載入執行網路程式。/etc/inetd.conf 告知 inetd 監聽哪些埠並啟動對應服務。部署 Linux 伺服器首要任務:明確實際需要服務,禁止不需要者,條件允許最好直接卸載,減少攻擊面。
具體步驟:
chmod 600 /etc/inetd.conf,唯 root 可讀寫。stat /etc/inetd.conf 驗證 Uid/Gid 為 0/root。killall -HUP inetd 發送 SIGHUP 生效。chattr +i /etc/inetd.conf 設定不可修改 (含刪除、重命名、建立連結、寫入)。唯 root 可解除:chattr -i /etc/inetd.conf。修改後再次加鎖。