

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、網絡與信息安全系統安全:Linux系統安全內 容nLinux系統介紹qLinux內核qLinux文件系統nLinux的網絡結構nLinux攻防技術n一次針對Linux的入侵過程Linux操作系統n背景q最初由Linus Benedict Torvalds于1991年開發的q1994年3月發布第一個正式版本q內核升級模式n穩定的內核,第二個數字為偶數,例如2.2.14n開發的內核,第二個數字為奇數,例如2.1.14nLinux系統特點q兼容UNIX:API兼容,管理命令和各種工具q源碼開放q支持各種硬件平臺,支持多CPUqLinux平臺上存在大量的應用軟件,以及應用開發工具Linux內核n多用戶
2、,多任務,分時,軟實時處理n不是微內核系統,但具有某些微內核特征nIntel版本:i386的保護模式,特權級q內核態(0)和用戶態(3)q中斷和系統調用兩種特權級的切換nPCB:進程控制塊,常駐內存n進程是最基本的調度單元q進程是動態的,每一個進程都有一個進程控制塊q沒有專門的調度進程,內核中有一個schedule函數完成調度任務q進程在調度過程中有多種狀態進程調度:狀態轉換圖TASK_RUNNINGHolding CPUTASK_UNINTERRUPTIBLETASK_INTERRUPTIBLETASK_ZOMBIETASK_STOPPEDdo_fork()schedule()時間片到do_
3、exit()申請資源未果申請資源未果跟蹤系統調用所申請資源有效時收到SIG_KILL或SIG_CONT后所申請資源有效或者收到信號時Linux的系統調用n編程接口,與POSIX兼容,C語言函數集合n實現形式與DOS的INT 21H相似qLinux使用int 80hn函數名“sys_xxx”q比如系統調用fork的相應函數sys_fork()n系統調用號和系統調用表n系統調用都轉換為Int 80h軟中斷n所有的系統調用只有一個入口system_calln出口: ret_from_sys_callLinux內存管理n在i386機器上,每個進程有獨立的4G虛存空間n32位線性地址利用硬件的分頁機制n
4、內核的代碼段和數據段被映射到3G以上的空間中n用戶態下的代碼實際可申請的虛存空間為0-3GBn每個進程用兩套段描述符來訪問內存,分別用來訪問內核態和用戶態下的內存空間n在用戶態下,代碼不可能訪問3G以上的地址空間,如果要訪問內核空間,必須通過系統調用或者中斷nLinux對虛存的管理使用vma(virtual memory area)機制n在進程數據結構中,指定了用戶空間的上界,在系統調用時,用戶指定的指針不能超過此上界,但是內核代碼可以重新設定此上界n頁交換機制:缺頁中斷、頁面換入Linux的的段選擇符情況段選擇符情況Linux 的的 GDT 表項分布表項分布 表項序號表項序號 內容內容 起始
5、虛擬地址起始虛擬地址 段長度段長度 特權級特權級 0 NULL 描述符描述符 1 未使用未使用 2 內核態代碼段內核態代碼段 0 xC0000000 1GB 0 3 內核態數據段內核態數據段 0 xC0000000 1GB 0 4 用戶態代碼段用戶態代碼段 0 x00000000 3GB 3 5 用戶態數據段用戶態數據段 0 x00000000 3GB 3 6 未使用未使用 7 未使用未使用 2j+6 第第 j 進程進程 LDT 2j+7 第第 j 進程進程 TSS 段選擇符格式段選擇符格式(16 位)位) 15 3 2 1 0INDEXTIRPLTI: 0 GDT, 1 LDT(切換任務時切
6、換任務時,GDT 不變不變,LDT 改變改變)RPL: 特權級,特權級,0 為最高為最高Linux的模塊機制n可動態裝載的內核模塊(lkm)q一組命令:insmod/rmmod/lsmod/modprobe/n關于模塊機制q可以讓核心保持比較小的尺寸q動態裝載,避免重新啟動q模塊機制常常用于設備驅動q內核模塊一旦加載之后,與原有的核心代碼同等q可動態裝載的內核模塊的一些缺點n可能會導致一定的性能損失,和內存開銷n代碼不規范的模塊可能導致核心崩潰q如果調用系統核心功能時,參數錯誤,同樣會有問題Linux的模塊機制原理ninsmod裝載模塊qLinux內核中有一個模塊鏈表q首先通過一個特權級系統調
7、用來找到核心的輸出符號q然后將模塊讀入虛擬內存,并利用來自核心的輸出符號,修改其未解析的核心例程和資源的引用地址q再次使用特權級系統調用來申請足夠的空間來容納新的核心模塊,并拷貝到此內存空間中q每個模塊必須包括初始化例程和注銷例程,insmod將調用初始化代碼,并執行一個特權級系統調用將模塊的初始化與注銷例程地址傳遞給核心nrmmod卸載模塊q當一個模塊不再被引用的時候,它可以被卸載q核心調用注銷例程,釋放相應的核心資源q從模塊鏈表中移除,它所占用的核心內存被回收內核中的ROOTKITn通過LKM機制,可以在系統內核中插入木馬模塊n一個典型的以Linux 2.2.x為基礎的rootkit kn
8、arkq使用insmod knark.o就可以加載到內核中q一旦加載了knark后門之后n可以改變netstat的輸出結果n可以改變運行進程的UID和GIDn可以不用SUID就能夠獲得root訪問權限nn還有其他的ROOTKITS,比如adoren內核ROOTKITS的對策q根據每個rootkit的特征進行檢測,然后設法刪除q預防為主,安裝內核檢測系統,比如LIDSLinux文件系統nLinux支持多種文件系統,包括ext、ext2、hpfs、vfat、ntfs、q通過虛擬文件系統VFS ,Linux操作系統可以支持不同類型的文件系統n文件系統類型管理q文件系統類型的注冊途徑:n在編譯內核時確
9、定n在文件系統作為模塊裝入時登記nextnext=0nextfile_systemfile_system_type虛擬文件系統(VFS)n是物理文件系統與服務之間的一個接口層,只存在于內存中n定義了關于各種特殊文件系統的公共接口抽象性qSuper_block、inode、文件操作函數入口q把所有的文件系統映射到同一個層次結構中,通過super_block與inode中的關聯關系來實現,如下圖所示n處理面向文件系統的通用操作n把針對文件系統的操作映射到相關的物理文件系統n許多復雜的cache機制,提高了文件系統的訪問效率qVFS inode cacheqVFS directory cacheqB
10、uffer cacheqrooti_mounti_sbs_coverds_mountedext2文件系統n這是Linux系統專用的文件系統n文件也是分塊存儲,以塊為整單位數據塊三次間接塊二次間接塊一次間接塊12個直接塊數據塊數據塊數據塊數據塊數據塊.組0組1組Ns_blockfs描述符 塊位圖 inode位圖 inode表數據塊n數據結構qext2_super_blockqext2_inode: 內含一個32位的文件訪問控制表和一個32位的目錄訪問控制表Linux文件系統的安全性nLinux文件系統安全模型與兩個屬性相關q文件的所有者(ownership)n文件所有者的idn文件所有者所在用戶
11、組的idq訪問權限(access rights)n10個標志q第1個標志:d(目錄), b(塊系統設備), c(字符設備), .(普通文件)q第2-4個標志:所有者的讀、寫、執行權限q第5-7個標志:所有者所在組的讀、寫、執行權限q第8-10個標志:其他用戶的讀、寫、執行權限n用chmod修改權限:字符方式和數字方式Linux文件的安全性nSUID程序q正常情況下,一個程序在運行的時候,它的進程將屬于當前用戶q但是,對于SUID程序,它的進程不屬于啟動用戶,而是屬于該程序的所有者用戶q通常,SUID/SGID程序中的bug往往是入侵的基礎nmount和fstab命令q用mount裝載文件系統的
12、時候,可以使用一些選項控制文件系統的安全性,對于裝載FAT系統比較有意義。qumash=Nquid=Nqgid=NLinux文件系統安全性n權限管理的不靈活q只能對所有者、所有者所在組和其他用戶分配權限,無法做到進一步的細致化nPOSIX ACLs for Linux軟件包q內核補丁,可以做到用ACL來管理權限n需要重新編譯內核,下載補丁:http:/acl.bestbits.atq兩個命令:setfacl、getfacln真正刪除文件q工具wipeLinux用戶管理n用戶文件/etc/passwdqShadow password: /etc/shadown此文件只對root可讀n讓用戶擁有單
13、獨的組,而不是加入到共享的users組中qgroupaddn創建用戶:useraddn改口令:passwdn管理口令的有效期qchageLinux中crypt口令加密方案ncrypt()是一個口令加密函數,它基于DES算法。我們可以認為這是一個單向加密操作n函數原型:char *crypt(const char *key, const char *salt);*salt是兩個字符,每個字符可從a-zA-Z0-9./中選出來n算法qUNIX標準算法使用DES加密算法,用key對一個常量進行加密,獲得一個13字節的密文編碼輸出,其中包括salt的兩個字符from Red Hat Linux 6.2
14、nSalt的作用q同樣的口令產生不同的密文q增加了窮舉空間n建議使用更為安全的MD5算法Linux中Kerberos認證協議的支持n建立KDCq下載和安裝Kerberos 5q配置Kerberosq啟動服務n管理Kerberosqkadmin,管理Kerberos數據庫n使用Kerberosqkinit,獲得一個ticketqklist,列出所有的ticketsqkpasswd, 修改口令qkdestroy, 刪除一個ticketq使用支持Kerberos的網絡應用,例如ftp, telnet, 等PAM(Pluggable Authentication Modules)n一種可插入的認證機制
15、n針對一個服務,指定一些認證相關的動作,放到/etc/pam.conf文件中,或者放到/etc/pam.d/下與服務同名的配置文件中q每一行包含一個模塊類型、一個控制級別、一個模塊:service module-type control-flag module argsq例如passwd password required pam_cracklib.so type=user retry=3passwd password required pam_pwdb.so use_authtokPAM結構圖logintelnetftp用戶認證管理(auth)帳戶管理(account)會話管理(sessio
16、n)口令管理(password)PAM配置文件管理員PAM APIUNIX認證Kerberos認證S/Key認證PAM SPIPAM核心庫系統服務PAM服務模塊Linux內核安全性nLinux內核機制存在的一些潛在缺陷q超級用戶的特權可能會被濫用q系統文檔不安全q系統內核可以比較容易地插入模塊q內核中,進程不受保護Linux對網絡的支持nLinux從UNIX繼承了在網絡方面的優勢nLinux自身的發展也是與Internet息息相關的n介紹內容qLinux網絡層次nLinux協議棧qLinux網絡配置q內核防火墻Linux中網絡的層次結構BSD SocketsINET SocketsTCPUDP
17、IPPPPSLIPEthernetARPUserKernelNetwork ApplicationsSocket InterfaceProtocol LayersNetwork DevicesAppletalkIPXBSD Socketn一個通用的接口qA part of VFS inodeqA socket can be operated just the same as a file by system call read(), write(), lseek()n一個套接字描述一個通訊連接的一端,兩個通訊程序中各自有一個套接字來描述它們自己那一端。n每一類型的套接字有它自己的通信尋址方法。
18、Linux支持下列套接字地址族或域qUNIX Unix 域套接字 qINET Internet地址族支持通過TCP/IP協議的通信qAX25 Amateur radio X25 qIPX Novell IPX qAPPLETALK Appletalk DDP qX25 X25n對BSD socket進行準確操作要依賴于它下面的地址族Client/Server CommunicationClient1. Create a socket2. Bind an addr3. Listen the client4. Create a socketServer ConnectAcceptSendRecvI
19、NET SocketnBSD socket層從已注冊的INET proto_ops 數據結構中調用INET層 socket支持例程來為它執行工作。nBSD socket層把socket 結構傳到INET層。為了不把BSD socket 與TCP/IP的特定信息搞混,INET socket層使用它自己的數據結構:sock ,它與BSD socket 結構相連。n建立BSD socket:地址族,socket類型,協議q將地址與INET socket綁定綁定操作在INET socket層內處理,下面的TCP和UDP協議層提供一些支持。綁定的地址在sock結構中的 recv_addr 和 saddr
20、 字段。q例如, fd=socket(AF_INET, SOCK_STREAM, 0)n下層網絡設備接收的包必須通過正確的INET和BSD socket才能被處理。因此,UDP和TCP維護了一些hash表用來在輸入IP消息內查找地址并將它們導向正確的 socket/sock 對。INET Socket(續)n在INET Socket上建立連接qUDP:IP地址和端口號qTCP:建立虛聯接n監聽 INET SocketqUDP:改變socket的狀態qTCP:建立一個新的 sock 結構,加到兩個hash表中并激活 tcp_bound_hash 表和 tcp_listening_hash 表。n
21、接收連接請求q只用于TCP協議q阻塞和非阻塞狀態socket()sys_socket()socket()sock_create()inet_create()get_fd()returncheckprotocol, type, familynet_familiesfamily-create(sock, protocol)create socket structuretcp_v4_init_sock()sk-prot-init()INETinet_create()IPXipx_create()UNIXunix_create()Linux BSD Socket Data Structurefiles
22、_structcountclose_on_execopen_fsfd0fd1fd255filef_modef_posf_flagsf_countf_ownerf_opf_inodef_versioninodesocksockettypeprotocoldata (sk)typeprotocolsocketSOCK_STREAMSOCK_STREAMAddress Familysocket operationsBSD SocketFile OperationslseekreadwriteselectioctlclosefasyncINET socketBSD socketIP層nSocket緩存
23、sk_buffq每一個包到來之后,都被放到一個sk_buff中qsk_buff是一個數據結構,包含一些與該包有關的信息q在包和sk_buff之間是一對一的關系qsk_buff大小按16字節的倍數分配空間n接收IP包q將接收的數據轉換成 sk_buff 結構。這些 sk_buff 則被網絡驅動加入到了 backlog 隊列中。q如果 backlog 隊列太長,則丟棄接收的 sk_buff。n發送IP包q建立sk_buffq加上各種頭。IP用路由表為目的IP地址解析路由nIP分片Packets in Linux kernel 2.2sys_write()sock_write()inet_sendm
24、sg()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
25、接收數據包的過程n首先是硬件接收到數據包n然后,硬件產生中斷n驅動程序把數據從硬件拷貝到一個sk_buff中n調用netif_rx()把數據包放到系統全局的 backlog隊列中n通知net_bh()n在適當的時候net_bh()執行nnet_bh()試圖發送所有的數據包,然后從backlog隊列中移除,送到適當的包處理器,例如ip_rcv()nip_rcv()可能會調用ip_local_deliver()或ip_forward()nip_local_deliver()會導致調用tcp_v4_rcv()ntcp_v4_rcv()將數據放到某個socket的隊列中n當socket的進程讀數據時,
26、tcp_recvmsg()被調用n如果socket進程阻塞在讀操作上,則進程將被喚醒On Network level Ip_rcv()Route tableIp_forward()DemasqIp_output()Route tableIp_local_deliver()inputforwardoutputTransport levelDatalink levelmasq網絡設備工作原理圖網絡設備驅動n數據結構q面向對象的方法qstruct deviceq可見部分和隱藏部分。n可見部分是由外部賦值n隱藏部分的域段僅面向系統內部,它們可以隨時被改變n初始化q主要工作是檢測設備的存在、初始化設備的
27、device結構及在系統中登記該設備。 q兩種方式:模塊初始化模式 & 啟動初始化模式q網絡接口管理表:dev_baseq模塊初始化模式insmodinit_module( )register_netdev( )dev-init ( )網絡設備驅動的職責n提供初始化功能q支持啟動初始化模式:網絡設備的檢測及初始化函數q支持模塊初始化模式:網絡設備的初始化函數,供register_netdev調用;還需提供init_module和cleanup_module函數n提供該網絡設備的打開和關閉操作(ifconfig命令使用)n提供該網絡設備的數據傳輸函數,負責向硬件發送數據包,供dev_queue_
28、xmit調用;n提供該網絡設備的中斷服務程序,處理數據傳輸完畢的善后事宜和數據的接收。當物理網絡設備有新數據到達或數據傳輸完畢時,將向系統發送硬件中斷請求,該函數用來響應中斷請求Linux網絡配置nLinux用daemon程序來提供網絡服務q有些服務直接由daemon程序一直運行q有些服務通過inetd提供nInetdq它的職責是監聽大范圍內的網絡端口,根據進來的請求動態啟動相應的服務daemon節約資源q在Linux上,其實大多數inetd服務并不是必需的,雖然,這些服務本身有一定的安全認證能力,但是為了安全起見,應該關閉這些服務q如何配置inetd?n編輯inetd.conf每行格式: n
29、通過/etc/services文件,可以查到每個service的端口和協議類型n停止inetd進程,并重新啟動inetd.conf配置文件/etc/services配置文件n只影響inetd啟動的網絡服務,由其他腳本(例如rcN.d)啟動的服務可能不受影響TCP wrappersn在Linux中為/usr/sbin/tcpd,用法nTCP wrapper使得系統可以在請求登錄或者輸入口令之前拒絕進來的連接nTCP wrapper的兩個配置文件q/etc/hosts.deny 滿足條件則拒絕q/etc/hosts.allow 滿足條件則允許q配置規則:service :host(s) :acti
30、on n兩個工具qtcpdchk, 檢查配置文件有沒有錯誤,是否與其他文件沖突qtcpdmatch, 模擬規則是否如期起作用日志、syslogdnsyslogd是一個專門用于記錄日志信息的服務n配置文件/etc/syslog.confq可以記錄本地日志,也可以記錄遠程的日志信息q可以指定把什么樣的日志消息記錄到哪個文件中Linux的內核防火墻n協議棧在IP層上調用三個函數,防火墻的功能將在這三個函數中實現:qip_rcv():接收qip_forward():轉發qip_output():發送n 三條規則鏈qInput鏈qOutput鏈qForward鏈Linux內核支持的NATLinux內核防
31、火墻的發展n從ipfwadm - ipchains - netfilternNetfilter是2.4內核中實現網絡安全功能的通用框架q在框架中,定義了5個鉤子q在每個鉤子上可以掛接多個模塊qIptables模塊掛接在LOCAL_IN、FORWARD、LOCAL_OUT上q提供多種功能n包過濾防火墻n地址轉換NATn網絡狀態檢測nPre-routeForwardRoutePost-RouteLocal-inRouteLocal-out針對Linux的攻防技術nLinux平臺上有大量的黑客工具,而且往往以源碼方式發布,所以,學會編譯和使用這些工具,可以在攻擊對抗中發揮作用n探查信息q用nmap可
32、以查到Linux的版本信息n改變Linux的協議棧行為,可以掩蓋這些信息q許多早期的標準TCP/IP服務,可以暴露系統的內部信息,比如finger,還有一些基于RPC的服務n盡量關閉不必要的服務q一些服務的歡迎界面,比如ftp、telnet服務n修改這些服務的配置信息口令破解n如何獲得Linux的口令文件q口令文件的格式是公開的q口令文件passwd中,如果口令移到了shadow中,則沒有口令信息q有一些工具能夠獲得shadow文件的副本n破解程序qCrack 猜口令qJohn the Ripper 字典攻擊,也可以窮舉攻擊qXIT 字典攻擊,DOS程序qn對策q使用shadow, MD5q使
33、用強口令q失敗多次之后,帳號鎖定q結合其他的認證技術q日志記錄Linux數據驅動攻擊n目標:獲得root權限n兩種類型q緩沖區溢出攻擊n通過緩沖區溢出,植入惡意代碼,獲得一個shell,可以是遠程的shell,也可以是本地的q輸入驗證攻擊n對于輸入沒有合理地檢查,導致執行破壞性的代碼(命令或者腳本等)n在Web服務中比較多見,缺乏對于輸入數據的語法檢查n對策:加強編程中的安全意識。由用戶輸入的腳本代碼,或者在腳本代碼中要用到用戶輸入的數據,則一定要檢查輸入數據不會危害整條語句Linux的X及其他n針對X的攻擊qX的功能太強大,一旦獲得X的服務器訪問控制權,則可以為所欲為qX的認證機制n基于主機的認證,脆弱n基于token交換的認證q對策:關閉X服務n其他攻防技術q木馬技術q網絡監聽技術qN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內控審計合同范例
- 兔喜轉讓合同范例
- 買房擔保費合同范例
- 公司解聘員工合同范例
- 產品購銷轉讓合同范例
- 2014版施工合同范例
- 2025年金融市場與投資考試試題及答案
- 2025年區域經濟一體化與合作發展考試試題及答案
- 農村路燈安裝合同范例
- 2025私營企業勞動合同
- 超高性能混凝土研究進展及工程應用199頁PPT_ppt
- 視覺心理學(全套400頁PPT課件)
- 塔式起重機大臂減臂使用的受力分析和計算
- 三年高考高考生物試題分項版解析 專題01 組成細胞的分子
- 電力供應與使用條例考試卷及答案
- 生物大分子晶體學基礎(I)2016
- 申請增值電信業務經營許可證材料范本說明書
- 教你如何填省普通高中學生檔案
- 手工焊接(電烙鐵)課件
- 關于電商平臺對入駐經營者的審核要求或規范文件
- 日用百貨購銷合同(完整版)
評論
0/150
提交評論