centos7防火牆firewalld詳解
防火牆初識
防火牆是整個系統安全性最重要的方面,能夠有效的防止網絡攻擊。所以我們需要詳細瞭解防火牆的知識。從centos 7開始,使用了firewalld替代了centos 6中的iptables。之前在linux運維開發(一)----------防火牆使用過以下命令:
firewall-cmd --zone=public -add-port=9999/tcp --permanent
firewalld-cmd --reload
firewall-cmd --zone=public --list-ports | grep 9999
接下來我們就來好好講解這個命令的作用
通過了解以上命令,我們發現有一個–zone=public的參數設置,這是什麼意思呢?講到這裏,我們就需要了解一個概念:區域。定義如下:
區域是預定義的規則集,用於根據計算機連接到的網絡上的信任級別指定應允許的流量。您可以將網絡接口和源分配給區域。
Bellow是FirewallD提供的區域,根據區域的信任級別從不信任到可信:
- drop:刪除所有傳入連接而不發出任何通知。僅允許傳出連接。
- block:所有傳入連接都被拒絕,其中包含用於IPv4的icmp-host-prohibited消息和用於IPv6n的icmp6-adm-prohibited。僅允許傳出連接。
- public:用於不受信任的公共場所。您不信任網絡上的其他計算機,但您可以允許選定的傳入連接。
- external:用於在系統充當網關或路由器時啓用NAT僞裝的外部網絡。僅允許選定的傳入連接。
- internal:用於在系統充當網關或路由器時在內部網絡上使用。網絡上的其他系統通常是可信的。僅允許選定的傳入連接。
- dmz:用於位於非軍事區的計算機,該計算機對網絡其餘部分的訪問權限有限。僅允許選定的傳入連接。
- work:用於工作機器。網絡上的其他計算機通常是可信的。僅允許選定的傳入連接。
- home:用於家用機器。網絡上的其他計算機通常是可信的。僅允許選定的傳入連接。
- trusted:接受所有網絡連接。信任網絡中的所有計算機。
打開/關閉防火牆
systemctl start firewalld
systemctl stop firewalld
啓用/禁用防火牆
systemctl enable firewalld
systemctl disable firewalld
防火牆區域的查看
查看可用區域:
firewall-cmd --get-zones
查看默認區域:
firewall-cmd --get-default-zone
查看被激活的的區域:
firewall-cmd --get-active-zones
查看指定區域信息
查看端口信息:
firewall-cmd --zone=public --list-ports
查看服務信息:
firewall-cmd --zone=public --list-services
查看協議信息:
firewall-cmd --zone=public --list-protocols
查看網絡接口信息:
firewall-cmd --zone=public --list-interfaces
查看所有信息:
firewall-cmd --zone=public --list-all
規則永久化
在進行修改操作後面使用 --permanment使命令永久化,–add-xxx、remove-xxx等命令
規則生效方式
–reload:重新載入配置信息,保持狀態信息
firewall-cmd --reload
–complete-reload:重新載入配置信息,會喪失狀態信息,相當於重啓
firewall-cmd --complete-reload
添加規則
添加端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
添加服務:
firewall-cmd --zone=public --add-service=mysql --permanent
添加協議:
firewall-cmd --zone=public -add=protocol=tcp --permanent
添加網絡接口(將會使ens33接口處於work區域):
firewall-cmd --zone=work --add-interface=ens33 --permanent
等同
firewall-cmd --zone=work --change-interface=ens33 --permanent
刪除規則
刪除端口:
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
刪除服務:
firewall-cmd --zone=public --remove-service=mysql --permanent
刪除協議:
firewall-cmd --zone=public --remove-protocol=tcp --permanent
刪除接口:
firewall-cmd --zone=public --remove-interface=ens33 --permanent
驗證規則綁定
查詢端口信息:
firewall-cmd --zone=public --query-port=80/tcp
查詢服務信息:
firewall-cmd --zone=public --query-service=mysql
查詢協議信息:
firewall-cmd --zone=public --query-protocol=tcp
查詢接口信息:
firewall-cmd --zone=public --query-interface=ens33
端口轉發流量
1、爲所需區域開啓僞裝:
firewall-cmd --zone=external --add-masquerade --permanent
2、驗證是否開啓僞裝:
firewall-cmd --zone=external --query-masquerade --permanent
3、轉發流量:
- 將流量從端口80轉發到同一服務器上的端口8080
firewall-cmd --zone=external --add-forward-port-80:proto=tcp:toport=8080 --permanent
- 流量從端口80轉發到IP 192.168.1.2的服務器上的端口80:
firewall-cmd --zone=external --add-forward-port=80:proto=tcp:toaddr=192.1681.2 --permanent
- 流量從端口80轉發到IP 192.168.1.2的服務器上的端口8080:
firewall-cmd --zone=external -add-forward-port=80:proto=tcp:toport=8080:toaddr=192.168.1.2 --permanent
4、爲指定區域去除僞裝:
firewall-cmd --zone=external --remove-masquerade --permanent
查看所有區域的所有信息:
firewall-cmd --list-all-zones
更多問題可以加公衆號:代碼小棧,期待爲您解決更多問題