在Internet中,企業經過架設各類應用系統來爲用戶提供各類網絡服務,好比Web網站、電子郵件、FTP服務器等。並且大部分都是使用Linux服務器進行搭建的。那麼,想要保護這些服務器,過濾非受權的訪問,甚至惡意進入內部網絡 。就須要使用到——防火牆。安全
防火牆除了硬件防火牆以外,Linux系統的防火牆也十分強大,今天主要認識CentOS 7系統的防火牆的管理工具——firewalld。服務器
不論是Linux系統、Windows系統的防火牆或者是硬件防火牆都是設置不一樣網絡與網絡安全之間的一系列部件的組合,也是不一樣安全域之間信息的惟一出(入)口。經過檢測、限制並更改跨越防火牆的數據流。儘量地對外屏蔽網絡內部的信息、結構和運行狀態,且能夠有選擇的接受外部外部網絡的訪問。在內外網之間架起一道安全的屏障,以免發生不知情的狀況下進入內部網絡,對咱們內部網絡產生必定的威脅。網絡
從傳統意義上來講防火牆分爲三類:包過濾、應用代理、狀態檢測。不管一個防火牆的實現過程有多複雜,說到底都是在這三種技術的基礎上進行擴展的。ssh
Linux的防火牆體系主要工做在網絡層,屬於典型的包過濾防火牆(也稱爲網絡層防火牆)。tcp
包過濾防火牆的工做原理:ide
- 工做在網絡層,針對IP數據包;
- 靜態的打開端口、具備必定的安全隱患;
- 體如今對包內的IP地址、端口等信息的處理上;
狀態檢測防火牆的工做原理:工具
- 工做在網絡層;
- 動態的打開端口;
應用代理防火牆的工做原理:性能
- 工做在應用層;
Linux系統的防火牆體系基於內核編碼實現,既有很是穩定的性能和高效率,也所以得到普遍的應用。Linux系統的防火牆主要有:firewalld、iptables、ebtables。不過在CentOS 7 系統中默認使用firewalld來管理netfilter子系統。網站
- netfilter:指的是Linux內核中實現包過濾防火牆的內部結構,不以程序或文件的形式存在,屬於「內核態」的防火牆功能體系;
- firewalld:指用於管理Linux防火牆的命令程序,屬於「用戶態」的防火牆的管理體系。
嚴格意義上來講,netfilter纔是Linux系統的防火牆,firewalld只是管理netfilter的工具而已!編碼
firewalld提供了支持網絡區域所定義的網絡連接以及接口安全等級的動態防火牆管理工具,支持ipv四、ipv6防火牆以及以太網橋,而且擁有兩種配置模式:運行時配置與永久配置。它還支持服務或應用程序直接添加防火牆規則。
firewalld將全部的網絡數據流量劃分爲多個區域,從而簡化防火牆管理。根據數據包的源IP地址或傳入網絡接口等條件,將數據流量轉入相應區域的防火牆規則。對於進入系統的數據包,首先檢查的就是其源地址。
firewalld數據處理流程:
首先檢查的就是其源地址。
- 若源地址關聯到特定的區域,則執行該區域所制定的規則;
- 若源地址未關聯到特定的區域,則使用傳入網絡接口的區域並執行該區域所制定的規則;
- 若網絡接口未關聯到特定的區域,則使用默認區域並執行該區域所制定的規則;
默認區域不是單獨的區域,而是執行系統上定義的某個其餘區域。默認狀況下,默認區域是public,系統管理員能夠根據實際狀況進行修改。
以上匹配規則,按照前後順序,第一個匹配的規則勝出(從上往下、找到即停!)
在每一個區域中均可以配置其要打開或者關閉的一系列服務或端口,firewalld的每一個預約義的區域默認都開啓一些相應的服務,如圖:
傳出流量:簡單來講就是訪問的資源不是防火牆自己,而是經過防火牆的流量稱爲傳出流量。
在CentOS 7 系統中,可使用三種方式配置防火牆:
- firewall-config圖形工具;
- firewall-cmd命令行工具;
- /etc/firewalld/中的配置文件;
一般狀況下,不建議直接修改其配置文件!
打開圖形化管理工具的兩種方式:
[root@localhost ~]# firewall-config
因爲圖形化簡單易懂,因此這裏就不詳細介紹了!
[root@localhost ~]# systemctl start firewalld //啓動firewalld服務 [root@localhost ~]# systemctl enable firewalld //將firewalld服務設置爲開機自啓動 [root@localhost ~]# systemctl status firewalld //查看firewalld服務狀態 [root@localhost ~]# firewall-cmd --state //查看firewalld服務狀態 [root@localhost ~]# systemctl stop firewalld //中止firewalld服務 [root@localhost ~]# systemctl disable firewalld //將firewalld服務設置爲開機不自動啓動
[root@localhost ~]# firewall-cmd --get-zones //顯示預約義的區域信息 [root@localhost ~]# firewall-cmd --get-services //顯示預約義的服務(服務較多,大部分都是經常使用的,這裏就不介紹了) [root@localhost ~]# firewall-cmd --get-icmptypes //顯示預約義的ICMP類型
firewall-cmd --get-icmptypes命令執行結果中各種的含義:
- destination-unreachable:目的地址不可達;
- echo-reply:應答迴應;
- parameter-problem:參數問題;
- redirect:從新定向;
- router-advertisement:路由器通告;
- router-solicitation:路由器徵尋;
- source-quench:源端抑制;
- time-exceeded:超時;
- timestamp-reply:時間戳應答迴應;
- timestamp-request:時間戳請求;
區域管理命令的經常使用選項,如圖:
[root@localhost ~]# firewall-cmd --get-default-zone //顯示當前系統中的默認區域 [root@localhost ~]# firewall-cmd --list-all //顯示默認區域的全部規則 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 //顯示網絡接口ens33對應的區域 [root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33 The interface is under control of NetworkManager, setting zone to 'internal'. success //將網絡接口ens33對應區域改成internal區域 [root@localhost ~]# firewall-cmd --zone=internal --list-interfaces ens33 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 internal //驗證 [root@localhost ~]# firewall-cmd --get-active-zones internal interfaces: ens33 //顯示全部激活區域
在最新版本firewalld中默認定義了70多種服務供咱們使用,對於每一個網絡區域,都可以配置容許訪問服務。當須要添加的服務在列表中沒有的話,能夠添加端口。
區域服務管理的經常使用選項,如圖:
[root@localhost ~]# firewall-cmd --list-services dhcpv6-client ssh //顯示默認區域容許訪問的服務 [root@localhost ~]# firewall-cmd --add-service=http //設置默認區域容許訪問http服務 [root@localhost ~]# firewall-cmd --list-services dhcpv6-client ssh http //驗證效果 [root@localhost ~]# firewall-cmd --zone=internal --add-port=80/tcp success //在internal區域上容許TCP協議80端口訪問 [root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp success //在internal區域上禁止TCP協議443端口訪問 [root@localhost ~]# firewall-cmd --list-all --zone=internal internal (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client mdns samba-client ssh ports: 80/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: //查看指定區域的詳細配置
使用firewall-cmd命令行工具備兩種配置模式:
- 運行時模式:表示當前內存中運行的防火牆配置,在系統重啓或者firewalld服務重啓時配置將會失效;
- 永久模式:表示重啓firewalld服務或重啓系統時,系統將自動的加載防火牆的規則配置,是永久存儲在配置文件中;
firewall-cmd命令工具與配置模式相關的三個選項:
- --reload:從新加載防火牆並保持狀態信息,即將永久配置應用爲運行時配置;
- --permanent:帶此選項的命令用於設置永久規則,這些規則只有在從新啓動firewalld服務是規則纔會生效;若不帶此選項,表示用於設置運行時規則;
- --runtime-to-permanent:將當前的運行配置寫入規則配置文件中,使其成爲永久配置。
關於firewalld防火牆介紹到此結束!
具體配置可參考博文:保證Linux系統安全之配置firewalld防火牆的地址假裝及端口轉發實例,可跟作!!!