CentOS的防火牆介紹

10.12 firewalld和netfilter

netfilter和firewalld都是CentOS版本的防火牆,CentOS7以前的防火牆爲netfilter,CentOS7的防火牆爲firewalld。服務器

下面是關於防火牆的關閉和開啓方法:網絡

而後就可使用以前版本的iptables了。ssh

CentOS默認設有iptables規則,但對於咱們來講沒有用,反而會形成某些影響,因此咱們先清除規則,而後把清除後的規則保存一下:tcp

保存防火牆規則的文件:工具


10.13 netfilter5表5鏈介紹

filter表主要用於過濾包,是系統預設的表。該表內建3個鏈:INPUT、OUTPUT以及FORWARD。spa

INPUT鏈做用於進入本機的包,OUTPUT鏈做用於本機送出的包,FORWARD鏈做用於那些跟本機無關的包。3d

 

nat表主要用於網絡地址轉換,它也有3個鏈。xml

PREROUTING鏈的做用是在包剛剛到達防火牆時改變它的目的地址(若是有須要的話),OUTPUT鏈的做用是改變本地產生的包的目的地址,POSTROUTING鏈的做用是在包即將離開防火牆時改變其源地址。blog

 

mangle表主要用於給數據包作標記,而後根據標記去操做相應的包。接口

 

raw表能夠實現不追蹤某些數據包,默認系統的數據包都會被追蹤,但追蹤勢必消耗必定的資源,因此能夠用raw表來指定某些端口的包不被追蹤。

 

security表在CentOS6中是沒有的,用於強制訪問控制(MAC)的規則。

 

netfilter的5個鏈

PREROUTING:數據包進入路由表以前。

INPUT:經過路由表後目的地爲本機。

FORWARDING:經過路由表後,目的地不爲本機。

OUTPUT:由本機產生,向外轉發。

POSTROUTING:發送到網卡接口以前。


10.14 iptables語法

一、查看規則以及清除規則:

-t後面跟表名,-nvL表示查看該表的規則,其中,-n表示不針對IP反解析主機名,-L表示列出,-v表示列出詳細信息。若是不加-t,則打印filter表的相關信息:

-F表示把全部規則所有清除,若是不加-t指定表,默認只清除filter表的規則:

-Z表示把包以及流量計數器置零:

二、增長/刪除一條規則:

沒有加-t,因此針對的是filter表。這條規則中各個選項的做用以下:

-A/-D:表示增長/刪除一條規則。

-I:表示插入一條規則,等同於-A。

-p:表示指定協議,能夠是tcp、udp或者icmp。

--dport:跟-p一塊兒使用,表示指定目標端口。

--sport:跟-p一塊兒使用,表示指定目標端口。

-s:表示指定源IP(能夠是一個IP段)。

-d:表示指定目的IP(能夠是一個IP段)。

-j:後面跟動做,其中ACCEPT表示容許包,DROP表示丟掉包,REJECT表示拒絕包。

-i:表示指定網卡。


10.15 iptables filter表案例

#iptables -I -s 1.1.1.1 -j DROP 插入一條規則,把來處1.1.1.1的全部數據包丟掉。

#iptables -I -s 1.1.1.1 -j DROP 刪除剛纔插入的規則。

#iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP 把來處2.2.2.2而且是TCP協議到本機80端口的數據包丟掉。(--dport/--sport必須和-p選項一塊兒使用,不然會出錯)

#iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP 把發送到10.0.1.14的22端口的數據包丟掉。

把來處192.168.1.0/24這個網段且做用在eth0上的包放行:

有時候服務器上的iptables過多了,想刪除某一條規則,但又不容易掌握建立時的規則,這時候有一種比較簡單的方法,先查看iptables規則:

而後刪除某一條規則

 


10.16/10.17/10.18 iptables nat表應用

Linux的iptables功能是很是強大的,好比,路由器的功能其實就是由Linux的iptables實現的,而iptables又是經過nat表做用而實現的。

