版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络与信息安全
系统安全:Linux系统安全第04讲Linux系统安全(参考)内容Linux系统介绍Linux内核Linux文件系统Linux的网络结构Linux攻防技术一次针对Linux的入侵过程第04讲Linux系统安全(参考)Linux操作系统背景最初由LinusBenedictTorvalds于1991年开发的1994年3月发布第一个正式版本内核升级模式稳定的内核,第二个数字为偶数,例如2.2.14开发的内核,第二个数字为奇数,例如2.1.14Linux系统特点兼容UNIX:API兼容,管理命令和各种工具源码开放支持各种硬件平台,支持多CPULinux平台上存在大量的应用软件,以及应用开发工具第04讲Linux系统安全(参考)Linux内核多用户,多任务,分时,软实时处理不是微内核系统,但具有某些微内核特征Intel版本:i386的保护模式,特权级内核态(0)和用户态(3)中断和系统调用——两种特权级的切换PCB:进程控制块,常驻内存进程是最基本的调度单元进程是动态的,每一个进程都有一个进程控制块没有专门的调度进程,内核中有一个schedule函数完成调度任务进程在调度过程中有多种状态第04讲Linux系统安全(参考)进程调度:状态转换图TASK_RUNNINGHoldingCPUTASK_UNINTERRUPTIBLETASK_INTERRUPTIBLETASK_ZOMBIETASK_STOPPEDdo_fork()schedule()时间片到do_exit()申请资源未果申请资源未果跟踪系统调用所申请资源有效时收到SIG_KILL或SIG_CONT后所申请资源有效或者收到信号时第04讲Linux系统安全(参考)Linux的系统调用编程接口,与POSIX兼容,C语言函数集合实现形式与DOS的INT21H相似Linux使用int80h函数名“sys_xxx”比如系统调用fork的相应函数sys_fork()系统调用号和系统调用表系统调用都转换为Int80h软中断所有的系统调用只有一个入口system_call出口:ret_from_sys_call第04讲Linux系统安全(参考)Linux内存管理在i386机器上,每个进程有独立的4G虚存空间32位线性地址——利用硬件的分页机制内核的代码段和数据段被映射到3G以上的空间中用户态下的代码实际可申请的虚存空间为0-3GB每个进程用两套段描述符来访问内存,分别用来访问内核态和用户态下的内存空间在用户态下,代码不可能访问3G以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断Linux对虚存的管理使用vma(virtualmemoryarea)机制在进程数据结构中,指定了用户空间的上界,在系统调用时,用户指定的指针不能超过此上界,但是内核代码可以重新设定此上界页交换机制:缺页中断、页面换入第04讲Linux系统安全(参考)Linux的段选择符情况第04讲Linux系统安全(参考)Linux的模块机制可动态装载的内核模块(lkm)一组命令:insmod/rmmod/lsmod/modprobe/…关于模块机制可以让核心保持比较小的尺寸动态装载,避免重新启动模块机制常常用于设备驱动内核模块一旦加载之后,与原有的核心代码同等可动态装载的内核模块的一些缺点可能会导致一定的性能损失,和内存开销代码不规范的模块可能导致核心崩溃如果调用系统核心功能时,参数错误,同样会有问题第04讲Linux系统安全(参考)Linux的模块机制原理insmod装载模块Linux内核中有一个模块链表首先通过一个特权级系统调用来找到核心的输出符号然后将模块读入虚拟内存,并利用来自核心的输出符号,修改其未解析的核心例程和资源的引用地址再次使用特权级系统调用来申请足够的空间来容纳新的核心模块,并拷贝到此内存空间中每个模块必须包括初始化例程和注销例程,insmod将调用初始化代码,并执行一个特权级系统调用将模块的初始化与注销例程地址传递给核心rmmod卸载模块当一个模块不再被引用的时候,它可以被卸载核心调用注销例程,释放相应的核心资源从模块链表中移除,它所占用的核心内存被回收第04讲Linux系统安全(参考)内核中的ROOTKIT通过LKM机制,可以在系统内核中插入木马模块一个典型的以Linux2.2.x为基础的rootkit——knark使用insmodknark.o就可以加载到内核中一旦加载了knark后门之后可以改变netstat的输出结果可以改变运行进程的UID和GID可以不用SUID就能够获得root访问权限……还有其他的ROOTKITS,比如adore内核ROOTKITS的对策根据每个rootkit的特征进行检测,然后设法删除预防为主,安装内核检测系统,比如LIDS第04讲Linux系统安全(参考)Linux文件系统Linux支持多种文件系统,包括ext、ext2、hpfs、vfat、ntfs、…通过虚拟文件系统VFS,Linux操作系统可以支持不同类型的文件系统文件系统类型管理文件系统类型的注册途径:在编译内核时确定在文件系统作为模块装入时登记nextnext=0next第04讲Linux系统安全(参考)虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,只存在于内存中定义了关于各种特殊文件系统的公共接口——抽象性Super_block、inode、文件操作函数入口把所有的文件系统映射到同一个层次结构中,通过super_block与inode中的关联关系来实现,如下图所示处理面向文件系统的通用操作把针对文件系统的操作映射到相关的物理文件系统许多复杂的cache机制,提高了文件系统的访问效率VFSinodecacheVFSdirectorycacheBuffercache……rooti_mounti_sbs_coverds_mounted第04讲Linux系统安全(参考)ext2文件系统这是Linux系统专用的文件系统文件也是分块存储,以块为整单位数据块三次间接块二次间接块一次间接块12个直接块数据块数据块数据块数据块数据块...组0组1组Ns_blockfs描述符块位图inode位图inode表数据块数据结构ext2_super_blockext2_inode:内含一个32位的文件访问控制表和一个32位的目录访问控制表第04讲Linux系统安全(参考)Linux文件系统的安全性Linux文件系统安全模型与两个属性相关文件的所有者(ownership)文件所有者的id文件所有者所在用户组的id访问权限(accessrights)10个标志第1个标志:d(目录),b(块系统设备),c(字符设备),.(普通文件)第2-4个标志:所有者的读、写、执行权限第5-7个标志:所有者所在组的读、写、执行权限第8-10个标志:其他用户的读、写、执行权限用chmod修改权限:字符方式和数字方式第04讲Linux系统安全(参考)Linux文件的安全性SUID程序正常情况下,一个程序在运行的时候,它的进程将属于当前用户但是,对于SUID程序,它的进程不属于启动用户,而是属于该程序的所有者用户通常,SUID/SGID程序中的bug往往是入侵的基础mount和fstab命令用mount装载文件系统的时候,可以使用一些选项控制文件系统的安全性,对于装载FAT系统比较有意义。umash=Nuid=Ngid=N第04讲Linux系统安全(参考)Linux文件系统安全性权限管理的不灵活只能对所有者、所有者所在组和其他用户分配权限,无法做到进一步的细致化POSIXACLsforLinux软件包内核补丁,可以做到用ACL来管理权限需要重新编译内核,下载补丁:两个命令:setfacl、getfacl真正删除文件工具wipe第04讲Linux系统安全(参考)Linux用户管理用户文件/etc/passwdShadowpassword:/etc/shadow此文件只对root可读让用户拥有单独的组,而不是加入到共享的users组中groupadd创建用户:useradd改口令:passwd管理口令的有效期chage第04讲Linux系统安全(参考)Linux中crypt口令加密方案crypt()是一个口令加密函数,它基于DES算法。我们可以认为这是一个单向加密操作函数原型:char*crypt(constchar*key,constchar*salt);*salt是两个字符,每个字符可从[a-zA-Z0-9./]中选出来算法UNIX标准算法使用DES加密算法,用key对一个常量进行加密,获得一个13字节的密文编码输出,其中包括salt的两个字符[fromRedHatLinux6.2]Salt的作用同样的口令产生不同的密文增加了穷举空间建议使用更为安全的MD5算法第04讲Linux系统安全(参考)Linux中Kerberos认证协议的支持建立KDC下载和安装Kerberos5配置Kerberos启动服务管理Kerberoskadmin,管理Kerberos数据库使用Kerberoskinit,获得一个ticketklist,列出所有的ticketskpasswd,修改口令kdestroy,删除一个ticket使用支持Kerberos的网络应用,例如ftp,telnet,等第04讲Linux系统安全(参考)PAM(PluggableAuthenticationModules)一种可插入的认证机制针对一个服务,指定一些认证相关的动作,放到/etc/pam.conf文件中,或者放到/etc/pam.d/下与服务同名的配置文件中每一行包含一个模块类型、一个控制级别、一个模块:servicemodule-typecontrol-flagmodule[args]例如passwdpasswordrequiredpam_cracklib.sotype=userretry=3passwdpasswordrequiredpam_pwdb.souse_authtok第04讲Linux系统安全(参考)PAM结构图logintelnetftp……用户认证管理(auth)帐户管理(account)会话管理(session)口令管理(password)PAM配置文件管理员PAMAPIUNIX认证Kerberos认证S/Key认证PAMSPIPAM核心库系统服务PAM服务模块……第04讲Linux系统安全(参考)Linux内核安全性Linux内核机制存在的一些潜在缺陷超级用户的特权可能会被滥用系统文档不安全系统内核可以比较容易地插入模块内核中,进程不受保护第04讲Linux系统安全(参考)Linux对网络的支持Linux从UNIX继承了在网络方面的优势Linux自身的发展也是与Internet息息相关的介绍内容Linux网络层次Linux协议栈Linux网络配置内核防火墙第04讲Linux系统安全(参考)Linux中网络的层次结构BSDSocketsINETSocketsTCPUDPIPPPPSLIPEthernetARPUserKernelNetworkApplicationsSocketInterfaceProtocolLayersNetworkDevicesAppletalkIPX第04讲Linux系统安全(参考)BSDSocket一个通用的接口ApartofVFSinodeAsocketcanbeoperatedjustthesameasasystemcallread(),write(),lseek()…一个套接字描述一个通讯连接的一端,两个通讯程序中各自有一个套接字来描述它们自己那一端。每一类型的套接字有它自己的通信寻址方法。Linux支持下列套接字地址族或域UNIXUnix域套接字INETInternet地址族支持通过TCP/IP协议的通信AX25AmateurradioX25IPXNovellIPXAPPLETALKAppletalkDDPX25X25对BSDsocket进行准确操作要依赖于它下面的地址族第04讲Linux系统安全(参考)Client/ServerCommunicationClient1.Createasocket2.Bindanaddr3.Listentheclient4.CreateasocketServer
ConnectAcceptSendRecv第04讲Linux系统安全(参考)INETSocketBSDsocket层从已注册的INETproto_ops数据结构中调用INET层socket支持例程来为它执行工作。BSDsocket层把socket结构传到INET层。为了不把BSDsocket与TCP/IP的特定信息搞混,INETsocket层使用它自己的数据结构:sock,它与BSDsocket结构相连。建立BSDsocket:地址族,socket类型,协议将地址与INETsocket绑定
绑定操作在INETsocket层内处理,下面的TCP和UDP协议层提供一些支持。绑定的地址在sock结构中的recv_addr和saddr字段。例如,fd=socket(AF_INET,SOCK_STREAM,0)下层网络设备接收的包必须通过正确的INET和BSDsocket才能被处理。因此,UDP和TCP维护了一些hash表用来在输入IP消息内查找地址并将它们导向正确的socket/sock对。第04讲Linux系统安全(参考)INETSocket(续)在INETSocket上建立连接UDP:IP地址和端口号TCP:建立虚联接监听INETSocketUDP:改变socket的状态TCP:建立一个新的sock结构,加到两个hash表中并激活tcp_bound_hash表和tcp_listening_hash表。接收连接请求只用于TCP协议阻塞和非阻塞状态第04讲Linux系统安全(参考)socket()sys_socket()socket()sock_create()inet_create()get_fd()returncheckprotocol,type,familynet_families[family]->create(sock,protocol)createsocketstructuretcp_v4_init_sock()sk->prot->init()INETinet_create()IPXipx_create()UNIXunix_create()第04讲Linux系统安全(参考)LinuxBSDSocketDataStructure
countclose_on_execopen_fsfd[0]fd[1]fd[255]filef_modef_posf_flagsf_countf_ownerf_opf_inodef_versioninodesocksockettypeprotocoldata(sk)typeprotocolsocketSOCK_STREAMSOCK_STREAMAddressFamilysocketoperationsBSDSocketlseekreadwriteselectioctlclosefasyncINETsocketBSDsocket第04讲Linux系统安全(参考)IP层Socket缓存sk_buff每一个包到来之后,都被放到一个sk_buff中sk_buff是一个数据结构,包含一些与该包有关的信息在包和sk_buff之间是一对一的关系sk_buff大小按16字节的倍数分配空间接收IP包将接收的数据转换成sk_buff结构。这些sk_buff则被网络驱动加入到了backlog队列中。如果backlog队列太长,则丢弃接收的sk_buff。发送IP包建立sk_buff加上各种头。IP用路由表为目的IP地址解析路由IP分片第04讲Linux系统安全(参考)PacketsinLinuxkernel2.2sys_write()sock_write()inet_sendmsg()tcp_v4_sendmsg()
tcp_do_sendmsg()
tcp_send_skb()
tcp_transmit_skb()ip_queue_xmit()
ip_output()
ip_finish_output()dev_queue_xmit()hard_start_xmit()sys_read()sock_read()inet_recvmsg()tcp_recvmsg()
tcp_v4_recv()ip_local_deliver()
ip_rcv()
net_bh()Netif_rx()Block_input()
ei_receive()
ei_interrupt()outputinput第04讲Linux系统安全(参考)接收数据包的过程首先是硬件接收到数据包然后,硬件产生中断驱动程序把数据从硬件拷贝到一个sk_buff中调用netif_rx()把数据包放到系统全局的backlog队列中通知net_bh()在适当的时候net_bh()执行net_bh()试图发送所有的数据包,然后从backlog队列中移除,送到适当的包处理器,例如ip_rcv()ip_rcv()可能会调用ip_local_deliver()或ip_forward()ip_local_deliver()会导致调用tcp_v4_rcv()tcp_v4_rcv()将数据放到某个socket的队列中当socket的进程读数据时,tcp_recvmsg()被调用如果socket进程阻塞在读操作上,则进程将被唤醒第04讲Linux系统安全(参考)OnNetworklevel…Ip_rcv()RoutetableIp_forward()DemasqIp_output()RoutetableIp_local_deliver()inputforwardoutputTransportlevelDatalinklevelmasq第04讲Linux系统安全(参考)网络设备工作原理图第04讲Linux系统安全(参考)网络设备驱动数据结构面向对象的方法structdevice可见部分和隐藏部分。可见部分是由外部赋值隐藏部分的域段仅面向系统内部,它们可以随时被改变初始化主要工作是检测设备的存在、初始化设备的device结构及在系统中登记该设备。
两种方式:模块初始化模式&启动初始化模式网络接口管理表:dev_base模块初始化模式第04讲Linux系统安全(参考)网络设备驱动的职责提供初始化功能支持启动初始化模式:网络设备的检测及初始化函数支持模块初始化模式:网络设备的初始化函数,供register_netdev调用;还需提供init_module和cleanup_module函数提供该网络设备的打开和关闭操作(ifconfig命令使用)提供该网络设备的数据传输函数,负责向硬件发送数据包,供dev_queue_xmit调用;提供该网络设备的中断服务程序,处理数据传输完毕的善后事宜和数据的接收。当物理网络设备有新数据到达或数据传输完毕时,将向系统发送硬件中断请求,该函数用来响应中断请求第04讲Linux系统安全(参考)Linux网络配置Linux用daemon程序来提供网络服务有些服务直接由daemon程序一直运行有些服务通过inetd提供Inetd它的职责是监听大范围内的网络端口,根据进来的请求动态启动相应的服务daemon——节约资源在Linux上,其实大多数inetd服务并不是必需的,虽然,这些服务本身有一定的安全认证能力,但是为了安全起见,应该关闭这些服务如何配置inetd?编辑inetd.conf
每行格式:<service_name><sock_type><proto><flags><user><server_path><args>通过/etc/services文件,可以查到每个service的端口和协议类型停止inetd进程,并重新启动第04讲Linux系统安全(参考)inetd.conf配置文件第04讲Linux系统安全(参考)/etc/services配置文件只影响inetd启动的网络服务,由其他脚本(例如rcN.d)启动的服务可能不受影响第04讲Linux系统安全(参考)TCPwrappers在Linux中为/usr/sbin/tcpd,用法TCPwrapper使得系统可以在请求登录或者输入口令之前拒绝进来的连接TCPwrapper的两个配置文件/etc/hosts.deny——满足条件则拒绝/etc/hosts.allow——满足条件则允许配置规则:service:host(s)[::action]两个工具tcpdchk,检查配置文件有没有错误,是否与其他文件冲突tcpdmatch,模拟规则是否如期起作用第04讲Linux系统安全(参考)日志、syslogdsyslogd是一个专门用于记录日志信息的服务配置文件/etc/syslog.conf可以记录本地日志,也可以记录远程的日志信息可以指定把什么样的日志消息记录到哪个文件中第04讲Linux系统安全(参考)Linux的内核防火墙协议栈在IP层上调用三个函数,防火墙的功能将在这三个函数中实现:ip_rcv():接收ip_forward():转发ip_output():发送三条规则链Input链Output链Forward链第04讲Linux系统安全(参考)Linux内核支持的NAT第04讲Linux系统安全(参考)Linux内核防火墙的发展从ipfwadm->ipchains->netfilterNetfilter是2.4内核中实现网络安全功能的通用框架在框架中,定义了5个钩子在每个钩子上可以挂接多个模块Iptables模块挂接在LOCAL_IN、FORWARD、LOCAL_OUT上提供多种功能包过滤防火墙地址转换NAT网络状态检测……Pre-routeForwardRoutePost-RouteLocal-inRouteLocal-out第04讲Linux系统安全(参考)针对Linux的攻防技术Linux平台上有大量的黑客工具,而且往往以源码方式发布,所以,学会编译和使用这些工具,可以在攻击对抗中发挥作用探查信息用nmap可以查到Linux的版本信息改变Linux的协议栈行为,可以掩盖这些信息许多早期的标准TCP/IP服务,可以暴露系统的内部信息,比如finger,还有一些基于RPC的服务尽量关闭不必要的服务一些服务的欢迎界面,比如服务修改这些服务的配置信息第04讲Linux系统安全(参考)口令破解如何获得Linux的口令文件口令文件的格式是公开的口令文件passwd中,如果口令移到了shadow中,则没有口令信息有一些工具能够获得shadow文件的副本破解程序Crack——猜口令JohntheRipper——字典攻击,也可以穷举攻击XIT——字典攻击,DOS程序……对策使用shadow,MD5使用强口令失败多次之后,帐号锁定结合其他的认证技术日志记录第04讲Linux系统安全(参考)Linux数据驱动攻击目标:获得root权限两种类型缓冲区溢出攻击通过缓冲区溢出,植入恶意代码,获得一个shell,可以是远程的shell,也可以是本地的输入验证攻击对于输入没有合理地检查,导致执行破坏性的代码(命令或者脚本等)在Web服务中比较多见,缺乏对于输入数据的语法检查对策:加强编程中的安全意识。由用户输入的脚本代码,或者在脚本代码中要用到用户输入的数据,则一定要检查输入数据不会危害整条语句第04讲Linux系统安全(参考)Linux的X及其他针对X的攻击X的功能太强大,一旦获得X的服务器访问控制权,则可以为所欲为X的认证机制基于主机的认证,脆弱基于token交换的认证对策:关闭X服务其他攻防技术木马技术网络监听技术NFS不安全性检查SUID程序的安全性日志记录……第04讲Linux系统安全(参考)一次针对Linux的入侵过程(一)1.收集信息
一般ftp服务器都使用了linux系统,所以用ftp搜索器寻找
第04讲Linux系统安全(参考)一次针对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昆虫标本采集制作工班组评比评优考核试卷含答案
- 农业经理人岗前设备性能考核试卷含答案
- 六年级试卷试题及答案
- 药品购销员安全技能测试考核试卷含答案
- 胶印版材涂布液合成工岗前跨领域知识考核试卷含答案
- 墨锭制作工岗前竞争考核试卷含答案
- 溶剂蒸煮工安全实操评优考核试卷含答案
- 数控铣工安全生产能力水平考核试卷含答案
- 制鞋工安全生产基础知识测试考核试卷含答案
- 广西贵港市2023-2024学年八年级下学期英语期中考试试卷(解析版)
- 医学课件:心脏瓣膜病完整版
- 南开大学中国近代史课件第一章
- 地大水文地质学基础-课件
- 第五版-FMEA-新版FMEA【第五版】
- 认识视力残疾
- GB/T 28731-2012固体生物质燃料工业分析方法
- 浙江大学-傅琳-答辩通用PPT模板
- 数学中考《四点共圆型考题》专题复习课件
- 五年级上册心理健康教育课件-3记忆加油站|辽大版 (共12张PPT)
- LNG液化工艺(课堂PPT)课件(PPT 43页)
- 配电网工程典型设计10kV电缆分册参考模板
评论
0/150
提交评论