萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows 10 資訊

Linux 系統安全加固 Shell 腳本 v2.0 詳解與改進建議

腳本用途與使用方式

本腳本旨在自動化執行 Linux 系統基礎安全加固。使用方法:將腳本存為 security.sh,上傳至伺服器,執行 sh security.sh 即可。注意:生產環境執行前務必審閱每項操作,並做好快照備份。

核心加固內容解析

1. 禁用預設系統帳號

passwd -l xfs news nscd dbus vcsa games nobody avahi haldaemon gopher ftp mailnull pcap mail shutdown halt uucp operator sync adm lp

鎖定無需登入的系統帳號,縮小攻擊面。建議改用 usermod -s /sbin/nologin 並檢查 /etc/passwd 確認無誤。

2. 關鍵系統檔案不可變屬性保護

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow

防止關鍵帳號檔案被竄改。需解鎖時使用 chattr -i。注意:此操作會干擾使用者管理工具(useradd、passwd 等),新增用戶前須先解鎖。

3. PAM 登入失敗鎖定策略

auth required pam_tally.so onerr=fail deny=3 unlock_time=300

連續 3 次認證失敗鎖定 5 分鐘。現代系統建議改用 pam_faillock.so(模組名可能為 pam_faillock),功能更完善。

4. 登入超時自動登出

echo "TMOUT=300" >> /etc/profile

閒置 5 分鐘自動登出。僅對互動式 Shell 生效,不影響服務類進程。

5. 縮減歷史命令記錄

sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile

將歷史記錄從 1000 縮減至 10 條。安全與可用性需平衡,建議設為 100-500 並配合 HISTCONTROL=ignoredups:erasedups 去重。

6. 啟用 TCP SYN Cookie 防禦洪水攻擊

echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
sysctl -p

7. SSH 服務加固

sed -i "s/#MaxAuthTries 6/MaxAuthTries 6/" /etc/ssh/sshd_config
sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
systemctl reload sshd

限制最大認證嘗試 6 次,關閉 DNS 反向解析加速登入。強烈建議額外配置:PermitRootLogin no、PubkeyAuthentication yes、PasswordAuthentication no、修改非預設埠。

8. 敏感命令權限收緊

chmod 700 /bin/ping /usr/bin/finger /usr/bin/who /usr/bin/w /usr/bin/locate /usr/bin/whereis /sbin/ifconfig /usr/bin/pico /bin/vi /usr/bin/which /usr/bin/gcc /usr/bin/make /bin/rpm

僅 root 可執行上述命令。副作用:普通用戶無法使用 ping、vi、gcc 等常用工具,可能嚴重影響開發運維效率。建議改用 sudo 精細授權或僅限制真正高風險命令(如 rpm、ifconfig)。

9. 歷史記錄檔案保護

chattr +a /root/.bash_history  # 僅允許追加
chattr +i /root/.bash_history  # 設為不可變(與 +a 衝突,實際僅後者生效)

建議僅用 chattr +a 防止刪除竄改,配合 HISTFILESIZE 限制大小。

10. 關鍵二進制檔案 MD5 基線建立

腳本建立核心命令 MD5 雜湊值存入 /var/log/$(hostname).log,供後續完整性檢查比對。建議改用 aide 或 tripwire 專業完整性檢查工具。

改進版腳本架構建議

  • 採用函數模組化設計,支援 --dry-run 預覽模式
  • 新增 OS 版本檢測,區分 RHEL/CentOS、Debian/Ubuntu 差異
  • 所有修改前自動備份原檔案至 /root/security_backup/$(date +%F)
  • 引入日誌記錄與顏色輸出,關鍵步驟要求人工確認
  • 提供回滾腳本 security_rollback.sh

總結

原腳本涵蓋帳號、檔案、網路、SSH、審計等基礎加固面向,但部分操作過於激進(如命令權限 700)、技術棧略舊(pam_tally、chattr +i 衝突)。實際部署請依據業務場景裁剪調整,並納入變更管理流程。

copyright © 萬盛學電腦網 all rights reserved