1. 程式人生 > 其它 >四表五鏈 | iptables

四表五鏈 | iptables

內容概要

  • 四表五鏈
  • iptables

四表五鏈

四表:filter 負責過濾功能
     nat    網路地址轉換
     mangle 負責修改資料包內容
     raw    負責資料包跟蹤

五鏈:PREROUTING  主機外報文進入位置
     INPUT       報文進入本機使用者空間位置
     OUTPUT      報文從本機使用者空間出去的位置
     FORWARD     報文經過路由發覺不是本機決定轉發不知道從哪個網絡卡出去
     POSTROUTING 報文經過路由被轉發出去

流入本機:A ---> PREROUTING ---> INPUT ---> B
流出本機:A ---> OUTPUT ---> POSTROUTING ---> B
經過本機:A ---> OUTPUT ---> POSTROUTING | --->    
        PREROUTING ---> FORWARD ---> POSTROUTING -
        --> C ---> PREROUTING ---> INPUT ---> B

filter:INPUT FORWARD OUTPUT
nat:PREROUTING INPUT OUTPUT POSTROUTING
raw:PREROUTING OUTPUT
mangle:PREROUTING INPUT FORWARD OUTPUT 
        POSTROUTING

iptables

格式:iptables -t 表名 選項 鏈名稱 條件 動作
              -t 指定操作的表
              -L 列出當前規則
              -v 顯示資料包和大小
              -n 不反解地址
              -A 追加一條規則到鏈中
              -I 插入一條規則到頂部
              -F 清空
              -Z 清空計數器

              -D 刪除鏈中的規則
              -R 修改
              -S 列出所有的規則
              -N 建立一個自定義鏈
              -X 刪除一個自定義鏈
              -P 指定鏈的預設策略

查詢本機端口占用命令:netstat -nutlp

iptables動作

1.ACCEPT 將資料包放行,處理完不比對其他規則,跳到下一個規則鏈
2.REJECT 阻攔資料包,傳送資料包通知對方
3.DROP   丟棄包,處理完不比對其他規則,中斷過濾程式
4.REDIRECT 將包匯入另一個埠,處理完比對其他規則

1.-s 源地址 傳送請求的地址
2.-d 目標地址 訪問的地址
3.--sport 源埠 傳送請求的埠
4.--dport 目標埠 訪問的埠

iptables基本條件匹配

1.TCP
2.UDP
3.ICMP
4.ALL

動作

1.-i 進來的網絡卡
2.-o 出去的網絡卡
3.-m 指定的模組
4.-j 轉發動作
5.-p 指定協議

iptables模組

指定模組:-m
1.連續匹配多個埠multiport--dports 指定多個埠(不同埠之間以逗號分割,連續的端 口使用冒號分割)

2.指定一段連續ip地址範圍iprange
  --src-range from[-to]	源地址範圍
  --dst-range from[-to]	目標地址範圍

3.匹配指定字串string
  --string pattern 指定要匹配的字串
  --algo {bm|kmp} 匹配的查詢演算法

4.根據時間匹配報文time
  --timestart hh:mm[:ss] 開始時間
  --timestop hh:mm[:ss] 結束時間
  --monthdays day[,day...] 指定一個月的某一天
  --weekdays day[,day...] 指定周 還是  周天

5.禁ping,預設本機無法ping別人,別人無法ping自己
  --icmp-type {type[/code]|typename}
    echo-request  (8) 請求 
    echo-reply    (0) 迴應

6.限制連結數,併發連線connlimit
   --connlimit-upto n	如果現有連線數小於或等於n  則匹配
   --connlimit-above n 如果現有連線數大於n 則匹配

7.針對 報文速率 進行限制。 秒、分鐘、小時、天
  --limit rate[/second|/minute|/hour|/day] 報文數量 
  --limit-burst number 報文數量(預設:5)

案例

1.只允許22埠訪問,其他埠無法訪問
iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP

2.只允許192.168.15.71能夠通過22埠連結,其他的不行
iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 198.168.15.81 --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP

3.要求192.168.15.71對外部不可見
iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP

4.要求將22,80,443以及30000-50000之間所有的埠向外暴露,其他埠拒絕
iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
iptables -f filter -A INPUT -p TCP -j DROP

5.要求訪問資料包中包含HelloWorld的資料不允許通過
iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP

6.7.要求限制速率在500k/s左右
iptables -t filter -A OUTPUT -p -TCP -m limit --limit 300/s -j ACCEPT
iptables -t filter -A OUTPUT -p TCP -j DROP