作為一名系統管理員或開發者,你是否曾經被 Linux 防火墻配置搞得頭大?在生產環境中,我們經常需要配置防火墻來保護服務器安全,但面對 iptables 和 firewalld 這兩個工具,很多人都會覺得無從下手。別擔心!這篇文章將用通俗易懂的方式,帶你了解 CentOS 中的防火墻配置,并通過一個實際案例,手把手教你如何正確設置防火墻規則。
1.兩大防火墻工具
? firewalld:CentOS 7及以后版本的默認防火墻管理工具
? iptables:傳統的Linux防火墻管理工具
2.firewalld的特點
? 動態管理防火墻
? 支持網絡/防火墻區域(zone)定義網絡連接及接口的可信等級
? 運行時配置和永久配置分離
? 支持IPv4、IPv6
? 支持以太網橋接
3.firewalld與iptables的主要區別
? firewalld:
? 動態配置,無需重啟服務
? 支持動態更改規則
? 使用區域(zone)管理規則
配置文件存放地址:
/etc/firewalld/ # 系統配置文件目錄 /usr/lib/firewalld/ # 默認配置文件目錄
注意:
1./etc/firewalld/:優先級高,用戶配置目錄
2./usr/lib/firewalld/:優先級低,默認配置目錄
?
? 系統升級時會覆蓋此目錄
? 建議在/etc/firewalld/下修改配置
? iptables service:
?
? 靜態配置,規則修改后需重啟服務
? 規則修改需要先清除舊規則
? 使用鏈(chain)管理規則
配置文件存放地址:
`/etc/sysconfig/iptables # 規則配置文件`
4.firewalld不同區域
區域 | 說明 |
信任 | 可接收所有的網絡連接 |
public | 除非與傳出流量相關,或與 ssh 或 dhcpv6-client 預定義服務匹配,否則拒絕流量傳入 |
work | 除非與傳出流量相關,或與 ssh、ipp-client、dhcpv6-client 預定義服務匹配,否則拒絕流量傳入 |
家 | 除非與傳出流量相關,或與 ssh、ipp-client、mdns、samba-client、dhcpv6-client 預定義服務匹配,否則拒絕流量傳入 |
internal | 除非與傳出流量相關,或與 ssh、ipp-client、mdns、samba-client、dhcpv6-client 預定義服務匹配,否則拒絕流量傳入 |
external | 除非與傳出流量相關,或與 ssh 預定義服務匹配,否則拒絕流量傳入 |
dmz | 除非與傳出的流量相關,或與 ssh 預定義服務匹配,否則拒絕流量傳入 |
block | 除非與傳出流量相關,否則拒絕所有傳入流量 |
drop | 除非與傳出流量相關,否則丟棄所有傳入流量,并且不產生包含 ICMP 的錯誤響應 |
5.三種配置方法
? firewall-config 圖形工具。
? firewall-cmd 命令行工具。
? /etc/firewalld/中的配置文件。
圖形化不過多解釋 需要的話你搜其他文章
防火墻基礎案例
+-------------+ +-------------+ +-------------+ | Client | | Firewall | | Apache | |192.168.14.112| |192.168.14.111| |Linux 服務器 | +-------------+ +-------------+ +-------------+ | | | | | | +--------------------+--------------------+
1. 禁止主機 ping 服務器
2. 只允許 192.168.8.130 主機訪問 SSH 服務
3. 允許所有主機訪問 Apache 服務
服務器配置
ip地址是192.168.14.111
yum install -y httpd [root@localhost ~]# echo 2024-12-3 > /var/www/html/index.html [root@localhost ~]# systemctl start httpd [root@localhost ~]# curl 127.0.0.1 2024-12-3
配置完成apache服務之后
客戶端是可以ping的
禁止Ping防火墻規則
# 啟動 firewalld 并設置為開機自啟動 systemctlstart firewalld systemctlenable firewalld # 禁止 ping 服務器 firewall-cmd--zone=public --add-icmp-block=echo-request --permanent firewall-cmd--reload # 驗證配置 firewall-cmd--list-all
客戶端測試
允許SSH登錄規則
# 移除默認區域的 SSH 服務 firewall-cmd--zone=public --remove-service=ssh --permanent # 只允許 192.168.8.130 主機訪問 SSH 服務 firewall-cmd--zone=work --add-source=192.168.14.112 --permanent firewall-cmd--zone=work --add-service=ssh --permanent firewall-cmd--reload # 驗證配置 firewall-cmd--list-all
客戶端測試
其他ip的主機遠程是拒絕了 因為只有 192.168.14.112可以遠程
192.168.14.112 主機可以遠程訪問
允許apache流量規則
# 允許所有主機訪問 Apache 服務 firewall-cmd --zone=public--add-service=http --permanent firewall-cmd --zone=public--add-service=https --permanent firewall-cmd --reload # 驗證配置 firewall-cmd --list-all
客戶端測試
為開放apache的流量之前
[root@localhost ~]# curl 192.168.14.111 curl: (7) Failed connect to 192.168.14.111:80; 沒有到主機的路由
開放之后 所有的主機均可以訪問的
[root@localhost ~]# curl 192.168.14.111 2024-12-3
總結
通過這篇文章,我們不僅學習了 firewalld 和 iptables 的基本概念,更重要的是通過一個實際的案例,展示了如何:
1. 輕松配置防火墻規則來阻止 ping 請求
2. 限制特定 IP 地址的 SSH 訪問,提高服務器安全性
3. 開放 HTTP 服務,讓網站正常對外提供服務
記住,防火墻配置不是一成不變的,你可以根據實際需求隨時調整規則。最重要的是理解每個配置背后的原理,這樣才能靈活應對各種場景。希望這篇文章能幫助你在實際工作中少走彎路,輕松搞定防火墻配置!
-
Linux
+關注
關注
87文章
11430瀏覽量
212439 -
服務器
+關注
關注
12文章
9615瀏覽量
87053 -
防火墻
+關注
關注
0文章
427瀏覽量
36022 -
CentOS
+關注
關注
0文章
83瀏覽量
14120
原文標題:Linux防火墻基礎部分Firewalld防火墻(小白入門級別)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論