• 云服务器防ssh攻击


    最近在某云租了台云服务器,中间有几天没登,登陆成功后显示1万多次的失败登录,于是萌新开始了一段防ssh攻击的探索之路,记录一下。

    从网上学习到的思路主要从以下几个方面进行防御

    1、禁用root用户ssh登录。使用自定义的用户名进行登录

    2、封禁ip

    3、使用其它端口登录(关闭22端口)

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    具体实现如下

    1、禁用root用户ssh登录。使用自定义的用户名进行登录

     创建新用户,并进行登录测试,此处省略几百字.......

    一定要创建新用户

    一定要创建新用户

    一定要创建新用户

    vi /etc/ssh/sshd_config

    修改 PermitRootLogin值为no

    2、封禁ip

    编写shell将攻击方IP加入黑名单,网上参考来的

    统计失败登录记录,这里定义时间区间内失败超过5次就将ip加入黑名单

    --secure_ssh.sh
    #! /bin/bash
    cat /var/log/secure|awk '/Failes/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/littlebro/bin/blackIP.txt
    for i in `cat /usr/littlebro/bin/blackIP.txt`
    do
        IP=`echo $i |awk -F= '{print $1}'`
        NUM=`echo $i |awk -F= '{print $2}'`
            if [$NUM -gt 5 ];then
                grep $IP /etc/hosts.deny > /dev/null
                if [ $? -gt 0 ];then
                    echo "sshd:$IP:deny" >> /etc/hosts.deny
                fi
            fi
    done

    corntab定时,每5分钟运行一次上述脚本

    crontab -e
    */5 * * * *  sh /usr/littlebro/bin/secure_ssh.sh

    敲lastb命令发现,然鹅每天还是有很多攻击记录/etc/hosts.deny记录不断增加,于是决定弃用22端口

    3、使用其它端口登录(关闭22端口)

     具体操作如下,没装firewall的先装一下,云服务控制台安全规则里添加下要使用的端口,这里用的2333

    cd /etc/ssh/
    vi ssh/sshd_config
    #添加2333端口 Port 2333
    ##重启sshd服务
    systemctl restart sshd.service
    ##firewall添加端口2333
    firewall-cmd --zone=public --add-port=2333/tcp --permanent
    ##重启firewall
    firewall-cmd --reload
    ##检查添加是否成功
    firewall-cmd --zone=public --query-port=2333/tcp
    ##开新窗口切换端口登录测试
    
    ##firewall移除22端口
    firewall-cmd --zone=public  --remove-port=22/tcp --permanent
    
    ##修改sshd_config文件删除22端口
    ##重启sshd服务
    systemctl restart sshd.service

    大概就是这样了。改完失败登录记录确实少了很多。

    当然如果2333端口被扫描到后应该又会有新的攻击,后续有新的思路再行更新。

    以上用户名littlebro与2333端口都是编的.....

    仅供参考

  • 相关阅读:
    VSCode多文件编译执行
    python当函数赋给变量时带括号与不带括号的区别
    VS添加现有的文件夹到项目中
    pythonpython中a=a+b与a+=b的区别
    android创建无界面的服务运行在后台
    androidService_Intent_must_be_explicit的解决方法
    VSCode配置c_cpp环境
    VSCode切换焦点时自动保存文件
    Gradle动态移除清单文件中的权限
    C++多线程
  • 原文地址:https://www.cnblogs.com/pter/p/15441025.html
Copyright © 2020-2023  润新知