亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2692 | 回復(fù): 7
打印 上一主題 下一主題

求指教Linux安全軟件程序員的知識體系 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-05-07 22:33 |只看該作者 |倒序?yàn)g覽
樓主從事Linux安全軟件行業(yè)不久,對于安全行業(yè)的知識體系還沒有一個完整的把握,下圖中我列出了我能想到的基礎(chǔ)知識,以及獲取這些基礎(chǔ)知識的途徑。
樓主誠懇地請求行業(yè)前輩指教補(bǔ)充,也邀請所有安全軟件行業(yè)的同仁各抒己見。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2014-05-07 23:05 |只看該作者
上圖中,各個子主題的優(yōu)先級是從“通用基礎(chǔ)知識”開始的順時(shí)針方向,即:通用的基礎(chǔ)知識 > Linux系統(tǒng) > Linux內(nèi)核 > Linux編程 > linux安全 > linux上常用軟件

對于通用基礎(chǔ)知識,我覺得是所有從事計(jì)算機(jī)軟件行業(yè)都應(yīng)該具備的知識,無關(guān)平臺和開發(fā)語言。這些知識猶如大廈的地基,越牢固越好。當(dāng)然這些知識并不是說搞定那幾本書就能穩(wěn)穩(wěn)的收入囊中,而是要通過長期的磨練和體會。
1.《深入理解計(jì)算機(jī)系統(tǒng)》 這個是站在程序員的視角來理解計(jì)算機(jī)系統(tǒng),寫的相當(dāng)?shù)木屎图?xì)致,是不可多得的好書。作為一個程序員,次數(shù)至少要讀兩遍以上。
2.《TCP/IP詳解》是網(wǎng)絡(luò)方面的經(jīng)典書籍,把協(xié)議的來龍去脈講的清清楚楚,是Stevens大神的經(jīng)典之作,不可不讀。
3.《算法導(dǎo)論》是講算法的經(jīng)典,但是要啃完本書絕非易事,需要扎實(shí)的數(shù)學(xué)基礎(chǔ)
4.軟件架構(gòu)的設(shè)計(jì)對一個軟件的開發(fā)和維護(hù)有著至關(guān)重要的作用,相信無需贅言各位也是深有體會。所以多掌握寫設(shè)計(jì)模式對軟件設(shè)計(jì)會有很大幫助,別跟說這些模式?jīng)]什么用,那是因?yàn)槟氵沒有融會貫通。這方面的經(jīng)典之作是《設(shè)計(jì)模式》,但這里我用的是《大話設(shè)計(jì)模式》是因?yàn)檫@本書比較薄,更重要的是通俗易懂,讀起來相當(dāng)舒暢。
5.一個成功的軟件是由很多人一起協(xié)作開發(fā),并且會經(jīng)歷從需求分析、架構(gòu)設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、調(diào)試、測試等各個階段!洞a大全》教我們?nèi)绾纬晒Φ赝瓿梢粋軟件項(xiàng)目,會對我們的軟件設(shè)計(jì)和項(xiàng)目實(shí)施帶來很多啟發(fā)。整個閱讀過程像是一個洗禮的過程,醍醐灌頂!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-05-08 00:09 |只看該作者
對于linux系統(tǒng)的理解,我覺得有一個較好的切入點(diǎn)是:它從哪里來?它干什么?

首先,整個系統(tǒng)是怎么來的?這就需要理解系統(tǒng)的整個啟動過程:從你按下電源開關(guān)那一刻起,到你能在命令行上歡樂的運(yùn)行命令,這中間到底發(fā)生了些什么事情?內(nèi)核是如何初始化并運(yùn)行起各個模塊,init程序到底在用戶層干了些什么?如果能對這中間的細(xì)節(jié)了解清楚,就會對整個系統(tǒng)有一個全面的認(rèn)識。就好比你白手起家從無到有的創(chuàng)辦了一家公司,創(chuàng)辦過程中的各個環(huán)節(jié)你都經(jīng)歷過,那一定會對整個公司了若指掌。
      這里的分析方法:內(nèi)核源碼+init可執(zhí)行文件的源碼+gdb的內(nèi)核動態(tài)調(diào)試。

