iptables配置

注:資料選自 Iptables 指南 http://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html

iptabes 命令  匹配  動作

命令:    
  -A INPUT 在所選鏈的最後添加規則    
  -D INPUT 從所選鏈中刪除規則,完整的規則或者編號    
  -R INPUT 1 替換所選鏈中的#1規則    
  -I INPUT 1 在所選鏈相應位置插入規則    
  -L INPUT 顯示所選鏈的規則,如果沒有指定鏈,則顯示所有規則,    
  -F INPUT 清空所選鏈,如果沒有指定鏈,則清除所有鏈,    
  -N person1 建立名爲person1的鏈    
  -X person1 刪除名爲person1的鏈    
  -P INPUT DROP 爲鏈指定默認動作    
  -E person1 person2 對自定義鏈重命名

匹配:    
  -p tcp,udp;-p !tcp 匹配協議    
  -s 192.168.0.12; -s 192.168.0.0/24;-s !192.168.0.0/24 匹配源地址

  -d 匹配目的地址,和-s用法一樣

  -i 匹配包進入本地所用的網絡接口,只能用於INPUT,FORWARD和 PREROUTING這三個鏈(+)是通配符;

  -o 匹配包離開本地所用的網絡接口,和-i用法一樣;

TCP匹配:

  --sport 匹配源地址端口,--sport 22:80 --sport !22,不能識別不連續的端口列表

  --dport 匹配目的地址端口,用法和--sport一樣

  --tcp-flags 匹配指定的TCP標記,

iptables -p tcp --tcp-flags SYN,FIN,ACK SYN 表示匹配那些SYN標記被設 置而FIN和ACK標記沒有設置的包;

iptables -p tcp --tcp-flags ! SYN,FIN,ACK SYN 表示匹配那些FIN和ACK標 記被設置而SYN標記沒有設置的包;

UDP匹配:

  --sport,-dport 用法和tcp一樣

ICMP匹配:

  --icmp-type 名字可以用iptables --protocol icmp --help 查看

顯式匹配 -m,--match

Limit match:

  -m limit --limit 3/minute 每分鐘3個

  -m limit --limit-burst 20 初始總數20個;

  例:-m limit --limit 3/minute --limit-burst 5 開始時有個,用完後沒分鐘增加3個

MAC match:

  -m mac -mac-source 00:00:00:00:00:00

Multiport match: 只能與-p tcp或者-p udp一起使用

-m multiport --source-port 源端口多端口匹配,最多可以指定15個端口

-m multiport --destination-port 目的端口

  -m multiport --port 同端口多端口匹配

State match:

  -m state --state RELATED,ESTABLISHED 狀態有:INVALID,ESTABLISHED,NEW和RELATED

動作: -j --jump

  -j ACCEPT 通過當前鏈

  -j DNAT --to-destination 只能用在nat表的PREROUTINGOUTPUT鏈中,例:

      iptables -t nat -A PREROUTING -d 15.45.23.67 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10

      防火牆外網ip:$INET_IP,內網ip:$LAN_IP,web服務器ip:$HTTP_IP

      客戶端ip:外網$INET_C,內網$LAN_C

iptables -t nat -A PREROUTING -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP

iptables -t nat -A POSTROUTING -d $HTTP_IP -p tcp --dport 80 -j SNAT --to-source $LAN_IP

      ---- 作者此處的建議是dns服務器或者DMZ

iptables -t nat -A OUTPUT -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP

  -j DROP 丟掉

-j LOG 日誌 選項:

      --log-level 日誌級別

iptables -A FORWARD -p tcp -j LOG --log-level debug

      --log-prefix 前綴

iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"

      --log-tcp-sequence 把包的TCP序列號和其他日誌信息一起記錄下來

iptables -A INPUT -p tcp -j LOG --log-tcp-sequence

      --log-tcp-options 記錄TCP包頭中的字段大小不變的選項

iptables -A FORWARD -p tcp -j LOG --log-tcp-options

      --log-ip-options 記錄IP包頭中的字段大小不變的選項

iptables -A FORWARD -p tcp -j LOG --log-ip-options

  -j MASQUERADE --to-ports MASQUERADE和SNAT一樣,只能用於nat表的 POSTROUTING鏈,而且它只有一個選項

iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000

  -j REDIRECT --to-ports 只能用在nat表的PREROUTINGOUTPUT鏈和被它們調用的自定義鏈

  -j REJECT

  -j RETURN 返回

  -j SNAT --to-source 只能用在nat表的POSTROUTING鏈裏,例

iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000

-j ULOG    選項:

      --ulog-nlgroup 指定向哪個netlink組發送包,比如-- ulog-nlgroup 5。一個有32個netlink組,它們被簡單地編號位1-32

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-nlgroup 2

      --ulog-prefix 指定記錄信息的前綴,以便於區分不同的信息。使用方法和 LOG的prefix一樣,只是長度可以達到32個字符

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-prefix "SSH connection attempt: "

      --ulog-cprange 指定每個包要向“ULOG在用戶空間的代理”發送的字節數

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-cprange 100

      --ulog-qthreshold 告訴ULOG在向用戶空間發送數據以供記錄之前,要在內核裏 收集的包的數量

iptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-qthreshold 10

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