Linux安全基线加固:内核参数与文件权限实操 核心要点图解,内核参数加固优先落地:关闭IP转发与重定向、开启SYN Cookie、限制dmesg与ptrace,能显著缩小攻击面。;文件权限基线核心是收紧umask、清理全局可写文件与异常SUID/SGID,避免本地提权。;加固前先备份配置并做变更记录,所有sysctl项写入持久化文件,避免重启失效。;加固后用命令逐项复核并纳入定期巡检,基线才有长期价值。
Linux安全基线加固:内核参数与文件权限实操 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 内核参数加固优先落地:关闭IP转发与重定向、开启SYN Cookie、限制dmesg与ptrace,能显著缩小攻击面。
  • 文件权限基线核心是收紧umask、清理全局可写文件与异常SUID/SGID,避免本地提权。
  • 加固前先备份配置并做变更记录,所有sysctl项写入持久化文件,避免重启失效。
  • 加固后用命令逐项复核并纳入定期巡检,基线才有长期价值。

很多服务器被入侵,并不是因为漏洞多高级,而是基线太松:内核允许转发和重定向、临时目录全局可写、一堆来源不明的 SUID 文件、umask 默认 022 谁都能读。等出事再回头查,往往已经晚了。本文面向要动手的运维和站长,把 Linux 安全基线加固拆成内核参数与文件权限两条主线,给出可直接复制执行的命令、对比表格和上线前检查清单,照着做一轮,攻击面能明显收窄。

一、先明确:安全基线加固到底在加固什么

安全基线加固不是装个杀毒软件就完事,而是把系统配置收敛到「最小必要」状态。对 Linux 来说,最容易被忽视又收益最高的两块是:

  • 内核参数:控制网络行为、内存与调试接口,决定攻击者能做多少事。
  • 文件权限:决定谁能读、写、执行,直接关系本地提权与配置篡改。

动手前先做两件事:备份关键配置(cp /etc/sysctl.conf /etc/sysctl.conf.bak),并记录变更时间与操作人,方便回滚和审计。

二、内核参数加固:sysctl 实操

临时验证用 sysctl -w,生产必须落盘。建议新建独立文件,避免与系统默认配置互相覆盖:

cat > /etc/sysctl.d/99-security.conf <<'EOF'
# 网络层加固
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.log_martians = 1
# 限制调试与信息泄露
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.yama.ptrace_scope = 1
fs.suid_dumpable = 0
EOF
sysctl --system

几个关键项的作用与取舍:

参数作用注意
tcp_syncookies缓解 SYN Flood高并发场景保持开启
accept_redirects=0防路由重定向劫持多网卡路由场景需评估
dmesg_restrict限制内核日志读取普通用户无法看 dmesg
ptrace_scope=1限制进程调试注入部分调试工具需临时调整

改完用 sysctl -a | grep -E "rp_filter|syncookies|ptrace_scope" 复核,确认没有其他文件覆盖。若服务器承担路由或容器转发,ip_forward 按业务需要单独评估,不要盲目关闭。

三、文件权限收紧:umask 与关键路径

先看当前默认值:umask。多数发行版是 022,意味着新建文件其他用户可读。建议在 /etc/profile 或 /etc/login.defs 中统一为 027:

echo 'umask 027' >> /etc/profile
grep -n '^UMASK' /etc/login.defs   # 改为 UMASK 027

随后处理敏感文件与目录:

  1. 关键账户文件:chmod 600 /etc/shadow、chmod 644 /etc/passwd、chmod 600 /etc/ssh/ssh_host_*_key。
  2. SSH 配置:chmod 600 /etc/ssh/sshd_config,禁止普通用户读取。
  3. 计划任务:chmod 600 /etc/crontab,并检查 /etc/cron.* 属主为 root。
  4. 家目录:chmod 750 /home/*,避免横向读取。

四、异常权限排查:全局可写与 SUID

全局可写是重灾区,先用 find 扫一遍:

find / -xdev -type d -perm -0002 -exec ls -ld {} \;
find / -xdev -type f -perm -0002 -exec ls -l {} \;

目录应加粘滞位(如 chmod +t /tmp),文件应收紧到 644 或 600。接着排查 SUID/SGID:

find / -xdev -perm -4000 -type f -exec ls -l {} \;
find / -xdev -perm -2000 -type f -exec ls -l {} \;

与发行版默认清单比对,重点看 /tmp、/home、/var 下出现的可执行文件。来源不明的先 chmod u-s 去掉 SUID 位,再用 rpm -Vf 或 dpkg -S 确认归属,必要时按入侵事件处理。

五、账户与 SSH 基线:顺手一起收

权限和内核之外,账户面同样属于基线:锁定无用账户(usermod -L)、设置空口令检查(awk -F: '(==""){print }' /etc/shadow)、SSH 关闭 root 直登并限制来源。防护建议上,可在边界侧配合 AegisX 的主机与访问控制能力,把基线策略与流量侧告警联动,减少单点遗漏。

六、上线前检查清单

  • sysctl 配置已落盘并 sysctl --system 生效,关键项复核通过。
  • umask 已统一为 027,登录后新文件权限符合预期。
  • shadow、SSH 私钥、crontab 权限已收紧。
  • 全局可写目录已加粘滞位,可疑文件已处理。
  • SUID/SGID 清单已比对,异常项有处置记录。
  • 变更已归档,纳入季度巡检脚本。

行动建议:今天就挑一台非核心机器,按上面命令跑一遍,把输出保存成基线快照;确认无业务影响后再推广到生产。加固不是一次性任务,把检查写成脚本、定期跑差异,才是真正可持续的安全基线。

常见问题(FAQ)

内核参数加固改了之后重启就失效怎么办?

说明只做了临时生效。正确做法是把参数写入持久化配置文件,如/etc/sysctl.d/99-security.conf,再执行sysctl --system加载。临时用sysctl -w只适合验证,生产环境必须落盘,并确认没有其他配置文件覆盖同名键值,可用sysctl -a核对最终生效值。

umask设置成027会影响业务吗?

会有影响但通常可控。umask 027表示新建文件默认权限640、目录750,同组用户可读、其他用户无权限。若业务依赖其他用户读取共享目录,可能出现权限不足。建议先在测试环境验证,或对共享目录单独用ACL授权,而不是放宽全局umask。

怎么快速找出服务器上的异常SUID文件?

用find / -perm -4000 -type f列出所有SUID文件,再与发行版默认清单比对。重点关注/tmp、/home、/var下出现的SUID文件,以及非包管理器安装路径下的可执行文件。可用rpm -Vf或dpkg -S确认文件归属,来源不明的直接去掉SUID位并排查入侵。

全局可写目录和文件有什么风险?

全局可写意味着任何本地用户都能篡改内容。目录可写可能被植入恶意脚本或替换计划任务,文件可写可能被改写配置导致服务被控。排查用find / -xdev -type d -perm -0002和find / -xdev -type f -perm -0002,目录应加粘滞位,文件应收紧权限或确认属主。

安全基线加固需要多久做一次?

建议首次完整落地一次,之后按季度复核,并在系统升级、业务上线、人员变动后追加检查。内核参数与文件权限属于易漂移项,可写成脚本纳入巡检,输出差异报告。等保或合规场景通常要求有基线文档与定期核查记录,频率按制度执行。