CentOS 7 常見的防火牆套件,有 firewall
及 iptables
兩種,但 CentOS 7的預設防火牆是以 firewall
為主,而 iptables
有安裝檔,但尚未安裝到系統上。
firewall
和 iptables
的核心是以 netfilter
去實現,當這兩種套件拿掉 netfilter
的核心,就什麼都不是了。但這兩種的存在是制定一套屬於自己的規則,他們外在結構不一樣,使用方法也不一樣,但核心都是一樣的。
※ CentOS 7 存在 firewalld
、iptables
、ebtablesd
等三種防火牆套件。
firewall
支援動態的更新技術,並以「區域(zone)」的概念來管理防火牆,簡單來說,網路劃分成不同的區域,而每個區域可以進行不同的設定或規則。
每個區域都有屬於它的設定,這些設定是以 XML
檔 來定義,也可以直接使用 firewall-cmd
指令來控制。
firewalld
提供了九個初始化區域配置
信任區域(trueted)
:可接受所有的網路連線。公共區域(public)
:接受ssh、dhcpv6-client服務,為firewalld的預設區域。工作區域(work)
:接受ssh、ipp-client、dhcpv6-client服務連線。家庭區域(home)
:僅接受ssh、mdns、ipp-client、samba-client或dhcpv6-client服務連線。內部區域(internal)
:接受ssh、ipp-client、mdns、samba-client或dhcpv6-client服務連線。外部區域(external)
:出去的ipv4的網路連線經過此區域的偽裝和轉發,只支援ssh服務。隔離區域(DMZ)
:也稱為非軍事區域,內外網路之間增加的一層網路,起到緩衝作用。僅接受ssh服務。阻塞區域(block)
:任何傳入的網路資料包都將被阻止,拒絕門外。丟棄區域(drop)
:任何訪問的連線或傳送的封包,都會被丟棄,沒有任何回應。※ firewalld
的預設區域是 公共區域(public)。
※ firewalld
使用 XML
進行配置,除非有其區域配置或其他需求,才會直接使用。否則只要直接使用 firewall-cmd
做操作即可。
firewall-config
圖形化工具操作。XML
直接編輯修改。firewall-cmd
指令來控制。1、但由於系統使用 CentOS 7 ,firewall-config
方式則不使用。
2、XML
的設定,都在 /usr/lib/firewalld/zones
的資料夾內。
[root@localhost zones]# ll
總計 36
-rw-r--r--. 1 root root 299 4月 7 22:37 block.xml
-rw-r--r--. 1 root root 293 4月 7 22:37 dmz.xml
-rw-r--r--. 1 root root 291 4月 7 22:37 drop.xml
-rw-r--r--. 1 root root 304 4月 7 22:37 external.xml
-rw-r--r--. 1 root root 369 4月 7 22:37 home.xml
-rw-r--r--. 1 root root 384 4月 7 22:37 internal.xml
-rw-r--r--. 1 root root 315 4月 7 22:37 public.xml
-rw-r--r--. 1 root root 162 4月 7 22:37 trusted.xml
-rw-r--r--. 1 root root 311 4月 7 22:37 work.xml
3、 firewall-cmd
另外做介紹。
iptables
iptables
是 Linux 上常用的防火牆套件,iptables
用來過濾網路封包。
確認 iptables
的套件是否存在
※ 以下兩種查詢均可查詢這個套件是否存在。
[root@localhost ~]# yum list installed | grep iptables
iptables.x86_64 1.4.21-34.el7 @anaconda
// or
[root@localhost ~]# rpm -qa | grep iptables
iptables-1.4.21-34.el7.x86_64
確認 iptables
檔案是否存在,不存在的話暫時不理會。
※ 不存在代表iptables
尚未安裝。
[root@localhost /]# ll /etc/init.d/
-rw-r--r--. 1 root root 18281 8月 19 2019 functions
-rwxr-xr-x. 1 root root 4569 8月 19 2019 netconsole
-rwxr-xr-x. 1 root root 7928 8月 19 2019 network
-rw-r--r--. 1 root root 1160 8月 7 01:30 README
參數
--permanent
表示設定為持續(永久)。--add-port
標示新增的埠。–add-forward-port
A埠號 轉 B埠號[root@localhost ~]# firewall-cmd --state
running
// 啟動
[root@localhost ~]# systemctl start firewalld.service
// 停止
[root@localhost ~]# systemctl stop firewalld.service
// 重新啟動
[root@localhost ~]# systemctl restart firewalld.service
[root@localhost ~]# firewall-cmd --get-default-zone
public
[root@localhost ~]# firewall-cmd --get-active-zones
[root@localhost ~]# firewall-cmd --list-ports
[root@localhost ~]# firewall-cmd --list-services
※ Port 號可自行修改設定。
暫時開啟,重新啟動OS就會失效。
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp
永久生效,重新啟動OS也是有效。
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
開啟 80 到 100 的 Port號。
[root@localhost ~]# firewall-cmd --zone=public --add-port=80-100/tcp
[root@localhost ~]# firewall-cmd --zone=public --query-port=80/tcp
暫時刪除 某 Port 號
[root@localhost ~]# firewall-cmd --zone=public --remove-port=80/tcp
永久刪除 某 Port 號。
[root@localhost ~]# firewall-cmd --zone=public --remove-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-service=mailserver --permanent
[root@localhost ~]# firewall-cmd --zone=public --remove-service=mailserver --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=443