Linux防火牆詳解
在Internet中,企業通過架設各種伺服器系統為使用者提供豐富多彩的網路應用,例如Web網站、電子郵件系統、FTP伺服器、資料庫系統等。那麼如何來保護這些特定的服務,過濾企業不需要的訪問甚至是惡意的入侵呢?使用防火牆正是強有力的防護措施之一。
1、Linux防火牆基礎
作為隔離內外網、過濾非法資料的有力屏障,防火牆通常按實現環境的不同分為硬體防火牆和軟體防火牆。硬體防火牆是功能專一的硬體裝置,具有比較全面的功能,其工作效率較高,但是加個昂貴,通常只應用於非常重要的主幹網路節點。而軟體防火牆的功能是由作業系統或軟體程式實現的,可以在Linux或者Windows等系統平臺構建軟體防火牆。軟體防火牆的價格優勢比較明顯,配置也相對靈活,如果設定得當,同樣可以實現硬體防火牆具有的功能和效率。Internet中有大量的企業網路在使用Linux系統搭建軟體防火牆
1.1>、Linux的防火牆體系主要工作在網路層,針對TCP/IP資料包實施過濾和限制,屬於典型的包過濾防火牆(或稱網路層防火牆)。Linux的防火牆體系基於核心編碼實現,因此具有非常穩定的效能和高效率,也因此被更加廣泛採納和應用。
●>Linux防火牆發展歷史
linux核心從很早的時候就實現了網路防火牆的功能,併為使用者提供了管理防火牆規則的命令工具。www.it165.net
>>>在2.0版本的核心中,包過濾機制是ipfw,管理防火牆規則的命令工具是ipfwadm。
>>>在2.2版本的核心中,包過濾機制是ipchain,管理防火牆規則的命令工具是ipchains。
>>>在2.4版本的核心開始,包過濾機制是netfiter,管理防火牆的命令工具是iptables。
本文以iptables作為主要命令工具,學習Linux防火牆的配置和使用。
●>netfiter與iptables
在許多關於防火牆的資料中,netfiter和iptables通常都可以用來指Linux防火牆,往往容易引起混淆。兩者的主要區別如下:
>>>netfiter:指的是Linux核心中實現包過濾防火牆的內部結構,不以程式或檔案的形式存在,屬於“核心態”(Kernel Space,又稱核心空間)的防火牆功能體系
>>>iptables: 指的是管理防火牆的命令工具,程式通常位於/sbin/iptables,屬於“使用者態”(User Space,又稱使用者空間)的防火牆管理體系。
1.2>、iptables的規則表、鏈結構
iptables的作用在於為包過濾的實現提供規則(或稱策略),通過各種不同的規則,告訴netfiter對來自有些源、前往某些目的地或具有某些協議特徵的資料包應該如何處理。為了更方便地組織和管理防火牆策略,iptables採用了“表”和“鏈”的分層結構。每個規則“表”相當於核心空間的一個容器,根據處理資料包的時機不同,表容器內包括不同的規則“鏈”。針對特定資料包的各種防火牆規則,按順序依次放入對應的規則“鏈”中。
◆規則表
按照防火牆策略的不同用途,iptables管理著四個不同的規則表,其功能分別由獨立的核心模組實現。
>>>filter表,包含三個規則鏈:INPUT,FORWARD,OUTPUT。
filter 表主要用於對資料包進行過濾,根據具體的規則決定是否放行該資料包。
filter 表對應的核心模組為 iptable_filter。
>>>nat表,包含三個規則鏈:PREROUTING,POSTROUTING,OUTPUT。
nat (Network Address Translation,網路地址轉換)表主要用於修改資料包的IP地址、埠號等資訊。
nat 表對應的核心模組為 iptable_nat。
>>>mangle表,包含五個規則鏈:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。
mangle表主要用於修改資料包的TOS(Type Of Service,服務型別)、TTL(Time To Live,生存週期)指以及為資料包設定Mark標記,以實現Qos(Quality Of Service,服務質量)調整以及策略路由等應用,由於需要相應的路由裝置支援,因此應用並不廣泛。
mangle 表對應的核心模組為 iptable_mangle。
>>>raw表,包含兩條規則鏈:OUTPUT、PREROUTING。
raw表是自1.2.9以後版本的iptables新增的表,主要用於決定資料包是否被狀態跟蹤機制處理。在匹配資料包時,raw表的規則要優先於其他表。
raw表對應的核心模組為iptable_raw。
Ps:在iptables的四個規則表中,mangle表和raw的表應用相對較少,下面主要介紹filter表和nat表的防火牆應用。
◆規則鏈
在處理各種資料包時,根據防火牆規則的不同介入時機,iptables供涉及5種預設規則鏈,其應用時間點分別對應如下。
>>>INPUT鏈:當接收到防火牆本機地址的資料包(入站)時,應用此鏈中的規則。
>>>OUTPUT鏈:當防火牆本機向外傳送資料包(出戰)時,應用次鏈中的規則。
>>>FORWARD鏈:當接收到需要通過防火牆傳送給其他地址的資料包(轉發)時,應用次鏈中的規則。
>>>PREROUTING鏈:在對資料包作路由選擇之前,應用次鏈中的規則。
>>>POSTROUTING鏈:在對資料包作路由選擇之後,應用次鏈中的規則。
Ps:期中INPUT、OUTPUT鏈更多的應用在“主機防火牆”中,即主要針對伺服器本機進出資料的安全控制;而FORWARD、PREROUTING、POSTROUTING鏈更多的應用在“網路防火牆”中,特別是防火牆伺服器作為閘道器使用時的情況。
1.3>、資料包過濾匹配流程
在前面內容中,已經介紹過iptables管理的4個預設表和5種規則鏈,在每個表的規則鏈裡都可以設定防火牆規則,防火牆將根據這些規則來決定如何處理資料包。那麼,當網路資料包到達防火牆以後,會有限使用哪一個表、哪一個鏈裡的規則呢?資料包出入防火牆的規則匹配過程是怎樣的?下面從不同的角度依次介紹資料包過濾的匹配流程。
ⅰ>、規則表之間的優先順序
當資料包抵達防火牆時,將依次應用raw、mangle、nat和filter表中對應鏈內的規則(如果有的話)就像上圖;
ⅱ>、規則鏈之間的優先順序
由於預設規則鏈是根據規則介入時機進行分類的,因此優先順序直接取決於資料包的具體流程;
ⅰ>、入站資料流向: 來自外界的資料包到達防火牆後,首先被PREROUTING規則鏈處理(是否修改資料包地址等),之後會進行路由選擇(判斷該資料包應該發往何處),如果資料包的目標地址是防火牆本機(如Internet使用者訪問防火牆主機中的Web服務的資料包),那麼核心將其傳遞給INPUT鏈進行處理(決定是否允許通過等),通過以後再交給系統上層的應用程式(如httpd伺服器)進行響應。
ⅱ>、轉發資料流向:來自外界的資料包到達防火牆後,首先被PREROUTING規則處理,之後會進行路由選擇,如果資料包的目標地址是其他外部地址(如區域網使用者通過閘道器訪問QQ站點的資料包),則核心將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),然後再講給POSTROUTING規則鏈(是否修改資料包的地址等)進行處理。
ⅲ>、出戰資料流向:防火牆本機向外部地址傳送的資料包(如在防火牆主機中測試公網DNS服務時),首先被OUTPUT規則鏈處理,之後進行路由選擇,然後傳遞給POSTROUTING規則鏈(是否修改資料包的地址等)進行處理。
1.4>、規則鏈內部各條防火牆規則之間的優先順序
在資料包經由各條規則鏈的處理過程中,依次按第1條規則、第2條規則、第3條規則.....的順序進行匹配和處理。如果找到一條能夠匹配該資料包的規則,則不會繼續檢查後面的規則(使用LOG記錄日誌的規則除外,下面iptables配置說明)。如果比對完整個規則鏈,也找不到和資料包相匹配的規則,就按照該規則鏈的預設策略進行處理。
2、管理和設定iptables規則
前面講解了linux防火牆的表、鏈結構,下面講述netfilter防火牆的管理工具——iptables命令的使用。
2.1 >、iptables的基本語法格式
使用iptables命令設定防火牆規則時,其基本的命令格式如下:
iptables [ -t 表名] 命令選項 [鏈名] [條件匹配] [-j 目標動作或跳轉]
其中,表名、鏈名用於指定iptables命令所操作的表和鏈,若未指定表名,將預設使用filter表;命令選項用於指定管理iptables規則的方式,如插入、增加、刪除以及檢視等;條件匹配用於指定對符合什麼樣條件的資料包進行處理;目標動作或跳轉用於知道資料包的處理方式,如允許通過、拒絕、丟棄或跳轉(jump)給其他鏈進行處理等。
2.2>、管理iptables規則
在管理iptables防火牆的過程中,首先需要考慮的就是如何檢視規則、新增規則、清空鏈內的規則等基本操作。
01.
iptables
命令的管理控制選項
02.
選項名
功能及特點
03.
-A
在指定鏈的末尾新增(--append)一條新的規則
04.
-D
刪除(--delete)指定鏈中的某一條規則,按規則序號或內容確定要刪除的規則
05.
-I
在指定鏈中插入(--insert)一條新的規則,若未指定插入位置,則預設在鏈的開頭插入
06.
-R
修改、替換(--replace)指定鏈中的某一條規則,按規則序號或內容確定要替換的規則
07.
-L
列出(--list)指定鏈中的所有的規則進行檢視,若未指定鏈名,則列出表中所有鏈的內容
08.
-F
清空(--flush)指定鏈中的所有規則,若未指定鏈名,則清空表中所有鏈的內容
09.
-N
新建(--new-chain)一條使用者自己定義的規則鏈
10.
-X
刪除指定表中使用者自定義的規則鏈(--delete-chain)
11.
-P
設定指定鏈的預設策略(--policy)
12.
-n
使用數字形式(--numeric)顯示輸出結果,若顯示主機的IP地址而不是主機名
13.
-
v
檢視規則列表時顯示詳細(--verbose)的資訊
14.
-V
檢視iptables命令工具的版本(--Version)資訊
15.
-h
檢視命令幫助資訊(--help)
16.
--line-number
檢視規則列表時,同時顯示規則在鏈中的順序號
其中,新增、插入、刪除、清空規則和檢視規則是最常用的管理選項,下面通過例項的方式顯示部分選項的應用。
Α、新增及插入規則
eg :在filter表的INPUT鏈的末尾新增一條防火牆規則。
[[email protected] ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
eg : 在filter表的INPUT鏈中插入一條防火牆規則(此處省略了“-t filter”選項,按預設處理filter表)。
[[email protected] ~]# iptables -I INPUT -p udp -j ACCEPT
eg: 在filter表的INPUT鏈中插入一條防火牆規則(作為鏈中的第二條規則)。
[[email protected] ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
B、檢視規則列表
eg: 檢視filter表INPUT鏈中的所有規則,同時顯示各條規則的順序號。(下面是對比圖)
[[email protected] ~]# iptables -L INPUT --line-numbers
[[email protected] ~]# iptables -L INPUT
C、刪除、清空規則
eg: 刪除filter表INPUT鏈中的第2條規則。
[[email protected] ~]# iptables -D INPUT 2
eg: 清空filter表、nat表、mangle表各鏈中的所有規則。
[[email protected] ~]# iptables -F //不指定表名時預設清空filter表
[[email protected] ~]# iptables -t nat -F
[[email protected] ~]# iptables -t mangle -F
D、設定規則鏈的預設策略
最基本的兩種策略為ACCEPT(允許)、DROP(丟棄)。
eg: 將filter表中FORWARD規則鏈的預設策略設為DROP
[[email protected] ~]# iptables -t filter -P FORWARD DROP
eg: 清空filter表、nat表、mangle表各鏈中的所有規則。
1 2 3 |
[[email protected] ~]# iptables -F //不指定表名時預設清空filter表
[[email protected] ~]# iptables -t nat -F
[[email protected] ~]# iptables -t mangle -F
|
D、設定規則鏈的預設策略
最基本的兩種策略為ACCEPT(允許)、DROP(丟棄)。
eg: 將filter表中FORWARD規則鏈的預設策略設為DROP
1 |
[[email protected] ~]# iptables -t filter -P FORWARD DROP
|
E、獲得iptables相關選項用法的幫助資訊
eg: 檢視iptables命令中關於icmp協議的幫助資訊(在輸出內容的最後部分列出)。
1 |
[[email protected] ~]# iptables -p icmp -h
|
F、新增、刪除自定義規則鏈
eg: 在raw表中新增一條自定義的規則鏈,鏈名為TCP_PACKETS.
1 |
[[email protected] ~]# iptables -t raw -N TCP_PACKETS
|
eg: 清空raw表中的使用者自定義的所有規則鏈。
1 |
[[email protected] ~]# iptables -t raw -X
|
Ps:在iptables的規則表中,允許使用者自定義新的鏈。但是需要在預設的鏈中新增相應的跳轉策略(如“iptables -I INPUT ...... -j 自定義鏈名”),否則在處理資料包時將不會使用自定義鏈中的規則。後面會給個例子;好累~~~
2.3>、條件匹配
對於Linux防火牆來說,應該對什麼樣的資料包進行過濾,對什麼樣的資料包做地址轉換......,對於一條有效的防火牆策略來說,條件匹配的設定起著決定性的作用,Linux防火牆需要非常清楚的知道針對符合什麼條件的資料包進行什麼樣的處理。
區分資料包的條件匹配方式可以分為通用匹配、隱含匹配和顯式匹配,各種匹配條件可以結合在一起使用。
A、通過(general)條件匹配
這種匹配操作一般可以直接使用,而不依賴於其他的條件匹配及其擴充套件。常見的通用匹配方式包括以下集中。
>>>協議匹配。用於檢查資料包的網路協議(--protocal),允許使用的協議名包含在/etc/protocols檔案中,常見的為tcp、udp、icmp和all(針對所有IP資料包)。在iptables命令中使用“-p 協議名”的形式。
eg: 拒絕進入防火牆的所有icmp協議資料包。
1 |
[[email protected] ~]# iptables -I INPUT -p icmp -j REJECT
|
eg :允許防火牆轉發除icmp協議以外的所有資料包(使用驚歎號"!"可以將除條件取反)。
1 |
[[email protected] ~]# iptables -A FORWARD ! -p icmp -j ACCEPT
|
>>>地址匹配。用於檢查資料包的IP地址、網路地址。在iptables命令中使用“-s 源地址”和“-d 目標地址”的形式,分別對應於源(--source)地址和目標(--destination)地址。
eg: 拒絕轉發來自192.168.1.11主機的資料,允許轉發來自192.168.0.0/24網段的資料。
[[email protected] ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT
[[email protected] ~]# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
>>>網路介面匹配。用於檢查資料包從防火牆的哪一個介面進入或離開。在iptables命令中使用“-i 網路介面名”和“-o 網路介面名”的形式,分別對應於接收資料包(--in-interface)的網絡卡和傳送資料包(--out-interface)的網絡卡
eg: 丟棄從外網介面(eth1)進入防火牆本機的源地址為私網地址的資料包。
[[email protected] ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
[[email protected] ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
[[email protected] ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
eg: 管理員在閘道器伺服器上檢測到來自某個IP網段(如 10.20.30.0/24)的頻繁掃描,希望設定iptables規則封堵該IP地址段,兩小時後解封。
[[email protected] ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
[[email protected] ~]# iptables -I FORWARD -s 10.20.30.0/24 -j DROP
[[email protected] ~]# at now +2 hours
相關推薦
linux 防火牆詳解
一、linux防火牆基礎 1.防火牆概念 在電腦科學領域中,防火牆(Firewall)是一個架設在網際網路與企業內網之間的資訊安全系統,根據企業預定的策略來監控往來的傳輸。 防火牆可能是一臺專屬的網路裝置或是運行於主機上來檢查各個網路介面上的網路傳輸。它是目前最重要的一種網路防護裝置,從
Linux防火牆詳解
在Internet中,企業通過架設各種伺服器系統為使用者提供豐富多彩的網路應用,例如Web網站、電子郵件系統、FTP伺服器、資料庫系統等。那麼如何來保護這些特定的服務,過濾企業不需要的訪問甚至是惡意的入侵呢?使用防火牆正是強有力的防護措施之一。 1、Linux防火牆基礎
(轉)Linux的iptables做代理伺服器和防火牆詳解
https://blog.csdn.net/harryxlb/article/details/7339307 用Linux的iptables做代理伺服器和防火牆配置詳細介紹 代理/防火牆 1.iptables規則表 &n
Linux特性詳解
linux特性詳解 history 命令替換 命令別名 文件名統配 bash及其特性:shell: 外殼GUI:Gnome, KDE, XfceCLI: sh, csh, ksh, bash, tcsh, zsh Linux允許同一個用戶登錄多次root, student程序:進程 進程:
Linux LVM詳解及創建
lvm 1. LVM基本創建及管理 2. LVM快照 3. LVM與RAID的結合使用:基於RAID的LVMLVM創建: 描述: LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分
linux rsyslog詳解
syslog priority facility rsyslog 概念和特性歷史日誌、歷史事件:時間、事件本身、日誌級別(根據時間的關鍵性程度)系統日誌服務:syslog有兩個進程syslogd(system負責用戶進程)、 klogd(kernel負責內核進程)centos7:rsyslog
Linux 命令詳解(十)Shell腳本的數組詳解
cti err art case lin start shell pre round 1、數組定義 [[email protected] ~]# a=(1 2 3 4 5 6 7 8) [[email protected]-IDC ~]# echo $
(轉)Linux命令詳解-file
版本信息 ref 獲取文件 linux命令 過程 嘗試 file img 文件類型 Linux命令詳解-file 原文:https://www.cnblogs.com/Dodge/p/4278306.html file命令用來識別文件類型,也可用來辨別一些文件的編碼格
linux目錄詳解
style 啟動過程 usr 位置 cpu信息 pos 過程 scripts strong 網卡的配置文件目錄 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0
Docker 基礎技術之 Linux namespace 詳解
基本 mar $$ 裏的 sta 進程資源 進程間通信 開始 消息隊列 Docker 是“新瓶裝舊酒”的產物,依賴於 Linux 內核技術 chroot 、namespace 和 cgroup。本篇先來看 namespace 技術。 Docker 和虛擬機技術一樣,從操作系
linux管道詳解
linux原文鏈接:http://blog.csdn.net/qq_38646470/article/details/79564392 #符號表示| 和管道特別形象。#作用: 管道是Linux中很重要的一種通信方式,是把一個程序的輸出直接連接到另一個程序的輸入
Linux命令詳解(部分昨今兩天)
Linux命令詳解基本命令1.Linux的基本原則:1、由目的單一的小程序組成;組合小程序完成復雜任務;2、一切皆文件;3、盡量避免捕獲用戶接口;(盡量不和用戶進行交互,就是一個程序一但開始運行,就不需要用戶進行任何操作,如ls命令,ifconfig命令)4、配置文件保存為純文本格式;2.命令形式命令格式:命
Linux命令詳解
Linux命令詳解路徑:絕對路徑:凡是以“/”開頭的輸入路徑的方式都是絕對路徑相對路徑:凡是以“.”或者“..”開頭的都是相對路徑查看服務器基本信息:cat /proc/cpuinfo 查看cpu信息cat /proc/meminfo 查看內存信息free 查看內存使用情況uptime 監控CPU情況unam
Linux命令詳解--壓縮與解壓縮
Linux命令詳解--壓縮與解壓縮壓縮和歸檔打包:即歸檔,類似於旅遊之前收拾行李壓縮:為了減少占用的磁盤空間,可以做備份,在網絡上傳輸時節省網絡帶寬。打包壓縮軟件windows:winrar 360壓縮好壓 7zip winziplinux:壓縮格式:gz ,bz2,xz,zip,Z壓縮算法不同,導致壓縮比不
Linux命令詳解--文件與目錄查找
Linux命令詳解--文件與目錄查找一·文件搜索 which:用來查找命令的絕對路徑-- 顯示shell命令的絕對路徑-- 僅僅會在PATH變量中搜索要查找的命令-- 搜索時先查找別名,然後從PATH中查找1、查看用戶的PATH變量:命令的搜索路徑# echo $PATH/usr/lib64/qt-3.3/b
linux nc 詳解
nc功能說明:功能強大的網絡工具 netcat(nc)是一個簡單而有用的工具,不僅可以通過使用TCP或UDP協議的網絡連接讀寫數據,同時還是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接 安裝: root@pts/0 # yum -y install nc 幫助: root@pts
linux命令詳解之(at)
關閉 服務啟動 安全問題 分隔 sta 設定 tmp 指示 命令的使用 在Linux下,有兩個命令可以用來作為計劃任務而執行,at:一次性定時任務計劃執行crontab :每天定時任務計劃執行以下僅說一下一次性任務計劃執行(at)要使用一次性任務計劃,linux必須要有負責
linux命令詳解之df(6/19)
AS true 設置 符號鏈接 disk var aci 實例 logs df命令作用是列出文件系統的整體磁盤空間使用情況。可以用來查看磁盤已被使用多少空間和還剩余多少空間。 df命令顯示系統中包含每個文件名參數的磁盤使用情況,如果沒有文件名參數,則顯示所有當前已掛載文件系
linux awk詳解
自然 小寫 功能 () 取字符 求和 不同 pan 詳解 awk: awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯, awk在其對數據分析並生成報告時,顯得尤為強大。 簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將
Linux iptables 詳解
如果 pla 橋接 命令 proc raw net 查看 upgrade 最近搭一個框架需要用到iptables做映射,學習了下iptables的原理,總結下方便以後查~。 參考並轉載於以下鏈接: http://www.cnblogs.com/metoy/p/43208