Linux系统安全1节

上传人:E**** 文档编号:90248785 上传时间:2019-06-10 格式:PPT 页数:60 大小:1.85MB
返回 下载 相关 举报
Linux系统安全1节_第1页
第1页 / 共60页
Linux系统安全1节_第2页
第2页 / 共60页
Linux系统安全1节_第3页
第3页 / 共60页
Linux系统安全1节_第4页
第4页 / 共60页
Linux系统安全1节_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《Linux系统安全1节》由会员分享,可在线阅读,更多相关《Linux系统安全1节(60页珍藏版)》请在金锄头文库上搜索。

1、网络与信息安全 系统安全:Linux系统安全,潘爱民,北京大学计算机研究所 http:/ 容,Linux系统介绍 Linux内核 Linux文件系统 Linux的网络结构 Linux攻防技术 一次针对Linux的入侵过程,Linux操作系统,背景 最初由Linus Benedict Torvalds于1991年开发的 1994年3月发布第一个正式版本 内核升级模式 稳定的内核,第二个数字为偶数,例如2.2.14 开发的内核,第二个数字为奇数,例如2.1.14 Linux系统特点 兼容UNIX:API兼容,管理命令和各种工具 源码开放 支持各种硬件平台,支持多CPU Linux平台上存在大量的应

2、用软件,以及应用开发工具,Linux内核,多用户,多任务,分时,软实时处理 不是微内核系统,但具有某些微内核特征 Intel版本:i386的保护模式,特权级 内核态(0)和用户态(3) 中断和系统调用两种特权级的切换 PCB:进程控制块,常驻内存 进程是最基本的调度单元 进程是动态的,每一个进程都有一个进程控制块 没有专门的调度进程,内核中有一个schedule函数完成调度任务 进程在调度过程中有多种状态,进程调度:状态转换图,TASK_RUNNING,Holding CPU,TASK_UNINTERRUPTIBLE,TASK_INTERRUPTIBLE,TASK_ZOMBIE,TASK_ST

3、OPPED,do_fork(),schedule(),时间片到,do_exit(),申请资源未果,申请资源未果,跟踪系统调用,所申请资源有效时,收到SIG_KILL或SIG_CONT后,所申请资源有效或者收到信号时,Linux的系统调用,编程接口,与POSIX兼容,C语言函数集合 实现形式与DOS的INT 21H相似 Linux使用int 80h 函数名“sys_xxx” 比如系统调用fork的相应函数sys_fork() 系统调用号和系统调用表 系统调用都转换为Int 80h软中断 所有的系统调用只有一个入口system_call 出口: ret_from_sys_call,Linux内存管

4、理,在i386机器上,每个进程有独立的4G虚存空间 32位线性地址利用硬件的分页机制 内核的代码段和数据段被映射到3G以上的空间中 用户态下的代码实际可申请的虚存空间为0-3GB 每个进程用两套段描述符来访问内存,分别用来访问内核态和用户态下的内存空间 在用户态下,代码不可能访问3G以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断 Linux对虚存的管理使用vma(virtual memory area)机制 在进程数据结构中,指定了用户空间的上界,在系统调用时,用户指定的指针不能超过此上界,但是内核代码可以重新设定此上界 页交换机制:缺页中断、页面换入,Linux的段选择符情况,

5、Linux的模块机制,可动态装载的内核模块(lkm) 一组命令:insmod/rmmod/lsmod/modprobe/ 关于模块机制 可以让核心保持比较小的尺寸 动态装载,避免重新启动 模块机制常常用于设备驱动 内核模块一旦加载之后,与原有的核心代码同等 可动态装载的内核模块的一些缺点 可能会导致一定的性能损失,和内存开销 代码不规范的模块可能导致核心崩溃 如果调用系统核心功能时,参数错误,同样会有问题,Linux的模块机制原理,insmod装载模块 Linux内核中有一个模块链表 首先通过一个特权级系统调用来找到核心的输出符号 然后将模块读入虚拟内存,并利用来自核心的输出符号,修改其未解析

6、的核心例程和资源的引用地址 再次使用特权级系统调用来申请足够的空间来容纳新的核心模块,并拷贝到此内存空间中 每个模块必须包括初始化例程和注销例程,insmod将调用初始化代码,并执行一个特权级系统调用将模块的初始化与注销例程地址传递给核心 rmmod卸载模块 当一个模块不再被引用的时候,它可以被卸载 核心调用注销例程,释放相应的核心资源 从模块链表中移除,它所占用的核心内存被回收,内核中的ROOTKIT,通过LKM机制,可以在系统内核中插入木马模块 一个典型的以Linux 2.2.x为基础的rootkit knark 使用insmod knark.o就可以加载到内核中 一旦加载了knark后门

7、之后 可以改变netstat的输出结果 可以改变运行进程的UID和GID 可以不用SUID就能够获得root访问权限 还有其他的ROOTKITS,比如adore 内核ROOTKITS的对策 根据每个rootkit的特征进行检测,然后设法删除 预防为主,安装内核检测系统,比如LIDS,Linux文件系统,Linux支持多种文件系统,包括ext、ext2、hpfs、vfat、ntfs、 通过虚拟文件系统VFS ,Linux操作系统可以支持不同类型的文件系统 文件系统类型管理 文件系统类型的注册途径: 在编译内核时确定 在文件系统作为模块装入时登记,next,next=0,next,file_sys

