linux系统安全加固核心是“最小暴露面”:只开必需端口、只运行必需服务;防火墙是策略而非开关,关服务须确认必要性,禁用后需补足fail2ban等替代防护并验证。

Linux系统安全加固,核心是“最小暴露面”:只开必需的端口、只运行必需的服务。防火墙不是开关,而是策略;关服务不是停掉进程,而是确认它是否真被需要。关键不在于“怎么关”,而在于“为什么关、关了之后会不会漏”。
识别当前启用的防火墙服务
不同发行版默认不同,不能凭经验猜:
- 运行 sudo systemctl list-units --type=service | grep -E "(firewalld|ufw|iptables|nftables)",看哪个服务状态是 active (running)
- 若输出为空,再执行 sudo ss -tuln | grep ':22\|:80\|:443' 检查是否有监听端口,结合 cat /proc/sys/net/ipv4/ip_forward 判断是否启用了内核转发(可能绕过常规防火墙)
- 特别注意:Ubuntu 22.04+ 默认用 ufw 管理,但底层实际由 nftables 执行;在 firewalld 运行时执行 ufw 命令,可能看似成功,实则无效
按发行版关闭防火墙(仅限调试场景)
关闭前请明确目标——是临时测试网络连通性?还是为部署容器让路?切勿长期关闭。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- CentOS/RHEL 8+:先 sudo systemctl stop firewalld,再 sudo systemctl disable firewalld;建议追加 sudo systemctl mask firewalld 防止被其他服务意外拉起
- Ubuntu/Debian:先 sudo ufw status verbose 确认状态,再执行 sudo ufw disable;禁用后必须再次运行 sudo ufw status,看到 Status: inactive 才算生效
- 遗留 iptables 系统(如 CentOS 6):需三步清空 sudo iptables -F && sudo iptables -X && sudo iptables -P INPUT ACCEPT,再 sudo service iptables stop;仅 stop 不清规则,仍可能丢包
关闭不必要服务的判断与操作
服务是否“不必要”,取决于角色定位。一台 Web 服务器不需要 cups(打印服务),但一台开发机可能需要 avahi-daemon(局域网发现)。
- 列出开机自启且正在运行的服务:systemctl list-unit-files --state=enabled | grep enabled,再用 systemctl is-active xxx 确认是否真在跑
- 常见可关服务举例:bluetooth(无蓝牙设备)、ModemManager(非移动网络环境)、rpcbind(不用 NFS)、postfix(不发邮件)
- 安全操作顺序:sudo systemctl stop xxx → sudo systemctl disable xxx → sudo systemctl daemon-reload;禁用后重启验证是否未自动启动
关闭后的必检项与替代防护
关了防火墙和服务,不等于裸奔。必须补上控制面和监控面:
- 立刻验证:用 curl -I http://localhost 测试本地服务,用 telnet 公网IP 端口 从外部测通断;同时登录云平台控制台,确认安全组/网络 ACL 已同步放行对应端口
- 若确需长期关闭防火墙,至少启用 fail2ban 监控 SSH 异常登录,并在 /etc/hosts.allow 中用 tcpwrappers 限制 sshd: 192.168.1.0/24 等可信网段
- 所有关闭动作,建议记录原始配置:如 firewalld 执行 sudo firewall-cmd --list-all-zones > /root/firewall-backup-$(date +%F);服务禁用前保存 systemctl show xxx > /root/xxx-service-state










