iptables學習筆記1

原文鏈接:http://blog.chinaunix.net/uid-9950859-id-98277.html


要在網上傳輸的數據會被分成許多小的數據包,我們一旦接通了網絡,會有很多數據包進入,離開,或者經過我們的計算機。

      首先我們要弄明白,防火牆將怎麼對待 這些數據包。這些數據包會經過一些相應的規則鏈,比如要進入你的計算機的數據包會首先進入INPUT鏈,從我們的計算機發出的數據包會經過 OUTPUT鏈,如果一臺計算機做一個網絡的網關(處於內網和外網兩個網絡連接的兩臺計算機,這兩臺計算機之間相互通訊的數據包會經過這臺計算機,這臺計 算機即相當於一個路由器),可能 會有很多數據經過這臺計算機,那麼這些數據包必經FORWARD鏈,FORWARD鏈即數據轉發鏈。明白了這些“鏈”的概念我們才能進一步學習使用 iptables。

       現在我們再來分析一下iptables規則是如何工作的,假如我們要訪問網站www.yahoo.com,我們要對www.yahoo.com發出請 求,這些數據包要經過OUTPUT鏈,在請求發出前,Linux的內核會在OUTPUT鏈中檢查有沒有相應的規則適合這個數據包,如果沒有相應的規 則,OUTPUT鏈還會有默認的規則,或者允許,或者不允許(事實上,不允許有兩種,一種是把請求拒絕,告訴發出請示的程序被拒絕;還有一種是丟棄,讓請 求發出者傻等,直到超時)。如果得到允許,請求就發出了,而www.yahoo.com服務器返回的數據包會經過INPUT鏈,當然,INPUT鏈中也會 有相應的規則等着它。 

    下面我們介紹幾個iptable的命令   
     iptables -L [-t filter]   
    這條命令是顯示當前有什麼已經設置好的防火牆規則,可能的顯示結果如下: 
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

      從這裏我們可以看出,
iptables 有三個鏈分別是 INPUT OUTPUT 和FORWARD.
其中
INPUT 是外部數據要進過我們主機的第一外關卡(當然你前面也可以再加硬件防火牆).
OUTPUT 是你的主機的數據送出時要做的過綠卡
FORWARD   是轉發 你在NAT時纔會用到
要設置iptables 主要是對這三條鏈進行設置,當然也包括-nat的另外三個鏈 我們以後再說
你要用iptables 你就得啓到它 啓動命令 service iptables restart 
iptables的默認設置爲 三條鏈都是ACCEPT 如下:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

以上信息你可以用 iptables -L看到
總體來說iptables可以有二種設置
1.默認允許,拒絕特別的
2.默認拒絕,允許特別的
二者都有自己有特點,從安全角度看 個人偏向於第二種,就是默認拒絕,允許特別的.但iptalbes 默認是第一種 默認允許,拒絕特別的 
你可以用命令改變默認值來達到我們的要求 命令如下
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

你再用iptables -L查看一下就會覺得默認值以改了
先來談炎幾個參數XZFL
-F 清除規則
-X 清除鏈
-Z 將鏈的記數的流量清零
一般來說 再創建訪問規則時 都會將原有的規則清零 這是一個比較好的習慣,因爲某些規則的存在會影響你建的規則.
基本語法:
iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface]
      [-p tcp,udp.icmp,all] [-s ip/nerwork] [--sport ports]
      [-d ip/netword] [--dport ports] [-j ACCEPT DROP]

以上是iptables的基本語法
A 是添加的意思
I 是播入的意思
io 指的是數據要進入或出去所要經過的端口 如eth1 eth0 pppoe等 
p 你所要指定的協議
-s 指源地址 可是單個IP如192.168.2.6 也可以是一個網絡 192.168.2.0/24 還可以 是一個域名 如163.com 如果你填寫的域名系統會自動解析出他的IP並在iptables裏 顯示
--sport 來源端口
-d 同-s相似 只不過他指的是目標地址 也可以是IP 域名 和網絡
--dport 目標端口
-j 執行參數 ACCEPT DROP
注意:如果以有參數存在 則說明全部接受
1 如我要來自己l0接口的數據全部接受,我們可以寫成這樣:
    iptables -A INPUT -i lo -j ACCEPT
2 如果我們想接受192.168.2.6這個IP地址傳來的數據我們可以這樣寫
    iptablse -A INPUT -i eth1 -p tcp -s 192.168.2.6 -j ACCEPT
3 如果我們要拒絕來自己192.168.2.0/24這個網的telnet連接
    iptablse -A INPUT -i eth1 -p udp -s 192.168.2.0/24 
    --sport 23 -j DROP

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章