iptables系列二
iptables系列之基本應用及顯式擴充套件
netfilter:Framework,TCP,核心中
iptables語法
iptables [-t table] command CHAIN [num] 匹配條件 -j 處理動作
匹配條件:
通用匹配
-s
-d
-p {tcp|udp|icmp}
擴充套件匹配
隱含匹配
顯式匹配
命令:
管理規則:
-A:附加一條規則,新增在鏈的尾部
-I CHAIN [num]:插入一條規則,插入為對應CHAIN上的第num條,不加num,預設第一條
-D CHAIN [num]:刪除指定鏈中的第mun條規則
-R CHAIN [num]:替換指定的規則;
管理鏈:
-F [CHAIN]: flush,清空指定規則鏈,如果省略CHAIN,則可以實現刪除對應表中的所有鏈
-P CHAIN:設定指定鏈的預設策略
-N:自定義一條新的空鏈
-X:刪除一個自定義的空鏈,如若非空,可以先-F 清空,再刪除。
-Z:置零指定鏈中所有規則的計數器
-E:重新命名自定義的鏈。
檢視類:
-L:顯示指定表中的規則;
-n:以數字格式顯示主機地址和埠號
-v:顯示詳細資訊
-vv:更詳細
-x:顯示計數器精確值
--line-numbers:顯示規則號碼
iptables -L -n
iptables -t filter -L -n
iptables -t nat -L -n
iptables -t filter -A INPUT -s 172.16.0.0/16 -j DROP
動作(target):
ACCECT :放行
DROP :丟棄
REJECT :拒絕
DNAT :目標地址轉換
SNAT :源地址轉換
REDIRECT :埠重定向
MASQUERADE:地址偽裝
LOG :日誌
MARK :打標記
NOTRACK
SET
擴充套件匹配
隱含匹配:
-p tcp
--sport PORT[-PORT]:源埠
--dport PORT[-PORT]:目標埠(可以連續的埠)
--tcp-flags msak comp :只檢查mask指定的標誌位,是用逗號分隔的標誌列表;comp:此列表中出現的標記位必須為1,comp中沒出現的,而mask中出現的,必須為0。
--syn:三次握手的第一次
-p icmp
--icmp-type
0:echo-reply
8:echo-request
-p udp
--sport
--dport
-p tcp -m tcp --dport
顯式擴充套件: 明確指定的擴充套件,使用額外的匹配機制
-m EXTESTION --spe-opt
state:狀態擴充套件
結合nf_conntrack追蹤會話的狀態
NEW:新連線請求
ESTABLISH:已建立的連線
INVALID:非法連線
RELATED:相關聯的。
-m state --state NEW -j ACCEPT
-m state --state NEW,ESTABLISHED -j ACCEPT 放行兩個。
-m multiport 離散多埠匹配擴充套件
--source-ports
--destination-ports
--ports
注意:iptables不是服務,但是有服務指令碼,服務指令碼的主要作用在於管理儲存的規則,
由於iptables是工作在核心中的,需要載入記憶體的,防止所定義的規則重啟後消失,所以要儲存這些規則,以及下一次生效,刪除等。
裝載及移除iptables/netfilter相關的核心模組
--tcp-flags SYN,FIN,ACK,RST SYN,ACK --syn
(檢查TCP的SYN,FIN,ACK,RST4個標誌位其中只能SYN,ACK為1)
iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.7 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
lsmod:用於檢視相關模組是否載入。
lsmod - program to show the status of modules in the Linux Kernel
lsmod |grep ip
ip_conntrack:做ip追蹤的
serrvice iptables stop
lsmod |grep ip
關閉iptables的服務指令碼,就是將iptables的核心模組移除。
vim /etc/init.d/iptables
/sbin/modprobe
/sbin/rmmod
modprobe(8), rmmod(8), lsmod(8)
insmod
iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.1.3 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.1.3 -d 172.16.0.0/16 -p tcp --sport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t filter -I INPUT -d 172.16.1.3 -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -s 172.16.1.3 -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT
icmp-type
http://www.cnitblog.com/yang55xiaoguang/articles/59581.html
TYPE CODE Description
0 0 Echo Reply——回顯應答(Ping應答)
8 0 Echo request——回顯請求(Ping請求)
可以實現自己可以ping通任何人,其他人不可以ping本機:
iptables -t filter -A OUTPUT -s 172.16.1.3 -p icmp --icmp-type 8 -j ACCEPT
iptables -t filter -A INPUT -d 172.16.1.3 -p icmp --icmp-type 0 -j ACCEPT
允許dns的請求:
iptables -t filter -A INPUT -d 172.16.1.3 -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.1.3 -p udp --sport 53 -j ACCEPT
dns伺服器的迭代:
iptables -t filter -A OUTPUT -s 172.16.1.3 -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -d 172.16.1.3 -p udp --sport 53 -j ACCEPT
反彈式木馬:
反彈木馬,是駐留在使用者計算機裡的一段服務程式,而攻擊者控制的則是相應的客戶端程式。服務程式通過特定的埠,開啟使用者計算機的連線資源。一旦攻擊者所掌握的客戶端程式發出請求,反彈木馬便和他連線起來,將使用者的資訊竊取出去。
連線追蹤:
ip_conntrack
可以追蹤tcp和udp
A--->B
連線跟蹤(CONNTRACK),顧名思義,就是跟蹤並且記錄連線狀態。Linux為每一個經過網路堆疊的資料包,生成一個新的連線記錄項 (Connection entry)。
/proc/net/ip_conntrack
/proc/net/nf_conntrack el6
儲存當前系統上每一個客戶端和主機的所建立的連線狀態。
iptstate
iptstate - A top-like display of IP Tables state table entries
-t 顯示連線個數
/proc/net/nf_conntrack保留ip的連線狀態,進行追蹤。
modprobe -r ip_conntrack 移除模組
modprobe -r nfnetlink
service iptables stop
modprobe ip_conntrack
多少個連線就會有多少個條目
/proc/sys/net/ipv4/ip_conntrack_max
/proc/sys/net/filter/nf_conntrack_max
/proc/sys/net/filter/nf_conntrack_max 定義nf_conntrack儲存多少個條目,最多可以建立多少連線。若連線超過定義的值就會丟棄,導致大量的超時。
注意:在業務繁忙的網站,此模組一定不要開啟。
iptables -t nat -L 會觸發nf_conntrack模組。
可以修改:
vim /etc/sysctl.conf
net.netfilter.nf_conntrack_max = 655360
net.nf_conntrack_max = 655360
iptables啟動時會讀取/etc/sysconfig/iptables
service iptables save 儲存iptables的規則
iptables-save > /etc/sysconfig/iptables.20150818
iptables-restore < /etc/sysconfig/iptables.20150818
手動儲存規則以及手動載入規則。
允許ssh和http的服務,並且還要追蹤(以及預設策略):
iptables -F
iptables -t filter -A INPUT -d 172.16.1.3 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.1.3 -P tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t filter -A INPUT -d 172.16.1.3 -p tcp --dport 80 -m --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.1.3 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT
sysctl -w net.netfilter.nf_conntrack_max=65536
sysctl - configure kernel parameters at runtime
EXAMPLES
/sbin/sysctl -a
/sbin/sysctl -n kernel.hostname
/sbin/sysctl -w kernel.domainname="example.com"
/sbin/sysctl -p /etc/sysctl.conf
在/proc/sys/net/netfilter/目錄下引數進行配置以及超時時間。
若要永久有效將引數寫在/etc/sysctl.conf
iptables -t filter -A INPUT -d 172.16.1.3 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -s 172.16.1.3 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT
ping 172.16.1.3
iptstate -t
iptables -L -n --line-numbers
iptables -t filter -I OUTPUT -s 172.16.1.3 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -I INPUT -d 172.16.1.3 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -D OUTPUT 2
vim /etc/vsftpd/vsftpd.conf
pasv_enable=NO
servicevsftpd restart
允許ftp主動模式通過:
iptables -t filter
iptables -R OUTPUT 1 -s 172.16.1.3 -m state ESTABLISHED,RELATED -j ACCEPT
iptables -R OUTPUT 1 -d 172.16.1.3 -m state NEW,ESTABLISHED,RELATED -j ACCEPT
注意:要裝載nf_
vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_nat_ftp nf_conntrack_ftp"
service iptables reload
iptables -I INPUT 2 -d 172.16.1.3 -p tcp -m mutiport --destination-ports 21,22,80 -m state --state NEW -j ACCEPT
注意: ! 表示條件取反
相關文章
- iptables系列五
- RHCSA 系列(十一): 使用 firewalld 和 iptables 來控制網路流量
- iptables配置
- Iptables 使用
- iptables重置
- MongoDB系列二MongoDB
- iptables詳解及docker的iptables規則Docker
- 深入 K8s 網路原理(二)- Service iptables 模式分析K8S模式
- iptables報錯!iptables-restore unable to initialize table 'filterRESTFilter
- iptables和firewalld
- iptables詳解
- Iptables 實操
- iptables應用
- 防火牆IPTABLES防火牆
- IPtables 詳解
- iptables的用法
- iptables筆記筆記
- iptables防火牆防火牆
- docker系列(二):映象Docker
- MongoTemplate 教程系列(二)Go
- oracle undo系列(二)Oracle
- Debian使用iptables-persistent持久化iptables規則持久化
- [iptables] 基於iptables實現的跨網路通訊
- IPTABLES-SAVE手冊頁&IPTABLES-RESTORE手冊頁REST
- Iptables入門教程
- Iptables 最佳實踐 !
- iptables的問題
- iptables 功能詳解
- iptables 使用手冊
- iptables 入門(轉)
- IPTables配置Script(轉)
- Iptables 指南 1.1.19
- iptables配置詳解
- iptables設定macMac
- vue系列元件篇(二)Vue元件
- Binder面試系列之二面試
- 圖解HTTP系列--(二)圖解HTTP
- webpack系列之二TapableWeb