1. 程式人生 > >firewalld 防火墻

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 防火墻