Linux系統管理 –RHEL-7 防火牆篇
Linux系統的防火牆功能是由內核實現的:
2.0 版內核中,包過濾機制是ipfw,管理工具是ipfwadm
2.2 版內核中,包過濾機制是ipchain,管理工具是ipchains
2.4 版及以後的內核中,包過濾機制是netfilter,管理工具是iptables
3.10版內核中,包過濾機制是firewalld,管理工具是firewall-cmd
大家應該都知道RHEL7內核的版本是3.10,在此版本的內核裏防火牆的包過濾機制是firewalld ,雖然說它的工具變了,但是‘firewall-cmd’ 命令其實是調用的iptables
[root@serverX ~]# for SERVICE in iptables ip6tables ebtables; do
> systemctl mask${SERVICE}.service
> done
包過濾防火牆是工作在TCP/IP的網絡層
附件 TCP/IP
規則表
具有某一類相似用途的防火牆規則,按照不同處理時機區分到不同的規則鏈以後,被歸置到不同的“表”中規則表是規則鏈的集合
默認的4個規則表
raw表:確定是否對該數據包進行狀態跟蹤
mangle表:爲數據包設置標記
nat表:修改數據包中的源、目標IP地址或端口
filter表:確定是否放行該數據包(過濾)
其中filter表、nat表是最常用的,每個表的功能不同,通過數據的匹配規則也不同,在今後使用中請確認後再去使用mangle表可以對數據包進行特殊標記,結合這些標記可以在filter表中對數據包進行有選擇性的處理(如“策略路由”,舉個例子,網關主機有兩條ADSL線路,分別使用網通、電信的接口,可以將訪問網通服務器的數據交給網通ADSL接口,而訪問電信服務器的數據交給電信ADSL接口)raw表是自1.2.9以後版本的iptables新增的表,主要用於決定數據包是否被狀態跟蹤機制處理,目前raw表中的應用尚不多見
附件 規則表
規則鏈
“包過濾”防火牆的主要特點是過濾網絡層的IP數據包。實際上在應用iptables規則的時候會發現,有些規則應用是針對傳輸層、鏈路層的這些規則的實現是由一個叫“規則鏈”的規則的作用在於對數據包進行過濾或處理,根據處理時機的不同,各種規則被組織在不同的“鏈”中規則鏈是防火牆規則/策略的集合。這些規則鏈有五種默認的分別是:
INPUT: 處理入站數據包
OUTPUT: 處理出站數據包
FORWARD: 處理轉發數據包
POSTROUTING :在進行路由選擇後處理數據包
PREROUTING: 在進行路由選擇前處理數據包
在“主機防火牆”中,主要針對服務器本機進出的數據實施控制,多以INPUT、OUTPUT鏈的應用爲主在“網絡防火牆”中,主要針對數據轉發實施控制,特別是防火牆主機作爲網關使用時的情況,因此多以FORWARD、PREROUTING、POSTROUTING鏈的應用爲主
入站數據流向:來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理(是否修改數據包地址等),之後會進行路由選擇(判斷該數據包應該發往何處),如果數據包的目標地址是防火牆本機(如Internet用戶訪問防火牆主機中Web服務的數據包),那麼內核將其傳遞給INPUT鏈進行處理(決定是否允許通過等),通過以後再交給系統上層的應用程序(如httpd服務器)進行響應
轉發數據流向:來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,之後會進行路由選擇,如果數據包的目標地址是其他外部地址(如局域網用戶通過網關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),然後再交給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理
出站數據流向:防火牆本機向外部地址發送的數據包(如在防火牆主機中測試公網DNS服務時),首先被OUTPUT規則鏈處理,之後進行路由選擇,然傳遞給POSTTOUTING規則鏈(是否修改數據包的地址等)進行處理
附件 規則鏈
防火牆區域
firewall區域許多預定義的區域運輸firewalld,每個都有自己的用途,每一個區域都和其他區域是有聯繫的,不指定區域時,默認區域爲public,默認的區域不是一個獨立的區域;相反,它指向一個在系統定義的其他區域,在RHEL7中常見的區域有
trusted:允許所有傳入的流量
home: 拒絕傳入流量,允許外出及服務ssh、mdns、ipp-client、samba-client、dhcpv6-client
internal:拒絕傳入流量,允許外出及服務ssh、mdns、ipp-client、samba-client、dhcpv6-client(同home)
work: 拒絕傳入流量,允許外出及服務ssh、 ipp-client 、dhcpv6-client
public: 拒絕傳入流量,允許外出及服務ssh、dhcpv6-client,新添加的網絡接口缺省的默認區域。
external:拒絕傳入流量,允許外出及服務ssh、mdns、ipp-client、samba-client、dhcpv6-client,允許IPV4的流量輸出
dmz: 拒絕傳入流量,允許外出及服務ssh
block: 拒絕流量進出
drop: 放棄所有的傳入流量,除非外出交通相關(甚至不響應ICMP協議錯誤)
如果傳入的數據包的源地址相匹配的一個區的規則設置,數據包將通過該區域路由,如果一個數據包傳入接口與一個區域規則的設置匹配,該區域將被使用。
防火牆的配置
RHEL7內提供了三種防火牆的管理方式:①命令模式下使用命令 firewall-cmd ② 圖形界面下使用命令 firewall-config③修改配置文件在/etc/firewalld/下,在這裏我們重點介紹第一種命令行模式。
①firewall-cmd 不得不說RHEL7中的防火牆命令動不動就兩三行,而且還有好多我都沒見過的選項和參數,至於有哪些選項和參數呢,我列出來給大家看看
例設置 wab服務的訪問權限
驗證firewall是否啓用
第一步Systemctl status firewalld.Service
第二步安裝 httpd、mod_ssl 軟件包並開啓 httpd 服務以及自啓動
第三步 創建wab服務的首頁文件
第四步 默認配置 防火牆對 主機server1 允許所有流量通過DMZ區域
firewall-cmd –set-defaule-zone=dmz
第五步配置防火牆對主機server1所在網
段的流量通過 即允許172.25.1.0/24通過DMZ區域
firewall-cmd --permanent --zone=work --add-source=172.25.1.0/24
第六步配置區域work 允許訪問wab服務的流
量進出(https)
firewall-cmd --permanent --zone=work --add-service=https
第六步使防火牆的配置生效
firewall-cmd --reload
第七步 檢測對server1 網段防火牆的配置
Firewall-cmd --get-default-zone
Firewall-cmd --get-active-z
ones
Firewall-cmd --zone=work --list-all
第八步 切換到server1驗證網頁是否能訪問
Curl http://server0.example.com