在Debian系统中,ulimit
命令用于控制shell进程及其子进程可以使用的系统资源。通过合理设置ulimit
,可以防止恶意攻击者利用系统资源进行拒绝服务(DoS)攻击或其他滥用行为。以下是一些常见的ulimit
设置和最佳实践:
文件描述符限制可以防止恶意用户打开过多的文件或网络连接。
# 查看当前文件描述符限制
ulimit -n
# 临时设置文件描述符限制为4096
ulimit -n 4096
# 永久设置文件描述符限制(编辑/etc/security/limits.conf)
echo "* soft nofile 4096" >> /etc/security/limits.conf
echo "* hard nofile 4096" >> /etc/security/limits.conf
限制每个用户可以启动的进程数。
# 查看当前进程数限制
ulimit -u
# 临时设置进程数限制为1024
ulimit -u 1024
# 永久设置进程数限制(编辑/etc/security/limits.conf)
echo "* soft nproc 1024" >> /etc/security/limits.conf
echo "* hard nproc 1024" >> /etc/security/limits.conf
限制进程可以使用的CPU时间。
# 查看当前CPU时间限制
ulimit -t
# 临时设置CPU时间限制为3600秒(1小时)
ulimit -t 3600
# 永久设置CPU时间限制(编辑/etc/security/limits.conf)
echo "* soft core 0" >> /etc/security/limits.conf
限制进程可以使用的最大内存。
# 查看当前内存使用限制
ulimit -v
# 临时设置内存使用限制为512MB
ulimit -v 512000
# 永久设置内存使用限制(编辑/etc/security/limits.conf)
echo "* soft as 512000" >> /etc/security/limits.conf
echo "* hard as 512000" >> /etc/security/limits.conf
限制进程可以使用的最大堆栈大小。
# 查看当前堆栈大小限制
ulimit -s
# 临时设置堆栈大小限制为8MB
ulimit -s 8192
# 永久设置堆栈大小限制(编辑/etc/security/limits.conf)
echo "* soft stack 8192" >> /etc/security/limits.conf
echo "* hard stack 8192" >> /etc/security/limits.conf
限制每个进程可以同时打开的文件描述符数量。
# 查看当前打开文件描述符的限制
ulimit -n
# 临时设置打开文件描述符的限制为4096
ulimit -n 4096
# 永久设置打开文件描述符的限制(编辑/etc/sysctl.conf)
echo "fs.file-max = 100000" >> /etc/sysctl.conf
sysctl -p
限制每个进程可以建立的网络连接数。
# 查看当前网络连接限制
ulimit -l
# 临时设置网络连接限制为1024
ulimit -l 1024
# 永久设置网络连接限制(编辑/etc/security/limits.conf)
echo "* soft nofile 4096" >> /etc/security/limits.conf
echo "* hard nofile 4096" >> /etc/security/limits.conf
限制进程可以创建的锁文件数量。
# 查看当前锁文件限制
ulimit -l
# 临时设置锁文件限制为1024
ulimit -l 1024
# 永久设置锁文件限制(编辑/etc/security/limits.conf)
echo "* soft nofile 4096" >> /etc/security/limits.conf
echo "* hard nofile 4096" >> /etc/security/limits.conf
限制核心转储文件的大小。
# 查看当前核心转储文件限制
ulimit -c
# 临时设置核心转储文件限制为0(禁止生成核心转储文件)
ulimit -c 0
# 永久设置核心转储文件限制(编辑/etc/security/limits.conf)
echo "* soft core 0" >> /etc/security/limits.conf
echo "* hard core 0" >> /etc/security/limits.conf
限制进程可以运行的最大时间。
# 查看当前时间限制
ulimit -t
# 临时设置时间限制为3600秒(1小时)
ulimit -t 3600
# 永久设置时间限制(编辑/etc/security/limits.conf)
echo "* soft core 0" >> /etc/security/limits.conf
echo "* hard core 0" >> /etc/security/limits.conf
通过以上设置,可以有效地防止恶意攻击者利用系统资源进行滥用。请根据实际需求调整这些限制,并确保在生产环境中进行充分的测试。