“一键合规化”需精准识别业务依赖、按基线裁剪暴露面,并确保可验证可回退;聚焦停用明文协议服务、限制远程管理接口、收敛非标端口;防火墙策略须动态生成且持久生效;内核参数应场景化配置;执行前必须校验网络连通性、备份配置、标记必需服务。

实现Linux系统网络与服务配置的“一键合规化”,关键不是批量停掉服务或封死端口,而是让脚本精准识别业务依赖、按基线标准裁剪暴露面,并在执行前后可验证、可回退。它必须区分“该关的”和“不能动的”,避免加固完系统连不上、服务起不来。
聚焦三类高危服务与协议
自动化脚本应优先处理明文传输、远程管理、历史遗留这三类风险突出的服务:
-
停用明文协议服务:telnet、ftp、rsh、rlogin、tftp——这些服务默认不加密、无认证强化,脚本需检查对应进程(
systemctl is-active telnet.socket)、包安装状态(rpm -q telnet-server或dpkg -l | grep ftp),并执行systemctl disable --now telnet.socket+apt remove --purge vsftpd等清理动作 - 限制远程管理接口:除SSH外,禁用HTTP/HTTPS管理界面(如webmin、cockpit非必要时不启用)、关闭SNMP v1/v2c(保留v3且强认证)、禁用rpcbind/nfs-server除非明确需要NFS共享
-
收敛非标服务端口:脚本不应硬编码“只开22、80、443”,而应读取变量
allowed_ports: ["22/tcp", "443/tcp", "8080/tcp"],再调用firewall-cmd --permanent --remove-service=...清空默认服务,再按白名单逐条添加
防火墙策略必须动态生成、持久生效
firewalld 是主流发行版默认方案,脚本需确保规则不只临时生效,还要规避常见陷阱:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先确认当前 zone(
firewall-cmd --get-active-zones),再用--permanent操作;禁止混用iptables和firewalld命令,防止规则冲突 - 默认策略设为
deny入站:firewall-cmd --permanent --set-default-zone=drop(比public更严格) - 对业务端口,用 rich rule 精确控制来源:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.0.0/16" port port="3306" protocol="tcp" accept' - 执行
firewall-cmd --reload后,自动验证端口是否真实关闭:timeout 3 bash -c 'echo > /dev/tcp/127.0.0.1/23' &>/dev/null || echo "telnet port 23 is closed"
内核网络参数要按场景启用,不盲目套用
sysctl 调优不是堆参数,而是针对典型攻击面做防御性配置:
-
防IP欺骗:启用
net.ipv4.conf.all.rp_filter = 1和net.ipv4.conf.default.rp_filter = 1,但需注意某些负载均衡或隧道环境需设为2(宽松反向路径) -
防ICMP滥用:关闭全网响应
net.ipv4.icmp_echo_ignore_all = 1,但允许本地诊断net.ipv4.icmp_echo_ignore_broadcasts = 1 -
防SYN洪泛:开启
net.ipv4.tcp_syncookies = 1,同时调高队列长度net.ipv4.tcp_max_syn_backlog = 4096 - 所有修改写入
/etc/sysctl.d/99-hardening.conf,再运行sysctl --system加载,避免仅改内存未落盘
执行前必须完成三项基础校验
跳过准备环节的“一键脚本”,大概率导致业务中断或加固失效:
- 确认当前网络连通性:脚本开头检测能否 ping 通网关、DNS 是否可用,失败则中止并提示“请检查网络基础连通性”
-
备份关键配置:自动备份
/etc/firewalld/目录、/etc/sysctl.conf及所有.d/*.conf文件到/var/log/.backups/firewalld-$(date +%s) -
标记业务必需服务:通过变量文件定义
required_services: ["sshd", "nginx", "redis-server"],脚本跳过对这些服务的停用逻辑,只检查其监听地址是否绑定到内网(ss -tlnp | grep nginx | grep -q ':127.0.0.1')










