Linux下防火牆iptables設置

我手裏有本《鳥哥的Linux私房菜-服務器架設篇》。其中的第9章詳細講解了防火牆的原理與配置方式。html

基礎知識

Linux系統內核內建了netfilter防火牆機制。Netfilter(數據包過濾機制),所謂的數據包過濾,就是分析進入主機的網絡數據包,將數據包的頭部數據提取出來進行分析,以決該鏈接爲放行或阻擋的機制。Netfilter提供了iptables這個程序來做爲防火牆數據包過濾的命令。Netfilter是內建的,效率很是高。服務器

咱們能夠經過iptables命令來設置netfilter的過濾機制。網絡

iptables裏有3張表:tcp

> Filter(過濾器),進入Linux本機的數據包有關,是默認的表。
> NAT(地址轉換),與Linux本機無關,主要與Linux主機後的局域網內計算機相關。
> Mangle(破壞者),這個表格主要是與特殊的數據包的路由標誌有關(一般不用涉及到這個表的修改,對這個表的修改破壞性很大,慎改之)。spa


每張表裏都還有多條鏈:htm

Filter:INPUT, OUTPUT, FORWARD
NAT:PREROUTING, POSTROUTING, OUTPUT
Mangle:PREROUTING, OUTPUT, INPUT, FORWARDblog


以下爲iptables內建各表與鏈的相關性
接口

當一個數據包轉給Netfilter後,Netfilter會按上面的流程依次比對每一張表。若是數據包符合表中所述,則進行相應的處理。ip


iptables命令的使用

基本格式:iptables [-t table] -CMD chain CRETIRIA -j ACTION路由

-t table:3張表中的其中一種filter, nat, mangle,若是沒有指定,默認是filter。
CMD:操做命令。查看、添加、替換、刪除等。
chain:鏈。指定是對錶中的哪條鏈進行操做,如filter表中的INPUT鏈。
CRETIRIA:匹配模式。對要過濾的數據包進行描述
ACTION:操做。接受、拒絕、丟棄等。


查看

格式:iptables [-t table] -L [-nv]


修改

添加

格式:iptables [-t table] -A chain CRETIRIA -j ACTION

將新規則加入到表table(默認filter)的chain鏈的最後位置


插入

格式:iptables [-t table] -I chain pos CRETIRIA -j ACTION

將新規則插入到table表(默認filter)chain鏈的pos位置。原來以後的規則都日後推一位。pos的有效範圍爲:1 ~ num+1


替換

格式:iptables [-t table] -R chain pos CRETIRIA -j ACTION

用新規則替換table表(默認filter)chain鏈的pos位置的規則。pos的有效範圍爲:1 ~ num


刪除

格式:iptables [-t table] -D chain pos

刪除table表(默認filter)chain鏈的pos位置的規則。pos的有效範圍爲:1 ~ num


包匹配(CRETIRIA)

上面沒有介紹CRETIRIA的規則,在這小節裏詳細介紹。包匹配就是用於描述須要過濾的數據包包頭特殊的字段。

指定網口:

  -i :數據包所進入的那個網絡接口,例如 eth0、lo等,需與INPUT鏈配合
  -o: 數據包所傳出的那麼網絡接口,需與OUTPUT鏈配合

指定協議:

  -p:tcp, udp, icmp或all

指定IP網絡:

  -s:來源網絡。能夠是IP或網絡
       IP: 192.168.0.100
       網絡: 192.168.0.0/24 或 192.168.0.0/255.255.255.0 都可
       能夠在前加 ! 表示取反

  -d:目標網格。同 -s

指定端口:

  --sport:指定來源端口。能夠是單個端口,還能夠是連續的端口,例如:1024:65535。

  --dport:指定目標端口。同--sport

  注意:要指定了tcp或udp協議纔會有效。

指定MAC地址:

  -m mac --mac-source aa:bb:cc:dd:ee:ff

指定狀態:

  -m state --state STATUS

   STATUS能夠是:

   > INVALID,無效包
   > ESTABLISHED,已經鏈接成功的鏈接狀態
   > NEW,想要新立鏈接的數據包
   > RELATED,這個數據包與主機發送出去的數據包有關,(最經常使用)

例如:只要已創建鏈接或與已發出請求相關的數據包就予以經過,不合法數據包就丟棄

  -m state --state RELATED,ESTABLISHED


ICMP數據比對

ping操做發送的是ICMP包,若是不想被ping到,就能夠拒絕。

  --icmp-type TYPE

  TYPE以下:

    8    echo-request(請求)
    0    echo-reply(響應)

  注意:須要與 -p icmp 配合使用。


操做(ACTION)

  DROP,丟棄

  ACCEPT,接受

  REJECT,拒絕

  LOG,跟蹤記錄,將訪問記錄寫入 /var/log/messages


保存配置

將新設置的規則保存到文件

格式:iptables-save [-t table]

將當前的配置保存到 /etc/sysconfig/iptables


其它

格式:iptables [-t table] [-FXZ]

  -F :請除全部的已制訂的規則
  -X :除掉全部用戶「自定義」的chain
  -Z :將全部的統計值清0

 

參考文章

應用實例:http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html

相關文章
相關標籤/搜索