银河麒麟系统需通过终端命令启用nx位与kysec协同的内存执行保护:先确认cpu支持nx/xd,再修改grub添加nx=on并更新,最后用kysecctl开启进程保护并验证生效。

如果您在银河麒麟系统中运行关键业务程序时遭遇因缓冲区溢出导致的进程崩溃、异常终止或被KYSEC拦截,需启用内存执行保护机制来阻止代码从数据页执行,但银河麒麟安全中心本身不提供DEP(Data Execution Prevention)图形化开关——该功能由内核NX位与KYSEC进程保护协同实现,必须通过终端命令组合配置。
确认当前系统是否支持NX执行保护
打开终端,执行:
cat /proc/cpuinfo | grep -i nx
若输出包含nx或xd字段,说明CPU支持硬件级NX(No-Execute);若无输出,则该CPU不支持,后续步骤将无法生效。
执行:
sudo dmesg | grep -i "nx\|execute"
观察是否有NX (Execute Disable) protection: active类提示。若显示disabled或未提及,说明内核启动参数未启用NX,需修改GRUB。
永久启用内核NX保护(必须步骤)
1、编辑GRUB配置文件:
sudo vim /etc/default/grub
2、找到行GRUB_CMDLINE_LINUX_DEFAULT="quiet splash",在引号内末尾添加空格后追加nx=on,例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nx=on"
【注意:不可写成noexec=on、norpx=on或nx=force——只有nx=on是银河麒麟V10/V11内核识别的有效参数】
3、更新GRUB配置:
sudo update-grub
4、重启系统使NX参数载入内核。
启用KYSEC进程执行防护子功能
方法一:一键启用三项核心防护
执行:
sudo kysecctl --process-protect on --file-protect on --device-control on
方法二:分步验证式启用(推荐用于生产环境)
第一步:启用进程保护,防止未签名代码注入堆/栈执行:
sudo kysecctl --process-protect on
第二步:验证是否激活:
kysecctl --status | grep "process protect"
若返回process protect: enabled,说明已生效;若为disabled,请先确认getstatus输出中Kysecstatus为normal,否则需先执行sudo kysec enable并修改/etc/kysec/kysec.conf设为kysec_status=normal。
第三步:强制加载KYSEC内核模块(仅首次启用时需执行):
sudo modprobe kysec-process
验证内存执行保护是否真正起效
1、检查内核NX是否已启用:
cat /sys/firmware/acpi/kernel_table | head -n1 2>/dev/null || echo "NX active"
更可靠方式是执行:
sudo dmesg | grep -i "nx.*active\|execute.*disable.*active"
2、确认KYSEC进程保护正在拦截可疑执行行为:
sudo kysecctl --log-level debug --status | grep -A5 "process protect"
3、手动触发一次栈执行测试(仅限测试机):
echo -e '#include
若系统弹出KYSEC拦截对话框或终端报Segmentation fault (core dumped)且dmesg中出现kysec: blocked execution from stack,即表示防护已生效。











