安全程序員
職位描述:
1.使用C/C++開發軟件兩年以上,熟悉IPC及Socket編程;
2.對網絡安全、桌面安全、木馬病毒防禦、加密算法等技術有較深入瞭解,有實際工作經驗;
3.有一定的逆向工程技術;
4.瞭解WEB安全,對安全漏洞檢查和報警有實際工作經驗
5.實際構建過安全網絡,保證服務器安全,有數據安全備份和災難恢復能力
我唯一的例外是收錄了下面兩本涉及具體產品的詳細參考書:由Poundstone集團出版的《黑客大曝光(Hacking Exposed)》第三版,以及New Riders出版的《Internet防火牆和網絡安全(Internet Firewalls and Network Security)》。儘管這兩本書和開發沒有多少聯繫,但是它們通過敘述安全三角的其他兩面平衡了開發安全理論:黑客心理和方法以及網絡安全的支持。開發人員必須懂得黑客的心理,否則他們將無法成功地抵禦來自黑客的進攻。開發人員還必須懂得如何創建能夠同現代網絡防禦以及防禦技術相互操作的應用程序。這兩本書都讓其成爲可能。
-------------------------------------------------------------------------------
下面是必讀書籍列表:
_target>國家標準和技術研究所(National Institute of Standards and Technology,NIST)編寫的《彩虹系列(Rainbow Series)》。
Hutt、Bosworth和Hoyt編著的_target>《計算機安全手冊(The Computer Security Handbook)》。
Howard和LeBlanc編著的_target>《編寫安全代碼(Writing Secure Code)》。
Viega和McGraw編著的_target>《編寫安全的軟件:如何避免安全問題的正確方法(Building Secure Software: How to Avoid Security Problems the Right Way)》。
McClure、Scambray和Kurtz編著的_target>《黑客大曝光》。
Siyan和Hare編著的_target>《Internet防火牆和網絡安全》。
--------------------------------------------------------------------------------
《彩虹系列》在_target>SecurityFocus的Web網站可以免費下載。儘管《彩虹系列》是80年代末出版的,但是它是現代安全思想的基礎。這是個無價的資源——這是每位程序員都應該擁有的參考書。我的書桌上就放着《彩虹系列》的《桔皮書(Orange Book)》、《褐皮書(Tan Book)》和《紫皮書(Lavender Book)》——這個系列其他的書我都保存在了觸手可及的光盤裏。這一系列裏最重要的指導手冊就是《桔皮書》了;它描述和解釋了“受信計算庫(trusted computing base)以及安全理論的基本原則。儘管它太厚了不太容易記,但是所有的開發人員都應該通曉這本《桔皮書》。它是免費的,所以沒有理由不來一本。
安全分析
《計算機安全手冊》是難以置信地透徹,所以要花上不少時間去通讀和消化。這一資源中的很多內容都是專門針對安全分析專家的,因此無法(直接)應用到開發上。我建議開發人員把注意力放在第一章《管理角色(Management Role)》和第十章《系統應用程序控件(System Applications Controls)》上。第一章鞏固了安全的基本原則。第十章將這些基本原則融入了一個開發模型——創建安全系統的路線圖。這兩章都相對較短,而且所給的信息都會引導開發人員走向正確的方向。
開發人員對安全所負的責任
《編寫安全代碼》和《編寫安全的軟件》這兩本書都講解了計算機安全,就好像它是開發人員的職責一。我並不完全同意系統被攻擊都是程序員的錯誤,他們有責任在設計和編碼的時候編寫正確的代碼並遵從最佳的安全慣例。在讀完這兩本參考書之後,你會意識到:硬件生產商也應該參與到安全中來。
硬件能夠被用來跳過安全機制的一個好例子就是BIOS的密碼。很注意安全的人會在其臺式機上設置BIOS密碼,以防止未經授權的使用——但是密碼很容易就能夠被繞過去,因爲硬件生產商設計了一個跳過密碼的方法(在主板上跳幾下線就行了)。這本書裏提出的原則是合理的。但是在你讀這些書的時候,你要要記住,安全不僅僅是好的軟件來保證。
黑客攻擊的祕密
我最喜歡讀的書是《黑客大曝光》。這本書的作者深入了身處暗處的黑客的心理和方法。雖然這本書裏使用的方法和工具可能有點落伍了,但是它仍然是有價值的參考資料。其思想不是學習如何去黑別人,而是選取典型的攻擊方法來解釋如何創建抵禦它們的防衛機制。畢竟,最好的防禦需要你對對手攻擊手法的瞭解。
網絡安全
最後,《Internet防火牆和網絡安全》解釋了網絡安全的基礎,並完成了安全圖。如果系統要被放在目標環境裏,那麼它們就必須設計同防火牆、入侵檢測系統和VPN一起工作。我碰到過許多程序員,他們堅持認爲網絡防禦組件不會影響其設計。雖然防禦組件不會影響(整體)設計,但是目標網絡的防禦組件常常表現不佳,而且性能極差。要跟上網絡技術的所有變化是很難的,但是Siyan博士完成一項偉大的工作,他(她)描繪了防火牆技術,並將其放在了Internet威脅和基本網絡安全的大背景下。
我在收錄用於開發安全的單一資源上可能存在問題,所以有很多東西值得商榷。前面列出的六本參考書相互補充,構成一幅完整的安全圖。每一位關注安全的程序員都應該把它們歸入他或者她的專業書庫裏。