假設咱們的機器上有兩塊網卡eth0和eth1,其中eth0的IP爲10.0.2.68,eth1的IP爲192.168.1.1。eth0鏈接了因特網,但eth1沒有鏈接,如今有另外一臺機器(193.168.1.2)和eth1是互通的,那麼如何設置才能讓鏈接eth1的這臺機器鏈接因特網,從而和10.0.2.68互通呢?方法以下:

第一個命令的目的是打開路由轉發功能,不然沒法實現咱們的應用,第二個命令則是iptables對nat表作了一個IP轉發的操做。

-O選項後面跟設備名,表示出口的網卡;MASQUERADE表示假裝。

 

10.19 iptables規則備份和恢復

保存和備份iptables規則

設定的防火牆規則只保存在內存中,並無保存到某一個文件中。也就是說,當系統重啓後,以前設定的規則就沒有了,因此設定好規則後要先保存下好,命令以下:

它會提示防火牆規則保存在/etc/sysconfig/iptables文件內,這個文件就是iptables的配置文件。之後若是遇到備份防火牆規則的任務,只要複製一份這個文件的副本便可。

有時須要清除防火牆的全部規則,使用命令iptables -F 固然能夠實現,但最好的辦法仍是中止 防火牆服務:


10.20 firewalld的9個zone

firewalld是CentOS7系統的防火牆工具。

在操做firewalld以前,咱們先關閉iptables服務,而後再開啓firewalld服務:

firewalld有兩個基礎概念,分別是zone和service,每個zone裏面有不一樣的iptables規則,默認一共有9個zone,而CentOS7默認的zone爲public。獲取系統全部的zone,命令以下:

查看系統默認的zone:

firewalld的9個zone:

drop(丟棄):任何接收的網絡數據包都被丟棄,沒有任何回覆。僅能有發送出去的網絡鏈接。

block(限制):任何接收的網絡鏈接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒絕。

pubilc(公共):在公共區域內使用,不能相信網絡內的其餘計算機不會對你的計算機形成傷害,只能接收通過選取的鏈接。

external(外部):特別是爲路由器啓用了假裝功能的外部網。你不能信任來自網絡的其餘計算機,不能相信它們不會對你的計算機形成危害,只能接收通過選擇的鏈接。

dmz(非軍事區):用於你的非軍事區內的計算機,此區域內可公開訪問,能夠有限地進入你的內部網絡,僅僅接收通過選擇的鏈接。

work(工做):用於工做區。你能夠基本相信網絡內的其餘計算機不會危害你的計算機。僅僅接收通過選擇的鏈接。

home(家庭):用於家庭網絡。你能夠基本信任網絡內的其餘計算機不會危害你的計算機。僅僅接收通過選擇的鏈接。

internal(內部):用於內部網絡。你能夠基本信任網絡內的其餘計算機不會危害你的計算機。僅僅接收通過選擇的鏈接。

trusted(信任):可接受全部的網絡鏈接。


10.21 firewalld關於zone的操做

關於zone的命令:


10.22 firewalld關於service的操做

之因此有9個zone,是由於每個zone裏面都使用了不一樣的service,而service就是針對一個服務(端口)作的iptables規則。

列出當前系統全部的service:

這些service都是由一個個配置文件定義的,配置文件的模板在/usr/lib/firewalld/services/目錄下,真正生效的配置在/etc/firewalld/services目錄下面(默認爲空):

每一個zone裏面都有不一樣的service,那如何查看一個zone下面有哪些service呢?

一個zone下面有某個service,意味着這個service是被信任的。好比,當前zone下面有ssh,那麼ssh服務端口(22)是放行的。咱們給一個zone添加一個service:

對於每一個zone來講,都有本身的配置文件,能夠查看目錄/usr/lib/firewalld/zones/下面對應的文件,這些就是zone的配置文件:

上面的例子能夠在一個zone裏面增長一個service,但這種方法僅僅在內存中生效,並無修改配置文件,若是想修改配置文件,須要加一個選項:

一旦更改了某個zone的配置文件,則會在/etc/firewalld/zones/目錄下面生成對應zone的配置文件(.xml後綴的文件),其實這個目錄下面的配置文件纔是真正的配置文件。

相關文章
相關標籤/搜索