久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

iptables/netfilter進階

  在上一章當中我們介紹了iptables的介紹以及它的基本使用,下面我們開始介紹iptables的命令用法以及iptables是如何工作的。

1、回顧

  我們回顧一下上一章節的內容,在上一章節中我們講述的是iptables的基本概念以及命令格式,同時講述規則鏈與表的概念,那么現在我們就要說一下iptables的相關命令。

2、iptables的相關命令

  其實使用iptables命令,都要遵從"四表五鏈",那么在前一章我們說過,iptables的格式如下

# iptables [-t table] COMMAND [chain] [PARAMETERS] [-m matchname [per-match-options]] [-j targetname [per-target-options]]

  那么下面我們依據這個命令的格式,來用實例熟悉iptables命令。
  (1) 開放本機為192.168.1.16的80端口,然后我們拒絕3306端口進行響應。

# iptables -A INPUT -d 192.168.1.16 -p tcp --dport 80 -j ACCEPT# iptables -A INPUT -d 192.168.1.16 -p tcp --dport 3306 -j DROP

  以上的命令是很簡單的,那么為什么在INPUT上將80,3306端口寫上去呢?這是因為別人發請求的時候,我響應給客戶端時,我變成了"目標",而我并不知道源地址,更別說客戶端用那個端口給我進行響應了,但是我知道目標IP和目標端口是誰,只要在入棧報文處進行處理給它實施攔截,就可以得到有效的控制。
不過以上的規則當中,我們可以使用顯式擴展-m當中的multiport以離散或連續的方式指定多個端口,最多達到15個,不過必須要統一起來,要么就放行,要么就攔截。

[!] --source-ports, --sports port[,port|,port:port]...  指定多個端口
[!] --destination-ports, --ports port[,port|,port:port]...  指定多個目標端口

  示例如下:

# iptables -A INPUT -d 192.168.1.16 -p tcp -m multiport --dports 80,3306 -j ACCEPT

  同樣,在OUTPUT鏈上,我們可以不允許放行,即使在INPUT鏈中能進來,但不響應也是不行···的。

# iptables -A OUTPUT -s 192.168.1.15 -p tcp -m multiport --sports 22,80 -j DROP

  注意:這樣的實驗還是并不推薦,因為這樣會把遠程回話給拒絕掉,如果說要做這個實驗的話,還是把22號端口放行,如果真的做了這個事情,需要在實體機上執行清空規則命令

# iptables -F

  (2) 拒絕從192.168.1.20-30范圍的IP地址拒絕訪問192.168.1.15的80端口

# iptables -A INPUT -d 192.168.1.15 -p tcp --dport 80 -m iprange --src-range 192.168.1.20-192.168.1.30 -j DROP

  在顯示擴展中,iprange是匹配ip的范圍,是以連續的方式來指明多個ip地址的匹配條件,一般有兩種方式:

[!] --src-range from[-to]
[!] --dst-range from[-to]

  (3) 在周六周日的兩點半到六點半期間,所有來源于192.168.24.0/24的范圍網段禁止訪問192.168.1.15的80端口。

# iptables -A INPUT -s 192.168.24.0/24 -d 192.168.1.15 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays 6,7 -j DROP# iptables -A INPUT -s 192.168.24.0/24 -d 192.168.1.15 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays 6,7 --kerneltz -j DROP

  以上這兩種命令的意思大致是一樣的,time就是顯示擴展之一的選項,--timestart是開始的時間,那么--timestop是停止的時間,--weekdays表示日期,可以用數字表示或者是單詞,與眾不同的是第二個是多個--kerneltz,那么這個意思是轉換成內核所設置的時間,也就是說,第一段命令使用的是UTC時間。
  (4) 帶有凡事從192.168.1.15響應為"gay"字符串,從80端口響應出去的全部屏蔽掉。

# iptables -A OUTPUT -s 192.168.1.15 -p tcp --sport 80 -m string --algo bm --string "gay" -j DROP

  顯示擴展string是報文中的應用層數據作為字符串模式的匹配檢測,以上的命令中如果匹配到的話就丟棄掉,其中--algo是指明算法的,算法共有兩個,一個是bm,另一個是kmp;檢測的模式也有兩種,一個是檢測字符串的模式,另一個是要檢測字符串的模式,但是是16進制的,如下以此顯示:

[!] --string pattern    要檢測的字符串模式[!] 
--hex-string pattern    要檢測字符串模式,16進制

  (5) ping請求最少達到3個,最多不能達到5個。

# iptables -A INPUT -d 192.168.1.15 -p icmp --icmp-type 8 -m limit --limit 3/minute --limute-burst 5 -j ACCEPT

  這是limit擴展,基于收發報文的速率匹配,在這里面,還有令牌桶過濾器,有了這個過濾器,我們可以限制它的數量,以這段命令為例,從iptables的角度看,就是開始的時候,有五個通行證,用完之后每20秒增加一個,以用戶的角度看,就是每一分鐘增加三個或每分鐘只能過三個,要是想20分鐘過一個,只能寫成–limit 3/hour –limit-burst 5。所以,以下子命令的顯示為:

--limit rate[/second|/minute|/hour|/day]
--limit-burst number

  (6) 訪問192.168.1.15的22號端口和80端口的NEW狀態以及ESTABLISHED狀態進入,之后只能允許ESTABLISHED放行。

# iptables -A INPUT -d 192.168.1.26 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT# iptables -A OUTPUT -s 192.168.1.26 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT# iptables -P INPUT DROP# iptables -P FORWARD DROP# iptables -P OUTPUT DROP

  這屬于是state擴展,這才使得讓iptables擁有帶狀態控制的防火墻功能,它是根據"連接追蹤機制"去檢查防火墻的狀態,我們稱之為conntrack機制,它是去檢查連接狀態,去追蹤本機上的請求和響應之間的關系,狀態有如下幾種:

NEW 發出新請求,連接追蹤模版中不存在此連接的相關信息條目;因此,將其識別為第一次發出請求(新連接請求)
ESTABLISHED 這是NEW狀態之后,連接追蹤模版中為其建立的條目失敗之前期間內所進行的通信狀態(已建立的連接)
INVALID 無法識別的連接
RELATED 相關聯的連接,當前是一個新請求,但附屬于某個已存在的連接
UNTRACKED   未追蹤的連接

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 石嘴山市| 眉山市| 沧州市| 福州市| 乌拉特中旗| 通道| 板桥市| 清丰县| 磴口县| 菏泽市| 高州市| 剑河县| 荥经县| 汉中市| 吴堡县| 博白县| 铜鼓县| 九江县| 东光县| 大关县| 蒙城县| 区。| 沛县| 青神县| 石家庄市| 贵州省| 陵川县| 玉山县| 洛隆县| 晋中市| 青田县| 新丰县| 松滋市| 神农架林区| 额敏县| 花莲市| 滁州市| 凤冈县| 双鸭山市| 南丰县| 西和县|