歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

iptables知識理論的學習與實踐舉例

iptables知識理論的學習與實踐舉例   iptables是什麼?不解釋,直接進入正題。   iptables的命令使用結構是這樣的    iptables [-t table] command [match] [target]   下面一項一項來介紹   [-t table]部分   [-t table]選項允許使用標准表之外的任何表。表是包含僅處理特定類型信息包的規則和鏈的信息包過濾表。 有三個可用的表選項:filter、nat和mangle。該選項不是必需的,如果未指定,則filter作為缺省表。   filter  用於一般信息包的過濾,包含INPUT、 OUTPUT和FORWARD鏈。   INPUT:代表匹配目的 IP 是本機的數據包   OUTPUT:代表匹配源ip是本機的數據包   FORWARD:代表匹配穿過本機的數據包   nat  用於要轉發的信息包,包含PREROUTING、OUTPUT和POSTROUTING鏈。   PREROUTING: 修改目的地址(DNAT)     POSTROUTING:修改源地址 (SNAT)   mangle  這個表不是很理解,反正我沒有用過,嘻嘻   #############################################################################   command部分   command部分是iptables命令最重要的部分。它告訴iptables命令要做什麼,例如插入規則、 將規則添加到鏈的末尾或刪除規則。   -A <鏈名>   APPEND,追加一條規則(放到最後)    例如:   iptables -t filter -A INPUT -j DROP      在 filter 表的 INPUT 鏈裡追加一條規則(作為最後一條規則),將所有目的IP為本機的包全部丟棄。        在沒有開啟防火牆之前,我可以ping192.168.254.153這台機子,防火牆開後,ping不通了,而且我的ssh也斷開了,因為防火牆是將所有的包都丟棄了,自然包括ssh鏈接的包。由於無法再使用ssh鏈接,所以我只能到服務器上清空防火牆,清空後,就可以ping了              INPUT:  匹配目的IP 是本機的數據包        FORWARD  穿過本機的數據包,        PREROUTING用於修改目的地址(DNAT)        POSTROUTING,用於修改源地址(SNAT)    為了能保證我測試iptables用法時ssh不會斷開,所以在這裡我首先加上一條iptables規則 我還是開啟將所有目的IP為本機的包丟棄   

  然後我追加一條策略

   可以看到,我新增加的這個策略是在drop的後面,也就是先拒絕了所有包,所以網絡就不同了,上面也提到了,-A就是添加到INPUT的最後一條。

  這裡正好也用到了刪除鏈的命令iptables -D INPUT  -s 192.168.254.153 -j ACCEPT,所以-D的用法也就不用強調了   iptables -I INPUT  -s 192.168.254.153 -j ACCEPT   -----------------這裡的-I是指加規則放在第一個   從圖中也可以看到兩者的差別   將所有的命令重新總結一下,我用個表格對比一下       命令 功能描述 用法舉例 -A(或--append) 將一條規則添加到鏈的末尾 iptables -t filter -A INPUT -j DROP在input鏈的末尾添加一條規則, 將所有目的IP為本機的包全部丟棄 -D(或--delete) 將指定的規則或者規則的位置編號 從鏈中刪除 iptables -D INPUT  -s 192.168.254.153 -j ACCEPT將匹配該規則的包刪除;iptables -D OUPUT  3將OUPUT鏈中編號為3的規則刪除 -P(--policy) 設置鏈的默認目標,所有與鏈中任何不匹配的信息報都被強制使用此鏈的策略 iptables -P INPUT DROP丟棄所有與INPUT 鏈中任何規則都不匹配的信息包   -N(--new-chain) 創建一個新的鏈 iptables -N allowed-chain新建一個鏈     -F(--flush) 如果指定鏈名,那麼就會刪除該鏈,如果沒有指定,就會刪除所有的鏈 iptables -F INPUT 清空INPUT鏈 iptables -F   清空所有的鏈 -L(--list) 列出鏈中所有的規則 iptables -L  (INPUT)只列出(INPUT)鏈的策略 -I 將一條規則添加到鏈的第一個   iptables -I INPUT  -s 192.168.254.153 -j ACCEPT   ########################################################################### match部分 ----------匹配的條件   iptables命令的可選match部分指定信息包與規則匹配所應具有的特征(如源地址、目的地址、協議等)。匹配分為通用匹配和特定於協議的匹配兩大類。這裡將介紹可用於采用任何協議的信息包的通用匹配。還是再用個表格來對比吧。   參數 功能 舉例   -p(--protocol) 匹配協議,例如TCP、UDP、 ICMP iptables -A INPUT -p TCP,UDP 等同於iptales -A INPUT -p !ICMP都是匹配TCP和UDP的意思   -s (--source) 信息報源地址的匹配   iptables -A  OUTPUT -s 192.168.0.125 -d (--destination) 匹配信息包的目的IP   iptables -A  INPUT -d 192.168.0.125 ######################################################################## target 目標部分------------ 匹配到以後的動作     參數 功能 舉例 ACCEPT 當信息包與具有ACCEPT目標的規則完全匹配時, 就會被接受,允許它前往目的地   iptables -A INPUT  -s 192.168.254.153 -j ACCEPT   DROP 當信息包與具有DROP目標的規則完全匹配時,會阻止該信息包   iptables -A INPUT  -s 192.168.254.153 -j DROP REJECT 與DROP類似,但是比DROP好,REJECT會將錯誤信息發回給信息包的發送方,並且不會留下死套接字   iptables  -A  FORWARD -p TCP --dport 22 -j REJECT SNAT 源地址轉換,SNAT 支持轉換為單 IP,也支持轉換到 IP 地址池   iptables -t nat -A POSTROUTING -s 192.168.0.0/24  -j SNAT --to 1.1.1.1  將內網 192.168.0.0/24 的原地址修改為 1.1.1.1     ####################################################################### 簡單應用舉例   iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT --to-source 192.168.5.3   把所有10.8.0.0網段的數據包SNAT成192.168.5.3的ip然後發出去(源地址的轉換)       iptables  -t   filter  -A  INPUT  -p  icmp  -j   REJECT   ----------------拒絕其他主機ping     iptables  -t    filter   -I INPUT    -p  tcp  --dport  22   -j   reject  ------------禁止通過ssh訪問我的主機       iptables  -t    filter   -A  INPUT     -p  tcp  --dport  22 -s10.1.1.1  -j   ACCEPT ------------允許10.1.1.1通過ssh訪問我的主機       iptables -t filter -A INPUT -m mac --mac-source 00:14:5E:28:A3:20 -p tcp --dport 22 -j ACCEPT   iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT              -------------------------------------只有這個mac地址的用戶才能ssh訪問我的主機        iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE ---------將源地址是 192.168.0.0/24 的數據包進行地址偽裝       iptables  -t    filter   -A  INPUT   -i  eth0  -p  tcp  --dport  22   -j  ACCEPT    iptables  -t    filter   -A  INPUT   -i  eth1   -p  tcp  --dport  22   -j   reject   ------------------------------------------允許用戶通過eth0網口ssh過來  
Copyright © Linux教程網 All Rights Reserved