RHEL Linux 7的防火牆firewalld學習總結 本文介紹一下RHEL 7下的防火牆配置工具firewalld。 在RHEL 7之前,我們一般使用iptables防火牆管理工具,其實,iptables與firewalld都不是真正的防火牆,它們都只是用來定義防火牆策略的防火牆管理工具而已,... ...
RHEL Linux 7的防火牆firewalld學習總結
本文介紹一下RHEL 7下的防火牆配置工具firewalld。 在RHEL 7之前,我們一般使用iptables防火牆管理工具,其實,iptables與firewalld都不是真正的防火牆,它們都只是用來定義防火牆策略的防火牆管理工具而已,或者說,它們只是一種服務或程式。iptables服務會把配置好的防火牆策略交由內核層面的netfilter網路過濾器來處理,而firewalld服務則是把配置好的防火牆策略交由內核層面的nftables包過濾框架來處理。
firewalld(Dynamic Firewall Manager of Linux systems,Linux系統的動態防火牆管理器),在RHLE 7下是預設的防火牆配置管理工具,它擁有基於CLI(命令行界面 firewalld-cmd)和基於GUI(圖形用戶界面 firewalld-config)的兩種管理方式。相較於傳統的防火牆管理配置工具,firewalld支持動態更新技術並加入了區域(zone)的概念。簡單來說,區域就是firewalld預先準備了幾套防火牆策略集合(策略模板),用戶可以根據生產場景的不同而選擇合適的策略集合,從而實現防火牆策略之間的快速切換。它具備對IP V4和IP V6防火牆設置的支持。
防火牆中的一切都與一個或者多個區域相關聯,下麵對各個區進行說明:
Zone Description
-----------------------------------------------------
drop (immutable) Deny all incoming connections, outgoing ones are accepted.
block (immutable) Deny all incoming connections, with ICMP host prohibited messages issued.
trusted (immutable) Allow all network connections
public Public areas, do not trust other computers
external For computers with masquerading enabled, protecting a local network
dmz For computers publicly accessible with restricted access.
work For trusted work areas
home For trusted home network connections
internal For internal network, restrict incoming connections
drop(丟棄)
任何流入網路的包都被丟棄,不作出任何響應,只允許流出的網路連接。即使開放了某些服務(比如http),這些服務的數據也是不允許通過的。
block(限制)
任何進入的網路連接都被拒絕,並返回IPv4的icmp-host-prohibited報文或者IPv6的icmp6-adm-prohibited 報文。只允許由該系統初始化的網路連接。
trusted(信任)
可接受所有的網路連接。允許所有網路連接,即使沒有開放任何服務,那麼使用此zone的流量照樣通過(一路綠燈)
public(公共)
在公共區域內使用,不能相信網路內的其他電腦不會對您的電腦造成危害,只能接收經過選取的連接。
external(外部)
特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網路的其他計算,不能相信它們不會對您的電腦造成危害,只能接收經過選擇的連接。
dmz(非軍事區)
用以允許隔離區(dmz)中的電腦有限地被外界網路訪問,只允許選中的服務通過。
work(工作)
用於工作區。您可以基本相信網路內的其他電腦不會危害您的電腦。只允許選中的服務通過。
home(家庭)
用於家庭網路。您可以基本信任網路內的其他電腦不會危害您的電腦。,只允許選中的服務通過。
internal(內部)
用於內部網路。您可以基本上信任網路內的其他電腦不會威脅您的電腦。只允許選中的服務通過。
檢查防火牆工具
如果你要判斷RHEL 7使用的是iptables還是firewalld,那麼可以通過命令來判斷
有iptables的情況:
# systemctl status iptables.service
● iptables.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
沒有iptables的情況
# systemctl status iptables.service
Unit iptables.service could not be found.
當然,最簡單的方法是使用下麵命令來判別
# systemctl is-active firewalld
active
# systemctl is-active iptables
inactive
# systemctl is-active ip6tables
inactive
# systemctl is-active ebtables
inactive
查看防火牆狀態
# systemctl status firewalld
# firewall-cmd --state
[root@mylnx ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-03-07 11:46:34 HKT; 1 day 4h ago
Main PID: 124126 (firewalld)
CGroup: /system.slice/firewalld.service
└─124126 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Mar 07 11:46:34 mylnx systemd[1]: Starting firewalld - dynamic firewall daemon...
Mar 07 11:46:34 mylnx systemd[1]: Started firewalld - dynamic firewall daemon.
# firewall-cmd --state
running
啟動防火牆服務:
# systemctl start firewalld
或
# systemctl start firewalld.service
重啟防火牆服務:
# systemctl restart firewalld.service
或
# systemctl restart firewalld