zoukankan      html  css  js  c++  java
  • ssh访问控制,阻断异常IP,防止暴力破解

    文章转载自:https://mp.weixin.qq.com/s/oktVy09zJAAH_MMKdXjtIA

    由于业务需要将Linux服务器映射到公网访问,SSH 端口已经修改,但还是发现有很多IP进行暴力破解,尝试将异常IP阻止非法访问,实现方式①SSH黑名单 ②Firewalld防火墙添加drop规则;

    SSH 黑名单实现思路

    ①通过lastb获取一小时区间非法登录系统的IP并通过AWK 统计>10次的IP;
    ②FOR 循环 实现SSH 黑名单添加;
    ③将SHELL 脚本添加到系统计划任务中。
    客户端IP发起登录,Linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止。

    #!/bin/bash
    DATE=$(date +"%a %b %e %H")
    DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')
    for IP in $DROP_IP; do
        if [ $(cat /etc/hosts.deny |grep -c "$IP") -eq 0 ]; then
            echo "sshd:$IP:deny" >> /etc/hosts.deny      
    fi
    done
    

    Firewalld实现思路

    ①通过lastb获取一小时区间非法登录系统的IP并通过AWK 统计>10次的IP;
    ②FOR 循环 实现fFirewalld防火墙添加drop规则并重新加载防火墙配置;
    ③将SHELL 脚本添加到系统计划任务中。

    
    #!/bin/bash
    DATE=$(date +"%a %b %e %H")
    DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')
    for ip in $DROP_IP; do
        if [ $(firewall-cmd  --list-all |grep drop |grep -c "$ip") -eq 0 ]; then
           firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$ip" drop" >> /dev/null
           firewall-cmd --reload >>/dev/null
          fi
    done
    

    计划任务

    
    [root@ecs-01 opt]# crontab    -e
    #每5分钟执行一次
    */5 * * * *  /usr/bin/bash /opt/fwdrop.sh
    */5 * * * *  /usr/bin/bash /opt/sshdrop.sh
    

    Firewall 配置

    查看 rich-rule
    
    firewall-cmd   --list-rich-rules --zone=public
    
    允许 rich-rule ip
    
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" accept'
    
    禁止 rich-rule ip
    
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" drop'
    
    删除 rich-rule ip
    
    firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.10.8" drop'
    
    允许 rich-rule ip + port
    
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" accept'
    
    禁止 rich-rule ip + port
    
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" drop'
    
    删除 rich-rule ip + port
    
    firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" drop'
    
    禁止 rich-rule icmp
    
    firewall-cmd   --permanent --add-rich-rule='rule protocol value=icmp drop'
    
    删除rich-rule icmp
    
    firewall-cmd   --permanent --remove-rich-rule='rule protocol value=icmp drop'
    
  • 相关阅读:
    字符串系列——Immediate Decodability
    Java I/O流操作(四)对象的序列化
    table自动拉伸在chrome与IE中的区别
    【web开发】spring+hibernate4支持中文排序
    SQL批量重命名中文字段名为对应拼音首字母字段名脚本
    Hibernate执行查询后又立马执行了更新(defaultaccess)
    上传图片之上传前预览图片
    挖掘FPTree
    Linux下Json库的编译及代码测试
    C语言中的位运算和逻辑运算
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15582121.html
Copyright © 2011-2022 走看看