自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入淺出Netfilter/iptables防火墻框架(基礎(chǔ)篇)

原創(chuàng)
系統(tǒng) Linux
Netfilter/iptables可以對(duì)流入和流出的信息進(jìn)行細(xì)化控制,且可以在一臺(tái)低配置機(jī)器上很好地運(yùn)行,被認(rèn)為是Linux中實(shí)現(xiàn)包過濾功能的第四代應(yīng)用程序。在接下來的這個(gè)《深入淺出Netfilter/iptables防火墻框架》系列中,51CTO安全/Linux專家李洋將對(duì)Netfilter/iptables進(jìn)行詳盡的、條理的介紹。本文是基礎(chǔ)篇,先介紹Netfilter/iptables框架的原理。

【51CTO獨(dú)家特稿】Linux系統(tǒng)管理員們都接觸過Netfilter/iptables,這是Linux系統(tǒng)自帶的免費(fèi)防火墻,功能十分強(qiáng)大。在接下來的這個(gè)《深入淺出Netfilter/iptables防火墻框架》系列中,51CTO安全/Linux專家李洋將對(duì)Netfilter/iptables進(jìn)行詳盡的、條理的介紹。本文是基礎(chǔ)篇,先介紹Netfilter/iptables框架的原理。

1、Netfilter/iptables框架簡(jiǎn)介

Netfilter/iptables可以對(duì)流入和流出的信息進(jìn)行細(xì)化控制,且可以在一臺(tái)低配置機(jī)器上很好地運(yùn)行,被認(rèn)為是Linux中實(shí)現(xiàn)包過濾功能的第四代應(yīng)用程序。Netfilter/iptables包含在Linux 2.4以后的內(nèi)核中,可以實(shí)現(xiàn)防火墻、NAT(網(wǎng)絡(luò)地址翻譯)和數(shù)據(jù)包的分割等功能。netfilter工作在內(nèi)核內(nèi)部,而iptables則是讓用戶定義規(guī)則集的表結(jié)構(gòu)。Netfilter/iptables從ipchains和ipwadfm(IP防火墻管理)演化而來,功能更加強(qiáng)大。

這里所說的iptables是ipchains的后繼工具,但具有更強(qiáng)的可擴(kuò)展性。內(nèi)核模塊可以注冊(cè)一個(gè)新的規(guī)則表(table),并要求數(shù)據(jù)包流經(jīng)指定的規(guī)則表。這種數(shù)據(jù)包選擇用于實(shí)現(xiàn)數(shù)據(jù)報(bào)過濾(filter表),網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT表)及數(shù)據(jù)報(bào)處理(mangle表)。Linux 2.4內(nèi)核及其以上版本提供的這三種數(shù)據(jù)報(bào)處理功能都基于netfilter的鉤子函數(shù)和IP表,都是相互間獨(dú)立的模塊,完美地集成到了由netfilter提供的框架中,如圖1所示。netfilter主要提供了如下三項(xiàng)功能:

  1. 包過濾:filter表格不會(huì)對(duì)數(shù)據(jù)報(bào)進(jìn)行修改,而只對(duì)數(shù)據(jù)報(bào)進(jìn)行過濾。iptables優(yōu)于ipchains的一個(gè)方面就是它更為小巧和快速。它是通過鉤子函數(shù)NF_IP_LOCAL_IN、NF_IP_FORWARD及NF_IP_LOCAL_OUT接入netfilter框架的。
  2. NAT:NAT表格監(jiān)聽三個(gè)netfilter鉤子函數(shù):NF_IP_PRE_ROUTING、NF_IP_POST_ROUTING及NF_IP_LOCAL_OUT。NF_IP_PRE_ROUTING實(shí)現(xiàn)對(duì)需要轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的源地址進(jìn)行地址轉(zhuǎn)換,而NF_IP_POST_ROUTING則對(duì)需要轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)目的地址進(jìn)行地址轉(zhuǎn)換。對(duì)于本地?cái)?shù)據(jù)報(bào)目的地址的轉(zhuǎn)換,則由NF_IP_LOCAL_OUT來實(shí)現(xiàn)。
  3. 數(shù)據(jù)報(bào)處理:mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT鉤子中進(jìn)行注冊(cè)。使用mangle表,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)報(bào)的修改或給數(shù)據(jù)報(bào)附上一些外帶數(shù)據(jù)。當(dāng)前mangle表支持修改TOS位及設(shè)置skb的nfmard字段。

Netfilter/Iptables框架結(jié)構(gòu)示意圖
圖1 Netfilter/Iptables框架結(jié)構(gòu)示意圖

