拜读大牛Ulrich Drepper大作之Security Enhancements in Red Hat Enterprise Linux
2012-03-21 18:43
507 查看
读大牛Ulrich Drepper 关于企业级Linux开发所使用到的一些安全增强功能
关键点
section 2 利用安全问题
分为两类:
远程, 这需要黑客能够利用网络等手段来远程的进行破坏, 相对来说比较容易出现的就是利用有问题的网络服务进行破坏,比如臭名昭著的buffer flow.
本地, 如果黑客已经可以在你的本地利用操作系统提供的各种接口去做一些恶意的事情, 很难防范
section 4 关于Exec-Shield
Redhat实现了一个据称更强的类似于Pax及grsecurity的exec-shield.
Exec-shield的一些内部机制:
内核会被每个进程的stack进行一定程度随机偏移
procfs中的每个PID所对应的目录下的maps的信息只有对所有者有读权限
把stack标识为non-executable
为了能够不破坏既有的ABI及x86体系结构下有些程序对stack executable的需求, 更改了compiler和link, 使得它们能够动态的判断是否一个程序需要在stack上被执行, 从而增加了一个PT_GNU_STACK, 让kernel使用elf 头中新增加的这个标志记录来在初始化的时候决定合适的permission.
文中的Appendix A有更详尽的讨论
限制对内存的定址操作(locating the memory)
像对stack的设计一样, 对于每个进程的可写内存都分配不一样的地址区间
对可运行的段一样采用的random地址的机制
介绍了关于x86 32bit体系结构下实现exec-shield的trick技巧.
section 5 PIE 位置无关的可执行文件
RedHat通过修改compiler及linker使得可以编译出类似DSO的PIC的可执行程序
引入了类似-fpic/-fPIC的-fpie/-fPIE的编译选项
Redhat及fedora有选择的部分可执行程序进行了PIE的convert
section 6 对ELF Data的保护及增强
通过分析重要elf文件中的section, 找出所有可写的section, 并判断是否有安全隐患(overflow之类)
比如, .got是可写的, 它如果被hacker所攻击, 就会导致有些地址被错误的定位
这里还必须注意, 虽然有.rodata section, 但是如果你定义的是一个const char* 数组, 由于它需要在执行时被linker重地位, 所有还是必须是可写的, 所以只能被编译器放在.data section
ELF的所有section的排列都是历史原因, 没有考虑的安全因素, 所以其中一个section被破坏了, 也会导致接下来的section同样被破坏.
Redhat引入了-z relro的编译选项来增加elf的安全性.
重要的两个Appendix
A, 如何使用exec-shield
B, 一个检测安全编程的script, 用以检查上述几点增强特性是否被使用
关键点
section 2 利用安全问题
分为两类:
远程, 这需要黑客能够利用网络等手段来远程的进行破坏, 相对来说比较容易出现的就是利用有问题的网络服务进行破坏,比如臭名昭著的buffer flow.
本地, 如果黑客已经可以在你的本地利用操作系统提供的各种接口去做一些恶意的事情, 很难防范
section 4 关于Exec-Shield
Redhat实现了一个据称更强的类似于Pax及grsecurity的exec-shield.
Exec-shield的一些内部机制:
内核会被每个进程的stack进行一定程度随机偏移
procfs中的每个PID所对应的目录下的maps的信息只有对所有者有读权限
把stack标识为non-executable
为了能够不破坏既有的ABI及x86体系结构下有些程序对stack executable的需求, 更改了compiler和link, 使得它们能够动态的判断是否一个程序需要在stack上被执行, 从而增加了一个PT_GNU_STACK, 让kernel使用elf 头中新增加的这个标志记录来在初始化的时候决定合适的permission.
文中的Appendix A有更详尽的讨论
限制对内存的定址操作(locating the memory)
像对stack的设计一样, 对于每个进程的可写内存都分配不一样的地址区间
对可运行的段一样采用的random地址的机制
介绍了关于x86 32bit体系结构下实现exec-shield的trick技巧.
section 5 PIE 位置无关的可执行文件
RedHat通过修改compiler及linker使得可以编译出类似DSO的PIC的可执行程序
引入了类似-fpic/-fPIC的-fpie/-fPIE的编译选项
Redhat及fedora有选择的部分可执行程序进行了PIE的convert
section 6 对ELF Data的保护及增强
通过分析重要elf文件中的section, 找出所有可写的section, 并判断是否有安全隐患(overflow之类)
比如, .got是可写的, 它如果被hacker所攻击, 就会导致有些地址被错误的定位
这里还必须注意, 虽然有.rodata section, 但是如果你定义的是一个const char* 数组, 由于它需要在执行时被linker重地位, 所有还是必须是可写的, 所以只能被编译器放在.data section
ELF的所有section的排列都是历史原因, 没有考虑的安全因素, 所以其中一个section被破坏了, 也会导致接下来的section同样被破坏.
Redhat引入了-z relro的编译选项来增加elf的安全性.
重要的两个Appendix
A, 如何使用exec-shield
B, 一个检测安全编程的script, 用以检查上述几点增强特性是否被使用
相关文章推荐
- 拜读大牛Ulrich Drepper大作之Defensive Programming for Red Hat Enterprise Linux
- Security Takes Lead in Red Hat Enterprise Linux @ JDJ
- How to configure a SMTP server in Red Hat Enterprise Linux
- Red Hat Enterprise Linux 4 in VMware learning tips
- How do I configure the iscsi-initiator in Red Hat Enterprise Linux 5?
- What is a "sosreport" and how do I create it in Red Hat Enterprise Linux 4.6 and later
- Common administrative commands in Red Hat Enterprise Linux 5, 6, and 7
- How to create Oracle ASM devices using device-mapper multipath devices in Red Hat Enterprise Linux 6
- How do I configure vncserver to start GNOME or KDE by default in Red Hat Enterprise Linux ?
- How do I add raw device mapping in Red Hat Enterprise Linux 5?
- AMD TSC Drift Solutions in Red Hat Enterprise Linux&#174
- Install Language support in CentOS 5 or Red Hat Enterprise Linux CentOS add Chinese Support
- Install Language support in CentOS 5 or Red Hat Enterprise Linux CentOS add Chinese Support
- OpenSSH chrooted SFTP using public keys in Red Hat Enterprise Linux
- How to use, monitor, and disable transparent hugepages in Red Hat Enterprise Linux 6
- Disable or enable the IPv6 protocol in Red Hat Enterprise Linux
- vmware中RHEL5(Red Hat Enterprise Linux 5)下oracle 11g安装文档
- Red Hat Enterprise Linux 5 系统中安装JDK1.6
- Red Hat Enterprise Linux 与Cent OS以及VMware虚拟机
- Red Hat Enterprise Linux 5.0 服务器构建与故障排除