來自:入門小站
防火墻基本概念
防火墻就是根據(jù)系統(tǒng)管理員設定的規(guī)則來控制數(shù)據(jù)包的進出,主要是保護內網(wǎng)的安全,目前 Linux 系統(tǒng)的防火墻類型主要有兩種:分別是 [iptables] 和 firewalld
Iptables-靜態(tài)防火墻
早期的 Linux 系統(tǒng)中默認使用的是 iptables 防火墻,配置文件在 / etc/sysconfig/iptables
主要工作在[網(wǎng)絡層]
使用鏈式規(guī)則,只可以過濾互聯(lián)網(wǎng)的數(shù)據(jù)包,無法過濾從內網(wǎng)到內網(wǎng)的數(shù)據(jù)包 Iptables 只可以通過命令行進行配置 Iptables 默認是允許所有,需要通過拒絕去做限制 Iptables 在修改了規(guī)則之后必須得全部刷新才可以生效,還會丟失連接(無法守護進程)
Firewalld-動態(tài)防火墻
取代了之前的 iptables 防火墻,配置文件在 / usr/lib/firewalld 和 / etc/fiewalld 中,主要工作在網(wǎng)絡層,新增區(qū)域概念,不僅可以過濾互聯(lián)網(wǎng)的數(shù)據(jù)包,也可以過濾內網(wǎng)的數(shù)據(jù)包,Firewalld 不僅可以通過命令行進行配置,也可以通過圖形化界面配置,Firewalld 默認是拒絕所有,需要通過允許去放行,Firewalld 可以動態(tài)修改單條規(guī)則,動態(tài)管理規(guī)則集(允許更新規(guī)則而不破環(huán)現(xiàn)有會話和連接,可以守護進程)
注意事項
iptables 和 firewaldl 都只是 linux 防火墻的管理程序,真正的防火墻執(zhí)行者是位于內核的 netfilter,只不過 firwalld 和 iptables 的結果以及使用方法不一樣 在配置防火墻時,不建議兩種配置方法結合使用(建議只使用其中的一種)
Iptables 講解
Iptables 配置防火墻依靠四個部分實現(xiàn):表、規(guī)則鏈、規(guī)則(匹配條件)、控制類型組成
Iptables 表
處理優(yōu)先級由高到低,表與表之間都是獨立的
raw表
是否對某個數(shù)據(jù)包進行狀態(tài)追蹤(包含 OUTPUT、PREAUTING 兩個規(guī)則鏈)
mangle表
修改數(shù)據(jù)包內容;可以做流量整形、對數(shù)據(jù)包設置標記(包含所有規(guī)則鏈)
nat表
負責地址轉換功能;修改數(shù)據(jù)包中的源目 IP 地址或端口(包含 IN、OU、PR、PO 三個規(guī)則鏈)
filter表
負責過濾數(shù)據(jù)包;對數(shù)據(jù)包時允許放行還是不允許放行(包含 IN、OU、FO 三個規(guī)則鏈) Iptables 規(guī)則鏈
什么是規(guī)則鏈
很多個規(guī)則組成一個規(guī)則鏈,數(shù)據(jù)包從上往下做匹配,匹配成功就結束匹配,并執(zhí)行相應的控制類型(建議需要將精準的策略放在上面)
規(guī)則鏈類型
INPUT?????????處理入站的數(shù)據(jù)包(處理目標是本機的數(shù)據(jù)包) OUTPUT????????處理出站的數(shù)據(jù)包(處理源是本機的數(shù)據(jù)包,一般不在此鏈上做規(guī)則) PREROUTING??????在進行路由選擇前處理數(shù)據(jù)包(一般用來做 NAT Server) POSTROUTING?????在進行路由選擇后處理數(shù)據(jù)包(一般用來做源 NAT) FORWARD?????????處理轉發(fā)的數(shù)據(jù)包(處理經(jīng)過本機的數(shù)據(jù)包)
Iptables 控制類型
ACCEPT????????????? 允許數(shù)據(jù)包通過 DROP?????????????????? 丟棄數(shù)據(jù)包(不給對方回應,一般工作時用這個) REJCET????????????? 拒絕數(shù)據(jù)包通過(會給對方回應,對方知道自己被拒絕) SNAT????????????? 修改數(shù)據(jù)包的源地址 DNAT????????????? 修改數(shù)據(jù)包的目的地址 MASQUERADE????? 偽裝程一個非固定的公網(wǎng) IP 地址 LOG????????????? 在 / var/log/messages 文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則
數(shù)據(jù)包到達防火墻根據(jù)下圖進行匹配
iptables 進行數(shù)據(jù)處理關心的是四表五鏈以及流量的進出
Iptables 命令配置 配置 iptables 防火墻時需要將防火墻服務開啟
systemctl start firewalld?? 開啟防火墻 systemctl status firewalld? 查看防火墻狀態(tài)
Iptables命令查看防火墻
iptables -nL -t nat ?查看 nat 表的規(guī)則鏈 -n 使用數(shù)字形式顯示輸出結果(如:通過 IP 地址) -L 查看當前防火墻有哪些策略 -t 指定查看 iptables 的哪個表(默認是 filter 表)
Iptables命令配置防火墻
?
?
>?iptables?-P?INPUT?DROP將?INPUT?規(guī)則鏈的默認流量更改為拒絕 >?-P?設置?/?修改默認策略 >?iptables?-t?filter?-I?INPUT?-s?192.168.10.0/24?-j?ACCEPT在?filter?表下的?INPUT?規(guī)則鏈中配置規(guī)則 >?-I?num?插入規(guī)則(大寫?i,默認在鏈的開頭加入規(guī)則,可以指定序號) >?-i??從這塊網(wǎng)卡流入的數(shù)據(jù) >?-o?從這塊網(wǎng)卡流出的數(shù)據(jù) >?-s ?源地址(加!表示取反) >?-d?目的地址 >?-j??限制動作 >?iptables?-A?INPUT?-p?tcp?--dport?1000:1024?-j?REJECT拒絕?tcp?端口號為?1000~1024?的數(shù)據(jù)包 >?-A?在鏈的末尾加入規(guī)則 >?-p?指定協(xié)議類型 >?--sport?源端口 >?--dport?目的端口 >?iptables?-D?INPUT?1刪除?INPUT?規(guī)則鏈的第一條規(guī)則 >?-D?num?刪除規(guī)則鏈 >?-R?修改規(guī)則 >?iptables?-F清空已有的策略 >?iptables-save來保存防火墻策略 注意事項
?
?
當創(chuàng)建的規(guī)則內容與已有規(guī)則一致時,不會覆蓋原先的規(guī)則,會直接加入到現(xiàn)有規(guī)則鏈中(即此時此規(guī)則鏈下有兩條一摸一樣的規(guī)則,只是順序不同) 以上關于防火墻的配置是 runtime 模式,即配置成功后立即生效,但是重啟后會失效(需要將配置保存,重啟后才不會失效)
firewalld 講解
frewalld 是服務名稱,firewall-cmd 和 firewall-config 是配置工具名稱
firewall-cmd? 基于命令行配置 firewall-config 基于圖形化界面配置(這兩個配置方式實時同步) Firewalld 區(qū)域概念 默認所有網(wǎng)卡都是 public 區(qū)域,可以根據(jù)需要將網(wǎng)卡設置為不同的區(qū)域
?
?
>?Trust信任區(qū)域 >?允許所有流量(所有的網(wǎng)絡連接都可以接受) >?Public公共區(qū)域 >?僅接受?ssh、dhcpv6-client?服務連接(默認區(qū)域) >?External外部區(qū)域 >?僅接收?ssh?服務連接(默認通過此區(qū)域轉發(fā)的?IPv4?流量將會進行地址偽裝) >?Home家庭區(qū)域 >?僅接受?ssh、msdns、ipp-client、samba-client、dhcpv6-client?服務網(wǎng)絡連接 >?Internal內部區(qū)域 >?同?home?區(qū)域 >?Work工作區(qū)域 >?僅接受?ssh、ipp-client、dhcpv6-client?服務連接 >?Dmz隔離區(qū)域(非軍事區(qū)域) >?僅接收?ssh?服務連接 >?Block限制區(qū)域 >?拒絕所有傳入流量(有回應) >?Drop丟棄區(qū)域 >?丟棄所有傳入流量(無回應) 數(shù)據(jù)包到達防火墻匹配規(guī)則firewall 進行數(shù)據(jù)處理只關心區(qū)域
?
?
1.根據(jù)數(shù)據(jù)包的源 IP 地址匹配,根據(jù)源地址綁定區(qū)域的區(qū)域規(guī)則進行匹配(如果沒有綁定區(qū)域則匹配默認區(qū)域的規(guī)則)
2.根據(jù)傳入的網(wǎng)絡接口匹配,進入此接口綁定區(qū)域的區(qū)域規(guī)則進行匹配(如果沒有綁定區(qū)域則匹配默認區(qū)域的規(guī)則)綁定源地址的區(qū)域規(guī)則>網(wǎng)卡綁定的區(qū)域規(guī)則>默認區(qū)域的規(guī)則
Firewalld 兩種配置方法 臨時配置(runtime 當前生效表)
立即生效,重啟后失效,不中斷現(xiàn)有連接,無法修改服務配置永久配置(permanent 永久生效表)
不立即生效,重啟后生效,或者立即同步后生效 會終端現(xiàn)有連接 可以修改服務配置
firewall-cmd 命令行基礎配置 如何實現(xiàn)永久配置
--permanent表示此配置加入到永久生效(默認臨時生效) 或者在配置結束后執(zhí)行此命令 firewall-cmd --runtime-to-permanent 將臨時更改為永久 永久配置完成后需要立即同步 firewall-cmd --reload立即同步永久配置
查看默認區(qū)域并進行更改
?
?
>?firewall-cmd?--get-zones???????????????查詢可用的區(qū)域 >?firewall-cmd?--get-default-zone??????????查詢默認區(qū)域的名稱 >?firewall-cmd?--get-active-zone???????????顯示當前正在使用的區(qū)域與網(wǎng)卡名稱 >?firewall-cmd?--set-default-zone=trusted????設置默認區(qū)域為?trusted?區(qū)域
?
?
將網(wǎng)卡 / 子網(wǎng)與區(qū)域綁定(允許 / 拒絕此子網(wǎng)通過)
?
?
>?firewall-cmd?--zone=drop?--add-source=192.168.20.0/24將此子網(wǎng)與?drop?區(qū)域綁定(拒絕從此子網(wǎng)發(fā)來的流量) >?firewall-cmd?--zone=trusted--add-interface=ens160??將此網(wǎng)卡與?trusted?區(qū)域綁定(允許從此網(wǎng)卡發(fā)來的流量) >?--remove-source??刪除子網(wǎng)與區(qū)域的綁定 >?--change-source??更改子網(wǎng)與區(qū)域的綁定
配置區(qū)域允許 / 拒絕的協(xié)議 / 端口號
>?firewall-cmd?--list-all顯示當前區(qū)域的端口號、網(wǎng)卡、服務等信息 >?--list-all-zones????????顯示所有區(qū)域的 >?firewall-cmd?--get-services?????????????????????列舉出來當前所有被允許的協(xié)議 >?firewall-cmd?--zone=public?--add-service?http????配置?public?區(qū)域允許通過?http?協(xié)議 >?--remove-service?ssh????拒絕通過?ssh?協(xié)議 >?--add-port=123/tcp?????允許通過?tcp?的?123?端口 >?--remove-port=123/tcp??拒絕通過?tcp?的?123?端口 >?cat?/etc/services?????保存的協(xié)議類型和端口號
配置協(xié)議端口轉換(端口映射)
>?firewall-cmd?--permanent?--zone=public?--add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.1 >?將?192.168.10.1?主機的?tcp?22?端口號轉為?888?端口號(public?區(qū)域接收?ssh) >?--remove-forward-port?刪除此端口映射
?
?
其它配置
?
?
>?--panic-on??緊急模式,切斷一切的網(wǎng)絡連接(特殊情況去使用) >?--panic-off?恢復一切的網(wǎng)絡連接 配置富規(guī)則 rich(更復雜、更詳細的防火墻策略配置)
?
?
優(yōu)先級最高(高于默認規(guī)則,兩個并不沖突) 能夠根據(jù)源目地址、端口號來限制用戶
?
?
>?firewall-cmd??--zone=public?--list-rich-rule??顯示?public?區(qū)域已經(jīng)配置的富規(guī)則 >?firewall-cmd?--permanent?--zone=public?--add-rich-rule="rule?family="ipv4"source?address="192.168.100.1/24"service?允許來自?192.168. 100.1 的主機訪問 22 端口
>?--add-rich-rule?????????添加一個富規(guī)則 >?--remove-ruch-rule?????刪除一個富規(guī)則 >?reject??????????????????拒絕訪問
firewall-config 圖形化配置安裝 firewall-config
?
?
配置 Yum 源(軟件倉庫) 安裝軟件 dnf install firewall-config
系統(tǒng)界面講解
1:選擇運行時(Runtime)或永久(Permanent)模式的配置
2:選擇區(qū)域
3:當前正在使用的區(qū)域(黑色加粗)
4:管理當前被選中區(qū)域中的服務
5:管理當前被選中區(qū)域中的端口
6:設置允許被訪問的協(xié)議
7:設置允許被訪問的端口
8:開啟或關閉 SNAT(源網(wǎng)絡地址轉換)技術
9:設置端口轉發(fā)策略
10:控制請求 icmp 服務的流量
11:被選中區(qū)域的服務,若勾選了相應服務前面的復選框,則表示允許與之相關的流量
12:管理防火墻的富規(guī)則
13:網(wǎng)卡信息(網(wǎng)卡與區(qū)域綁定信息)
14:子網(wǎng)信息(子網(wǎng)與區(qū)域綁定信息)
15:查看常用的服務協(xié)議列表
16:主機地址的黑白名單
審核編輯:湯梓紅
評論
查看更多