防火牆-簡單瞭解

FlyFlyWin發表於2020-12-01

最重要的是四表五鏈
windows和linux安全等級都屬於c2

防火牆分類:

基礎類防火牆:根據資料包文特徵進行資料包過濾模組

IDS 類防火牆:入侵檢測系統

IPS 類防火牆:入侵防禦系統

主動安全類防火牆

​ waf:外網{防禦http協議}

​ daf:資料庫應用防火牆

基礎類防火牆:iptables,firewalld

​ 軟體

​ iptables

​ firewalld

​ 硬體:大廠一般都有{惠普,聯想}

​ 效能主要看吞吐量:每秒能過濾多大的資料流量

防火牆:工作在主機邊緣處或者網路邊緣處對進出的資料包文根據定義規則進行過濾的模組

​ 使用者態:iptables firewalld

​ 核心態:netfilter netfilter

​ 規則

​ 自定義規則:自己定義的規則

​ 預設規則:預設值,如果匹配不到自定義,就匹配預設

鏈:承載規則

​ INPUT:對入站資料包文處理的介面

​ OUTPUT:對出站資料包文做處理的介面

​ FORWARD: 對轉發資料包文做處理的介面

​ POSTROUTING:路由後 SNAT

​ PREROUTING:路由前 DNAT

表:承載鏈

​ raw:資料包文跟蹤

​ mangle:資料包文修改

​ nat:資料包文轉換 nat

​ filter:資料包文過濾{最重要的功能}

規則順序:自上而下 依次匹配 匹配即停止 除了 LOG 動作

規則寫的順序,訪問高的放在上面,不常訪問的在下面

鏈順序

​ 入站: PREROUTING > INPUT

​ 出站: OUTPUT > POSTROUTING

​ 轉發: PREROUTINGH > FORWARD > POSTROUTING

表順序

​ raw 》 mangle 》 nat 》 filter

資料流入方向

入站:raw{路由前跟蹤}、mangle{修改}、nat{PREROUTING}{地址轉換}到路由mangle{入站前修改}、filter{INPUT}{入站前過濾}到應用程式

出站:raw、mangle、nat、filter{OUTPUT}、mangle、nat{POSTROUTING}

轉發:raw{路由前跟蹤}、mangle{修改}、nat{PREROUTING}{地址轉換}、路由mangle{入站前修改}、filter{INPUT}{入站前過濾}、mangle、nat{POSTROUTING}

語法構成

iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制型別]

幾個注意事項

不指定表名時,預設指filter表

iptables -L=iptables -t filter -L

不指定鏈名時,預設指表內的所有鏈

除非設定鏈的預設策略,否則必須指定匹配條件

選項、鏈名、控制型別使用大寫字母,其餘均為小寫

ACCEPT: 允許通過

DROP: 直接丟棄,不給出任何回應{預設規則}

REJECT: 拒絕通過,必要時會給出提示{如果想用,在自定義規則}

LOG: 記錄日誌資訊,然後傳給下一條規則繼續匹配

SNAT: 修改資料包源地址

DNAT: 修改資料包目的地址

REDIRECT: 重定向

新增新的規則

-A:在鏈的末尾追加一條規則

-I:在鏈的開頭(或指定序號)插入一條規則

# iptables -t filter -A INPUT -p tcp -j ACCEPT #只要是tcp的入站規則全部放行

# iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #通過tcp協議,允許任何使用者訪問80埠去任何地方

# iptables -I INPUT -p udp -j ACCEPT #在開頭插入一條規則,允許UDP的所有入站報文

# iptables -I INPUT 2 -p icmp -j ACCEPT #在INPUT鏈的第二條插入一條規則{放行ICMP協議}

# iptables -A INPUT -j DROP #將所有的資料包文丟棄

檢視規則列表

-L:列出所有的規則條目

-n:以數字形式顯示地址、埠等資訊

-v:以更詳細的方式顯示規則資訊

–line-numbers:檢視規則時,顯示規則的序號

# iptables -L INPUT --line-numbers

# iptables -L -n -v

刪除、清空規則

-D:刪除鏈內指定序號(或內容)的一條規則

-F:清空所有的規則

清空所有表的所有鏈的所有規則

[root@www ~]# iptables -t mangle -F

[root@www ~]# echo “” > /etc/sysconfig/iptables #這樣更快,清空所有表

