四表五鏈 | iptables
阿新 • • 發佈:2022-01-12
內容概要
- 四表五鏈
- 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