Linux 防火牆iptables 學習筆記(一)入門要領

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

首先我們要弄明白,防火牆將怎麼對待這些數據包。這些數據包會經過一些相應的規則鏈,比如要進入你的計算機的數據包會首先進入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 restartiptables的默認設置爲三條鏈都是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



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