1. 程式人生 > 其它 >啟明智顯分享|3.5、2.8寸串列埠屏與衣物護理機的結合

啟明智顯分享|3.5、2.8寸串列埠屏與衣物護理機的結合

Centos7 防火牆

1.介紹

在centos7中,有幾種防火牆共存:firewald , iptables . 預設情況下,CentOS是使用firewalld來管理netfilter子系統,不過底層呼叫的命令仍然是iptables

2.firewalld 和 iptables區別

  1. firewalld 可以動態修改單挑規則,而不像iptables那樣,在修改了規則後必須全部重新整理才可以生效。
  2. firewalld在使用上比iptables人性化很多,即使不明白"五張表五條鏈"而且對TCP/IP協議也不理解也可以實現大部分功能。
  3. firewalld跟iptables比起來,不好的地方是每個服務都需要去設定才能放行,因為預設是拒絕。而iptables裡預設每個服務是允許,需要拒絕才去限制。
  4. firewalld自身並不具備防火牆的功能,而是和iptables一樣需要通過核心的netfilter來實現,也就是說firewalld和iptables一樣,他們的作用是用於維護規則,而真正使用規則幹活的是核心的netfilter,只不過firewalld和iptables的結構以及使用方法不一樣罷了。

3.區域管理概念

區域管理

通過將網路劃分成不同的區域,制定不同區域之間的訪問控制策略來控制不同程式間傳送的資料流。例如,網際網路不是可信任的區域,而內部網路是高度信任的區域。網路安全模型可以在安裝,初次啟動和首次建立網路連線時選擇初始化。該模型描述了主機所連線的整個網路環境的可信級別,並定義了新連線的處理方式。

有如下幾種不同的初始化區域:

  • 阻塞區域(block):任何傳入的網路資料包都將被阻止
  • 工作區域(work):相信網路上的其他計算機,不會損害你的計算機
  • 家庭區域(home):相信網路上的其他計算機,不會損害你的計算機
  • 公共區域(public):不相信網路上的任何計算機,只有選擇接受傳入的網路連線
  • 隔離區域(DMZ):隔離區域也稱為非軍事區域,內外網路之間增加的一層網路,起到緩衝作用。對於隔離區域,只有選擇接受傳入的網路連線。
  • 信任區域(trusted):所有的網路連線都可以接受
  • 丟棄區域(drop):任何傳入的網路連線都被拒絕
  • 內部區域(internal):信任網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線
  • 外部區域(external):不相信網路上的其他計算機,不會損害你的計算機。只有選擇接受傳入的網路連線

注:Firewalld的預設區域是public

firewalld預設提供了九個zone配置檔案:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他們都儲存在“/usr/lib /firewalld/zones/”目錄下。

4.iptables的配置

1.簡述