第二、我的工作環(huán)境怎么來的?這就涉及到登錄過程。怎么獲得一個登錄shell讓你輸入用戶名和密碼,然后如何判斷密碼的正確性,再然后系統(tǒng)如何給你準(zhǔn)備環(huán)境。
第三、用ssh遠(yuǎn)程登錄過程和第二點(diǎn)有很多相同的地方,不過這里多了偽終端的概念。sshd也本是一個很好的網(wǎng)絡(luò)軟件,認(rèn)真研究對我們的網(wǎng)絡(luò)編程也會有很多幫助。
      這兩個登錄過程會涉及到對系統(tǒng)至關(guān)重要的賬戶安全!這是Linux黑客入侵系統(tǒng)的第一道關(guān),所以做安全的,一定要很了解這個過程才行。

第四、進(jìn)程是怎么來的?進(jìn)程就是運(yùn)行可執(zhí)行文件之后內(nèi)存中的對應(yīng)實(shí)例。那么從你在shell上輸入完可執(zhí)行文件的名字并敲下回車的那一刻起,到可執(zhí)行文件的main函數(shù)被調(diào)用這段期間究竟發(fā)生了些什么事情?shell在其中干了些什么事情?內(nèi)核又干了些什么事情?另外這個可執(zhí)行文件有什么特殊的?為什么普通的文本文件就不能運(yùn)行呢?
第五、當(dāng)我們成功得登錄系統(tǒng)后,面對的最多的就是文件系統(tǒng)。磁盤上的那些冷冰冰的數(shù)據(jù)為什么就按照樹型的方式擺在我的面前了呢?我敲下了ls命令后,內(nèi)核到底怎樣找到這些文件名的呢?一個文件的大小權(quán)限等信息是存放在哪里的呢?linux的內(nèi)核中相當(dāng)聰明的使用了虛擬文件系統(tǒng),這個東東又是怎樣來跟實(shí)際的文件系統(tǒng)發(fā)生聯(lián)系的呢?好好的研究下文件系統(tǒng),答案就在其中。
第六、日志系統(tǒng)。系統(tǒng)運(yùn)行期間有大量的日志產(chǎn)生,記錄了系統(tǒng)中的各個進(jìn)程做了哪些事情,發(fā)生了些什么錯誤等等。通過這些日志可以分析出用戶的很多行為,對安全來說,日志分析就是一項(xiàng)很重要的工作。
第七、proc系統(tǒng)。這個是內(nèi)核與用戶層的一個交互的窗口,內(nèi)核中的實(shí)時(shí)數(shù)據(jù)都在該系統(tǒng)中,搞清楚/proc下各個文件的意義會讓我們的系統(tǒng)的實(shí)時(shí)情況有確切的掌握。
第八、各個系統(tǒng)命令。要在linux上討生活,當(dāng)然就要熟悉linux上的各種工具,一些重要命令,我們不僅要會使用它,還要去讀它的源碼了解它的工作原理。這也是了解linux系統(tǒng)原理的一個好方法。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2014-05-08 10:34 |只看該作者
牛,兄弟梳理的很有系統(tǒng)性啊

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2014-05-08 22:52 |只看該作者
Linux內(nèi)核

    對于Linux內(nèi)核這個龐然大物,想要徹底弄懂,也許要窮盡半生甚至畢生的精力。當(dāng)今世界除了linus等幾個神級大牛之外,幾乎沒有人能夠?qū)inux所有的部分都了若指掌。所以,我們能做的,就是了解其中的某些模塊。
    對于安全軟件程序員來說,從事的就是系統(tǒng)安全和網(wǎng)絡(luò)安全的研發(fā)。那么對應(yīng)這兩個方面,最相關(guān)的就是文件系統(tǒng)TCP/IP協(xié)議棧了。所以要這兩塊的內(nèi)核代碼要盡量的熟悉。至于進(jìn)程調(diào)度管理內(nèi)存分配管理,這兩塊能夠熟悉當(dāng)然最好,不過這兩塊的難度也是相當(dāng)?shù)拇,因(yàn)樗鼈冏鳛椴僮飨到y(tǒng)最核心最基礎(chǔ)的功能,幾乎在跟內(nèi)核其他所有的內(nèi)核部件在打交道。要想研究明白這兩塊,首先需要對相應(yīng)的計(jì)算機(jī)原理(還記得”通用基礎(chǔ)知識“中的《深入理解計(jì)算機(jī)系統(tǒng)》嗎?)搞清楚才行,不然一走進(jìn)去就只見樹木不見森林了。
    對于內(nèi)核模塊的研究方法:當(dāng)然首先是要明白相關(guān)原理。這個可以通過相關(guān)書籍如《深入理解Linux內(nèi)核》來搞定,第二就是要閱讀源碼了。閱讀時(shí)可以借助源碼解析書籍毛德操的《LINUX內(nèi)核源代碼情景分析》,第三,gdb內(nèi)核動態(tài)調(diào)試。沒有什么比自己動手調(diào)試代碼更直觀的了,解剖一個運(yùn)行起來的動態(tài)的內(nèi)核會讓你瞬間明白困擾你已久的問題原來是這樣的!

    要玩內(nèi)核,當(dāng)然就要編譯內(nèi)核;要玩專屬自己的內(nèi)核,當(dāng)然就要懂得裁剪內(nèi)核;這兩塊在網(wǎng)上已經(jīng)有相當(dāng)多的資料在說明,所以,大膽地踩著前輩的肩膀前進(jìn)吧!
    最后是內(nèi)核模塊的編寫。作為安全軟件的開發(fā)者要懂得:任何沒有內(nèi)核支持的安全防護(hù)功能都是紙老虎!要獲得內(nèi)核的支持,有兩種方式:一是利用已有的內(nèi)核安全模塊,二是自己編寫內(nèi)核模塊。自己編寫內(nèi)核模塊要建立在對內(nèi)核代碼足夠熟悉的基礎(chǔ)上,不然寫出來的代碼會各種潛在的問題,到時(shí)候可能你寫的不是安全防護(hù)功能,而是淪為黑客利用的”臥底“。至于如何加載和卸載模塊等都是小兒科,看看幫助文檔就會明白,不說也罷。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-05-08 23:59 |只看該作者
