簡述iptales四表五鏈及詳細(xì)介紹iptables命令使用方法
發(fā)布時間:2020-04-08 點(diǎn)擊數(shù):7002
iptales四表五鏈對于剛接觸的小白來說可能不太明白,也不懂得怎么去使用,今天小編在這里就個大家分下iptales四表五鏈及詳細(xì)介紹iptables命令使用方法。
簡述iptables四表五鏈
(1)四表filter:過濾規(guī)則表,根據(jù)定義的規(guī)則過濾符合條件的數(shù)據(jù)包
nat表:network address translation 地址轉(zhuǎn)換規(guī)則表
mangle:修改數(shù)據(jù)標(biāo)記規(guī)則表
raw:關(guān)閉nat表上啟動的連接跟蹤制,加快封包穿越防火墻的速度
(2)五chain(鏈)
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
(3)表<-->鏈的關(guān)系
raw:PREROUTING, OUTPUT
mangle:PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,[INPUT,]OUTPUT,POSTROUTING
filter:INPUT,F(xiàn)ORWARD,OUTPUT
(4)內(nèi)核中數(shù)據(jù)包的傳輸過程:
當(dāng)一個數(shù)據(jù)包進(jìn)入網(wǎng)卡時,數(shù)據(jù)包首先進(jìn)入 PREROUTING鏈,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要轉(zhuǎn)送出去
如果數(shù)據(jù)包就是進(jìn)入本機(jī)的,數(shù)據(jù)包就會沿著圖向下移動,到達(dá)INPUT鏈,數(shù)據(jù)包到達(dá)INPUT鏈后,任何進(jìn)程都會收到它。本機(jī)上運(yùn)行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包OUTPUT鏈,然后到達(dá)POSTROUTING鏈輸出
如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā),數(shù)據(jù)包就會向右移動,經(jīng)過FORWARD鏈,然后到達(dá)POSTROUTING鏈輸出
詳細(xì)介紹iptables命令使用方法:
(1)規(guī)則格式:
iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]
-t table:
raw, mangle, nat, [默認(rèn)為:filter]
(2)COMMAND:
(a)鏈管理:
-N:new, 自定義一條新的規(guī)則鏈;
-X: delete,刪除自定義的規(guī)則鏈;
注意:僅能刪除 用戶自定義的 引用計數(shù)為0的 空的 鏈;
-P:Policy,設(shè)置默認(rèn)策略;對filter表中的鏈而言,其默認(rèn)策略有:
ACCEPT:接受
DROP:丟棄
REJECT:拒絕
-E:重命名自定義鏈;引用計數(shù)不為0的自定義鏈不能夠被重命名,也不能被刪除;
(b)規(guī)則管理:
-A:append,追加;
-I:insert, 插入,要指明位置,省略時表示第一條;
-D:delete,刪除;
(1) 指明規(guī)則序號;
(2) 指明規(guī)則本身;
-R:replace,替換指定鏈上的指定規(guī)則;
-F:flush,清空指定的規(guī)則鏈;
-Z:zero,置零;
iptables的每條規(guī)則都有兩個計數(shù)器:
(1) 匹配到的報文的個數(shù);
(2) 匹配到的所有報文的大小之和;
(2) 匹配到的所有報文的大小之和;
(c)查看:
-L:list, 列出指定鏈上的所有規(guī)則;
-n:numberic,以數(shù)字格式顯示地址和端口號;
-v:verbose,詳細(xì)信息;
-vv, -vvv
-x:exactly,顯示計數(shù)器結(jié)果的精確值;
--line-numbers:顯示規(guī)則的序號;
(3)chain:
PREROUTING,INPUT,F(xiàn)ORWARD,OUTPUT,POSTROUTING
(4)匹配條件:
(a)基本匹配條件:無需加載任何模塊,由iptables/netfilter自行提供;
[!] -s, --source address[/mask][,...]:檢查報文中的源IP地址是否符合此處指定的地址或范圍;
[!] -d, --destination address[/mask][,...]:檢查報文中的目標(biāo)IP地址是否符合此處指定的地址或范圍
所有地址:0.0.0.0/0
[!] -p, --protocol protocol
protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or "all",{tcp|udp|icmp}
[!] -i, --in-interface name:數(shù)據(jù)報文流入的接口;只能應(yīng)用于數(shù)據(jù)報文流入的環(huán)節(jié),
只能應(yīng)用于PREROUTING,INPUT和FORWARD鏈;
[!] -o, --out-interface name:數(shù)據(jù)報文流出的接口;只能應(yīng)用于數(shù)據(jù)報文流出的環(huán)節(jié),
能應(yīng)用于FORWARD、OUTPUT和POSTROUTING鏈
(b)擴(kuò)展匹配條件:
隱式擴(kuò)展:在使用-p選項(xiàng)指明了特定的協(xié)議時,無需再同時使用-m選項(xiàng)指明擴(kuò)展模塊的擴(kuò)展機(jī)制;不需要手動加載擴(kuò)展模塊;因?yàn)樗鼈兪菍f(xié)議的擴(kuò)展,所以,但凡使用-p指明了協(xié)議,就表示已經(jīng)指明了要擴(kuò)展的模塊;
(1) tcp:
[!] --source-port, --sport port[:port]:匹配報文的源端口;可以是端口范圍;
[!] --destination-port,--dport port[:port]:匹配報文的目標(biāo)端口;可以是端口范圍;
[!] --tcp-flags mask comp
mask is the flags which we should examine, written as a comma-separated list,例如 SYN,ACK,FIN,RST
comp is a comma-separated list of flags which must be set,例如SYN
例如:“--tcp-flags SYN,ACK,FIN,RST SYN”表示,要檢查的標(biāo)志位為SYN,ACK,FIN,RST四個,其中SYN必須為1,余下的必須為0;
[!] --syn:用于匹配第一次握手,相當(dāng)于”--tcp-flags SYN,ACK,FIN,RST SYN“;
(2)udp:
[!] --source-port, --sport port[:port]:匹配報文的源端口;可以是端口范圍;
[!] --destination-port,--dport port[:port]:匹配報文的目標(biāo)端口;可以是端口范圍;
(3)icmp:
[!] --icmp-type {type[/code]|typename}
echo-request:8
echo-reply:0
顯式擴(kuò)展:必須要手動加載擴(kuò)展模塊, [-m matchname [per-match-options]];
(1)multiport
This module matches a set of source or destination ports. Up to 15 ports can be specified. A port range (port:port) counts as two ports. It can only be used in conjunction with one of the following protocols: tcp, udp, udplite, dccp and sctp.
以離散或連續(xù)的 方式定義多端口匹配條件,最多15個;
[!] --source-ports,--sports port[,port|,port:port]...:指定多個源端口;
[!] --destination-ports,--dports port[,port|,port:port]...:指定多個目標(biāo)端口;
# iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -j ACCEPT
(2)iprange,指明連續(xù)的(但一般不是整個網(wǎng)絡(luò))IP地址范圍
以連續(xù)地址塊的方式來指明多IP地址匹配條件;
[!] --src-range from[-to]
[!] --dst-range from[-to]
# iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT
(3)mac擴(kuò)展
指明源MAC地址
適用于:PREROUTING,FORWARD,INPUT chains
[!]--mac-source XX:XX:XX:XX:XX:XX
(4)time擴(kuò)展
This matches if the packet arrival time/date is within a given range.
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
[!] --weekdays day[,day...]
[!] --monthdays day[,day...]
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--kerneltz:使用內(nèi)核配置的時區(qū)而非默認(rèn)的UTC;
(5)string擴(kuò)展
This modules matches a given string by using some pattern matching strategy.
--algo {bm|kmp} 字符匹配算法
[!] --string pattern 要檢測的字符串模式
[!] --hex-string pattern 要檢測字符串模式,16機(jī)制格式
--from offset 開始偏移
--to offset 結(jié)束偏移
~]# iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT
(6)connlimit:根據(jù)每客戶端IP做并發(fā)連接數(shù)數(shù)量匹配
可防止CC(Challenge Collapsar挑戰(zhàn)黑洞)
Allows you to restrict the number of parallel connections to a server per client IP address (or client address block).
--connlimit-upto n:連接的數(shù)量小于等于n時匹配
--connlimit-above n:連接的數(shù)量大于n時匹配
~]# iptables -I INPUT -d 172.16.0.7 -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT
(7)limit,基于收發(fā)報文的速率做匹配,令牌桶過濾器
This module matches at a limited rate using a token bucket filter.
--limit rate[/second|/minute|/hour|/day]
--limit-burst number
~]iptables -I INPUT -d 172.16.0.67 -p icmp --icmp-type 8 -m limt --limt-brust 5 --limit 20/minute -j ACCEPT
~]# iptables -I OUTPUT -s 172.16.0.7 -p icmp --icmp-type 0 -j ACCEPT
限制本機(jī)某tcp服務(wù)接收新請求的速率:--syn, -m limit
(8)state
根據(jù)"連接追蹤機(jī)制"去檢查連接的狀態(tài),較耗資源
conntrack機(jī)制:追蹤本機(jī)上的請求和響應(yīng)之間的關(guān)系
[!] --state state
INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.
NEW: 新連接請求;連接追蹤信息庫中不存在此連接的相關(guān)信息條目,因此,將其識別為第一次發(fā)出的請求
ESTABLISHED:已建立的連接,NEW狀態(tài)之后,連接追蹤信息庫中為其建立的條目失效之前期間內(nèi)所進(jìn)行的通信狀態(tài)
INVALID:無法識別的連接,如flag標(biāo)記不正確
RELATED:相關(guān)聯(lián)的連接,當(dāng)前連接是一個新請求,但附屬于某個已存在的連接;新發(fā)起的但與已有的連接相關(guān)聯(lián)的連接,如:ftp協(xié)議中的數(shù)據(jù)連接與命令連接之間的關(guān)系
UNTRACKED:未追蹤的連接;如raw表中關(guān)閉追蹤
iptables -A OUTPUT -s 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT -d 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -d 172.20.11.58 -p tcp -m multiport --dports 22,80,139,445,3306 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -s 172.20.11.58 -j REJECT
iptables -A INPUT -d 172.20.11.58 -j REJECT
iptables -R OUTPUT 2 -s 172.20.11.58 -p udp -m multiport --dports 123,323 -m state --state NEW -j ACCEPT
state擴(kuò)展:
內(nèi)核模塊裝載:
nf_conntrack
nf_conntrack_ipv4
手動裝載:
modprode nf_conntrack_ftp
追蹤到的連接,已經(jīng)追蹤到的并記錄下來的連接信息庫
/proc/net/nf_conntrack
調(diào)整連接追蹤功能所能夠容納的最大連接數(shù)量
/proc/sys/net/nf_conntrack_max
超時時長:
/proc/sys/net/netfilter/*timeout*
centos7需要加載模塊:
modprode nf_conntrack
iptables的鏈接跟蹤表最大容量為/proc/sys/net/nf_conntrack_max,各種狀態(tài)的超時鏈接會從表中刪除,當(dāng)模板滿載時,后續(xù)連接可能會超時,
解決方法兩個:
(1)加大nf_conntrack_max的值
vim /etc/sysctl.conf
net.nf_conntrack_max=393216
net.netfilter.nf_conntrack_max=393216
(2)降低nf_conntrack timeout時間
vim /etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_timeout_established=300
net.netfilter.nf_conntrack_tcp_timeout_wait=120
net.netfilter.nf_conntrack_tcp_close_wait=60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
(3)處理動作:
-j targetname [per-target-options]
ACCEPT
DROP
擴(kuò)展target:
REJECT:
This is used to send back an error packet in response to the matched packet: otherwise it is equivalent to DROP so it is a terminating TARGET, ending rule traversal.
--reject-with type
The type given can be icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreach‐ able, icmp-net-prohibited, icmp-host-prohibited, or icmp-admin-prohibited (*), which return the appropriate ICMP error message (icmp-port-unreachable is the default).
LOG:
Turn on kernel logging of matching packets.
--log-level
--log-prefix
默認(rèn)日志保存于/var/log/messages
RETURN:
返回調(diào)用者;一般在自定義上使用
自定義鏈做為target:-j 調(diào)用
以上就是iptales四表五鏈及詳細(xì)介紹iptables命令使用方法,希望云網(wǎng)時代小編的分享對大家有所幫助,云網(wǎng)時代經(jīng)過多年的經(jīng)驗(yàn)積累,為大家提供專業(yè)化深圳服務(wù)器租用,深圳服務(wù)器托管,深圳主機(jī)租用,云服務(wù)器租用,香港主機(jī)租用等海內(nèi)外服務(wù)器相關(guān)資源,詳情歡迎咨詢客服了解。