天天看點

Linux下防火牆iptables設定

linux系統核心内建了netfilter防火牆機制。netfilter(資料包過濾機制),所謂的資料包過濾,就是分析進入主機的網絡資料包,将資料包的頭部資料提取出來進行分析,以決該連接配接為放行或阻擋的機制。netfilter提供了iptables這個程式來作為防火牆資料包過濾的指令。netfilter是内建的,效率非常高。

我們可以通過iptables指令來設定netfilter的過濾機制。

iptables裡有3張表:

> filter(過濾器),進入linux本機的資料包有關,是預設的表。

> nat(位址轉換),與linux本機無關,主要與linux主機後的區域網路内計算機相關。

> mangle(破壞者),這個表格主要是與特殊的資料包的路由标志有關(通常不用涉及到這個表的修改,對這個表的修改破壞性很大,慎改之)。

每張表裡都還有多條鍊:

filter:input, output, forward

nat:prerouting, postrouting, output

mangle:prerouting, output, input, forward

如下為iptables内建各表與鍊的相關性

Linux下防火牆iptables設定

當一個資料包轉給netfilter後,netfilter會按上面的流程依次比對每一張表。如果資料包符合表中所述,則進行相應的處理。

基本格式: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的規則,在這小節裡詳細介紹。包比對就是用于描述需要過濾的資料包標頭特殊的字段。

指定網口:

  -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

ping操作發送的是icmp包,如果不想被ping到,就可以拒絕。

  --icmp-type type

  type如下:

    8    echo-request(請求)

    0    echo-reply(響應)

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

  drop,丢棄

  accept,接受

  reject,拒絕

  log,跟蹤記錄,将通路記錄寫入 /var/log/messages

将新設定的規則儲存到檔案

格式:iptables-save [-t table]

将目前的配置儲存到 /etc/sysconfig/iptables

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

  -f :請除所有的已制訂的規則

  -x :除掉所有使用者“自定義”的chain

  -z :将所有的統計值清0

繼續閱讀