firewalld 防火墻
firewall
firewall引進了區域的概念,區域即一個功能獨立的模塊
【九大區域】
public:默認開機區域,公共區域 只有設置為允許的通信可以通過
trusted:信任區域 允許所有通信通過
drop:丟棄區域 拒絕所有通信
block:類似於drop 拒絕所有外部通信,允許內部通信
external:nat區域 開啟nat代理和端口映射
dmz:非軍事區 允許外部訪問的服務器
work:工作區域
home:家庭區域
internal:內部區域
工作機制:審核網卡所在的區域
實驗拓撲圖:客戶端A:202.0.0.1 ------ Re0:202.0.0.2;Re1:192.168.10.1 ------- B:192.168.10.2
實驗:
1、安裝軟件包:
firewalld、firewall-config、system-config-firewall-base
2、重啟服務
7.0版,將firewall啟動,默認iptables是關閉的
systemctl restart firewall
systemctl enable firewall
firewall規則:
【查看】
firewall-cmd --state 查詢firewall的狀態=systemctl status firewall
firewall-cmd --get-default-zone 查看默認區域
firewall-cmd --list-all 查看默認區域的所有規則
firewall-cmd --get-zones 查看所有區域
firewall-cmd --get-services 查看所有支持的服務
firewall-cmd --get-zone-of-interface = eno16777736 查看接口所在的區域
firewall-cmd --zone = trusted --list-all 通過查看區域的規則查看網卡所在的位置
firewall-cmd --list-all-zones 查看所有區域的規則
【修改】
firewall-cmd --set-default-zone = trusted 修改默認區域
firewall-cmd --add-service = http 在當前默認區域中添加服務
firewall-cmd --zone = trusted --add-interface = eno16777736 將某個網卡添加到某個區域中,添加之前該網卡處於無區域的狀態
firewall-cmd --zone = trusted --change-interface = eno16777736 改變某個接口所在的區域
firewall-cmd --add-port = 80/tcp 指定端口和協議,必須寫清是tcp,還是udp
【移除】
firewall-cmd --remove-service = http 在當前區域中移除http
firewall-cmd --zone = trusted --remove-interface = eno16777736 從某個區域中移除網卡,該網卡的狀態將變為無區域
< NAT網絡地址轉換(內訪外)>
第一種方式:將默認區域修改到external
firewall-cmd --set-default-zone = external
第二種方式:
因為外網卡代替內網上網,所有將網卡加入到external區域中
firewall-cmd --zone = external --change-interface = eno16777736
驗證:
telnet (B ---> A)
netstat -n 查詢通信端口
(外訪內)
< 端口映射 >
firewall-cmd --zone = external --add-masquerade 開啟端口映射功能
firewall-cmd --zone = external --add-forward-port =(port = 2300):proto = tcp:toport = 23
(: toaddr = 192.168.10.2)
port:在外網卡開啟的映射口
proto:指定協議
toproto:內網進行映射的端口
toaddr:指定內網服務器IP地址
若防火墻出問題
1、修改默認區域drop
2、緊急機制開啟,拒絕所有外來通信
firewall-cmd --panic-on 開啟緊急機制
firewall-cmd --query-panic 查看當前緊急機制的狀態
以上所有設置重啟服務將全部失效
永久生效,修改配置文件
firewall-cmd --permanent(永久的) --add-service = http
該規則幫助我們修改配置文件,使其永久生效
重啟服務生效
systemctl restart firewalld
3、firewall中可以對服務端口和協議進行保護,也可以對通信服務進行保護,對服務設置的保護實質上還是設置的端口保護
服務的配置文件:記錄了服務的相關信息,使其協議和端口與服務名相對應
/usr/lib/firewalld/services
例:cd /usr/lib/firewalld/services
ls
發現裏面的文件格式都是xxx.xml
例:cat http.xml
<port protocol = "tcp" port = "80">
所以雖然添加的是服務,但還是端口保護。
mysql的端口:3306
Oracle的端口:1521
自定義服務的配置文件
#cd /usr/lib/firewalld/services
#ls
#cp http.xml qq.xml
<description> </description>
<port protocol = "tcp" port "8000">9
保存退出
重啟服務進行加載
systemctl restart firewalld
systemctl status firewalld
7.0後默認開啟firewall,iptables自動關閉,但是firewall的底層還是iptables
所有的保護還是要依靠iptables的三個鏈進行保護
iptables -L
firewall裏針對本機的服務的保護,生效給iptables的INPUT鏈
路由器為轉發功能,為了保護子網,將規則生效給iptables的forward鏈
firewalld 防火墻