Linux編程

    對于一個安全軟件來說,光有內(nèi)核的支持是不夠的。Linux內(nèi)核的設(shè)計(jì)思想是只提供功能,不提供策略,簡單點(diǎn)說就是——只告訴你我有這些個功能,至于你怎么使用它們那是你的事情。所以在用戶層編寫代碼也是很重要的工作!
    首先,你得把代碼編譯成可執(zhí)行文件。Linux上沒有windows的vs這樣的IDE環(huán)境(即使有,可能你也不會愿意去使用它——在Linux圖形界面上工作,就像把餐廳設(shè)在了茅房一樣難受),所以第一步你就要編寫makefile。如果你是從windows轉(zhuǎn)行過來的,別驚慌失措,看這個文檔就好了——《makefile詳解》。在編寫makefile時(shí)無可避免地要用到編譯器的一些選項(xiàng),所以你還得熟悉gcc才行!gcc的網(wǎng)絡(luò)資料也是一搜一大把,最準(zhǔn)確的當(dāng)然就是閱讀官方資料啦。
    編譯好程序后,一運(yùn)行,可能會蹦出幾個找不到某某符號之類的錯誤,然后程序就罷工退出。碰到這種情況咋辦?可以先用一些分析工具,如ldd、nm、readelf之類的查看符號表、動態(tài)鏈接庫之類的信息,看看是不是漏編了幾個文件,少鏈接了幾個動態(tài)庫,然后在再修改makefile,重新編譯鏈接。
    好了,現(xiàn)在程序能run起來了,但是跑著跑著,”噔“又彈出了一個”段錯誤“!這個是內(nèi)存操作錯誤。日,那我咋知道哪里內(nèi)存操作錯了!讓我上源碼中用肉眼去找嗎?殺了我好了。別著急,現(xiàn)在就該gdb上場了。gdb具有豐富的調(diào)試功能,凡是你在windows上能看到的調(diào)試功能,在gdb里都有。調(diào)試對于一個程序員來說,重要性堪比編碼,所以gdb是無論如何都要精通的。有個程序員老鳥曾經(jīng)說過:程序員的成就感不是來自編碼,而是來自解決了別人解決不了的bug!那感覺,那酸爽。。
   
    OK,終于可以坐下來正兒八經(jīng)的編碼了。前面說過,安全分為系統(tǒng)安全和網(wǎng)絡(luò)安全,對應(yīng)到編程上,就是系統(tǒng)編程和網(wǎng)絡(luò)編程。這兩方面的經(jīng)典書籍就是《UNIX環(huán)境高級編程》(簡稱APUE)和《UNIX網(wǎng)絡(luò)編程》(簡稱UNP)了,都是由敬愛的Stevens老師著作的。兩本書相比而言,APUE有些章節(jié)略感晦澀,可能是由于翻譯的原因。UNP寫的很細(xì)致明了,可以看出Stevens大師的學(xué)術(shù)態(tài)度之嚴(yán)謹(jǐn),我輩中人應(yīng)好好學(xué)習(xí)。
    除了用C/C++語言編寫大型軟件之外,有時(shí)候我們還免不了要寫些小程序,比如測試程序,安裝腳本,文件的批量操作等。這時(shí)候用C/C++感覺性價(jià)比太低——寫一大堆C/C++代碼就相當(dāng)于SHELL程序或者python程序的兩三條語句。當(dāng)然python也是可以用來開發(fā)較大型的軟件的,不過我們只要能夠用它編寫一些小腳本就夠了。語言的東西,用到的時(shí)候突擊一下,翻翻手冊就好了。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2014-05-09 00:05 |只看該作者