8、tem,file_system_type,虚拟文件系统(VFS),是物理文件系统与服务之间的一个接口层,只存在于内存中 定义了关于各种特殊文件系统的公共接口抽象性 Super_block、inode、文件操作函数入口 把所有的文件系统映射到同一个层次结构中,通过super_block与inode中的关联关系来实现,如下图所示 处理面向文件系统的通用操作 把针对文件系统的操作映射到相关的物理文件系统 许多复杂的cache机制,提高了文件系统的访问效率 VFS inode cache VFS directory cache Buffer cache ,root,i_mount,i_sb,s_cov

9、erd s_mounted,ext2文件系统,这是Linux系统专用的文件系统 文件也是分块存储,以块为整单位,数据块,三次间接块,二次间接块,一次间接块,12个直接块,数据块,数据块,数据块,数据块,数据块,.,组0,组1,组N,s_block,fs描述符,块位图,inode位图,inode表,数据块,数据结构 ext2_super_block ext2_inode: 内含一个32位的文件访问控制表和一个32位的目录访问控制表,Linux文件系统的安全性,Linux文件系统安全模型与两个属性相关 文件的所有者(ownership) 文件所有者的id 文件所有者所在用户组的id 访问权限(ac

10、cess rights) 10个标志 第1个标志:d(目录), b(块系统设备), c(字符设备), .(普通文件) 第2-4个标志:所有者的读、写、执行权限 第5-7个标志:所有者所在组的读、写、执行权限 第8-10个标志:其他用户的读、写、执行权限 用chmod修改权限:字符方式和数字方式,Linux文件的安全性,SUID程序 正常情况下,一个程序在运行的时候,它的进程将属于当前用户 但是,对于SUID程序,它的进程不属于启动用户,而是属于该程序的所有者用户 通常,SUID/SGID程序中的bug往往是入侵的基础,mount和fstab命令 用mount装载文件系统的时候,可以使用一些选项

11、控制文件系统的安全性,对于装载FAT系统比较有意义。 umash=N uid=N gid=N,Linux文件系统安全性,权限管理的不灵活 只能对所有者、所有者所在组和其他用户分配权限,无法做到进一步的细致化 POSIX ACLs for Linux软件包 内核补丁,可以做到用ACL来管理权限 需要重新编译内核,下载补丁:http:/acl.bestbits.at 两个命令:setfacl、getfacl 真正删除文件 工具wipe,Linux用户管理,用户文件/etc/passwd Shadow password: /etc/shadow 此文件只对root可读 让用户拥有单独的组,而不是加入

12、到共享的users组中 groupadd 创建用户:useradd 改口令:passwd 管理口令的有效期 chage,Linux中crypt口令加密方案,crypt()是一个口令加密函数,它基于DES算法。我们可以认为这是一个单向加密操作 函数原型: char *crypt(const char *key, const char *salt); *salt是两个字符,每个字符可从a-zA-Z0-9./中选出来 算法 UNIX标准算法使用DES加密算法,用key对一个常量进行加密,获得一个13字节的密文编码输出,其中包括salt的两个字符from Red Hat Linux 6.2 Salt的

13、作用 同样的口令产生不同的密文 增加了穷举空间 建议使用更为安全的MD5算法,Linux中Kerberos认证协议的支持,建立KDC 下载和安装Kerberos 5 配置Kerberos 启动服务 管理Kerberos kadmin,管理Kerberos数据库 使用Kerberos kinit,获得一个ticket klist,列出所有的tickets kpasswd, 修改口令 kdestroy, 删除一个ticket 使用支持Kerberos的网络应用,例如ftp, telnet, 等,PAM(Pluggable Authentication Modules),一种可插入的认证机制 针对一

14、个服务,指定一些认证相关的动作,放到/etc/pam.conf文件中,或者放到/etc/pam.d/下与服务同名的配置文件中 每一行包含一个模块类型、一个控制级别、一个模块:service module-type control-flag module args 例如 passwd password required pam_cracklib.so type=user retry=3 passwd password required pam_pwdb.so use_authtok,PAM结构图,login telnet ftp ,用户,认证管理(auth) 帐户管理(account) 会话管理

15、(session) 口令管理(password),PAM 配置文件,管理员,PAM API,UNIX认证,Kerberos认证,S/Key认证,PAM SPI,PAM核心库,系统服务,PAM服务模块,Linux内核安全性,Linux内核机制存在的一些潜在缺陷 超级用户的特权可能会被滥用 系统文档不安全 系统内核可以比较容易地插入模块 内核中,进程不受保护,Linux对网络的支持,Linux从UNIX继承了在网络方面的优势 Linux自身的发展也是与Internet息息相关的 介绍内容 Linux网络层次 Linux协议栈 Linux网络配置 内核防火墙,Linux中网络的层次结构,BSD So

16、ckets,INET Sockets,TCP,UDP,IP,PPP,SLIP,Ethernet,ARP,User,Kernel,Network Applications,Socket Interface,Protocol Layers,Network Devices,Appletalk,IPX,BSD Socket,一个通用的接口 A part of VFS inode A socket can be operated just the same as a file by system call read(), write(), lseek() 一个套接字描述一个通讯连接的一端,两个通讯程序中各自有一个套接字来描述它们自己那一端。 每一类型的套接字有它自己的通信寻址方法。Linux支持下列套接字地址族或域 UNIX Unix

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号