openwrt 处理 ssh 暴力破解

it2025-07-21  10

内容来自网络

原文链接: OpenWRT固件拒绝SSH/Luci密码破解攻击脚本 OpenWRT被SSH攻击怎么办?

 


先上代码

ChainName=DenyPwdHack SSH_PORT=22 Luci_Port=443 LOG_DEST=/tmp/DenyPwdHack.log INPUT_RULE="INPUT -p tcp -m multiport --dports $SSH_PORT,$Luci_Port -j $ChainName" ## 日志关键字,每个关键字可以用"|"号隔开,支持grep的正则表达式 LOG_KEY_WORD="auth\.info\s+sshd.*Failed password for|luci:\s+failed\s+login" ## 白名单IP可以用"|"号隔开,支持grep的正则表达式 exclude_ip="192.168.|127.0.0.1" ## 失败次数 Failed_times=10 ## 判断链是否存在 iptables --list $ChainName > /dev/null 2>&1 if [[ $? == 1 ]] ; then iptables -N $ChainName echo '['`date +%Y%m%d_%H:%M:%S`'] '"iptables -N $ChainName" >> $LOG_DEST fi ## 判断INPUT跳到链的规则是否存在 iptables -C $INPUT_RULE > /dev/null 2>&1 if [[ $? == 1 ]] ; then iptables -I $INPUT_RULE echo '['`date +%Y%m%d_%H:%M:%S`'] '"iptables -I $INPUT_RULE" >> $LOG_DEST fi DenyIPLIst=`logread \ | awk '/'"$LOG_KEY_WORD"'/ {for(i=1;i<=NF;i++) \ if($i~/^(([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/) \ print $i}' \ | grep -v $exclude_ip \ | sort |uniq -c \ | awk '{if($1>'"$Failed_times"') print $2}'` IPList_sum=`echo $DenyIPLIst | wc -l` if [[ $IPList_sum -ne 0 ]];then for i in $DenyIPLIst do iptables -C $ChainName -s $i -j DROP > /dev/null 2>&1 [[ $? -eq 1 ]] && iptables -A $ChainName -s $i -j DROP \ && echo '['`date +%Y%m%d_%H:%M:%S`'] '"iptables -A $ChainName -s $i -j DROP" >> $LOG_DEST done fi

 

具体操作

以 root 身份登录

cd /root

保存上面的代码为 DenyPwdHack.sh

chmod u+x DenyPwdHack.sh

最后在 crontab 中加一条计划任务

0 */3 * * * /root/DenyPwdHack.sh

 

 

最新回复(0)