Linux命令:firewall-cmd防火牆設置
最近更新時間 2019-12-31 21:44:10
firewall-cmd是firewalld的管理工具,提供動態管理的防火牆,支持"zone"來定義網絡連接或接口的信任級別。支持IPv4和IPv6網絡,將運行時和永久配置分開,支持服務或應用程序直接添加防火牆規則。
firewalld使用Python語言編寫。
下列Linux系統的發行版本支持firewalld
- CentOS 7 and newer
- Fedora 18 and newer
- Red Hat Enterprise Linux 7 and newer
- OpenSUSE Leap 15 and newer
- SUSE Linux Enterprise 15 and newer
firewalld跟iptables比較有如下優勢:
- firewalld支持動態修改單條規則,而iptables修改規則後需要刷新才生效。
- firewalld對使用者更友好,易於學習。
語法格式
firewalld-cmd [參數]
常用選項
-V
顯示版本信息。--state
顯示firewalld的狀態。-reload
不中斷服務的重新加載。--complete-reload
中斷所有連接的重新加載。--runtime-to-permanent
將當前防火牆的規則永久保存。--check-config
檢查配置是否正確。--get-log-denied
獲取記錄被拒絕的日誌。--set-log-denied=<value>
設置記錄被拒絕的日誌,只能為 'all','unicast','broadcast','multicast','off'。
常用命令
啟動關閉防火牆
#啟動防火牆
systemctl start firewalld
#設置開機啟動
systemctl enable firewalld
#關閉防火牆
systemctl stop firewalld
#取消開機啟動
systemctl disable firewalld
#查看狀態
systemctl status firewalld
#● firewalld.service - firewalld - dynamic firewall daemon
# Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor >
# Active: inactive (dead)
# Docs: man:firewalld(1)
#查看狀態
firewall-cmd --state
#not running
配置firewalld
#查看區域信息
firewall-cmd --get-active-zones
#public
# interfaces: ens33
#查看指定接口所屬區域
firewall-cmd --get-zone-of-interface=ens33
#拒絕所有包
firewall-cmd --panic-on
#取消拒絕狀態
firewall-cmd --panic-off
#查看是否拒絕
firewall-cmd --query-panic
#更新防火牆規則
firewall-cmd --reload
#兩者的區別就是第一個無需斷開連接,就是firewalld特性之一動態添加規則,第二個需要斷開連接,類似重啟服務
firewall-cmd --complete-reload
# 將接口添加到區域,默認接口都在public
firewall-cmd --zone=public --add-interface=eth0
#永久生效加上 --permanent 然後reload防火牆
#設置默認接口區域,立即生效無需重啟
firewall-cmd --set-default-zone=public
#查看所有打開的端口:
firewall-cmd --zone=dmz --list-ports
#顯示支持的區域列表
firewall-cmd --get-zones
# 查看當前區域
firewall-cmd --get-active-zones
#顯示所有公共區域(public)
firewall-cmd --zone=public --list-all
管理端口和服務
#打開80/TCP端口
firewall-cmd --add-port=80/tcp
#永久打開443/TCP端口,永久打開需要reload
firewall-cmd --permanent --add-port=443/tcp
#永久刪除8080端口,禁止外網訪問
firewall-cmd --permanent --remove-port=8080/tcp
#查詢端口是否開啟
firewall-cmd --permanent --query-port=8080/tcp
firewall-cmd --query-port=8080/tcp
#添加 SMTP 服務
firewall-cmd --zone=work --add-service=smtp
#移除 SMTP 服務
firewall-cmd --zone=work --remove-service=smtp
# 臨時允許Samba服務通過600秒
firewall-cmd --enable service=samba --timeout=600
#查看開放的服務
firewall-cmd --list-services
#開放mysql端口
firewall-cmd --add-service=mysql
端口轉發
#打開端口轉發
firewall-cmd --zone=external --add-masquerade
#將80端口的流量轉發至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
#將80端口的流量轉發至192.168.1.107
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.107
#將80端口的流量轉發至192.168.1.107的8080端口
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.107:toport=8080