前言:ipset 和 iptables 是兩個不同但相關(guān)的工具,用于管理和操作防火墻規(guī)則。
iptables 是 Linux 系統(tǒng)上的經(jīng)典防火墻工具,用于配置和管理網(wǎng)絡(luò)數(shù)據(jù)包過濾規(guī)則,控制流量的進出。它使用鏈(chains)和規(guī)則(rules)的概念,基于數(shù)據(jù)包的源地址、目標(biāo)地址、端口等信息進行過濾和轉(zhuǎn)發(fā)。
ipset 是一個用于管理大規(guī)模 IP 地址集合的工具,它提供了高效的數(shù)據(jù)結(jié)構(gòu)和命令行接口,用于存儲和操作 IP 地址、網(wǎng)絡(luò)和端口的集合。它與 iptables 結(jié)合使用,可以更高效地過濾和匹配數(shù)據(jù)包,提供優(yōu)化性能和靈活性的防火墻規(guī)則管理方案。
實際上,ipset 和 iptables 通常結(jié)合使用,以提高防火墻規(guī)則的效率和管理能力。通過將 ipset 創(chuàng)建的 IP 地址集合與 iptables 結(jié)合,可以更快速地進行 IP 地址過濾和匹配操作。iptables 規(guī)則可以引用 ipset 的集合名稱,從而將這些集合中的 IP 地址應(yīng)用于具體的過濾規(guī)則。
使用 ipset 可以實現(xiàn)對 IP 地址的分組、分類和管理,而 iptables 提供了對數(shù)據(jù)包的詳細控制和過濾功能。結(jié)合使用 ipset 和 iptables,可以更靈活和高效地管理大規(guī)模的 IP 地址集合和防火墻規(guī)則,提供更好的網(wǎng)絡(luò)安全保護。
1. 直接來看一條命令
sudo ipset add myset_name 127.0.0.1
# 本條命令的意思是:在名為 myset_name 的一個集合中 添加(add)一條地址為127.0.0.1的ip
sudo ipset add myset_name 127.0.0.1-127.0.1.200
# 可以在一個ipset中批量加入ip地址,固定寫法:中間以“-”連接,地址需要寫全,不全會報錯,加不進去
2. 如何創(chuàng)建一個ipset?
sudo ipset create myset hash:ip
# hash:ip表示創(chuàng)建一個使用 IP 地址作為元素的哈希集合。它指定了 ipset 的類型和數(shù)據(jù)結(jié)構(gòu),以便有效地存儲和檢索 IP 地址。冒號前面的部分(hash)表示 ipset 的類型,冒號后面的部分(ip)表示使用的數(shù)據(jù)類型。
#
# 類型可以是以下之一:
# hash:ip:使用 IP 地址作為元素的哈希集合。
# hash:net:使用 IP 網(wǎng)絡(luò)(CIDR)作為元素的哈希集合。
# hash:ip,port:使用 IP 地址和端口號組合作為元素的哈希集合。
# hash:net,port:使用 IP 網(wǎng)絡(luò)(CIDR)和端口號組合作為元素的哈希集合。
# 其他類型,如 list:set、bitmap:ip、bitmap:port 等。
#
# 也可以使用-N參數(shù)來代替create:sudo ipset -N myset_name hash:ip
sudo ipset create myset_name hash:ip maxelem 1000000
# ipset默認可以存儲65536個元素,使用maxelem指定數(shù)量
3. 如何查看當(dāng)前已有哪些ipset?
sudo ipset list
# 查看當(dāng)前服務(wù)器已創(chuàng)建的ipset
sudo ipset list myset_name
# 查看myset_name表中已經(jīng)添加的ip地址
4. 此時已經(jīng)創(chuàng)建了一張ipset表,如何結(jié)合iptables使用呢?ipset有什么作用?
sudo iptables -I INPUT -m set ! --match-set myset_name src -p tcp -j DROP
# 本條命令的意思是:使用iptables的規(guī)則
# -I INPUT:這表示在 INPUT 鏈的開頭插入規(guī)則 (詳見下條 5.四表五鏈)
# -m set 表明要使用ipset擴展模塊進行匹配
# !表示取反
# -p tcp 表明匹配 TCP 協(xié)議的數(shù)據(jù)包 (其他取值:tcp、udp、icmp、icmpv6、esp......)
# --match-set myset_name src 表明查找數(shù)據(jù)包的來源是否屬于名為`myset_name`的ipset
# -J 表明如果匹配成功,則丟棄(DROP)掉 (其他取值:ACCEPT、DROP、REJECT、LOG......)
# 整條命令的意思是:使用 iptables 在頭部插入一條規(guī)則,將未在 myset_name 中匹配到的源IP地址的TCP流量DROP
#
sudo iptables -A INPUT -p tcp -m multiport -dport 8081:8088 -m set ! --match-set myset_name src -j DROP
# 整條命令的意思是:使用 iptables 在尾部添加一條規(guī)則,將訪問8081到8088的未在 myset_name 中匹配到的源IP地址的TCP流量DROP
#
# 大致語法:
# iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION
# 詳見這里: https://man7.org/linux/man-pages/man8/iptables.8.html
5. 四表五鏈
sudo iptables -nvL
# 查看當(dāng)前設(shè)置了哪些規(guī)則
#
# 五鏈:防火墻的規(guī)則需要寫入具體的數(shù)據(jù)鏈中
# INPUT(入站數(shù)據(jù)過濾)
# OUTPUT(出站數(shù)據(jù)過濾)
# FORWARD(轉(zhuǎn)發(fā)數(shù)據(jù)過濾)
# PREROUTING(路由前過濾)
# POSTROUTING(路由后過濾)
#
# 四表:有印象即可
# filter:負責(zé)過濾數(shù)據(jù)包,包括的規(guī)則鏈有:input,output和forward
# nat:用于網(wǎng)絡(luò)地址轉(zhuǎn)換(IP、端口),包括的規(guī)則鏈有:prerouting,postrouting 和 output
# mangle:主要應(yīng)用在修改數(shù)據(jù)包、流量整形、給數(shù)據(jù)包打標(biāo)識,默認的規(guī)則鏈有:INPUT,OUTPUT、 forward,POSTROUTING,PREROUTING
# raw:控制 nat 表中連接追蹤機制的啟用狀況,可以控制的鏈路有 PREROUTING、OUTPUT
6. 添加錯了,如何修改/刪除一條iptables規(guī)則?
iptables -L INPUT --line-numbers
# 表明列出名為 INPUT 的 iptables 鏈的規(guī)則,并顯示規(guī)則的行號
iptables -R INPUT 2 <new_rule>
# 使用-R參數(shù),修改 INPUT 鏈中行號為 2 的規(guī)則,在 <new_rule> 的位置,替換為要設(shè)置的新規(guī)則
iptables -D INPUT 3
# 使用-D參數(shù),刪除 INPUT 鏈中行號為 3 的規(guī)則
7.持久化保存防火墻規(guī)則
? 所有對iptables規(guī)則的設(shè)置、刪除、修改、都是即時生效的,無需手動重啟或生效服務(wù)。但如果不保存,當(dāng)計算機重啟后所有的規(guī)則都會丟失,所以對防火墻規(guī)則進行及時保存的操作是非常必要的。
# 在 Ubuntu 系統(tǒng)中,可以使用以下方法保存和備份防火墻規(guī)則:
sudo iptables-save > firewall-rules.txt
# 使用 iptables-save 命令將當(dāng)前的防火墻規(guī)則保存到文件中??梢詫⑤敵鲋囟ㄏ虻揭粋€名為 firewall-rules.txt的文件中
sudo iptables-restore < 文件名稱
# iptables-restore 命令可以批量導(dǎo)入Linux防火墻規(guī)則,同時也需要結(jié)合重定向輸入來指定備份文件的位置
# 導(dǎo)入的文件必須是使用 iptables-save工具導(dǎo)出來的才可以?。?!
參考文獻:文章來源:http://www.zghlxwxcb.cn/news/detail-624825.html
《一篇搞懂》系列之一 —— iptables
Linux iptables命令詳解
Linux下iptables防火墻配置詳解
Centos7 ipset命令介紹及使用文章來源地址http://www.zghlxwxcb.cn/news/detail-624825.html
到了這里,關(guān)于ipset、iptables快速使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!