通過 ulimit 命令可以限制進程所能使用的系統資源,如文件大小、進程數、CPU使用時間等,從而保護 Debian 服務器免受攻擊。以下是一些關鍵步驟和配置方法:
使用 ulimit -a 命令可以查看當前系統資源限制的詳細信息,包括軟限制(soft limit)和硬限制(hard limit)。
臨時修改限制:可以使用 ulimit 命令臨時修改當前會話的資源限制。例如:
ulimit -n 65536:設置進程可以同時打開的文件描述符的最大數目為 65536。ulimit -u 1024:設置用戶可以創建的最大進程數為 1024。ulimit -m 500000:設置進程使用的最大內存大小為 500000KB。ulimit -t 3600:設置進程可以使用的最大 CPU 時間為 3600 秒。永久修改限制:要永久修改資源限制,需要編輯 /etc/security/limits.conf 文件。例如:
username soft nofile 65536
username hard nofile 65536
上述配置將指定 username 用戶的文件描述符限制設置為 65536。
在 Systemd 環境下,資源限制需要在 /etc/systemd/system.conf 配置中定義。該配置會影響 1 號進程本身的 limit,所以可以直接檢查 /proc/1/limits 來判斷是否配置正確。
很多應用會使用 PAM(/etc/security/limits.conf)來覆蓋原本的 limit 值。確保在 /etc/security/limits.conf 中定義相關的 limit 值,可以防止某些應用超過預期的資源限制。
ulimit 命令設置的限制對于當前用戶和其子進程都是繼承的。子進程可以繼承父進程的資源限制,但也可以通過自己的 ulimit 命令設置新的限制。ulimit 命令修改資源限制需要對相應的資源有適當的權限。管理員可以設置系統級別的限制,而普通用戶可能只能更改自己的進程的限制。通過合理配置 ulimit,可以有效限制進程的資源使用,防止單個進程消耗過多資源,從而提高服務器的穩定性和安全性。