利用/etc/hosts.deny防ssh暴力破解

前言

之前写了个利用防火墙防ssh暴力破解脚本
传送门
但是利用iptables需要重启服务才能使黑名单ip生效
后面发现用/etc/hosts.deny文件可以不重启实现黑名单

代码

#!/bin/bash
logFile=/opt/cronTask/log/ssh_deny.log
# 白名单
whiteList=""

while true
do
    # 过滤登陆失败大于5次的ip
    ipList=$(grep "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort|uniq -c|sort -nr|awk '{if($1>=5) print $2}')
    localTime=$(date +"%Y-%m-%d %H:%M:%S")

    for ip in ${ipList[@]}
    do
        # 过滤重复ip
        if [[ $(grep $ip /etc/hosts.deny) ]]
        then
            continue
        fi

        # 过滤白名单ip
        if [[ $(echo $whiteList |grep $ip) ]]
        then
            continue
        fi
        
        echo ----------------------add ip:$ip------------------------ >> $logFile
        echo "sshd:$ip" >> /etc/hosts.deny
    done
    
    RANGE=`expr $RANDOM % 30vim `
    delay_time=$RANGE
    sleep $delay_time
done

生成服务

vim /etc/systemd/system/ssh_deny.service

[Unit]
Description=ssh_deny daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/bin/bash /opt/crontask/ssh_deny.sh
Restart=always
RestartSec=1min
ExecStop=/usr/bin/killall ssh_deny.sh

[Install]
WantedBy=multi-user.target
systemctl enable ssh_deny.service
systemctl start ssh_deny.service

测试

手动将测试服务器ip加入/etc/hosts.deny

echo 'sshd:$ip' >> /etc/hosts.deny

ssh连接

# ssh root@ip
ssh_exchange_identification: read: Connection reset by peer
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值