Linux命令:firewall-cmd防火牆設置

最近更新時間 2019-12-31 21:44:10

firewall-cmdfirewalld的管理工具,提供動態管理的防火牆,支持"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

 firewalldiptables比較有如下優勢:

  1. firewalld支持動態修改單條規則,而iptables修改規則後需要刷新才生效。
  2. 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

 

rss_feed