1. 程式人生 > 其它 >|NO.Z.00047|——————————|Applications|——|防火牆.V1|----------------------------------------------|3臺server|

|NO.Z.00047|——————————|Applications|——|防火牆.V1|----------------------------------------------|3臺server|



[Applications:防火牆.V1]                                                                                   [Applications.LBC&HAC$HPC] [|安全防護|防火牆|SNAT轉換|DNAT轉換|iptables指令碼|firewalld修改為iptables|3臺server|]








一、何為防火牆
1、防火牆 2、防火牆:
### --- 防火牆:

~~~     工作在主機邊緣處或者網路邊緣處對資料報文進行檢測,
~~~     並且能夠根據事先定義好的規則,對資料報文進行相應處理的模組
~~~     對於防火牆來說是放進不防出:出去的一般都是安全的。
~~~     工作在主機邊緣處或者網路邊緣處對資料報文進行檢測,
~~~     並且能夠根據事先定義好的規則,對資料報文進行相應處理的模組
~~~     對於防火牆來說是放進不防出:出去的一般都是安全的。
二、防火牆的分類
1、分類
### --- iptables:
~~~     是linux防火牆的配置工具;才是netfilter的配置工具。

### --- netfilter:
~~~     才是正真的內部防火牆,核心裡面實現的方式。它才是防火牆生效的部分。
### --- centos6.x:
~~~     netfilter核心態/應用態iptables;iptables分類方式比較容易理解。

### --- centos7.x:
~~~     netfilter核心態/應用態firewalld;firewalld的分類比較簡單
2、工作結構
3、版本變化
### --- kernel     2.0.x        firewall            ipfw(工具)
### --- kernel     2.2.x        firewall            ipchains(工具)

### --- kernel     2.4.x        netfilter            iptables(工具)
### --- kernel     3.13.x      netfilter            firewall(工具)   

三、iptables原理 1、INPUT
### --- Client發起資料報文到網絡卡處,路由表判斷這個使用者的請求是不是本機的,
~~~     若是本機的會交給netfilter的號請求,這個1號位置有對應的規則,
~~~     如果規則時80的話,這個報文請求有80規則的話這個資料報文就會進入到Apache服務,
~~~     去得到對應的資料報文。

### --- netfilter1號位置就是iptables的第一個入口,INPUT:鏈:規則就是寫在鏈上。
### --- 所有入站的報文都要經過INPUT鏈,才能到達使用者的上層空間。
2、OUTPUT
### --- 使用者有個CURL命令:
~~~     使用者想發起報文CURL把資料報文發到netfilter2號位置,路由表傳送給WEBSERVER網絡卡處。

### --- netfilter2:
~~~     對出去的資料報文進行過濾操作OUTPUT
3、FORWORD
### --- 開啟了路由轉發

~~~     client發起資料報文,並且開啟了路由轉發,目標地址指的是WEBSERVER,
~~~     這個路由器就會把這個資料包文轉發過去,經過netfilter3號介面,
~~~     netfilter3是處理資料報文轉發的功能:FORWORD
4、PREROUTING
### --- client想訪問WEBSERVER伺服器,正常情況下是訪問不到的,

~~~     可以通過防火牆的規則讓其可以訪問到
~~~     client發起資料報文進過路由表,路由表判斷是本機的還是外部的。
~~~     外部的會交給netfilter3 FORWORD轉發出去,
~~~     若是netfilter4 PREROUTING進行這個路由進行對應的修改,
~~~     netfilter在路由表前進行資料報文處理的介面。
5、POSTROUTING
### --- netfilter5 POSTROUTING在進行路由選擇後處理資料包
### --- 鏈放在表上。
6、五鏈
~~~     INPUT:處理入站資料包
~~~     OUTPUT:處理出站資料包
~~~     FORWARD:處理轉發資料包

~~~     POSTROUTING鏈:在進行路由選擇後處理資料包
~~~     PREROUTING鏈:在進行路由選擇前處理資料包
7、四表
### --- raw表:
~~~     確定是否對該資料包進行狀態跟蹤;一旦資料包經過防火牆之後,
~~~     正常情況下會消耗資源,可以設定跳出。