Linux編程

    對于一個安全軟件來說,光有內(nèi)核的支持是不夠的。Linux內(nèi)核的設(shè)計(jì)思想是只提供功能,不提供策略,簡單點(diǎn)說就是——只告訴你我有這些個功能,至于你怎么使用它們那是你的事情。所以在用戶層編寫代碼也是很重要的工作!
    首先,你得把代碼編譯成可執(zhí)行文件。Linux上沒有windows的vs這樣的IDE環(huán)境(即使有,可能你也不會愿意去使用它——在Linux圖形界面上工作,就像把餐廳設(shè)在了茅房一樣難受),所以第一步你就要編寫makefile。如果你是從windows轉(zhuǎn)行過來的,別驚慌失措,看這個文檔就好了——《makefile詳解》。在編寫makefile時(shí)無可避免地要用到編譯器的一些選項(xiàng),所以你還得熟悉gcc才行!gcc的網(wǎng)絡(luò)資料也是一搜一大把,最準(zhǔn)確的當(dāng)然就是閱讀官方資料啦。
    編譯好程序后,一運(yùn)行,可能會蹦出幾個找不到某某符號之類的錯誤,然后程序就罷工退出。碰到這種情況咋辦?可以先用一些分析工具,如ldd、nm、readelf之類的查看符號表、動態(tài)鏈接庫之類的信息,看看是不是漏編了幾個文件,少鏈接了幾個動態(tài)庫,然后在再修改makefile,重新編譯鏈接。
    好了,現(xiàn)在程序能run起來了,但是跑著跑著,”噔“又彈出了一個”段錯誤“!這個是內(nèi)存操作錯誤。日,那我咋知道哪里內(nèi)存操作錯了!讓我上源碼中用肉眼去找嗎?殺了我好了。別著急,現(xiàn)在就該gdb上場了。gdb具有豐富的調(diào)試功能,凡是你在windows上能看到的調(diào)試功能,在gdb里都有。調(diào)試對于一個程序員來說,重要性堪比編碼,所以gdb是無論如何都要精通的。有個程序員老鳥曾經(jīng)說過:程序員的成就感不是來自編碼,而是來自解決了別人解決不了的bug!那感覺,那酸爽。。
   
    OK,終于可以坐下來正兒八經(jīng)的編碼了。前面說過,安全分為系統(tǒng)安全和網(wǎng)絡(luò)安全,對應(yīng)到編程上,就是系統(tǒng)編程和網(wǎng)絡(luò)編程。這兩方面的經(jīng)典書籍就是《UNIX環(huán)境高級編程》(簡稱APUE)和《UNIX網(wǎng)絡(luò)編程》(簡稱UNP)了,都是由敬愛的Stevens老師著作的。兩本書相比而言,APUE有些章節(jié)略感晦澀,可能是由于翻譯的原因。UNP寫的很細(xì)致明了,可以看出Stevens大師的學(xué)術(shù)態(tài)度之嚴(yán)謹(jǐn),我輩中人應(yīng)好好學(xué)習(xí)。
    除了用C/C++語言編寫大型軟件之外,有時(shí)候我們還免不了要寫些小程序,比如測試程序,安裝腳本,文件的批量操作等。這時(shí)候用C/C++感覺性價(jià)比太低——寫一大堆C/C++代碼就相當(dāng)于SHELL程序或者python程序的兩三條語句。當(dāng)然python也是可以用來開發(fā)較大型的軟件的,不過我們只要能夠用它編寫一些小腳本就夠了。語言的東西,用到的時(shí)候突擊一下,翻翻手冊就好了。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2014-05-09 19:26 |只看該作者
