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'
    
  • 相关阅读:
    Equal Cut
    【线段树】Interval GCD
    zookeeper错误
    HBase之过滤器
    Hbase之缓存扫描加快读取速度
    Hbase之遍历超时处理
    Hbase之遍历获取数据
    Hbase之使用回调函数进行批处理操作
    Hbase之进行批处理操作
    Hbase之原子性更新数据
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15582121.html
Copyright © 2011-2022 走看看