### --- mangle表:
~~~     為資料包設定標記;在資料包裡打上對應標籤的功能。
### --- nat表:
~~~     修改資料包中的源、目標IP地址或埠;多個內網使用者訪問公網,SNAT,DNAT

### --- filter表:
~~~     確定是否放行該資料包(過濾)
8、防火牆結構:不同的表下對應的鏈是不一樣的。
四、防火牆順序
### --- 順序表
~~~     raw——>mangle——>nat——>filter

### --- 鏈順序
~~~     入站:PREROUTING路由選擇前處理資料包     INPUT入站資料包
~~~     出站:OUTPUT出站資料包     POSTROUTING路由選擇後處理資料包
~~~     轉發:PREROUTING路由選擇前處理資料包     FORWARD轉發資料包     POSTROUTING路由選擇後處理資料包
### --- 規則順序
~~~     按順序依次檢查,匹配即停止(LOG策略例外):LOG:打了一個日誌,並不做任何處理。
~~~     若找不到相匹配規則,則按該鏈的預設策略處理。

### --- 資料匹配流程圖
~~~     網路A,網路B不同的網路之間完成資料請求。
~~~     網路A發起資料報文到本機的應用伺服器先經過raw表mangle表nat表通過路由表的選擇到filter表mangle表到目標。
五、iptables語法規則
### --- 書寫規則
~~~     語法構成:iptables     [-t 表名]     選項     [鏈名]      [條件]      [-j 控制型別]

### --- 幾個注意事項
~~~     不指定表名時,預設指filter表
~~~     不指定鏈名時,預設指表內的所有鏈
~~~     除非設定鏈的預設策略,否則必須制定匹配條件
~~~     選項,鏈名,控制型別使用大寫字母,其餘均為小寫
### --- 常見動作型別

~~~     ACCEPT:允許通過
~~~     DROP:直接丟棄,不給出任何迴應
~~~     REJECT:拒絕通過,必要時給出提示
~~~     LOG:記錄日誌資訊,然後傳給下一條規則繼續匹配
~~~     SNAT:修改資料包源地址
~~~     DNAT:修改資料包目的地址
~~~     REDIRECT:重定向
### --- 新增新的規則

~~~     -A:在鏈的末尾追加一條規則
~~~     -I:在鏈的開頭(或指定序號)插入一條規則
~~~     iptables -t filter -A INPUT -p tcp -j ACCEPT:                  // 當有tcp協議的入站請求的時候放行。
~~~     iptables -I INPUT -p udp -j ACCEPT                              // 在input鏈的開頭增加一條規則。當有udp連線的時候放行
~~~     iptables -I INPUT 2 -p icmp -j ACCEPT                           // 在input鏈的第二個協議上新增一個協議ICMP連線放行
### --- 檢視規則列表

~~~     -L:列出所有的規則條目
~~~     -n:以數字形式顯示地址,埠等資訊
~~~     -v:以更詳細的方式顯示規則資訊
~~~     --line-numbers:檢視規則時,顯示規則的序號
iptables -L INPUT --line-numbers
~~~     Chain INPUT  (policy ACCEPT)
~~~     num         target         port         opt         source             destination
~~~      1          ACCEPT        udp         --          anywhere           anywhere
~~~      2           ACCEPT       icmp        --         anywhere            anywhere
### --- 刪除,清空規則

~~~     -D:刪除鏈內指定序號(或內容)的一條規則
~~~     -F:清空所有的規則
~~~     iptables -D INPUT 3
~~~     iptables -n -L INPUT
~~~     Chain INPUT (policy ACCEPT)
~~~     target            prot            opt            source            destination
~~~     ACCEPT       udp              --            0.0.0.0/0            0.0.0.0/0 
~~~     ACCEPT       icmp            --            0.0.0.0/0            0.0.0.0/0
~~~     ACCEPT       tcp               --            0.0.0.0/0            0.0.0.0/0      
### --- 設定預設策略

~~~     -p:為指定的鏈設定預設規則
~~~     iptables -t filter -P FORWARD DROP
~~~     iptables -P OUTPUT ACCEPT








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)