Linux編程

    對于一個安全軟件來說,光有內(nèi)核的支持是不夠的。Linux內(nèi)核的設(shè)計(jì)思想是只提供功能,不提供策略,簡單點(diǎn)說就是——只告訴你我有這些個功能,至于你怎么使用它們那是你的事情。所以在用戶層編寫代碼也是很重要的工作!
    首先,你得把代碼編譯成可執(zhí)行文件。Linux上沒有windows的vs這樣的IDE環(huán)境(即使有,可能你也不會愿意去使用它——在Linux圖形界面上工作,就像把餐廳設(shè)在了茅房一樣難受),所以第一步你就要編寫makefile。如果你是從windows轉(zhuǎn)行過來的,別驚慌失措,看這個文檔就好了——《makefile詳解》。在編寫makefile時(shí)無可避免地要用到編譯器的一些選項(xiàng),所以你還得熟悉gcc才行!gcc的網(wǎng)絡(luò)資料也是一搜一大把,最準(zhǔn)確的當(dāng)然就是閱讀官方資料啦。
    編譯好程序后,一運(yùn)行,可能會蹦出幾個找不到某某符號之類的錯誤,然后程序就罷工退出。碰到這種情況咋辦?可以先用一些分析工具,如ldd、nm、readelf之類的查看符號表、動態(tài)鏈接庫之類的信息,看看是不是漏編了幾個文件,少鏈接了幾個動態(tài)庫,然后在再修改makefile,重新編譯鏈接。
    好了,現(xiàn)在程序能run起來了,但是跑著跑著,”噔“又彈出了一個”段錯誤“!這個是內(nèi)存操作錯誤。暈,那我咋知道哪里內(nèi)存操作錯了!讓我上源碼中用肉眼去找嗎?殺了我好了。別著急,現(xiàn)在就該gdb上場了。gdb具有豐富的調(diào)試功能,凡是你在windows上能看到的調(diào)試功能,在gdb里都有。調(diào)試對于一個程序員來說,重要性堪比編碼,所以gdb是無論如何都要精通的。有個程序員老鳥曾經(jīng)說過:程序員的成就感不是來自編碼,而是來自解決了別人解決不了的bug!那感覺,那酸爽。。
   
    OK,終于可以坐下來正兒八經(jīng)的編碼了。前面說過,安全分為系統(tǒng)安全和網(wǎng)絡(luò)安全,對應(yīng)到編程上,就是系統(tǒng)編程和網(wǎng)絡(luò)編程。這兩方面的經(jīng)典書籍就是《UNIX環(huán)境高級編程》(簡稱APUE)和《UNIX網(wǎng)絡(luò)編程》(簡稱UNP)了,都是由敬愛的Stevens老師著作的。兩本書相比而言,APUE有些章節(jié)略感晦澀,可能是由于翻譯的原因。UNP寫的很細(xì)致明了,可以看出Stevens大師的學(xué)術(shù)態(tài)度之嚴(yán)謹(jǐn),我輩中人應(yīng)好好學(xué)習(xí)。
    除了用C/C++語言編寫大型軟件之外,有時(shí)候我們還免不了要寫些小程序,比如測試程序,安裝腳本,文件的批量操作等。這時(shí)候用C/C++感覺性價(jià)比太低——寫一大堆C/C++代碼就相當(dāng)于SHELL程序或者python程序的兩三條語句。當(dāng)然python也是可以用來開發(fā)較大型的軟件的,不過我們只要能夠用它編寫一些小腳本就夠了。語言的東西,用到的時(shí)候突擊一下,翻翻手冊就好了。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP