?iptables簡單介紹

iptables簡單介紹


什么是防火墻?

防火墻是工作在主機或網絡邊緣,能夠對其所匹配到的報文根據事先定義好的規則作出相應處理的組件,可以是軟件,也可以是硬件,還能軟硬結合實現。

UNIX/Linux中對防火墻的實現

早期在openBSD中通過內核中的ipfw實現簡單的數據報過濾功能、后來在Linux 2.2內核中使用ipchains來取代,意為鏈、后來在Linux 2.4內核中被iptables所取代,意為表。

netfilter/iptables原理

事實上Linux 2.6實現防火墻是通過內核中的netfilter框架完成的,iptables其實不止指的是一個在用戶空間的應用程序,其實還是內核中的一個存放特定規則的模塊,所以iptables的全稱應該為netfilter/iptables

netfilter的鉤子函數

網絡防火墻一般都設置在整個網絡的邊緣,才能對所有出入的數據報進行分析和進行相應的處理,作為一個主機防火墻應該在數據報文出入主機時在TCP/IP協議棧的特定位置對數據報文進行攔截并執行對應動作,那么在netfilter架構中分別有五個位置可以作為防火墻的攔截點,我們稱它們為hook function(鉤子函數)。

數據流經過netfilter大致路程圖

下載.png

四表五鏈

五鏈

PREROUTING

數據報文進入TCP/IP協議棧路由選擇前會被PREROUTING“鉤”住,分析其數據包對其相應操作,注意PREROUTING鏈不能對數據包進行過濾,PREROUTING鏈是整個netfilter框架中的第一關

INPUT

通過PREROUTING后進行路由選擇如果數據包是進入本機內部,則轉發到INPUT鏈,INPUT鏈能夠通過實現定義好的規則對數據包進行篩選如果被匹配則執行相應動作,INPUT鏈可以對數據包進行過濾,INPUT鏈是數據報文進入用戶空間的必經之路

FORWARD

通過PREROUTING后進行路由選擇如果數據包只是通過本機進行轉發,則轉發到FORWARD鏈,FORWARD鏈能夠通過事先定義好的規則對數據包進行匹配檢查并執行相應動作,INPUT鏈可以對數據包進行過濾,正是有了FORWARDiptables才能夠作為一個網絡防火墻運行在網絡邊緣對進出網絡的數據報文進行過濾

OUTPUT

數據包從用戶空間的進程通過路由選擇特定的網卡接口后轉到OUTPUT鏈,OUTPUT鏈能夠通過實現定義好的規則對數據報文進行匹配檢查并執行相應動作,OUTPUT鏈可以對數據包進行過濾

POSTROUTING

數據包從OUTPUTFORWARD轉發而來,到達netfilter框架中的最后一關,分析數據包并執行對應動作,和POSTROUTING一樣不能對數據包進行過濾

四表

iptables之所以被稱為iptables是其過濾數據包的規則是通過四張表的來定義

filter

整個iptables最關鍵的表,實現數據包的過濾,可以由INPUT,FORWARD,OUTPUT這三個能夠實現過濾功能的鏈組成

nat

學過網絡的同學應該都知道NAT(Network Address Translation)網絡地址轉換,正是應為有了這項技術才使得我們現今還能夠有IPv4可以使用,在iptables中也可以實現NAT的相關功能, 例如SNAT, DNAT, MASQUERADE等功能,nat表可以由PREROUTING, FORWARD, POSTROUTING組成

mangle

mangle可以對匹配到的報文的數據報進行拆解,做出修改,重新封裝等操作,一般我們用的很少,五個鏈都能實現mangle的功能

raw

raw關閉NAT的連接追蹤機制,防止在高并發的訪問下服務器的內存溢出導致故障,可由PREROUTING,OUTPUT實現

定義規則的”潛規則”

添加規則時的考量點

  1. 實現哪些功能: 判斷添加在哪張表上

  2. 報文的流經路徑: 判斷添加在哪個鏈上

鏈上規則的次序

1.同類規則(訪問同一程序),匹配范圍小的放在上面 
2.不同類的規則(訪問不同應用), 匹配到報文頻率高的放上面 
3.將那些可由一條規則描述的多個規則合并成一個 
4.設置默認策略

總結

本文只對iptables進行原理方面的簡單介紹,作者水平不高,如果發現錯誤還望海涵并及時通知我,在這里不勝感激。 
作者:AnyISalIn 
感謝:MageEdu

原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/13943

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-03-31 18:24
下一篇 2016-03-31 22:40

相關推薦

  • 文件管理

    compress:壓縮命令 -d:解壓縮(=uncompress) -c:結果輸出到標準輸出,不刪除原文件 -v:顯示詳情 zcat:不解壓文件查看內容   gzip:壓縮命令 -d:解壓縮 -c:結果輸出到標準輸出,不刪除原文件 -#:1-9代表壓縮比,默認為6 zcat:不解壓文件查看內容   bzip2:壓縮命令 -k:保留原文件 …

    Linux干貨 2016-08-18
  • 基于Python和MoviePy庫實現數據的動態展示

    基于Python和MoviePy庫實現數據的動態展示 (翻譯:以馬內利)  原文鏈接:Data Animations With Python and MoviePy   Python擁有很多實現數據可視化的庫,但是很少可以展示GIFs的動態視圖。 這篇博客主要介紹怎樣使用MoviePy庫作為一個其他可視化庫的通用插件。 Movi…

    2015-03-26
  • N25-第二周作業

    1、linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示 linux上處理目錄的常用命令:     ls :列出目錄     cd :切換目錄     pwd:顯示當前工作路徑    &nbs…

    Linux干貨 2016-12-13
  • CentOS上配置https服務

    在CentOS6.9(http2.2)配置https   創建前準備:       安裝opensssl包  和 http2.2 1、在主機(192.168.109.100)創建私有CA   (1)獲取私鑰       …

    2017-06-04
  • 第5周

    第5周 1.顯示當前系統上root,fedora或user1用戶的默認shell。 [root@node1 ~]# grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f 7 /bin/bash /bin/bash /bin/bash [root@node1 ~]# grep “^\(root…

    Linux干貨 2017-07-27
  • test1

    test 

    Linux干貨 2016-09-15
欧美性久久久久