Linux防火牆程式設計

來源:互聯網
上載者:User

  Yahoo、eBay、CNN.com、Amazon、Buy.com和E*Trade等著名商業網站連續遭到駭客攻擊,造成了數以十億美元的損失,向世人再一次敲響了網路並不安全的警鐘。防火牆作為一種網路或系統之間強制實行存取控制的機制,是確保網路安全的重要手段。目前社會上各種商業產品的防火牆非常多,功能也大都很強。我們暫且不管這些防火牆產品的價格如何,由於它們在開發設計過程中注重的是產品的通用性、相容性,考慮更多的是市場和利潤,因此對於某些特殊的應用就不一定很合適。如果使用者能根據自己的實際需要,將防火牆設計的一般理論和方法與自己系統的具體實踐相結合,設計一些小而精、精而強的防火牆程式,則往往可以發揮出比花大價錢買來的通用型防火牆更好的作用。

  由於篇幅所限,本文不可能對防火牆的一般理論和結構進行深入的討論,因此僅以Linux系統為例,具體說明防火牆程式的設計方法。

  一、 從程式設計角度看Linux網路

  編寫防火牆程式並不一定要求對Linux網路核心有多麼深刻的理解,只是需要明白在網路核心中有這樣一種機制,那就是核心可以自動調用使用者編寫的防火牆程式,並根據這個防火牆程式返回的結果來決定對網路收發資料報的處理策略。

  二、 怎樣將自己編寫的防火牆程式登記到核心中

  我們已經知道核心在網路層中自動調用使用者編寫的防火牆程式。但有一個前提條件就是使用者必須正確地將自己編寫的防火牆程式登記到核心中。

  核心中提供了防火牆的登記和卸載函數,分別是register_firewall和unregister_firewall,參見firewall.c。

  1、 register_firewall

  函數原型如下:

  int register_firewall(int pf,struct firewall_ops *fw)

  傳回值:0代表成功,小於0表示不成功。

  參數:

  * 協議標誌pf,主要的取值及其代表的協議如下:

  2代表Ipv4協議,4代表IPX協議,10代表Ipv6協議等。

  * 參數結構fw定義如下:

  struct firewall_ops{

  struct firewall_ops *next;

  int (*fw_forward)(struct firewall_ops *this, int pf,

  struct device *dev, void *phdr, void *arg, struct sk_buff **pskb);

  int (*fw_input)(struct firewall_ops *this, int pf,

  struct device *dev, void *phdr, void *arg, struct sk_buff **pskb);

  int (*fw_output)(struct firewall_ops *this, int pf,

  struct device *dev, void *phdr, void *arg, struct sk_buff **pskb);



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。