iptables 簡單使用

iptables網絡防火牆
1、簡介
防火牆:能夠是硬件也能夠是軟件: 規則(匹配標準,處理辦法)
netfilter: 是一種框架,工做在內核中,經過iptables命令(用戶空間) 來規則交給netfilter(內核空間)。做用實現規則
iptables: 數據報文過濾,NAT、mangle等規則生成的工具;過濾IP報文首部與TCP報文首部。做用是制定規則
iptables不是服務,但有服務腳本;服務腳本的主要做用在於管理保存的規則,裝載及移除iptables/netfilter相關的內核模塊;iptables_nat, iptables_filter, iptables_mangle, iptables_raw, ip_nat, ip_conntrack service iptables start 開啓服務
在啓動iptables報iptables: No config file錯誤時
#iptables -P OUPUT ACCEPT
#service iptables save
#service iptables restart算法

#lsmod |grep ip 查看模塊是否加載
2、iptables表與鏈簡介
Netfilter/iptables是表的容器;表是鏈的容器,即全部的鏈都屬於其對應的表; 鏈是規則的容器;規則一條條過濾的語句。容器的意思是包含或者說屬於的關係。
一、規則:匹配標準IP: SIP, DIP(源地址,目的地址) TCP: SPORT, DPORT, (源端口,目的端口) UDP: SPORT, DPORT (源端口,目的端口) ICMP:icmp-type(icmp類型)
二、iptables鏈(PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING五個鏈)
1)、PREROUTING: 用於修改目的地址(DNAT)
2)、INPUT: 匹配目的 IP 是本機的數據包
3)、FORWARD: 匹配穿過本機的數據包(轉發數據包)
4)、OUTPUT:匹配目的 IP 是外部主機的數據
5)、POSTROUTING: 用於修改源地址 (SNAT)
三、iptables表(filter、nat、mangle與raw四個表)
1)、filter表(過濾):有 INPUT、OUTPUT、FORWARD三個鏈 用於過濾的時候
2)、nat表(地址轉換): 有PREROUTING、OUTPUT、POSTROUTING三個鏈 用於作 NAT 的時候
3)、mangle表(拆開報文、修改、從新封裝): PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五個鏈
4)、raw表(關閉nat錶鏈接追蹤機制):只能放在PREROUTING、OUTPUT兩個鏈上
鏈相關知識:可使用自定鏈,但只在被調用時才能發揮做用,並且若是沒有自定義鏈中的任何規則匹配,還應該有返回機制;用能夠刪除自定義的空鏈,默認鏈沒法刪除
每一個規則都有兩個內置的計數器:一個用來記錄被匹配的報文個數;另外一個用來記錄被匹配的報文大小之和
各表的優先級,從上到下(由高到底)以下圖 例如input鏈中 先處理mangle表再處理filter表
iptables 簡單使用
3、操做命令
語法:iptables [-t要操做的表] < 操做命令> [要操做的鏈] [規則號碼] [匹配條件] [-j 匹配到之後處理動做]
1)、操做命令(-A、-I、D、-R、-P、-F)
A、管理規則
-A 鏈名:附加一條規則,添加在鏈的尾部
-I 鏈名 號碼: 插入一條規則,插入爲對應鏈上的第幾條;
-D鏈名 號碼: 刪除指定鏈中的第幾條規則;
-R鏈名 號碼: 替換指定鏈的規則;
B、管理鏈:
-F 鏈名:flush,清空指定規則鏈,若是省略鏈,則能夠實現刪除對應表中的全部鏈
-P 鏈名: 設定指定鏈的默認策略;
-N:自定義一個新的空鏈
-X: 刪除一個自定義的空鏈
-Z:置零指定鏈中全部規則的計數器;
-E: 重命名自定義的鏈;
C、查看類:
-L: 顯示指定表中的規則;
-n: 以數字格式顯示主機地址和端口號;
-v: 顯示鏈及規則的詳細信息
-vv: 更詳細信息
-x: 顯示計數器的精確值
--line-numbers: 顯示規則號碼
2)、匹配條件:
A、通用匹配
-s, --src: 指定源地址
-d, --dst:指定目標地址
-p {tcp|udp|icmp}:指定協議
-i INTERFACE: 指定數據報文流入的接口 可用於定義標準的鏈:PREROUTING,INPUT,FORWARD
-o INTERFACE: 指定數據報文流出的接口 可用於標準定義的鏈:OUTPUT,POSTROUTING,FORWARD
B、擴展匹配
a、隱含擴展:不用特別指明由哪一個模塊進行的擴展,由於此時使用-p {tcp|udp|icmp}
①、-p tcp隱含擴展
--sport PORT[-PORT]: 源端口
--dport PORT[-PORT]: 目標端口
--tcp-flags mask comp: 只檢查mask指定的標誌位,是逗號分隔的標誌位列表;comp:此列表中出現的標記位必須爲1,comp中沒出現,而mask中出現的,必須爲0;
--tcp-flags SYN,FIN,ACK,RST SYN = --syn 三次握手第一次
--tcp-flags –syn 三次握手第一次
②、-p icmp 隱含擴展
--icmp-type 0|8: 0: echo-reply 響應報文(回來的ping響應) 或 8: echo-request 請求報文(出去的ping)
③、-p udp 隱含擴展
--sport:源端口
--dport:目標端口
b、顯式擴展:必須指明由哪一個模塊進行的擴展,在iptables中使用-m選項可完成此功能
語法: -m matchname [per-match-options]
①、state 狀態 結合ip_conntrack追蹤會話的狀態
NEW: 新鏈接請求
ESTABLISHED:已創建的鏈接
INVALID:非法鏈接
RELATED:相關聯的
-m state --state NEW,ESTABLISHED -j ACCEPT
要對FTP使用iptables要首先要裝載ip_conntrack_ftp和ip_nat_ftp模塊
例: iptables -A INPUT -d 192.168.100.7 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
②、multiport: 離散的多端口匹配擴展
--source-ports 源端口
--destination-ports 目標端口
--ports 端口
例:-m multiport --destination-ports 21,22,80 -j ACCEPT
③、-m iprange :多個IP地址匹配
--src-range 源地址
--dst-range 目標地址
例: iptables -A INPUT -p tcp -m iprange --src-range 192.168.100.3-192.168.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
④ 、-m connlimit: 根據每客戶端IP(也能夠是地址塊)作併發鏈接數數量匹配
--connlimit-above n 鏈接的數量大於n
--connlimit-mask prefix_length prefix_length爲掩碼(0-32) ,默認是32,即一個IP地址 , 限制網段
例: iptables -A INPUT -d 192.168.100.7 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j DROP
⑤、-m limit:基於收發報文的速率作檢查
--limit rate[/second|/minute|/hour|/day] 速率限制,默認是3/hour
--limit-burst number 空閒時峯值,默認是5
例: iptables -I INPUT -d 10.0.3.11 -p icmp --icmp-type 8 -m limit --limit-burst 3 --limit 20/minute -j ACCEPT
⑥、-m string 字符串匹配,可以檢測報文應用層中的字符串,屏蔽非法字符
--algo {bm|kmp} 指定匹配算法,有bm和kpm兩種
--string "STRING" 指定所要匹配的字符串
⑦、-m time 根據報文到達的時間與指定的時間範圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 時間格式爲:2019-03-13T12:24:30
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 時間格式爲 12:24:30
--timestop hh:mm[:ss]
--monthdays day[,day...] 1-31
--weekdays day[,day...] Mon, Tue, Wed, Thu, Fri, Sat, Sun 或者1-7
--utc 設置--datestart, --datestop, --timestart and --timestop爲UTC時間
--localtz 設置--datestart, --datestop, --timestart and --timestop爲內核時間
注意時區差別,CST比UTC時間快8小時
3)、經常使用動做(target):
ACCEPT:放行
DROP:丟棄
REJECT:拒絕(明確告訴對方)
DNAT:目標地址轉換
SNAT:源地址轉換
REDIRECT:端口重定向
MASQUERADE:地址假裝
LOG:日誌
MARK:打標記(打個戳)
保存規則:
#service iptables save 保存的位置 /etc/sysconfig/iptables
#iptables-save > /etc/sysconfig/iptables.2019031301 手動保存位置
#iptables-restore < /etc/sysconfig/iptables.2019031301 手動生效
全部條件均可取反:!,-s ! 192.168.100.6 源地址不是192.168.100.6 都被匹配網絡

相關文章
相關標籤/搜索