新聞中心
作為當(dāng)前廣泛應(yīng)用的操作系統(tǒng)之一,Linux系統(tǒng)因為自身的可靠性和安全性而受到了越來越多的企業(yè)和個人用戶的青睞。但是,對于像Linux這樣的系統(tǒng),安全問題依然是一個難以避免的話題。而棧溢出攻擊是一種不僅在Linux系統(tǒng)中出現(xiàn)的,而且具有廣泛影響范圍的幾乎無法防范的攻擊方式。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計,肇州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:肇州等地區(qū)。肇州做網(wǎng)站價格咨詢:13518219792
本文將介紹棧溢出攻擊的定義、原理和防范措施,幫助讀者全面了解這一安全威脅,提高對Linux系統(tǒng)的安全意識。
一、棧溢出攻擊的定義
棧溢出攻擊是一種利用棧實現(xiàn)的緩沖區(qū)溢出攻擊方式,指在程序執(zhí)行過程中,當(dāng)輸入的數(shù)據(jù)量超出了其所申請的緩沖區(qū)大小時,多余的數(shù)據(jù)將會覆蓋其他棧區(qū)域的數(shù)據(jù),從而導(dǎo)致程序異常終止或者產(chǎn)生未知行為。此時,攻擊者可以通過輸入特定的數(shù)據(jù)來覆蓋程序內(nèi)存中的關(guān)鍵信息或者執(zhí)行指定的代碼,從而實現(xiàn)攻擊目標(biāo)。
在Linux系統(tǒng)中,這種攻擊方式最常見于C/C++編寫的程序,因為這些程序使用的是棧來保存函數(shù)調(diào)用和返回地址等數(shù)據(jù),而緩沖區(qū)內(nèi)存的大小由程序員自行分配,因此攻擊者有可能通過精心構(gòu)造的數(shù)據(jù),將緩沖區(qū)中多余的數(shù)據(jù)覆蓋到棧的其他區(qū)域上,從而實現(xiàn)攻擊目的。
二、棧溢出攻擊的原理
棧溢出攻擊的原理相對簡單,主要是通過攻擊者構(gòu)造的一段數(shù)據(jù),來覆蓋程序棧中的關(guān)鍵信息或者執(zhí)行指定的代碼。攻擊者通常會針對目標(biāo)程序的特定漏洞,輸入特定的數(shù)據(jù),使得程序的正常行為被破壞。這個過程包括以下幾個步驟:
1.構(gòu)造輸入數(shù)據(jù):攻擊者需要構(gòu)造特定的數(shù)據(jù)來觸發(fā)目標(biāo)程序的漏洞。這些數(shù)據(jù)可以是一些特定的字符或者數(shù)字,也可以是一系列指令。
2.利用溢出:攻擊者通過輸入大量數(shù)據(jù)來導(dǎo)致目標(biāo)程序的緩沖區(qū)溢出,從而覆蓋到程序棧的其他區(qū)域上。這時,攻擊者就可以通過構(gòu)造的輸入數(shù)據(jù),將其覆蓋到程序特定的內(nèi)存區(qū)域上。
3.執(zhí)行攻擊:一旦攻擊者成功地將數(shù)據(jù)覆蓋到了程序的指定內(nèi)存區(qū)域上,就可以執(zhí)行指定的惡意代碼或者代碼片段。這樣,攻擊者就可以完全控制目標(biāo)程序的行為,來達到自己的攻擊目的。
三、棧溢出攻擊的防范措施
在Linux系統(tǒng)中,由于許多應(yīng)用程序都是使用C/C++語言編寫的,因此棧溢出攻擊是一種非常常見的攻擊方式。為了保障系統(tǒng)的安全,在進行系統(tǒng)設(shè)計和開發(fā)時,需要針對棧溢出攻擊采取一系列防護措施,來減少攻擊者利用該漏洞攻擊系統(tǒng)的風(fēng)險。
1.調(diào)試模式的關(guān)閉:在生產(chǎn)環(huán)境下,關(guān)閉應(yīng)用程序的調(diào)試模式,可以有效減少棧溢出攻擊的風(fēng)險。關(guān)閉調(diào)試模式后,攻擊者無法直接訪問程序內(nèi)存,降低了攻擊的可行性。
2.使用代碼分析工具:通過使用自動化代碼分析工具,可以快速發(fā)現(xiàn)程序中存在的潛在漏洞。這些工具可以對源代碼進行分析,從而發(fā)現(xiàn)存在的漏洞,幫助程序員及時修補漏洞,減少攻擊風(fēng)險。
3.采用編譯器特性:在編寫C/C++程序時,可以采用編譯器提供的安全編程特性,如編譯器提供的棧溢出保護等級,來減少棧溢出攻擊的風(fēng)險。這些特性通常是在編譯程序時啟用的,可以有效減少棧溢出攻擊的風(fēng)險。
4.設(shè)置棧隨機化:在Linux系統(tǒng)中,可以設(shè)置棧隨機化,從而減少由于棧的布局相同而產(chǎn)生的攻擊風(fēng)險。棧隨機化是一種內(nèi)核級別的安全機制,能夠在系統(tǒng)啟動時自動隨機設(shè)置棧的布局,降低攻擊者利用棧布局的可行性。
4.使用安全框架:對于業(yè)務(wù)系統(tǒng)中重要的模塊,可以使用一些現(xiàn)成的安全框架,如SDL(安全開發(fā)生命周期)框架、SEI的CERT C安全編碼標(biāo)準(zhǔn)等,來加強系統(tǒng)的安全性。這些框架可以提供安全編碼標(biāo)準(zhǔn)、漏洞檢測工具等多個方面的支持,從而減少棧溢出攻擊的風(fēng)險。
結(jié)語
棧溢出攻擊是一種重要的安全威脅,不僅僅在Linux系統(tǒng)中嚴(yán)重影響著系統(tǒng)的安全性,而且在其他系統(tǒng)中也是一個常見的攻擊方式。為了有效防范棧溢出攻擊,依靠程序員本身的經(jīng)驗和素質(zhì)遠遠不夠,需要在系統(tǒng)設(shè)計和開發(fā)階段采取各種安全措施,來增強系統(tǒng)對棧溢出攻擊的防御能力。本文僅僅是一個簡單的介紹,讀者可以針對不同場景繼續(xù)學(xué)習(xí)和研究,來提高Linux系統(tǒng)安全防范的水平。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
LINUX系統(tǒng)的內(nèi)存管理知識詳解
內(nèi)存是Linux內(nèi)核所管理的最重要的資源之一。內(nèi)存管理系統(tǒng)是操作系統(tǒng)中最為重要的部分,因為系統(tǒng)的物理內(nèi)存總是少于系統(tǒng)所需要的內(nèi)存數(shù)量。虛擬內(nèi)存就是為了克服這個矛盾而采用的策略。系統(tǒng)的虛擬內(nèi)存通過在各個進程之間共享內(nèi)存而使系統(tǒng)看起來有多于實際內(nèi)存的內(nèi)存容量。Linux支持虛擬內(nèi)存, 就是使用磁盤作為RAM的擴展,使可用內(nèi)存相應(yīng)地有效擴大。核心把當(dāng)前不用的內(nèi)存塊存到硬盤,騰出內(nèi)存給其他目的。當(dāng)原來的內(nèi)容又要使用時,再讀回內(nèi)存。以下就是我為大家整理到的詳細LINUX系統(tǒng)內(nèi)存管理的知識,歡迎大家閱讀!!!
LINUX系統(tǒng)教程:內(nèi)存管理的知識詳解
一、內(nèi)存使用情況監(jiān)測
(1)實時監(jiān)控內(nèi)存使用情況
在命令行使用“Free”命令可以監(jiān)控內(nèi)存使用情況
代碼如下:
#free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:72
上面給出了一個256兆的RAM和512兆交換空間的系統(tǒng)情況。第三行輸出(Mem:)顯示物理內(nèi)存。total列不顯示核心使用的物理內(nèi)存(通常大約1MB)。used列顯示被使用的內(nèi)存總額(第二行不計緩沖)。 free列顯示全部沒使用的內(nèi)存。Shared列顯示多個進程共享的內(nèi)存總額。Buffers列顯示磁盤緩存的當(dāng)前大小。第五行(Swap:)對對換空間,顯示的信息類似上面。如果這行為羨芹全0,那么沒使用對換空間。在缺省的狀態(tài)下,free命令以千字節(jié)(也就是1024字節(jié)為單位)來顯示內(nèi)存使用情況??梢允褂谩猦參數(shù)以字節(jié)為單位顯示內(nèi)存使用情況,或者可以兄晌使用—m參數(shù)以兆字節(jié)為單位顯示內(nèi)存使用情況。還可以通過—s參數(shù)使用命令來不間斷地監(jiān)視內(nèi)存使用情況:
#free –b –s2
這個命令將會在終端窗口中連續(xù)不斷地報告內(nèi)存的使用情況,每2秒鐘更新一次。
(2)組合watch與 free命令用來實時監(jiān)控內(nèi)存使用情況:
代碼如下:
#watch -n 2 -d free
Every 2.0s: free Fri Jul 6 06:06:
total used free shared buffers cached
Mem:64784
-/+ buffers/cache:
Swap:15928
watch命令會每兩秒執(zhí)行 free一次,執(zhí)行前會清除屏幕,在同樣位置顯示數(shù)據(jù)。因為 watch命令不會卷動屏幕,所以適合出長時間的監(jiān)測內(nèi)存使用率??梢允褂?-n選項,控制執(zhí)行的頻率;也可以利用 -d選項,讓命令將每次不同的地方顯示出來。Watch命令會一直執(zhí)行,直到您按下 – 為止。
二、虛擬內(nèi)存的概念
(1)Linux虛擬內(nèi)存實現(xiàn)機制
Linux虛擬內(nèi)存的實現(xiàn)需要六種機制的支持:地址映射機制、內(nèi)存分配回收機制、緩存和刷新機制、請求頁機制、交換機制、內(nèi)存共享機制。
首先內(nèi)存管理程序通過映射機制把用戶程序的邏輯地址映射到物理地址,在用戶程序運行時如果發(fā)現(xiàn)程序中要用的虛地址沒有對應(yīng)的物理內(nèi)存時,就發(fā)出了請求頁要求;如果有空閑的內(nèi)存可供分配,就請求分配內(nèi)存(于是用到了內(nèi)存的分配和回收),并把正在使用的物理頁記錄在緩存中(使用了緩存機制)。 如果沒有足夠的內(nèi)存可供分配,那么就調(diào)用交換機制,騰出一部分內(nèi)存。另外在地址映射中要通過TLB(翻譯后援存儲器)來尋找物理頁;交換機制中也要羨派鋒用到交換緩存,并且把物理頁內(nèi)容交換到交換文件中后也要修改頁表來映射文件地址。
(2)虛擬內(nèi)存容量設(shè)定
也許有人告訴你,應(yīng)該分配2倍于物理內(nèi)存的虛擬內(nèi)存,但這是個不固定的規(guī)律。如果你的物理保存比較小,可以這樣設(shè)定。如果你有1G物理內(nèi)存或更多的話,可以縮小一下虛擬內(nèi)存。Linux會把大量的內(nèi)存用做Cache的,但在資源緊張時回收回.。你只要看到swap為0或者很小就可以放心了,因為內(nèi)存放著不用才是更大的浪費。
三、使甩vmstat命令監(jiān)視虛擬內(nèi)存使用情況
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內(nèi)存、進程、CPU活動進行監(jiān)視。它是對系統(tǒng)的整體情況進行統(tǒng)計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內(nèi)進行5次采樣)命令測試。將得到一個數(shù)據(jù)匯總它可以反映真正的系統(tǒng)情況。
代碼如下:
#vmstat 5 5
procemoryswapiosystemcpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
54 2
vmstat命令輸出分成六個部分:
(1)進程procs:
r:在運行隊列中等待的進程數(shù) 。
b:在等待io的進程數(shù) 。
(2)內(nèi)存memoy:
swpd:現(xiàn)時可用的交換內(nèi)存(單位KB)。
free:空閑的內(nèi)存(單位KB)。
buff: 緩沖去中的內(nèi)存數(shù)(單位:KB)。
cache:被用來做為高速緩存的內(nèi)存數(shù)(單位:KB)。
(3) swap交換頁面
si: 從磁盤交換到內(nèi)存的交換頁數(shù)量,單位:KB/秒。
so: 從內(nèi)存交換到磁盤的交換頁數(shù)量,單位:KB/秒。
(4) io塊設(shè)備:
bi: 發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒。
bo: 從塊設(shè)備接收到的塊數(shù),單位:塊/秒。
(5)system系統(tǒng):
in: 每秒的中斷數(shù),包括時鐘中斷。
cs: 每秒的環(huán)境(上下文)切換次數(shù)。
(6)cpu中央處理器:
cs:用戶進程使用的時間 。以百分比表示。
sy:系統(tǒng)進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
如果 r經(jīng)常大于 4 ,且id經(jīng)常小于40,表示中央處理器的負(fù)荷很重。 如果bi,bo 長期不等于0,表示物理內(nèi)存容量太小。
四、Linux 服務(wù)器的內(nèi)存泄露和回收內(nèi)存的方法
1、內(nèi)存泄漏的定義:
一般我們常說的內(nèi)存泄漏是指堆內(nèi)存的泄漏。堆內(nèi)存是指程序從堆中分配的,大小任意的(內(nèi)存塊的大小可以在程序運行期決定),使用完后必須顯示釋放的內(nèi)存。應(yīng)用程序一般使用malloc,realloc,new等函數(shù)從堆中分配到一塊內(nèi)存,使用完后,程序必須負(fù)責(zé)相應(yīng)的調(diào)用free或釋放該內(nèi)存塊,否則,這塊內(nèi)存就不能被再次使用,我們就說這塊內(nèi)存泄漏了。
2、內(nèi)存泄露的危害
從用戶使用程序的角度來看,內(nèi)存泄漏本身不會產(chǎn)生什么危害,作為一般的用戶,根本感覺不到內(nèi)存泄漏的存在。真正有危害的`是內(nèi)存泄漏的堆積,這會最終消耗盡系統(tǒng)所有的內(nèi)存。從這個角度來說,一次性內(nèi)存泄漏并沒有什么危害,因為它不會堆積,而隱式內(nèi)存泄漏危害性則非常大,因為較之于常發(fā)性和偶發(fā)性內(nèi)存泄漏它更難被檢測到。存在內(nèi)存泄漏問題的程序除了會占用更多的內(nèi)存外,還會使程序的性能急劇下降。對于服務(wù)器而言,如果出現(xiàn)這種情況,即使系統(tǒng)不崩潰,也會嚴(yán)重影響使用。
3、內(nèi)存泄露的檢測和回收
對于內(nèi)存溢出之類的麻煩可能大家在編寫指針比較多的復(fù)雜的程序的時候就會遇到。在 Linux 或者 unix 下,C、C++語言是最使用工具。但是我們的 C++ 程序缺乏相應(yīng)的手段來檢測內(nèi)存信息,而只能使用 top 指令觀察進程的動態(tài)內(nèi)存總額。而且程序退出時,我們無法獲知任何內(nèi)存泄漏信息。
使用kill命令
使用Linux命令回收內(nèi)存,我們可以使用Ps、Kill兩個命令檢測內(nèi)存使用情況和進行回收。在使用超級用戶權(quán)限時使用命令“Ps”,它會列出所有正在運行的程序名稱,和對應(yīng)的進程號(PID)。Kill命令的工作原理是:向Linux操作系統(tǒng)的內(nèi)核送出一個系統(tǒng)操作信號和程序的進程號(PID)。
應(yīng)用例子:
為了高效率回收內(nèi)存可以使用命令ps 參數(shù)v:
代碼如下:
# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
tty1 Ss+ 0:8 0.1 /in/mingetty tty1
tty2 Ss+ 0:8 0.1 /in/mingetty tty2
tty3 Ss+ 0:2 0.1 /in/mingetty tty3
tty4 Ss+ 0:8 0.1 /in/mingetty tty4
tty5 Ss+ 0:2 0.1 /in/mingetty tty5
tty6 Ss+ 0:4 0.1 /in/mingetty tty6
tty7 Ss+ 1:.0 /usr/bin/Xorg :0 -br -a
pts/2 Ss 0:1496 0.6 -bash
pts/4 Ss 0:1472 0.6 /bin/bash
pts/4 S+ 0:48 0.2 ping 192.168.1.12
pts/2 R+ 0:68 0.3 ps v
然后如果想回收Ping命令的內(nèi)存的話,使用命令:
代碼如下:
# Kill
使用工具軟件
Memprof是一個非常具有吸引力且非常易于使用的軟件,它由Red Hat的Owen Talyor創(chuàng)立。這個工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。這個工具直接就可以執(zhí)行,并且其工作起來無需對源代碼進行任何修改。在程序執(zhí)行時,這個工具會以圖形化的方式顯示內(nèi)存的使用情況。
相關(guān)介紹:Linux
嚴(yán)格來講,Linux這個詞本身只表示Linux內(nèi)核,但人們已經(jīng)習(xí)慣了用Linux來形容整個基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
Linux擁有以下特性:類似于Unix的基本思想,支持完全免費與自由傳播,完全兼容POSIX1.0標(biāo)準(zhǔn),支持多用戶、多任務(wù)、有著良好的界面、支持多種平臺。Linux 能運行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
linux棧溢出定義的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux棧溢出定義,Linux安全必讀:了解棧溢出攻擊的定義,LINUX系統(tǒng)的內(nèi)存管理知識詳解的信息別忘了在本站進行查找喔。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機租用。成都機房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價值。
文章題目:Linux安全必讀:了解棧溢出攻擊的定義(linux棧溢出定義)
鏈接分享:http://www.5511xx.com/article/cdsiehi.html


咨詢
建站咨詢
