当前位置: 代码迷 >> 综合 >> openwrt 处理 ssh 暴力破解
  详细解决方案

openwrt 处理 ssh 暴力破解

热度:40   发布时间:2024-03-07 02:45:52.0

内容来自网络

原文链接: 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 ]] ; theniptables -N $ChainNameecho '['`date +%Y%m%d_%H:%M:%S`'] '"iptables -N $ChainName" >> $LOG_DEST
fi## 判断INPUT跳到链的规则是否存在
iptables -C $INPUT_RULE > /dev/null 2>&1
if [[ $? == 1 ]] ; theniptables -I $INPUT_RULEecho '['`date +%Y%m%d_%H:%M:%S`'] '"iptables -I $INPUT_RULE" >> $LOG_DEST
fiDenyIPLIst=`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 ]];thenfor i in $DenyIPLIstdoiptables -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_DESTdone
fi

 

具体操作

以 root 身份登录

cd /root

保存上面的代码为 DenyPwdHack.sh

chmod u+x DenyPwdHack.sh

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

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