目錄
一.Firewalld概述
二.Firewalld和iptables的關系
1.firewalld和iptables的聯系
2.firewalld和iptables的區別
三.Firewalld區域
1.概念
2.九個區域
3.區域介紹
4.Firewalld數據處理流程
四.Firewalld-cmd命令行操作
1.查看
2.增加
3.刪除
4.修改
五.Firewalld防火墻的配置方法
1.運行時配置
2.永久配置
六.編寫/etc/firewalld/中的配置文件
補充:DNAT和SNAT也可以通過firewall-cmd設置
1.設置SNAT
2.設置DNAT
一.Firewalld概述
- firewalld防火墻是Centos7系統默認的防火墻管理工具,取代了之前的iptables防火墻,也是工作在網絡層,屬于包過濾防火墻
- firewalld和iptables都是用來管理防火墻的工具(屬于用戶態)來定義防火墻的各種規則功能,內部結構都指向netfilter網絡過濾子系統(屬于內核態)來實現包過濾防火墻功能
- firewalld提供了支持網絡區域所定義的網絡連接以及接口安全等級的動態防火墻管理工具。 它支持IPv4、IPv6防火墻設置以及以太網橋(在某些高級服務可能會用到,比如云計算), 并且擁有兩種配置模式:運行時配置與永久配置
?
二.Firewalld和iptables的關系
1.firewalld和iptables的聯系
netfilter
-
位于Linux內核中的包過濾功能體系
-
稱為Linux防火墻的“內核態”
-
CentOS7默認的管理防火墻規則的工具(Firewalld)
-
稱為Linux防火墻的“用戶態”
2.firewalld和iptables的區別
firewalld ? | iptables | |
配置文件 | ?/etc/firewalld/? ? ? ? (優先加載,保存用戶自定義的配置) ?/usr/lib/firewalld/? ? (默認的初始配置) | /etc/sysconfig/iptables ? |
對規則的修改 | 不需要全部刷新策略,不中斷現有連接? | 立即生效,可能中斷現有連接 ? |
防火墻類型 | 動態防火墻? ? ? ? ? ? (在不同區域設置不同規則,可通過更換區域來更改防護策略) | 靜態防火墻? ? ? ? ? ? (所有規則都是配置在表的鏈里,只能通過修改規則來更改防護策略) |
三.Firewalld區域
1.概念
- firewalld防火墻為了簡化管理,將所有網絡流量分為多個區域(zone)
- 然后根據數據包的源IP地址或傳入的網絡接口等條件將流量傳入相應區域
- 每個區域都定義了自己打開或者關閉的端口和服務列表
?
2.九個區域
trusted(信任區域) | 允許所有的傳入流量 |
public(公共區域) | 允許與ssh或dhcpv6-client預定義服務匹配的傳入流量,其余均拒絕。是新添加網絡接口的默認區域 |
external(外部區域) | 允許與ssh預定義服務匹配的傳入流量其余均拒絕 |
home(家庭區域) | 允許與ssh、mdns、samba-client或dhcpv6-client預定義服務匹配的傳入流量,其他均拒絕 |
internal(內部區域) | 默認值與home區域相同 |
work(工作區域) | 允許與ssh、dhcpv6-client預定義服務匹配的傳入流量,其他均拒絕 |
dmz(隔離區域也稱非軍事區域) | 允許與ssh預定義服務匹配的傳入流量,其他均拒絕 |
block(限制區域) | 拒絕所有傳入流量 |
drop(丟棄區域) | 丟棄所有傳入流量,并且不產生包含icmp的錯誤響應 |
3.區域介紹
- 最終一個區域的安全程度是取決于管理員在此區域中設置的規則
- 區域如同進入主機的安全門,每個區域都具有不同限制程度的規則,只會允許符合規則的流量傳入
- 可以根據網絡規模,使用一個或多個區域,但是任何一個 活躍區域 至少需要關聯 源地址或接口
- 默認情況下,public區域是默認區域,包含所有接口(網卡)
4.Firewalld數據處理流程
- 要激活某個區域,需要先將區域與 源地址或網卡接口 關聯綁定(一個區域可以關聯綁定多個源地址或網卡接口,一個源地址或網卡接口只能關聯綁定一個區域)
- 先檢查傳入數據包的源地址
- 若源地址與特定區域綁定,則直接使用該區域的規則過濾處理數據包
- 若源地址與任何一個區域沒有綁定,則使用與入站網卡綁定的特定區域的規則過濾處理數據包
- 若也沒有特定區域綁定網卡接口,則使用默認區域的規則過濾處理數據包
四.Firewalld-cmd命令行操作
1.查看
查看當前默認區域
firewall-cmd --get-default-zone
查看當前已激活的區域
firewall-cmd --get-active-zones
查看所有可用的區域
firewall-cmd --get-zones
查看指定區域的規則
firewall-cmd --list-all --zone=區域名
查看指定區域允許訪問的服務列表
firewall-cmd --list-services --zone=區域名
查看指定區域允許訪問的端口列表
firewall-cmd --list-ports --zone=區域名
查看與網卡綁定的區域
firewall-cmd --get-zone-of-interface=網卡名
查看所有icmp類型
firewall-cmd --get-icmptypes
2.增加
給指定區域添加綁定的網卡
firewall-cmd --add-interface=網卡名 --zone=區域名
給指定區域添加源地址
firewall-cmd --add-source=源地址 --zone=區域名
給指定區域添加允許訪問的服務
firewall-cmd --add-service=服務名 --zone=區域名
給指定區域添加允許訪問的服務列表
firewall-cmd --add-service={服務名1,服務名2,...} --zone=區域名
給指定區域添加允許訪問的端口
firewall-cmd --add-port=端口/協議 --zone=區域名
給指定區域添加允許訪問的連續的端口列表
firewall-cmd --add-port=端口1-端口2/協議 --zone=區域名
給指定區域添加允許訪問的不連續的端口
firewall-cmd --add-port={端口1,端口2,...}/協議 --zone=區域名
給指定區域添加拒絕訪問的icmp類型
firewall-cmd --add-icmp-block=icmp類型 --zone=區域名
3.刪除
根據服務名刪除
firewall-cmd --remove-service=服務名 --zone=區域名
?根據端口/協議刪除
firewall-cmd --remove-port=端口/協議 --zone=區域名
根據icmp類型刪除
firewall-cmd --remove-icmp-block=icmp類型 --zone=區域名
從指定區域里刪除綁定的網卡
firewall-cmd --remove-interface=網卡名 --zone=區域名
從指定區域里刪除綁定的源地址
firewall-cmd --remove-source=源地址 --zone=區域名
4.修改
修改當前默認區域
firewall-cmd --set-default-zone
修改/添加網卡 綁定給指定區域
firewall-cmd --change-interface=網卡名 --zone=區域名
修改/添加源地址 綁定給指定區域
firewall-cmd --change-source=源地址 --zone=區域名
五.Firewalld防火墻的配置方法
1.運行時配置
- 實時生效,并持續至Firewalld重新啟動或重新加載配置
- 不中斷現有連接
- 不能修改服務配置
firewall-cmd ....firewall-cmd --runtime-to-permanent 將之前的運行時配置都轉換成永久配置
2.永久配置
- 不立即生效,除非Firewalld重新啟動或重新加載配置
- 中斷現有連接
- 可以修改服務配置
firewall-cmd .... --permanentfirewall-cmd --reload 或 systemctl restart firewalld
六.編寫/etc/firewalld/中的配置文件
Firewalld會優先使用/etc/firewalld/中的配置,如果不存在配置文件,則使用/usr/lib/firewalld/中的配置
- /etc/firewalld/:用戶自定義配置文件,需要時可通過從/usr/lib/firewalld/ 中拷貝
- /usr/lib/firewalld/ :默認配置文件,不建議修改,若恢復至默認配置,可直接刪除/etc/firewalld/ 中的配置
補充:DNAT和SNAT也可以通過firewall-cmd設置
1.設置SNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.80.0/24 -j SNAT --to-source 12.0.0.1
2.設置DNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A PREROUTING -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11