日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

防火墙--iptables

發布時間:2025/3/15 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 防火墙--iptables 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iptables只是Linux防火墻的管理工具而已。真正實現防火墻功能的是netfilter,它是Linux內核中實現包過濾的內部結構。

iptables具體是如何去過濾各種規則的呢?請看下面的四表五鏈

四表五鏈概念

  • filter表——過濾數據包
  • Nat表——用于網絡地址轉換(IP、端口)
  • Mangle表——修改數據包的服務類型、TTL、并且可以配置路由實現QOS
  • Raw表——決定數據包是否被狀態跟蹤機制處理
  • INPUT鏈——進來的數據包應用此規則鏈中的策略
  • OUTPUT鏈——外出的數據包應用此規則鏈中的策略
  • FORWARD鏈——轉發數據包時應用此規則鏈中的策略
  • PREROUTING鏈——對數據包作路由選擇前應用此鏈中的規則(所有的數據包進來的時侯都先由這個鏈處理)
  • POSTROUTING鏈——對數據包作路由選擇后應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理)

當主機收到一個數據包后,數據包先在內核空間中處理,若發現目的地址是自身,則傳到用戶空間中交給對應的應用程序處理,若發現目的不是自身,則會將包丟棄或進行轉發。

iptables實現防火墻功能的原理是:在數據包經過內核的過程中有五處關鍵地方,分別是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,稱為鉤子函數,iptables這款用戶空間的軟件可以在這5處地方寫規則,對經過的數據包進行處理,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理數據包”。

iptables中定義有5條鏈,說白了就是上面說的5個鉤子函數,因為每個鉤子函數中可以定義多條規則,每當數據包到達一個鉤子函數時,iptables就會從鉤子函數中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鉤子函數中任一條規則,iptables就會根據該函數預先定義的默認策略來處理數據包

iptables中定義有表,分別表示提供的功能,有filter表(實現包過濾)、nat表(實現網絡地址轉換)、mangle表(實現包修改)、raw表(實現數據跟蹤),這些表具有一定的優先級:raw-->mangle-->nat-->filter

一條鏈上可定義不同功能的規則,檢查數據包時將根據上面的優先級順序檢查

小結一下:

數據包先經過PREOUTING,由該鏈確定數據包的走向:

? ? 1、目的地址是本地,則發送到INPUT,讓INPUT決定是否接收下來送到用戶空間,流程為①--->②;

? ? 2、若滿足PREROUTING的nat表上的轉發規則,則發送給FORWARD,然后再經過POSTROUTING發送出去,流程為:?①--->③--->④--->⑥

主機發送數據包時,流程則是⑤—>⑥

iptables安裝配置

linux一般默認都已經安裝iptables,只需要開啟服務即可:service iptables start

iptables規則書寫

基本語法:iptables [-t 表] [操作命令] [鏈][規則匹配器][-j 目標動作]

說明支持的鏈
raw一般是為了不再讓iptables對數據包進行跟蹤,提高性能PREROUTING、OUTPUT
mangle對數據包進行修改五個鏈都可以
nat進行地址轉換PREROUTING、OUTPUT、POSTROUTING
filter(默認)對包進行過濾INPUT、FORWARD、OUTPUT

常用操作命令

說明
-A在指定鏈尾部添加規則
-D刪除匹配的規則
-R替換匹配的規則
-I

在指定位置插入規則


例:iptables?-I?INPUT?1?--dport?80?-j?ACCEPT


(將規則插入到filter表INPUT鏈中的第一位上)

-L/S列出指定鏈或所有鏈的規則
-F

刪除指定鏈或所有鏈的規則

-N

創建用戶自定義鏈


例:iptables?-N?allowed

-X

刪除指定的用戶自定義鏈

-P

為指定鏈設置默認規則策略,對自定義鏈不起作



例:iptables -P OUTPUT DROP

-Z將指定鏈或所有鏈的計數器清零
-E

更改自定義鏈的名稱


例:iptables?-E?allowed?disallowed

-n

ip地址和端口號以數字方式顯示


例:iptables -Ln

常見規則匹配器說明
-p tcp|udp|icmp|all匹配協議,all會匹配所有協議
-s addr[/mask]匹配源地址
-d addr[/mask]匹配目標地址
--sport port1[:port2]匹配源端口(可指定連續的端口)
--dport port1[:port2]匹配目的端口(可指定連續的端口)
-o interface

匹配出口網卡,只適用FORWARD、POSTROUTING、OUTPUT。


例:iptables?-A?FORWARD?-o?eth0

-i interface

匹配入口網卡,只使用PREROUTING、INPUT、FORWARD。

--icmp-type?匹配icmp類型(使用iptables -p icmp -h可查看可用的ICMP類型)
--tcp-flags mask comp

