---------- 20190101 firewall-cmd防火牆.txt 查看開啟了哪些服務和端口: firewall-cmd --list-all 查看預先定義的服務名稱 firewall-cmd --get-services 選項--permanent 若沒有(選項--permanent), 則只是暫時設定,重新開機後這個設定就不見了,通常在比較重要的伺服器上,我們都會先使用暫時的設定先進行測試,若測試沒問題,再將設定寫入設定檔,永久保存 查詢所有的區域 firewall-cmd --list-all-zones # 查詢指定的區域與內容 sudo firewall-cmd --zone=public --list-all # 查詢預設區域 firewall-cmd --get-default-zone # 設定預設區域 firewall-cmd --set-default-zone=home # 查詢運作中的區域與介面 firewall-cmd --get-active-zones # 查詢網路介面所屬區域 firewall-cmd --get-zone-of-interface=enp7s0d1 # 將 enp7s0d1 網路介面設定至 home 區域 sudo firewall-cmd --zone=home --change-interface=enp7s0d1 列出所有rich-rules # firewall-cmd --zone=public --list-rich-rules 開啟FTP sudo firewall-cmd --permanent --zone=public --add-service=ftp sudo firewall-cmd --reload 如果有啟用被動模式的話,再加上指派給它的通訊埠範圍。 sudo firewall-cmd --zone=public --add-port=60101-61200/tcp sudo firewall-cmd --reload 開啟防火牆通道 # firewall-cmd --permanent --zone=public --add-service samba # 開啟防火牆 (MySQL 3306 埠號, MySQL), (SSH port 22改為22222) # firewall-cmd --permanent --add-port=3306/tcp # firewall-cmd --permanent --zone=public --add-service=mysql # firewall-cmd --permanent --add-port=22222/tcp # firewall-cmd --permanent --zone=public --add-service=ftp # firewall-cmd --add-port=5901/tcp # firewall-cmd --add-port=5901/tcp --permanent # firewall-cmd --zone=public --add-port=10837/tcp --permanent # firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="220.128.199.127/24" port port="28001" protocol="tcp" accept' # firewall-cmd --zone=public --permanent --add-rich-rule 'rule family="ipv4" source address="220.128.199.127/24" service name="mysql" accept' 僅40.0網段可以讀取 28001埠 # firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="163.17.40.0/24" port port="28001" protocol="tcp" accept' 僅192.168.0.0網段的能透過53/udp存取 DNS # firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port port="53" protocol="udp" accept' --permanen # 開啟 port 53 tcp 跟 udp 存取 DNS # firewall-cmd --zone=public --add-port=53/tcp --permanent # firewall-cmd --zone=public --add-port=53/udp --permanent # 開啟 udp 的 4990 至 4999 連接埠 # sudo firewall-cmd --zone=public --add-port=4990-4999/udp # 永久開啟 udp 的 4990 至 4999 連接埠 # sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp 只允許特定來源 IP 位址使用服務 # 允許 192.168.0.0/24 使用 http 服務 firewall-cmd --zone=public \ --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' # 永久允許 192.168.0.0/24 使用 http 服務. 即192.168.0.0/Mask = 255.255.255.0 firewall-cmd --zone=public \ --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' \ --permanent 白名單 IP 位址 若要將特定的 IP 位址設定為白名單,讓它可以連接任何的連接埠,可以這樣做: # 將 192.168.0.123 列為 public 區域的白名單 firewall-cmd --zone=public \ --add-rich-rule='rule family="ipv4" source address="192.169.0.123" accept' # 永久將 192.168.0.123 列為 public 區域的白名單 firewall-cmd --zone=public \ --add-rich-rule='rule family="ipv4" source address="192.169.0.123" accept' \ --permanent 移除防火牆通道 # firewall-cmd --remove-port=21/tcp # firewall-cmd --remove-port=3306/tcp --permanent # firewall-cmd --permanent --zone=public --remove-service=ftp # firewall-cmd --permanent --remove-rich-rule 'rule family="ipv4" source address="220.128.199.127/24" service name="mysql" accept' # firewall-cmd --permanent --remove-rich-rule 'rule family="ipv4" source address="10.4.220.143/32" port protocol="tcp" port="13782" accept' 重新載入防火牆, 變更後要重新載入, 才會看到變更後的結果 firewall-cmd --reload 重新啟動防火牆 systemctl restart firewalld.service 修改 Firewalld 防火牆規則,把允許 SSH Port 22 通行的規則改為 Port 22222。