真正有效的linux安全加固必须分三步:先用ss -tuln等命令查清监听端口与服务,再用systemctl stop/disable或mask关停非必要服务本身,最后用firewalld/iptables限制访问范围,而非仅封端口。

安全与速度不是非此即彼的选择,而是需要在可控范围内做取舍。关键在于识别哪些加固动作真正影响性能,哪些只是“看起来安全”却无实质收益;同时避免为追求极致响应而关闭基础防护机制。
精简服务与端口暴露
系统默认开启的服务越多,攻击面越大,资源开销也越高。重点关掉非必要服务,而非一刀切禁用所有守护进程。
- 用 systemctl list-unit-files --state=enabled 查看开机自启项,逐个确认用途;数据库、Web 服务等业务必需项保留,avahi-daemon、cups、bluetooth 等桌面向服务在服务器上通常可禁用
- 用 ss -tuln 或 netstat -tuln 检查监听端口,对未使用的开放端口(如 631/cups、5353/avahi)直接停对应服务,比用防火墙拦截更省 CPU
- 禁用 IPv6 若实际不用:在 /etc/default/grub 中追加 ipv6.disable=1,再运行 grub2-mkconfig -o /boot/grub2/grub.cfg,可减少网络栈初始化和路由表维护开销
内核参数调优兼顾防护与效率
部分安全相关内核参数会带来轻微延迟或内存占用,但多数可在不牺牲防护前提下微调。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- net.ipv4.conf.all.rp_filter = 1(反向路径过滤)保持启用,它能防 IP 欺骗且对现代网卡影响极小;但若使用多出口或策略路由,可改为 2 避免误丢包
- net.ipv4.tcp_syncookies = 1 建议开启,抵御 SYN Flood,仅在连接建立阶段介入,不影响正常吞吐
- kernel.kptr_restrict = 2 和 kernel.dmesg_restrict = 1 可防止非特权用户读取内核指针或日志,内存开销几乎为零,应长期开启
- 避免过度启用 CONFIG_STACKPROTECTOR_STRONG 或 CONFIG_HARDENED_USERCOPY 类编译级防护——这些需重新编译内核,日常发行版默认已平衡,手动激进开启反而可能引入兼容性问题
文件系统与日志策略务实取舍
日志和元数据写入是安全刚需,但可控制粒度,避免拖慢 I/O。
- 挂载 /var/log 所在分区时添加 relatime(而非 noatime),既减少访问时间更新开销,又保留基本时间戳用于审计分析
- 用 journalctl --disk-usage 查看 journal 占用,限制大小:sudo systemctl edit systemd-journald,加入 [Journal] SystemMaxUse=500M,防日志无限膨胀吃光磁盘
- 敏感目录如 /etc/shadow、/root 权限保持 600 或 700 即可,不必额外部署 SELinux/AppArmor——除非你有明确合规要求或复杂多租户场景,否则它们的策略加载和上下文检查会增加上下文切换负担
防火墙规则聚焦实效,避免冗余匹配
iptables/nftables 规则顺序和数量直接影响包处理延迟,尤其在高并发连接场景。
- 把 ESTABLISHED,RELATED 规则放在最前(-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT),让已有连接绕过后续匹配,显著降低 CPU 负担
- 限制单 IP 连接数用 connlimit,但阈值设合理:比如 Web 服务设 --connlimit-above 100,而非 10;太严会误伤正常爬虫或 CDN 回源
- 禁用 nf_conntrack_log_invalid(echo 0 > /proc/sys/net/netfilter/nf_conntrack_log_invalid),关闭无效连接日志,减少内核日志压力