匹配TCP標記,mask表示檢查范圍,comp表示匹配mask中的哪些標記。


例:iptables -A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT


(表示匹配SYN和ACK標記的數據包)

目標動作說明
ACCEPT允許數據包通過
DROP丟棄數據包
REJECT丟棄數據包,并且將拒絕信息發送給發送方
SNAT

源地址轉換(在nat表上)


例:iptables?-t?nat?-A?POSTROUTING?-d?192.168.0.102?-j?SNAT?--to?192.168.0.1?

DNAT

目標地址轉換(在nat表上)


例:iptables?-t?nat?-A?PREROUTING?-d?202.202.202.2?-j?DNAT?--to-destination?192.168.0.102

REDIRECT

目標端口轉換(在nat表上)


例:iptables -t nat -D PREROUTING -p tcp --dport 8080 -i eth2.2 -j REDIRECT --to 80

MARK

將數據包打上標記


例:iptables?-t?mangle?-A?PREROUTING?-s?192.168.1.3?-j?MARK?--set-mark?60

注意要點:

? ? 1、目標地址轉換一般在PREROUTING鏈上操作

? ? 2、源地址轉換一般在POSTROUTING鏈上操作

?

保存和恢復iptables規則

? ? 使用iptables-save可以保存到特定文件中

?


1


? ? iptables-save?>/etc/sysconfig/iptables_save

?

? ? 使用iptables-restore可以恢復規則

?


1


? ? iptables-restore</etc/sysconfig/iptables_save

?

iptables的進階使用

? ?1、limit限制流量:

? ? ? ? -m limit --limit-burst 15? ? ? ? #設置一開始匹配的最���數據包數量

? ? ? ? -m limit --limit 1000/s? ? ? ? ? ? #設置最大平均匹配速率

? ? ? ? -m limit --limit 5/m --limit-burst 15? ? ?#表示一開始能匹配的數據包數量為15個,每匹配到一個,? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? limit-burst的值減1,所以匹配到15個時,該值為0,以后每過? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 12s,limit-burst的值會加1,表示又能匹配1個數據包

例子:

?


1
2


iptables?-A?INPUT?-i?eth0?-m?limit?--limit?5/m?--limit-burst?15?-j?ACCEPT?
iptables?-A?INPUT?-i?eth0?-j?DROP

?

? ? 注意要點:

? ? ? ? 1、--limit-burst的值要比--limit的大

? ? ? ? 2、limit本身沒有丟棄數據包的功能,因此,需要第二條規則一起才能實現限速的功能

? ? 2、time :在特定時間內匹配

-m time?說明
--monthdays day1[,day2]在每個月的特定天匹配
--timestart hh:mm:ss在每天的指定時間開始匹配
--timestop hh:mm:ss在每天的指定時間停止匹配
--weekdays day1[,day2]在每個星期的指定工作日匹配,值可以是1-7

例子:

?


1
2


iptables?-A?INPUT?-i?eth0?-m?time?--weekdays?1,2,3,4?-jACCEPT
iptables?-A?INPUT?-i?eth0?-j?DROP

?

? ? 3、ttl:匹配符合規則的ttl值的數據包

參數說明
--ttl-eq 100匹配TTL值為100的數據包
--ttl-gt 100匹配TTL值大于100的數據包
--ttl-lt 100匹配TTL值小于100的數據包

例子:

?


1


iptables?-A?OUTPUT?-m?ttl?--ttl-eq?100?-j?ACCEPT

?

? ? 4、multiport:匹配離散的多個端口

參數說明
--sports port1[,port2,port3]匹配源端口
--dports port1[,port2,port3]匹配目的端口
--ports port1[,port2,port3]匹配源端口或目的端口

例子:

?


1


iptables?-A?INPUT?-m?multiport?--sports?22,80,8080?-j?DROP

?

? ?

? ? 5、state:匹配指定的狀態數據包

參數說明
--state valuevalue可以為NEW、RELATED(有關聯的)、ESTABLISHED、INVALID(未知連接)

例子:

?


1


iptables?-A?INPUT?-m?state?--state?NEW,ESTABLISHED?-j?ACCEPT

?

? ? 6、mark:匹配帶有指定mark值的數據包

參數說明
--mark value匹配mark標記為value的數據包

例子:

?


1


iptables?-t?mangle?-A?INPUT?-m?mark?--mark?1?-j?DROP

?

? ? 7、mac:匹配特定的mac地址

例子:

?


1


iptables?-A?FORWARD?-m?mac?--mac-source?00:0C:24:FA:19:80?-j?DROP

轉載于:https://www.cnblogs.com/jinxuan/p/7513681.html

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的防火墙--iptables的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。