centos7 firewalld日常使用


若生產中使用有docker,建議不要使用firewalld,改用iptables,用firewalld坑很多,暫時還未找到解決辦法,在此做下記錄:

說明:若加參數permanent為永久添加即添加至zone配置中,reload生效,重啟firewalld也會生效,若不加 --permanent,重啟后不再生效)

docker和firewalld共存時,使用命令添加開放端口規則,且加 --permanent參數

firewall-cmd --add-port=80/tcp  --permanent 添加規則后,80端口被外部正常訪問,

然后使用firewall-cmd --remove-port=80/tcp  --permanent 永久移除規則,按正常情況80端口將不能被外部網絡訪問,

但實際確依然能被外部訪問,而且此后防火牆像是被關閉了一樣,所有服務端口都能被外部訪問到。但查看配置中已經沒有開放80端口的

規則,firewalld也是runing狀態,此后重新開一台測試機,不安裝docker進行測試,firewalld不再出現以上問題。

 

1、啟動firewalld

systemctl start firewalld

systemctl enable firewalld #加入到開機啟動

2、查看狀態

systemctl status firewalld

firewall-cmd --state

3、關閉firewalld

systemctl stop firewalld

 

service說明:

在 /usr/lib/firewalld/services/ 目錄中,還保存了另外一類配置文件,每個文件對應一項具體的網絡服務,如 ssh 服務等.
與之對應的配置文件中記錄了各項服務所使用的 tcp/udp 端口,在最新版本的 firewalld 中默認已經定義了 70+ 種服務供我們使用.
當默認提供的服務不夠用或者需要自定義某項服務的端口時,我們需要將 service 配置文件放置在 /etc/firewalld/services/ 目錄中.
service 配置的好處顯而易見:
第一,通過服務名字來管理規則更加人性化,
第二,通過服務來組織端口分組的模式更加高效,如果一個服務使用了若干個網絡端口,則服務的配置文件就相當於提供了到這些端口的規則管理的批量操作快捷方式。

每加載一項 service 配置就意味着開放了對應的端口訪問

4、查看系統自帶默認有那些service可以進行配置

firewall-cmd --get-services

5、查看當前已經開放的service和port

firewall-cmd --list-services

firewall-cmd --zone=public --list-services  # 指定區域進行查看

firewall-cmd --list-ports

firewall-cmd --zone=public --list-ports  # 指定區域進行查看

6、查看所有已開放的service和port等

firewall-cmd --list-all  # 查看默認區域的

firewall-cmd --zone=public  --list-all  # 只查看指定pubilc區域的

firewall-cmd --list-all-zones  # 查看所有區域的

 

7、查詢單個服務的啟用狀態[返回值yes/no]

firewall-cmd --query-service http

 

8、動態添加一條防火牆規則至默認區域(public),比如開放服務或端口(此方法可以立即生效,但重啟firewalld服務或reload后將不再生效,因為沒有保存在配置文件中)

firewall-cmd --add-service=ftp

firewall-cmd --add-port=2326/tcp

firewall-cmd --zone=public --add-port=4990-4999/udp   #添加4990-4999 udp端口 ,並指定區域

9、動態添加規則后若想保存至zone配置中需要添加參數 --permanent(reload才生效)

firewall-cmd --add-service=ftp --permanent

firewall-cmd --add-port=12222/tcp --permanent

firewall-cmd --zone=public --add-port=4990-4999/udp  --permanent   #添加4990-4999 udp端口 ,並指定區域

 firewall-cmd --reload #配置生效

10、動態移除規則,但需要重載防火牆才可生效

firewall-cmd --remove-service=http #移除直接生效

 

 firewall-cmd --remove-port=2327/tcp --permanent #永久移除、刪除,需reload才生效

 firewall-cmd --reload

 

 

11、重載防火牆規則

通常手動修改zone配置進行規則添加后,需要進行重載生效,以 root 身份輸入以下命令,重新加載防火牆,並不中斷用戶連接,即不丟失狀態信息

 firewall-cmd --reload

注意:通常在防火牆出現嚴重問題時,這個命令才會被使用。比如,防火牆規則是正確的,但卻出現狀態信息問題和無法建立連接。

firewall-cmd --complete-reload

 

12、‘將同一台服務器上80端口的流量轉發至8080

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 

13、如果要將端口轉發到另外一台服務器上

  1)在需要的區域中激活 masquerade

firewall-cmd --zone=public --add-masquerade 

  2)添加轉發規則

例子中是將本地的80端口的流量轉發到IP地址為:10.0.10.15 的遠程服務器上的8080端口。

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.0.10.15 

14、防火牆偽裝IP

firewall-cmd --query-masquerade # 檢查是否允許偽裝IP

firewall-cmd --add-masquerade # 允許防火牆偽裝IP

firewall-cmd --remove-masquerade# 禁止防火牆偽裝IP

 

危險命令:[立即生效]

如果是遠程的機器執行上面的規則會立刻斷開網絡連接,必須緊記不能隨便執行。如果你只是虛擬機或者物理機器登陸就可以執行來調試。

拒絕所有包:firewall-cmd --panic-on
取消拒絕狀態: firewall-cmd --panic-off
查看是否拒絕: firewall-cmd --query-panic

 

***************************************************************************************************************

拒絕訪問操作:

#添加禁止響應ping

firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'  

#查看是否有此規則[等號后面跟詳細的名稱]

firewall-cmd --query-rich-rule='rule protocol value='icmp' drop' 

#刪除方法

firewall-cmd --remove-rich-rule='rule protocol value=icmp drop' 

#添加拒絕某個IP訪問ssh端口

 firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject" 

或直接丟棄

firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject" 

或對端口進行操作

 

firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.10.1 port port=22 protocol=tcp reject' 

說明:
rule :規則
family:ipv4  指定ipv4的地址
source address=10.0.10.1  要拒絕的IP,可以是IP或者是IP段
service name='ssh'指定的是ssh服務 
drop :就是此條規則的執行方法是丟棄
如果要放行直接修改后面的reject為accept即可。
 
#允許來自此IP允許通過防火牆

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" accept' 

#允許一個IP(10.0.10.1)僅能通過指定端口(8080-8090)訪問到目標(10.0.10.13):

firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="8080-8090" protocol="tcp" accept'

#如果要移除規則相對麻煩些,要輸入后面詳細的記錄:

firewall-cmd --remove-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="80" protocol="tcp" accept' 

最后說明:

如果規則中沒有加入參數:--permanent都是即時生效的,而且reload或者重啟服務后都不會再有記錄。
而加入了參數:--permanent后需要手動reload或者重啟服務才生效。 同時可以加入--zone 應用於於哪個區域的參數。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM