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