使用IP鏈建立Linux防火牆(轉)

amyz發表於2007-08-13
使用IP鏈建立Linux防火牆(轉)[@more@]

  雖然Linux作業系統具有很多優點,其安全性也較高,但是你不應當由此產生一種虛假的安全感,因為你的Linux系統的安全性仍舊可能受到損害。現在就讓我們來看看如何透過使用IP鏈(IPchains)來建立Linux系統的防火牆,保護你的系統不受侵害。

  先假設你已經具備了一些關於因特網的基本知識。應當說,熟悉像IP地址、TCP埠和網路傳輸資料之類的詞彙是很有用處的。對防火牆有一個大概的瞭解也是十分有必要的。

  ■命令:

  我們需要確立起一系列的規則,這樣IP鏈才能進入來來往往的網路路徑。每一條規則都被置於三鏈之一,這三個鏈分別為:存放輸入資料的輸入鏈、存放輸出資料的輸出鏈和傳輸鏈。

  每增加一條規則,都要從IP鏈開始,並且要增加下面的某些或全部步驟。附加(Append)、刪除(Delete)、插入(Insert)和替換(Replace),這些命令通常是跟在起始的IP鏈命令之後,並且指示程式應當把規則命令新增在哪條鏈上以及如何新增。新增時,以-A、-D、- I,或者-R開始,這些字母的後面再加上鍊的名稱(輸入鏈或輸出鏈)。

  當你要使用插入命令時,必須在要加入該命令的位置上,在鏈的名稱後面,具體指定行號。

  在使用替換命令時,需要指定被替換的行號,使用刪除命令的時候,也必須指定刪除的行號。  

  在使用刪除選項時,無須在行號後面再輸入什麼別的內容。你只要鍵入ipchains -L,就可以發現命令所作用的行號。

  ■協議(Protocol):

  在這裡你要針對每一條規則命令具體地指明某種協議。在大多數情形下,使用TCP/IP協議。

  也有可能你不想讓你的計算機對另一臺計算機發出的Ping訊號做出反應。為了做到這一點,需要具體指定ICMP(網際網路控制報文協議)。在具體地指定某個協議的時候,要使用-p命令,如:-p icmp。

  ■源(Source):

  源可以確定從某個特定的IP地址而來的路徑以及使用-s命令的埠。如果你知道一個標準的IP地址,就可以直接使用IP地址,或者乾脆指定一個域名(比如)。假如你想指定任意一個地址,不妨用0.0.0.0/0。

  我們可以在IP地址的後面用數字來指定某一個埠(比如110),也可以用伺服器的名稱(pop3)來指定某一個埠。使用冒號可以將兩個埠數字分隔開,這樣就能指定一連串的埠。例如:

  -s mail.mailserver.com pop3

  -s 127.0.0.1 139:164

  ■目的(Destination):

  用法與源地址是一樣的,只要指定目的地址和埠即可。

  ■跳轉(Jump):

  我們需要了解的最後一個選項是-j命令。這個命令告訴防火牆,如果一項規則命令與正在輸入的資料相匹配時,防火牆應該採取什麼步驟。在大多數情況下,這種步驟就是接受或拒絕。舉個例子吧,假如你想拒絕某組與命令相符的資料時,防火牆就跳轉至拒絕。如果一組資料不符合某條命令規則,該資料就會往前進入下一個命令。如果沒有任何規則符合這組資料的話,資料就會在預設的狀態下被拒絕。

  當然還有一些其它的選項和命令能夠與IP鏈的命令一起使用。假如你想深入瞭解更多的資訊,可以在命令列欄鍵入ipchains -h。

  建立防火牆

  建立Linux系統的防火牆的核心部分就是在你接近你想要訪問的伺服器的同時,又要阻止其它伺服器接近你的系統。這裡我們提出一些忠告。

  首先,你在建立你的防火牆時儘量對所有的“拒絕”規則使用-I命令。當某條規則將一組資料擋在外面的時候,就會產生一行資訊,加入到你的核心程式資訊記錄中(變數/記錄/核心程式/資訊)。你讀一讀這個檔案就能明白為什麼一組資料會被擋在外面。一條記錄詳細說明了被採取的步驟、能解釋某條規則源目的鏈、源地址和埠以及目的地址和埠,因而你能運用這些資訊來調整防火牆。可以按照你想得到的方式擁有任何東西,這時就不再需要-I命令了。

  其次,建立防火牆可以擋住所有流入的Syn資料。Syn資料是用於啟動連結的資料組,但它們不應該出現在大部分的桌面系統上。可以這樣運用-y命令:

  ipchains -I input 1 -p tcp -y -j DENY

  你還可用下面這條命令擋住ICMP資料:

  ipchains -I input 2 -p icmp -j DENY

  把這兩條規則放在最前面,就能保證系統不會隨便接收這些資料。下一步,該擋住像ftp、telnet、smtp和pop3之類的一些常用的伺服器埠:  

  ipchains - A input -p tcp - s 0.0.0.0/0 ftp DENY

  ipchains - A input -p tcp - s 0.0.0.0/0 telnet DENY

  ipchains - A input -p tcp - s 0.0.0.0/0 smtp DENY

  ipchains - A input -p tcp - s 0.0.0.0/0 pop3 DENY  

  ipchains - A input -p tcp - s 0.0.0.0/0 nntp DENY

  如果在連線傳送郵件的伺服器時出現問題,可以在smtp 和pop3 DENY的規則前面插入一條規則,這樣便能使所謂的DENY規則失去作用。不過要保證這條規則的明確性,因為這樣才能使得DENY規則失效。通常來說,明確地指明一個IP地址是個不錯的做法:

  ipchains - I 3 input - 1 - p tcp - s mail.mailserver.com pop3 - j ACCEPT

  ipchains - I 4 input - 1 - p tcp - s mail.mailserver.com smtp - j ACCEPT

  可以用你傳送郵件的伺服器的地址替代域名“mail.mailserver.com”,對於一個新的伺服器或者任何一個連結有困難的FTP網址,都可以這樣做。

  雖然這些規則是一些基本性的,但有助於建立一個安全有效的防火牆。我們可以在像Gibson Research Center () 和DSL Reports (http://www.secure-me.net/) 之類的網站檢測防火牆的安全和有效性。上面兩個網站都可以免費提供關於因特網的埠查詢。一旦找到了有用的規則,就用ipchain-save命令將這些規則儲存到某個檔案中。

  當重新啟動系統的時候就可以運用這個儲存了規則的檔案。鍵入ipchains-save/etc/ipchains.rules就能儲存防火牆設定資料。在重新啟動你的系統後保持有關防火牆的設定時,請鍵入ipchains-restore/etc/ipchains.rules 。當你的系統斷電或者重新啟動時,Linux系統不會自動儲存這些設定資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955519/,如需轉載,請註明出處,否則將追究法律責任。

相關文章