CentOS 中 GCC 安全性防范要点
一 系统与编译器基线
二 构建阶段的安全编译选项
| 保护机制 | 关键选项 | 作用要点 |
|---|---|---|
| NX/DEP | -z noexecstack | 堆栈不可执行,阻断传统栈溢出执行 |
| Stack Protector | -fstack-protector / -fstack-protector-strong | 插入 Canary 检测栈溢出,strong 覆盖范围更广 |
| FORTIFY_SOURCE | -D_FORTIFY_SOURCE=2(建议配合 -O2) | 对字符串/内存操作进行编译期与运行期检查,溢出时终止 |
| RELRO | -z lazy / -z now | 将重定位表设为只读(Full RELRO 更强) |
| PIE/ASLR | -fPIE/-fpie + -pie | 生成位置无关可执行文件,启用代码段/数据段随机化 |
| 符号与调试 | -s / strip | 移除符号表,减少攻击者对内部结构的利用面 |
三 构建后验证与测试
四 运行与运维加固