Netfilter和IPTables使用說明
Netfilter和IPTables使用說明:
Linux 內(nèi)核中有一個功能強大的聯(lián)網(wǎng)子系統(tǒng) netfilter。netfilter 子系統(tǒng)提供了有狀態(tài)的或無狀態(tài)的分組過濾,還提供了 NAT 和 IP 偽裝服務(wù)。netfilter 還具備為高級選路和連接狀態(tài)管理而變形(mangle)IP 頭信息的能力。netfilter 是通過 IPTables 工具來控制的。
1、IPTables 總覽
netfilter 的強大功能和靈活性是通過 IPTables 界面來實現(xiàn)的。這個命令行工具和它的前身 IPChains 的語法很相似;不過,IPTables 使用 netfilter 子系統(tǒng)來增進網(wǎng)絡(luò)連接、檢驗、和處理方面的能力;IPChains 使用錯綜復(fù)雜的規(guī)則集合來過濾源地和目的地路線以及兩者的連接端口。IPTables 只在一個命令行界面中就包括了更先進的記錄方式;選路前和選路后的行動;網(wǎng)絡(luò)地址轉(zhuǎn)換;以及端口轉(zhuǎn)發(fā)。
2、使用 IPTables
使用 IPTables 的第一步是啟動 IPTables 服務(wù)。這可以使用以下命令進行:
- service iptables start
警告:你應(yīng)該使用以下命令關(guān)閉 IP6Tables 服務(wù)才能使用 IPTables 服務(wù):
- service ip6tables stop
- chkconfig ip6tables off
要使 IPTables 在系統(tǒng)引導(dǎo)時默認(rèn)啟動,你必須使用 chkconfig 來改變服務(wù)的運行級別狀態(tài)。
- chkconfig --level 345 iptables on
IPTables 的語法被分成幾個層次。主要層次為“鏈”(chain)。“鏈”指定處理分組的狀態(tài)。其用法為:
- iptables -A chain -j target
-A 在現(xiàn)存的規(guī)則集合內(nèi)后補一條規(guī)則。chain 是規(guī)則所在“鏈”的名稱。IPTables 中有三個內(nèi)建的鏈(即影響每一個在網(wǎng)絡(luò)中經(jīng)過的分組的鏈):INPUT、OUTPUT、和 FORWARD。這些鏈?zhǔn)怯谰眯缘?,不能被刪除。
重要:在創(chuàng)建 IPTables 規(guī)則集合時,記住規(guī)則的順序是至關(guān)重要的。例如:如果某個鏈指定了來自本地子網(wǎng) 192.168.100.0/24 的任何分組都應(yīng)放棄,然后一個允許來自 192.168.100.13(在前面要放棄分組的子網(wǎng)范圍內(nèi))的分組的鏈被補在這個規(guī)則后面(-A),那么這個后補的規(guī)則就會被忽略。你必須首先設(shè)置允許 192.168.100.13 的規(guī)則,然后再設(shè)置放棄規(guī)則。
要在現(xiàn)存規(guī)則鏈的任意處插入一條規(guī)則,使用 -I,隨后是你想插入規(guī)則的鏈的名稱,然后是你想放置規(guī)則的位置號碼(1,2,3,...,n)。例如:
- iptables -I INPUT 1 -i lo -p all -j ACCEPT
這條規(guī)則被插入為 INPUT 鏈的第一條規(guī)則,它允許本地環(huán)回設(shè)備上的交通。
?。?)基本防火墻策略
在一開始就建立的某些基本策略為建構(gòu)更詳細(xì)的用戶定義的規(guī)則奠定了基礎(chǔ)。IPTables 使用策略(policy, -P)來創(chuàng)建默認(rèn)規(guī)則。對安全敏感的管理員通常想采取放棄所有分組、只逐一允許指定分組的策略。以下規(guī)則阻塞網(wǎng)絡(luò)上所有的出入分組。
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
此外,還推薦你拒絕所有轉(zhuǎn)發(fā)分組(forwarded packets) — 要從防火墻被選路發(fā)送到它的目標(biāo)節(jié)點的網(wǎng)絡(luò)交通 — 以便限制內(nèi)部客戶對互聯(lián)網(wǎng)的無心暴露。要達(dá)到這個目的,使用以下規(guī)則:
- iptables -P FORWARD DROP
注記:在處理添加的規(guī)則時,REJECT(拒絕)目標(biāo)和 DROP(放棄)目標(biāo)這兩種行動有所不同。REJECT 會拒絕目標(biāo)分組的進入,并給企圖連接服務(wù)的用戶返回一個 connection refused 的錯誤消息。DROP 會放棄分組,而對 telnet 用戶不發(fā)出任何警告;不過,為了避免導(dǎo)致用戶由于迷惑不解而不停試圖連接的情況的發(fā)生,推薦你使用 REJECT 目標(biāo)。
設(shè)置了策略鏈后,為你的特定網(wǎng)絡(luò)和安全需要創(chuàng)建新規(guī)則。以下各節(jié)概述了一些你在建構(gòu) IPTables 防火墻時可能要實現(xiàn)的規(guī)則。
?。?)保存和恢復(fù) IPTables 規(guī)則
防火墻規(guī)則只在計算機處于開啟狀態(tài)時才有效。如果系統(tǒng)被重新引導(dǎo),這些規(guī)則就會自動被清除并重設(shè)。要保存規(guī)則以便今后載入,請使用以下命令:
- /sbin/service iptables save
保存在 /etc/sysconfig/iptables 文件中的規(guī)則會在服務(wù)啟動或重新啟動時(包括機器被重新引導(dǎo)時)被應(yīng)用。
【編輯推薦】