SSH 防止别人爆破 N个方法

2021年8月11日 72点热度 0人点赞 0条评论

SSH 防止别人爆破方法

方法1. 使用证书密钥登陆,我就是这样做,主要是最简单而且有效,而且使用简单

  • 证书登陆的脚本.sh
#!/bin/bash
mkdir -p ~/.ssh  && cd ~/.ssh

# id_rsa.pub  authorized_keys   SSH 跳板机公钥
authorized_keys(){

cat <<EOF >>  authorized_keys
ssh-rsa 把你的公钥放这行 root  ##################################

EOF
}

no_use_passwd(){
    # 禁用密码登陆
    sed -i "s/PasswordAuthentication.*/PasswordAuthentication no/g"    /etc/ssh/sshd_config
    sed -i "s/#PasswordAuthentication.*/PasswordAuthentication no/g"   /etc/ssh/sshd_config

    # 只能SSH2访问,这个安全性高.
    sed -i '/Protocol/d' /etc/ssh/sshd_config
    echo "Protocol 2" >> /etc/ssh/sshd_config

    # 重启ssh服务
    systemctl restart ssh
}

##  启用功能
authorized_keys
no_use_passwd

方法2. 改端口 密钥登陆 关闭密码登陆, 操作起来麻烦一些,自己使用也稍微不方便点

  • 方法1脚本,启用密钥,再修改端口

方法3. 改端口+用key登陆,常年root用户登录,外加iptable伺候


iptables -I INPUT -p tcp --dport 端口 -m state --state NEW -m recent --name ssh --rcheck --seconds 600 --hitcount 3 -j DROP
iptables -I INPUT -p tcp --dport 端口 -m state --state NEW -m recent --name ssh --set -j ACCEPT

# 600秒发起超过3次新连接的直接丢包

方法4. ssh爆破10次失败就拉黑

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat  /usr/local/bin/black.txt`
do
        IP=`echo $i |awk -F= '{print $1}'`
        NUM=`echo $i|awk -F= '{print $2}'`
        result=$(cat /etc/hosts.deny | grep $IP)
        if [[ $NUM -gt 10 ]];then
                if [[ $result = "" ]];then
                        echo "sshd: $IP" >> /etc/hosts.deny
                fi
        fi
done
  • 定时任务:10分钟执行一次,crontab -e
*/10 * * * * bash /usr/local/bin/secure_ssh.sh

方法5. 很多人使用的 fail2ban

apt -y update
apt install -y fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sed -i 's/^bantime  = 600$/bantime  = 3600/g' /etc/fail2ban/jail.local
/etc/init.d/fail2ban start

方法6. 关门放狗 iptables 法,这个也是不错的辅助方法,可以把跳板机的IP放里面

iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
iptables -I INPUT -p tcp -s 你的ip --dport 22 -j ACCEPT
  • 自己忘了 直接重启小鸡就好了
  • 关门重启就好了,重启自动失效

方法7. 使用云主机的防火墙机制,SSH端口只对本地市级IP网段开放

  • 方法是监测自己上网动态IP,然后使用 ipip.net 查询网段,添加到防火墙规则

彼岸

这个人很懒,什么都没留下