根據(jù)實(shí)際情況,靈活運(yùn)用Netfilter/iptables框架,生成相應(yīng)的防火墻規(guī)則可以方便、高效地阻斷部分網(wǎng)絡(luò)攻擊以及非法數(shù)據(jù)報(bào)(參見圖2所示的工作原理)。然而,由于配置了防火墻,可能引起諸如FTP、QQ、MSN等協(xié)議和軟件無(wú)法使用或者某些功能無(wú)法正常使用,也有可能引起RPC(遠(yuǎn)程過程調(diào)用)無(wú)法執(zhí)行,這需要用戶根據(jù)實(shí)際情況來配置相應(yīng)的服務(wù)代理程序來開啟這些服務(wù)。需要特別提醒注意的是,防火墻也可能被內(nèi)部攻擊,其并不是萬(wàn)能的,還需要綜合使用其他防護(hù)手段。內(nèi)部人員由于無(wú)法通過Telnet瀏覽郵件或使用FTP向外發(fā)送信息,個(gè)別人會(huì)對(duì)防火墻不滿進(jìn)而可能對(duì)其進(jìn)行攻擊和破壞。而且,攻擊的目標(biāo)常常是防火墻或防火墻運(yùn)行的操作系統(tǒng),這極大地危害了防火墻系統(tǒng)甚至是關(guān)鍵信息系統(tǒng)的安全。

Netfilter/Iptables框架工作原理示意
圖2 Netfilter/Iptables框架工作原理示意

#p#

2、iptables基本原理

通過向防火墻提供有關(guān)對(duì)來自某個(gè)源、到某個(gè)目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過濾。通過使用Netfilter/iptables系統(tǒng)提供的特殊命令iptables,建立這些規(guī)則,并將其添加到內(nèi)核空間的特定信息包過濾表內(nèi)的鏈中。關(guān)于添加/除去/編輯規(guī)則的命令的一般語(yǔ)法如下:

iptables [-t table] command [match] [target]

不難看出,一條iptables規(guī)則包含如下4個(gè)基本元素:

  1. 命令
  2. 匹配
  3. 目標(biāo)

1) 表(table)

[-t table]選項(xiàng)允許使用標(biāo)準(zhǔn)表之外的任何表。表是包含僅處理特定類型信息包的規(guī)則和鏈的信息包過濾表。有三種可用的表選項(xiàng):filter、nat和mangle。該選項(xiàng)不是必需的,如果未指定,則filter用作默認(rèn)表。filter表用于一般的信息包過濾,包含INPUT、OUTPUT和FORWAR鏈。nat表用于要轉(zhuǎn)發(fā)的信息包,它包含PREROUTING、OUTPUT和POSTROUTING鏈。如果信息包及其頭內(nèi)進(jìn)行了任何更改,則使用mangle表。該表包含一些規(guī)則來標(biāo)記用于高級(jí)路由的信息包以及PREROUTING和OUTPUT鏈。

2) 命令(command)

command部分是iptables命令的最重要部分,它告訴iptables命令要做什么,例如,插入規(guī)則、將規(guī)則添加到鏈的末尾或刪除規(guī)則。主要有如表1所示的命令。

表1 iptables常用命令

命    令 說    明
-A或--append 該命令將一條規(guī)則附加到鏈的末尾
-D或--delete 通過用-D指定要匹配的規(guī)則或者指定規(guī)則在鏈中的位置編號(hào),該命令從鏈中刪除該規(guī)則
-P或--policy 該命令設(shè)置鏈的默認(rèn)目標(biāo),即策略。所有與鏈中任何規(guī)則都不匹配的信息包都將被強(qiáng)制使用此鏈的策略
-N或--new-chain 用命令中所指定的名稱創(chuàng)建一個(gè)新鏈
-F或--flush 如果指定鏈名,該命令刪除鏈中的所有規(guī)則,如果未指定鏈名,該命令刪除所有鏈中的所有規(guī)則。此參數(shù)用于快速清除
-L或--list 列出指定鏈中的所有規(guī)則
-R或--replace 替換指定鏈中一條匹配的規(guī)則
-X或--delete-chain 刪除指定用戶的的定義鏈,若沒有指定鏈,則刪除所有的用戶鏈
-C或--check 檢查數(shù)據(jù)包是否與指定鏈的規(guī)則相匹配
-Z或--zero 將指定鏈中所有規(guī)則的byte計(jì)數(shù)器清零

3) 匹配(match)

