建筑人才招聘網(wǎng)官網(wǎng)seo經(jīng)理招聘
文章目錄
- 注意事項(xiàng)
- 1. 地址列表填寫(xiě)規(guī)范
- 2. 代碼塊
- 3. 執(zhí)行結(jié)果
- 4. 地址與端口獲取方法
- 4.1 tcpdump抓包分析(推薦使用)
- 4.2 TCP連接分析(僅能識(shí)別TCP連接)
注意事項(xiàng)
- 請(qǐng)務(wù)必按照格式填寫(xiě)具體參數(shù),否則會(huì)影響到匹配規(guī)則的創(chuàng)建,嚴(yán)重時(shí)會(huì)影響到業(yè)務(wù)流量!!!
- 請(qǐng)務(wù)必按照格式填寫(xiě)具體參數(shù),否則會(huì)影響到匹配規(guī)則的創(chuàng)建,嚴(yán)重時(shí)會(huì)影響到業(yè)務(wù)流量!!!
- 請(qǐng)務(wù)必按照格式填寫(xiě)具體參數(shù),否則會(huì)影響到匹配規(guī)則的創(chuàng)建,嚴(yán)重時(shí)會(huì)影響到業(yè)務(wù)流量!!!
1. 地址列表填寫(xiě)規(guī)范
ip.txt
文件內(nèi)容填寫(xiě)案例:
ip port # 單個(gè)地址和單個(gè)端口格式
ip port1,port2... # 單個(gè)地址和多個(gè)端口格式
ip/net port # 網(wǎng)段地址和單個(gè)端口格式
ip/net port1,port2... # 網(wǎng)段地址和多個(gè)端口格式
- 地址文件名稱(chēng)為
ip.txt
,若需替換則修改代碼塊第9
行if test -s ./ip.txt;
處ip.txt
即可; - 多個(gè)IP地址請(qǐng)務(wù)必隔行輸出,請(qǐng)使用英文半字符格式輸入配置;
- 添加IP地址不可重復(fù),但支持包含關(guān)系;
- 支持CIDR格式添加IP地址;
- 多個(gè)端口使用 [逗號(hào)] 間隔;
- IP地址與端口之間使用 [空格] 字符進(jìn)行間隔。
- 若不了解該服務(wù),可先查閱iptables服務(wù)詳解
2. 代碼塊
#!/bin/bashfile_path=$(dirname "$0")
cd $file_pathchain="IP_WHITELIST" # 創(chuàng)建鏈名稱(chēng)為:IP_WHITELIST
ip_list=""if test -s ./ip.txt; thencat ip.txt | awk '{print$1}' > ./ip_temp.txt # IP地址去重ip_list=($(sort -u ./ip_temp.txt))rm -f ./ip_temp.txt
fifunction create_rule(){# 注意iptables插入順序iptables -w -t filter -N $chain # 創(chuàng)建新鏈iptables -w -t filter -I $chain -j DROP # 匹配所有流量,執(zhí)行動(dòng)作拒絕for ip in ${ip_list[@]}; dodports=`cat ip.txt | grep "$ip" | awk '{print$2}'`if [ -z "$dports" ]; then # 判斷端口列表是否為空iptables -w -t filter -I $chain -s $ip -j ACCEPTelseiptables -w -t filter -I $chain -s $ip -p tcp -m multiport --dports $dports -j ACCEPTfidoneecho -e "\033[32miptables service rule crete complete!\033[0m"
}function delete_rule(){# 清理iptables創(chuàng)建的匹配規(guī)則while iptables -w -t filter -D INPUT -p tcp -j $chain 2>/dev/null; do # 忽略刪除匹配規(guī)則錯(cuò)誤信息sleep 0.1s done# iptables -w -t filter -F $chain 2>/dev/nulliptables -w -t filter -X $chain 2>/dev/nullecho -e "\033[32miptables service rule cleanup complete!\033[0m"
}function backup_rule(){# 備份當(dāng)前環(huán)境下iptables規(guī)則到指定目錄下臨時(shí)文件iptables-save > ./iptables_bk_$(date +"%Y-%m-%d %H:%M:%S") # 以時(shí)間指定文件名稱(chēng)echo -e "\033[32miptables service rule backup complete,path is "$file_path"/iptables_bk_<local_time>\033[0m"
}case ${1:-help} in "create" )# 先備份規(guī)則,再清理規(guī)則,后創(chuàng)建新規(guī)則backup_rule && delete_rule && create_rule;;"delete" )# 先備份規(guī)則,再清理規(guī)則backup_rule && delete_rule;;"backup" )# 直接備份規(guī)則backup_rule;;* )# 可用參數(shù)說(shuō)明echo -e "\033[31m Usage: \n\t$0 options is [create/delete/backup/help]\033[0m";;
esac
3. 執(zhí)行結(jié)果
ip.txt
配置參考
4. 地址與端口獲取方法
4.1 tcpdump抓包分析(推薦使用)
tcpdump -i any -s56 -lnnqt 'inbound and (dst port 2181 or dst port 2888 or dst port 3888)' | cut -d'.' -f1-4 | awk '!a[$NF]++ {print $NF; fflush();}' | tee <file_path>/ip.txt
命令解析:
- tcpdumo:-i any 抓取所有接口數(shù)據(jù)包,-s56 截取報(bào)文前56字節(jié)內(nèi)容,-lnnqt 使用數(shù)字格式顯示IP地址和端口號(hào),inbound 只抓取入站數(shù)據(jù)包,dst port 目標(biāo)端口列表
- cut:切割出IP地址
- awk:對(duì)每個(gè)IP地址進(jìn)行去重操作
4.2 TCP連接分析(僅能識(shí)別TCP連接)
ss -nat | grep -E ":2181|2888|3888" | awk '{print $NF}' | grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | awk '!a[$0]++' | tee <file_path>/ip.txt
命令解析:
- ss:查找當(dāng)前系統(tǒng)中所有TCP連接的狀態(tài)信息,并同時(shí)過(guò)濾端口
- awk:第一個(gè)為輸出最后一行信息并過(guò)濾出IP地址,第二個(gè)為對(duì)每個(gè)IP地址進(jìn)行去重操作