CentOS7 防火牆配置firewall-cmd

firewalld(Dynamic Firewall Manager of Linux systems,Linux系統的動態防火牆管理器)服務是默認的防火牆配置管理工具。mysql

firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好處有兩個:支持動態更新,不用重啓服務;第二個就是加入了防火牆的「zone」概念。sql

firewalld自身並不具有防火牆的功能,而是和iptables同樣須要經過內核的netfilter來實現,也就是說firewalld和 iptables同樣,他們的做用都是用於維護規則,而真正使用規則幹活的是內核的netfilter。centos

一、firewall-cmd 主要參數網絡

--get-default-zone 查詢默認的區域名稱 --set-default-zone=<區域名稱> 設置默認的區域,使其永久生效 --get-zones 顯示可用的區域 --get-services 顯示預先定義的服務 --get-active-zones 顯示當前正在使用的區域與網卡名稱 --add-source= 將源自此 IP 或子網的流量導向指定的區域 --remove-source= 再也不將源自此 IP 或子網的流量導向某個指定區域 --add-interface=<網卡名稱> 將源自該網卡的全部流量都導向某個指定區域 --change-interface=<網卡名稱> 將某個網卡與區域進行關聯 --list-all 顯示當前區域的網卡配置參數、資源、端口以及服務等信息 --list-all-zones 顯示全部區域的網卡配置參數、資源、端口以及服務等信息 --add-service=<服務名> 設置默認區域容許該服務的流量 --add-port=<端口號/協議> 設置默認區域容許該端口的流量 --remove-service=<服務名> 設置默認區域再也不容許該服務的流量 --remove-port=<端口號/協議> 設置默認區域再也不容許該端口的流量 --reload 讓「永久生效」的配置規則當即生效,並覆蓋當前的配置規則 --panic-on 開啓應急情況模式 --panic-off  關閉應急情況模式

二、經常使用備忘ssh

# 查看設置: firewall-cmd --state # 顯示狀態 firewall-cmd --get-active-zones # 查看區域信息 firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所屬區域 firewall-cmd --panic-on # 拒絕全部包 firewall-cmd --panic-off # 取消拒絕狀態 firewall-cmd --query-panic # 查看是否拒絕 firewall-cmd --reload # 更新防火牆規則 firewall-cmd --complete-reload # 二者的區別就是第一個無需斷開鏈接,就是firewalld特性之一動態添加規則,第二個須要斷開鏈接,相似重啓服務 # 將接口添加到區域,默認接口都在public firewall-cmd --zone=public --add-interface=eth0 # 永久生效再加上 --permanent 而後reload防火牆 # 設置默認接口區域,當即生效無需重啓 firewall-cmd --set-default-zone=public # 查看全部打開的端口: firewall-cmd --zone=dmz --list-ports # 加入一個端口到區域: firewall-cmd --zone=dmz --add-port=8080/tcp # 若要永久生效方法同上 # 打開一個服務,相似於將端口可視化,服務須要在配置文件中添加,/etc/firewalld 目錄下有services文件夾,這個不詳細說了,詳情參考文檔 firewall-cmd --zone=work --add-service=smtp # 移除服務 firewall-cmd --zone=work --remove-service=smtp # 顯示支持的區域列表 firewall-cmd --get-zones # 設置爲家庭區域 firewall-cmd --set-default-zone=home # 查看當前區域 firewall-cmd --get-active-zones # 設置當前區域的接口 firewall-cmd --get-zone-of-interface=enp03s # 顯示全部公共區域(public) firewall-cmd --zone=public --list-all # 臨時修改網絡接口(enp0s3)爲內部區域(internal) firewall-cmd --zone=internal --change-interface=enp03s # 永久修改網絡接口enp03s爲內部區域(internal) firewall-cmd --permanent --zone=internal --change-interface=enp03s 服務管理 # 顯示服務列表 Amanda, FTP, Samba和TFTP等最重要的服務已經被FirewallD提供相應的服務,可使用以下命令查看: firewall-cmd --get-services # 容許SSH服務經過 firewall-cmd --enable service=ssh # 禁止SSH服務經過 firewall-cmd --disable service=ssh # 打開TCP的8080端口 firewall-cmd --enable ports=8080/tcp # 臨時容許Samba服務經過600秒 firewall-cmd --enable service=samba --timeout=600 # 顯示當前服務 firewall-cmd --list-services # 添加HTTP服務到內部區域(internal) firewall-cmd --permanent --zone=internal --add-service=http firewall-cmd --reload # 在不改變狀態的條件下從新加載防火牆 端口管理 # 打開443/TCP端口 firewall-cmd --add-port=443/tcp # 永久打開3690/TCP端口 firewall-cmd --permanent --add-port=3690/tcp # 永久打開端口須要reload一下,reload後臨時打開的端口就失效了 firewall-cmd --reload # 查看防火牆,添加的端口也能夠看到 firewall-cmd --list-all 直接模式 # FirewallD包括一種直接模式,使用它能夠完成一些工做,例如打開TCP協議的9999端口 firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT firewall-cmd --reload 控制端口 / 服務 能夠經過兩種方式控制端口的開放,一種是指定端口號另外一種是指定服務名。雖然開放 http 服務就是開放了 80 端口,可是仍是不能經過端口號來關閉,
也就是說經過指定服務名開放的就要經過指定服務名關閉;經過指定端口號開放的就要經過指定端口號關閉。 firewall
-cmd --add-service=mysql # 開放mysql端口 firewall-cmd --remove-service=http # 阻止http端口 firewall-cmd --list-services # 查看開放的服務 firewall-cmd --add-port=3306/tcp # 開放經過tcp訪問3306 firewall-cmd --remove-port=80tcp # 阻止經過tcp訪問3306 firewall-cmd --add-port=233/udp # 開放經過udp訪問233 firewall-cmd --list-ports # 查看開放的端口 假裝 IP firewall-cmd --query-masquerade # 檢查是否容許假裝IP firewall-cmd --add-masquerade # 容許防火牆假裝IP firewall-cmd --remove-masquerade# 禁止防火牆假裝IP 端口轉發 端口轉發能夠將指定地址訪問指定的端口時,將流量轉發至指定地址的指定端口。
轉發的目的若是不指定 ip 的話就默認爲本機,若是指定了 ip 卻沒指定端口,則默認使用來源端口。
若是配置好端口轉發以後不能用,能夠檢查下面兩個問題: 好比我將
80 端口轉發至 8080 端口,首先檢查本地的 80 端口和目標的 8080 端口是否開放監聽了 其次檢查是否容許假裝 IP,沒容許的話要開啓假裝 IP firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 將80端口的流量轉發至8080 firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 將80端口的流量轉發至192.168.0.1 firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 將80端口的流量轉發至192.168.0.1的8080端口 當咱們想把某個端口隱藏起來的時候,就能夠在防火牆上阻止那個端口訪問,而後再開一個不規則的端口,以後配置防火牆的端口轉發,將流量轉發過去。 端口轉發還能夠作流量分發,一個防火牆拖着好多臺運行着不一樣服務的機器,而後用防火牆將不一樣端口的流量轉發至不一樣機器。
相關文章
相關標籤/搜索