[root@www ~]# service iptables restart

# iptables -F #清除所有鏈的規則

# iptables -D INPUT 3 #刪除INPUT鏈的第三條規則

# iptables -t filter -F INPUT #刪除INPUT鏈的所有規則

# iptables -n -L INPUT

Chain INPUT (policy ACCEPT)

target prot opt source destination

ACCEPT udp – 0.0.0.0/0 0.0.0.0/0

ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0

ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0

設定預設策略

-P:為指定的鏈設定預設規則

# iptables -t filter -P FORWARD DROP

# iptables -P OUTPUT ACCEPT

通用匹配

可直接使用,不依賴於其他條件或擴充套件

包括網路協議、IP地址、網路介面等條件

隱含匹配

要求以特定的協議匹配作為前提

包括埠、TCP標記、ICMP型別等條件

顯式匹配

要求以“-m 擴充套件模組”的形式明確指出型別

包括多埠、MAC地址、IP範圍、資料包狀態等條件

iptables -t filter -A INPUT -p tcp --dport 80 -j REJECT

常見的通用匹配條件

協議匹配:-p 協議名

地址匹配:-s 源地址、-d 目的地址

介面匹配:-i 入站網路卡、-o 出站網路卡

# iptables -A FORWARD -s 192.168.1.11 -j REJECT #當源地址是1.11的轉發請求拒絕

# iptables -I INPUT -s 10.20.30.0/24 -j DROP #當源地址是30.0/24網段時入站請求丟棄

# iptables -I INPUT -p icmp -j DROP #丟棄icmp的入站報文

# iptables -A FORWARD -p ! icmp -j ACCEPT #除了icmp的轉發請求我都同意

# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP #當入站網路卡是eth0,當源地址是0.0/12網段的入站請求丟棄

常用的隱含匹配條件

埠匹配:–sport 源埠、–dport 目的埠

ICMP型別匹配:–icmp-type ICMP型別

# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT

# iptables -A INPUT -p icmp --icmp-type 8 -j DROP #別人能正常訪問我

# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT #我能訪問別人,別人不能訪問我

# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #目標未知

# iptables -A INPUT -p icmp -j DROP

常用的顯式匹配條件

多埠匹配:-m multiport --sport 源埠列表

​ -m multiport --dport 目的埠列表

IP範圍匹配:-m iprange --src-range IP範圍

MAC地址匹配:-m mac –mac-source MAC地址

狀態匹配:-m state --state 連線狀態

# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT

# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP

# iptables -P INPUT DROP

# iptables -I INPUT -p tcp -m multiport --dport 80-82,85 -j ACCEPT

# iptables -I INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

RELATED 相關聯的

SNAT 策略的典型應用環境:區域網主機共享單個公網IP地址接入Internet

SNAT 策略的原理

源地址轉換,Source Network Address Translation

修改資料包的源地址

前提條件

區域網各主機正確設定IP地址/子網掩碼

區域網各主機正確設定預設閘道器地址

Linux閘道器支援IP路由轉發

實現方法:編寫SNAT轉換規則

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31

MASQUERADE —— 地址偽裝

適用於外網 IP地址 非固定的情況

對於ADSL 撥號連線,介面通常為 ppp0、ppp1

將SNAT規則改為 MASQUERADE 即可

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

DNAT策略的典型應用環境

在 Internet 中釋出位於企業區域網內的伺服器

DNAT 策略的原理

目標地址轉換,Destination Network Address Translation

修改資料包的目標地址

前提條件

區域網的Web伺服器能夠訪問Internet

閘道器的外網IP地址有正確的DNS解析記錄

Linux閘道器支援IP路由轉發

實現方法,編寫 DNAT 轉換規則

# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

釋出時修改目標埠

在 DNAT 規則中以“IP:Port”的形式指定目標地址

# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22

匯出(備份)規則:iptables-save 工具

可結合重定向輸出儲存到指定檔案

匯入(還原)規則:iptables-restore 工具

可結合重定向輸入指定規則來源

Iptables 服務

指令碼位置:/etc/init.d/iptables

規則檔案位置:/etc/sysconfig/iptables

centos7要想使用iptables

rpm -e --nodeps firewalld

yum -y install iptables-services

systemctl start iptables

systemctl enable iptables

相關文章