iptables防火牆由Netfilter專案(http://www.netfilter.org) 開發,自2001年1月在Linux2.4核心釋出以來就是Linux的一部分了。

Netfilter是由Linux提供的所有包過濾和包修改設施的官方專案名稱,但這個術語同時也指Linux核心的一個框架,他可以用於在不同的階段將函式掛接(hook)進網路棧。另一方面,iptables使用Netfilter框架指在將對資料包進行操作(如過濾)的函式掛接進網路棧。

所以,你可以認為Netfilter提供了一個框架,而iptables在它之上建立了防火牆功能

2.基本原理

規則(rules)其實就是網路管理員預定義的條件,規則一般的定義為“如果資料包頭符合這樣的條件,就這樣處理這個資料包”。規則儲存在核心空間的資訊 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務型別(如HTTP、FTP和SMTP)等。當資料包與規 則匹配時,iptables就根據規則所定義的方法來處理這些資料包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工作就是新增、修改和刪除這些規則

3.iptables傳輸資料包的過程

  1. 當一個數據包進入網絡卡時,它首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去
  2. 如果資料包就是進入本機的,它就會沿著圖向下移動,到達INPUT鏈。資料包到了INPUT鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料包,這些資料包會經過OUTPUT鏈,然後到達POSTROUTING鏈輸出
  3. 如果資料包是要轉發出去的,且核心允許轉發,資料包就會如圖所示向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出

4、iptables規則表和鏈

表(tables):

iptables一共有四張表,稱為filter, nat, mangle, raw。filter用於過濾,nat用於網路地址轉換,mangle用於給資料包做標記以修改分組資料的特定規則,raw表則獨立於Netfilter連線跟蹤子系統

因此,如果你的目標是保護主機安全,那麼著重考慮的是filter表,而如果像OpenStack那樣,目的是做網路地址轉換,就用NAT表,而mangle則用於QoS(服務質量控制),如對打上某個標記的分組資料分配較多頻寬等等

鏈(chains):

是資料包傳播的路徑,每個鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有1條或者數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看資料包是否滿足規則所定義的條件,如果滿足,就會根據該規則所定義的方法處理該資料包。否則iptables將繼續檢查下一條規則,如果資料包不符合鏈中任一條規則,iptables就會根據該鏈預先定義的策略來處理資料包。

5.規則表處理的優先順序

Raw--mangle--nat--filter

對filter表來說,最重要的是內建鏈INPUT/OUTPUT/FORWARD。顧名思義,INPUT應用於外部網路進入到本地主機的資料包,OUPTU則應用於從本地主機發送到外部網路的資料包。FORWARD則可以理解為將本地主機作為路由器,資料包從本地主機經過,但目標位於本地主機的下游。

6.管理和設定iptables規則

7.配置iptables之前firewalld的關閉

CentOS7預設的防火牆是firewall,所以要使用iptables得先將預設的firewall關閉,並另安裝iptables進行防火牆的規則設定

[root@localhost ~]# systemctl stop firewalld.service            //停止firewall
[root@localhost ~]# systemctl disable firewalld.service        //禁止firewall開機啟動

8.iptables的安裝

先檢查iptables是否有安裝:

[root@localhost ~]# rpm –qa | grep iptables     
iptables-1.4.21-16.el7.x86_64    //如果有顯示這個,則說明已經安裝了iptables

安裝iptables

[root@localhost ~]# yum install –y iptables
[root@localhost ~]# yum install –y iptables-services

9.iptables的基本語法格式

iptables [-t 表名] 命令選項 [鏈名][條件匹配] [-j 目標動作或跳轉]

說明:表名、鏈名用於指定 iptables命令所操作的表和鏈,命令選項用於指定管理iptables規則的方式(比如:插入、增加、刪除、檢視等;條件匹配用於指定對符合什麼樣 條件的資料包進行處理;目標動作或跳轉用於指定資料包的處理方式(比如允許通過、拒絕、丟棄、跳轉(Jump)給其它鏈處理。

10.iptables命令的管理控制選項

-A 在指定鏈的末尾新增(append)一條新的規則

-D 刪除(delete)指定鏈中的某一條規則,可以按規則序號和內容刪除

-I 在指定鏈中插入(insert)一條新的規則,預設在第一行新增

-R 修改、替換(replace)指定鏈中的某一條規則,可以按規則序號和內容替換

-L 列出(list)指定鏈中所有的規則進行檢視

-E 重新命名使用者定義的鏈,不改變鏈本身

-F 清空(flush)

-N 新建(new-chain)一條使用者自己定義的規則鏈

-X 刪除指定表中使用者自定義的規則鏈(delete-chain)

-P 設定指定鏈的預設策略(policy)

-Z 將所有表的所有鏈的位元組和資料包計數器清零

-n 使用數字形式(numeric)顯示輸出結果

-v 檢視規則表詳細資訊(verbose)的資訊

-V 檢視版本(version)

-h 獲取幫助(help)

11.iptables命令的儲存

[root@localhost ~]# service iptables save

12.iptables的基本操作

清除所有規則

⑴清除預設表filter中所有規則鏈中的規則

[root@localhost ~]# iptables -F

⑵清除預設表filter中使用者自定義鏈中的規則

[root@localhost ~]# iptables –X
[root@localhost ~]# iptables -Z

⑶清除NAT表規則

[root@localhost ~]# iptables –F –t nat

設定鏈的預設策略,一般有二種方法

⑴允許所有的包,然後再禁止所有危險的包通過防火牆

[root@localhost ~]# iptables –P INPUT ACCEPT
[root@localhost ~]# iptables –P OUTPUT ACCEPT
[root@localhost ~]# iptables –P FORWARD ACCEPT

⑵首先禁止所有的包,然後根據需要的服務允許特定的包通過防火牆

[root@localhost ~]# iptables –P INPUT DROP
[root@localhost ~]# iptables –P OUTPUT DROP
[root@localhost ~]# iptables –P FORWARD DROP

向鏈中新增規則(下面的語句用於允許SSH連線本伺服器)

[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

向鏈中新增規則(下面的語句用於允許PING命令測試本伺服器)

[root@localhost ~]# iptables -A INPUT -p icmp -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p icmp -j ACCEPT

iptables的配置檔案

直接編輯iptables的配置檔案:

[root@localhost ~]# vim /etc/sysconfig/iptables
[root@localhost ~]# systemctl restart iptables.service              //最後重啟防火牆使配置生效
[root@localhost ~]# systemctl enable iptables.service              //設定防火牆開機啟動
[root@localhost ~]# iptables -L 
//檢視防火牆規則,預設的是-t filter,如果是nat表檢視,即iptables -t nat -L