Centos7 配置防火牆 firewall


一、firewall

1、從CentOS7開始,默認使用firewall來配置防火牆,沒有安裝iptables(舊版默認安裝)。

2、firewall的配置文件是以xml的格式,存儲在 /usr/lib/firewalld/ 和 /etc/firewalld/ 目錄中。

 (1)系統配置目錄,目錄中存放定義好的網絡服務和端口參數,系統參數,不要修改。

1 /usr/lib/firewalld/
2 /usr/lib/firewalld/services
3 /usr/lib/firewalld/zones

 (2)用戶配置目錄

1 /etc/firewalld/
2 /etc/firewalld/services
3 /etc/firewalld/zones

3、特性

(1)firewalld是centos7的一大特性,最大的好處有兩個:

  • 支持動態更新,不中斷用戶連接
  • 加入了防火牆的“zone”概念 ,可以理解為 firewalld 的單位、規則集:

   1️⃣ drop(丟棄),任何接受的網絡數據包都被丟棄,沒有任何回復。僅能有發送出去的網路連接。

   2️⃣ block(限制),任何接收的網絡連接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒絕。

   3️⃣ public(公共),在公共區域內使用,不能相信網絡內的其他計算機不會對你的計算機造成危害,只能接收經過選取的連接。  

     4️⃣ external(外部),特別是為路由器啟動了偽裝功能的外部網。你不能相信來自網絡的其他計算機,不能相信他們不會對你的計算機造成危害,只能接收經過選擇的連接。

   5️⃣ dmz(非軍事區),用於你的非軍事區內的電腦,此區域內可公開訪問,可以有限的進入你的內部網絡,僅僅接收經過選擇的連接。

   6️⃣ work(工作),用於工作區。你可以基本相信網絡內的其他計算機不會危害到你。僅僅接收經過選擇的連接。

   7️⃣ home(家庭),用於家庭網絡。你可以基本相信網絡內的其他計算機不會危害到你。僅僅接收經過選擇的連接。

   8️⃣ internal(內部),用於內部網絡。你可以基本相信網絡內的其他計算機不會危害到你。僅僅接收經過選擇的連接。

   9️⃣ trusted(信任),可接受所有的網絡連接。

   說明:firewalld 的缺省區域是 public。

(2)firewalld有圖形界面和工具界面

(3)firewalld的字符界面管理工具是 firewall-cmd 

 

 

二、配置防火牆

設置防火牆的方式有兩種:firewall命令 、 直接修改配置文件

1、firewall命令

例如:對外開放/停止3306端口,供外部的計算機訪問。該命令方式添加的端口,可在/etc/firewalld/zones中的對應配置文件中得到體現

#開放
firewall-cmd --zone=public --add-port=3306/tcp --permanent

#刪除
firewall-cmd --zone=public --remove-port=3306/tcp --permanent

#別忘記重啟防火牆
systemctl restart firewalld 

說明:

  • firewall-cmd:Linux中提供的操作firewall的工具。
  • –zone:指定作用域。
  • –add-port=3306/tcp:添加的端口,格式為:端口/通訊協議。
  • –permanent:表示永久生效,沒有此參數重啟后會失效。

 

2、直接修改配置文件

比如:修改 /etc/firewalld/zones/public.xml 

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="20"/>
  <port protocol="tcp" port="21"/>
  <port protocol="tcp" port="22"/>
  <port protocol="tcp" port="80"/>
  <port protocol="tcp" port="8888"/>
  <port protocol="tcp" port="39000-40000"/>
  <port protocol="tcp" port="3306"/>
</zone>

如上,需要開放的端口,已經添加再public這個區域里了。

 

三、firewall常用命令

1、查看狀態

service firewalld status 
systemctl status firewalld firewall-cmd --state

2、啟動、停止、重啟

# 啟動
service firewalld start
或
systemctl start firewalld

# 停止
service firewalld stop
或
systemctl stop firewalld

# 重啟
service firewalld restart
或
systemctl restart firewalld

3、開機自啟動

# 關閉開機自啟動
systemctl disable firewalld

# 開啟開機自啟動
systemctl enable firewalld

4、查看防火牆規則

firewall-cmd --list-all

 

 

四、其他命令

1、其他基本命令

firewall-cmd --version          #查看版本
firewall-cmd --help             #查看幫助
firewall-cmd --panic-on         #拒絕所有包
firewall-cmd --panic-off        #取消拒絕狀態
firewall-cmd --query-panic      #查看是否拒絕
firewall-cmd --reload           #重新加載防火牆,並不中斷用戶連接(firewalld特性之一動態添加規則)
firewall-cmd --complete-reload  #重新加載防火牆並中斷用戶連接(類似於重啟服務)

2、zone相關

firewall-cmd --get-zones                    #顯示支持的區域列表
firewall-cmd --get-active-zones                 #查看當前的區域
firewall-cmd --get-default-zone                 #查看默認區域
firewall-cmd --set-default-zone=home            #設置默認區域為 home
firewall-cmd --zone=public --list-interfaces    #顯示顯示公共區域(public)所有接口
firewall-cmd --zone=public --list-all           #顯示公共區域(public)所有設置
firewall-cmd --get-zone-of-interface=ens33      #查看指定接口 ens33 所屬區域
firewall-cmd --zone=internal --change-interface=ens33   #臨時修改網絡接口 ens33 為內部區域(internal),永久修改加上 --permanent 參數
firewall-cmd --zone=public --add-interface=ens37        #為公共區域(public)增加一個接口 ens37  

3、service相關

firewall-cmd --get-service                           #顯示服務列表
firewall-cmd --list-service                          #顯示當前服務
firewall-cmd --enable service=ssh                    #允許SSH服務通過
firewall-cmd --disable service=ssh                   #禁止SSH服務通過
firewall-cmd --enable service=samba --timeout=600    #臨時允許 samba 服務通過 600 秒
firewall-cmd --permanent --zone=internal --add-service=http   #添加 http 服務到內部區域(internal)
firewall-cmd --zone=work --add-service=smtp          #把 smtp 服務加入工作區域(work) 
firewall-cmd --zone=work --remove-service=smtp       #從工作區域(work)移除 smtp 服務

4、地址偽裝

firewall-cmd --zone=external --query-masquerade     #查詢外部區域(external)是否能偽裝ip,結果為yes
firewall-cmd --zone=external --add-masquerade #外部區域(external)啟用IP偽裝(masquerade) firewall-cmd --zone=external --remove-masquerade #外部區域(external)禁用用IP偽裝

5、端口轉發

# 打開端口轉發,首先需要打開IP地址偽裝
firewall-cmd --zone=external --add-masquerade

# example 1:把外部區域(external)的 22 端口 轉發至 3753
firewall-cmd --zone=external --add-forward-port=22:porto=tcp:toport=3753

# example 2:把外部區域(external)的 22 端口轉發到 192.168.1.20 的同一端口
firewall-cmd --zone=external --add-forward-port=22:porto=tcp:toaddr=192.168.1.20

# example 3:把外部區域(external)的 22 端口轉發到 192.168.1.2052222 端口
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=52222:toaddr=192.168.1.20  

 


免責聲明!

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



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