ulimit
是一個用于控制 shell 進程資源使用的命令行工具。通過限制用戶或進程可以使用的資源,可以提高系統的安全性。以下是如何利用 ulimit
保護 Ubuntu 系統安全的步驟:
首先,你可以查看當前的 ulimit
設置,以了解哪些資源是受限的。
ulimit -a
文件描述符是進程打開的文件、網絡連接等的標識符。過多的文件描述符可能會導致資源耗盡。
ulimit -n 1024 # 將每個進程可以打開的文件描述符數量限制為1024
限制單個用戶可以同時運行的進程數,以防止惡意用戶通過創建大量進程來消耗系統資源。
ulimit -u 512 # 將單個用戶可以同時運行的進程數限制為512
限制進程可以使用的CPU時間,以防止長時間運行的進程占用過多資源。
ulimit -t 3600 # 將進程可以使用的CPU時間限制為1小時(3600秒)
限制進程可以使用的最大內存量,以防止內存耗盡攻擊。
ulimit -v 512000 # 將進程可以使用的最大內存量限制為512MB
限制進程的堆棧大小,以防止緩沖區溢出攻擊。
ulimit -s 8192 # 將進程的堆棧大小限制為8MB
限制核心轉儲文件的大小,以防止敏感信息泄露。
ulimit -c 0 # 禁止生成核心轉儲文件
上述 ulimit
設置在當前 shell 會話結束后會失效。為了持久化這些設置,可以將它們添加到用戶的 shell 配置文件中(例如 .bashrc
或 .profile
)。
echo "ulimit -n 1024" >> ~/.bashrc
echo "ulimit -u 512" >> ~/.bashrc
echo "ulimit -t 3600" >> ~/.bashrc
echo "ulimit -v 512000" >> ~/.bashrc
echo "ulimit -s 8192" >> ~/.bashrc
echo "ulimit -c 0" >> ~/.bashrc
然后重新加載配置文件:
source ~/.bashrc
對于更復雜的系統,可以使用 Pluggable Authentication Modules (PAM) 來進行更細粒度的資源限制。編輯 /etc/security/limits.conf
文件:
sudo nano /etc/security/limits.conf
添加以下行:
* hard nofile 1024
* soft nofile 1024
* hard nproc 512
* soft nproc 512
* hard core 0
* soft core 0
定期監控系統資源使用情況,并記錄相關日志,以便及時發現和處理異常情況。
watch -n 1 "ulimit -a"
通過以上步驟,你可以有效地利用 ulimit
來保護 Ubuntu 系統的安全。