iptables命令的可選match部分指定信息包與規(guī)則匹配所應(yīng)具有的特征(如源和目的地地址、協(xié)議等)。匹配分為兩大類:通用匹配和特定于協(xié)議的匹配。這里,將研究可用于采用任何協(xié)議的信息包的通用匹配。下面是一些重要的且常用的通用匹配及其說明,如表2所示。

表2 通用匹配說明

通用匹配 說    明
-p或--protocol 該通用協(xié)議匹配用于檢查某些特定協(xié)議。協(xié)議示例有TCP、UDP、ICMP、用逗號(hào)分隔的任何這三種協(xié)議的組合列表以及ALL(用于所有協(xié)議)。ALL是默認(rèn)匹配??梢允褂?符號(hào)表示不與該項(xiàng)匹配
-s 或 --source 該源匹配用于根據(jù)信息包的源IP地址來與它們匹配。該匹配還允許對(duì)某一范圍內(nèi)的IP地址進(jìn)行匹配,可以使用!符號(hào),表示不與該項(xiàng)匹配。默認(rèn)源匹配與所有IP地址匹配
-d 或 --destination 該目的地匹配用于根據(jù)信息包的目的地IP地址來與它們匹配。該匹配還允許對(duì)某一范圍內(nèi)IP地址進(jìn)行匹配,可以使用!符號(hào)表示不與該項(xiàng)匹配
--sport 指定匹配規(guī)則的源端口或端口范圍
--dport 指定匹配規(guī)則的目的端口或端口范圍
-i 匹配單獨(dú)的網(wǎng)絡(luò)接口或某種類型的接口設(shè)置過濾規(guī)則

4) 目標(biāo)(target)

前面已經(jīng)講過,目標(biāo)是由規(guī)則指定的操作,對(duì)與那些規(guī)則匹配的信息包執(zhí)行這些操作。除了允許用戶定義的目標(biāo)之外,還有許多可用的目標(biāo)選項(xiàng)。下面是常用的一些目標(biāo)及其示例和說明,如表3所示。

表3 目標(biāo)項(xiàng)說明

目 標(biāo) 項(xiàng) 說    明
ACCEPT 當(dāng)信息包與具有ACCEPT目標(biāo)的規(guī)則完全匹配時(shí),會(huì)被接受(允許它前往目的地)
DROP 當(dāng)信息包與具有DROP目標(biāo)的規(guī)則完全匹配時(shí),會(huì)阻塞該信息包,并且不對(duì)它做進(jìn)一步處理。該目標(biāo)被指定為-j DROP
REJECT 該目標(biāo)的工作方式與DROP目標(biāo)相同,但它比DROP好。和DROP不同,REJECT不會(huì)在服務(wù)器和客戶機(jī)上留下死套接字。另外,REJECT將錯(cuò)誤消息發(fā)回給信息包的發(fā)送方。該目標(biāo)被指定為-j REJECT
RETURN 在規(guī)則中設(shè)置的RETURN目標(biāo)讓與該規(guī)則匹配的信息包停止遍歷包含該規(guī)則的鏈。如果鏈?zhǔn)侨鏘NPUT之類的主鏈,則使用該鏈的默認(rèn)策略處理信息包。它被指定為-jump RETURN
LOG 表示將包的有關(guān)信息記錄入日志
TOS 表示改寫數(shù)據(jù)包的TOS值

下一篇:深入淺出Netfilter/iptables防火墻框架(入門篇)

【編輯推薦】

  1. Linux系統(tǒng)下iptables基本配置方法
  2. iptables的基礎(chǔ)知識(shí)-iptables包的轉(zhuǎn)發(fā)過程
  3. Nginx+iptables 防DDOS,惡意訪問,采集器
責(zé)任編輯:yangsai 來源: 51CTO.com
相關(guān)推薦

2011-07-13 10:30:09

2011-03-15 09:10:43

iptables防火墻

2011-03-15 10:48:47

2022-02-25 08:54:50

setState異步React

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2009-06-18 10:23:03

Javascript 基本框架

2009-06-22 15:34:00

Javascript

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2021-07-20 15:20:02

FlatBuffers阿里云Java

2012-05-21 10:06:26

FrameworkCocoa

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2021-08-24 06:36:02

DDD領(lǐng)域驅(qū)動(dòng)微服務(wù)

2012-05-31 09:35:43

HTML5

2012-05-30 15:17:54

HTML5

2012-05-30 14:51:09

HTML5

2012-05-31 09:19:22

HTML5

2012-05-31 10:57:06

HTML5

2012-05-30 11:11:42

HTML5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)