预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共70页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Linux和Unix安全编程HOWTO DavidA.Wheeler Copyright©1999,2000byDavidA.Wheeler 本文对在Linux和Unix系统下编写安全程序给出了一组设计和实现的指导原 则。这样的程序包括用来浏览远端数据的应用程序、CGI脚本程序、网络服务器 和setuid/setgid程序。本文还包含了针对C、C++、Java、Perl、Python和Ada95 的特别指导。 TableofContents 1.导言 2.背景知识 Unix、Linux与开放源码软件的历史 Unix 自由软件基金会 Linux 开放源码软件 Linux与Unix的比较 安全准则 安全程序的类型 多疑症是个优点 为什么要编写本文档? 设计和实现原则的来源 文档习语 3.Linux和Unix安全特性概要 进程 进程属性 POSIX能力 进程创建与操作 文件 文件系统对象的属性 创建时的初始值 改变存取控制属性 使用存取控制属性 文件系统分级结构 SystemV的IPC 套接字和网络连接 信号 配额与限制 动态连接库 审核 PAM 4.证实所有的输入 命令行 环境变量 有些环境变量是危险的 环境变量的存储格式是危险的 解决方案--提取和清除 文件描述符 文件内容 CGI输入 其它输入 字符编码 限制合法的输入时间和负载水平 5.避免缓存溢出 C/C++中的危险 C/C++中库的解决方案 标准C库的解决方案 静态和动态分配缓存 strlcpy和strlcat libmib Libsafe 其它库 C/C++的编译解决方案 其它语言 6.程序内部结构与解决方案 保证接口的安全 特权最小化 最小化授予的特权 最小化可以使用特权的时间 最小化特权有效的时间 >最小化获得特权的模块 考虑用FSUID来限制特权 考虑使用chroot来最小化可用文件 避免创建Setuid/Setgid脚本 安全地配置并使用安全的缺省值 安全地失败 避免竞争状态 次序问题 锁定 只信任值得信任的通道 使用内部一致性检查代码 自我限制资源 7.小心对其它资源的调用出口 限制调用出口为合法值 检查系统调用的所有返回值 8.明断地发回信息 最小化反馈 处理完整的/不响应的输出 9.特定语言的问题 C/C++ Perl Python Shell脚本语言(sh及csh的变种) Ada Java 10.专题 密码 随机数 加密算法与协议 PAM 其它事项 11.结论 12.参考文献 A.历史回顾 B.感谢 C.关于文档许可 D.GNU自由文档许可证(原文) E.关于作者 ListofTables 4-1.非法UTF-8初始序列 Chapter1.导言 Awisemanattacksthecityofthe mightyandpullsdownthestronghold inwhichtheytrust. Proverbs21:22(NIV) 本文对在Linux和Unix系统下编写安全程序提出了一组设计和实现的指导原 则。在本文中,“安全程序”是指一个位于安全区域内的程序,要从不具有与该程 序相同访问权限的信息源获取输入数据。这样的程序包括用来浏览远端数据的应 用程序、CGI脚本程序、网络服务器和setuid/setgid程序。本文不涉及对操作 系统内核本身的修改,虽然这里讨论的许多原则可以应用到操作系统内核上。这 些指导原则来源于对许多创建安全程序的“教训”的调查(加上作者的观察),并 重新组织成一组更普遍的原则。本文还包含了针对C、C++、Java、Perl、Python 和Ada95等一些编程语言的特别指导。 本文不包括保证测量、软件工程的步骤和质量保证手段,这些确实很重要,但在 其它地方有更为广泛的讨论。保证测量包括测试、仔细检阅、配置管理和正规化 方法。对安全问题的保证测量开发进行专门阐述的文献包括CommonCriteria [CC1999]和SystemSecurityEngineeringCapabilityMaturityModel [SSE-CMM1999]。更普遍的软件工程方法或步骤在诸如SoftwareEngineering Institute的CapabilityMaturityModelforSoftware(SE-CMM)、ISO9000(以 及ISO9001和ISO9001-3)和ISO12207等文献中有详尽的定义。 本文不讨论在一个给定的环境下如何配置一个安全的系统(或网络)。很明显这 对安全使用一个给定程序是必要的,但已经有太多的其它文献讨论了安全配置。 Garfinkel[1996]是一本优秀的有关配置安全的类Unix系统的一般性书籍。其它 有关类Unix系统安全的