zoukankan      html  css  js  c++  java
  • 内网扫描监测 v2 iptables版

    内网扫描监测 v2 iptables版

    环境准备

    1、centos7操作系统
    2、配置多个ip,两种用途:

    服务器添加多块网卡,可以同时监测多个网络
    单网卡配置多个ip,增加被黑客扫描的几率
    我这里配置了一块网卡 ens160,上面配置了四个IP地址 10.12.28.99、10.12.29.99、10.12.30.99、10.12.31.99

    3、加固sshd服务,防止服务器被黑客黑掉

    配置完监控后,直接关闭sshd服务。后续维护的时候,可以临时开启sshd服务,或者在服务器本地进行操作
    N种方法:禁用root登录、设置强密码、强制使用密钥登录、修改sshd监听端口号,限制访问IP等
    我这里使用的方法是:强制使用密钥登录+修改sshd监控端口为22774

    4、关闭防火墙运行黑客扫描本机的端口;关闭除sshd以外的其他所有可以监听tcp端口的服务,防止黑客扫描成功黑掉服务器;最后执行命令检查服务器对外监听的端口只有sshd,方便我们连上来进行管理
    [root@net-monitor ~]# systemctl stop firewalld.service
    [root@net-monitor ~]# systemctl disable firewalld.service
    [root@net-monitor ~]# systemctl stop iptables.service
    [root@net-monitor ~]# systemctl disable iptables.service
    [root@net-monitor ~]# systemctl stop rpcbind.service
    [root@net-monitor ~]# systemctl stop rpcbind.socket
    [root@net-monitor ~]# systemctl disable rpcbind.socket
    [root@net-monitor ~]# systemctl disable rpcbind.service
    [root@net-monitor ~]# ss -tunl | grep '^tcp' | awk '{print$5}' | grep * 
    *:22774
    

    操作步骤

    1、设置iptables,将所有SYN包的请求记录到/var/log/message文件中
    [root@net-monitor ~]# iptables -I INPUT -p tcp -m state --state NEW -j LOG --log-prefix "IPTABLES-TCP-SYN: "
    [root@net-monitor ~]# iptables-save 
    # Generated by iptables-save v1.4.21 on Tue Feb  2 00:36:25 2021
    *filter
    :INPUT ACCEPT [7:520]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [4:656]
    -A INPUT -p tcp -m state --state NEW -j LOG --log-prefix "IPTABLES-TCP-SYN: "
    COMMIT
    # Completed on Tue Feb  2 00:36:25 2021
    [root@net-monitor ~]# cat /var/log/messages | grep IPTABLES-TCP-SYN
    Feb  1 22:41:36 net-monitor kernel: IPTABLES-TCP-SYN: IN=ens160 OUT= MAC=00:0c:29:4e:7e:b7:00:0c:29:8a:e5:20:08:00 SRC=10.12.28.8 DST=10.12.28.99 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=63730 DF
    

    iptables在INPUT中匹配TCP-SYN包
    iptables -I INPUT -p tcp -m state --state NEW

    将匹配到的包信息记录到/var/log/message日志中,日志前缀自定义为IPTABLES-TCP-SYN:,方便后面分析日志
    -j LOG --log-prefix "IPTABLES-TCP-SYN: "

    在/var/log/messages日志中可以找到发起SYN请求的源IP地址,后面我们将对这一项做详细分析
    SRC=10.12.28.8

    2、将第一步中执行的内容设置成开机自动运行
    [root@net-monitor ~]# echo 'iptables -I INPUT -p tcp -m state --state NEW -j LOG --log-prefix "IPTABLES-TCP-SYN: "' >> /etc/rc.local 
    [root@net-monitor ~]# chmod +x /etc/rc.d/rc.local
    
    3、编辑脚本文件 /opt/shells/net-monitor-iptables.sh(详细的注释请参考“内网扫描监测 v1 tcpdump版”)
    #!/bin/bash
    
    #  设置IP白名单,多个IP使用 | 隔开
    WHITE_LIST='10.12.28.253|172.22.140.44'
    
    #  设置报警阈值
    WARN_NUM=4
    
    #  自动分析异常IP,触发阈值自动邮件报警,并提供证据
    cat /var/log/messages 
        | grep "$(date -d '1 min ago' "+%b %e %H:%M")" 
        | grep IPTABLES-TCP-SYN 
        | grep -Ev "$WHITE_LIST" 
        | awk -F ' |=' '{print $15}' 
        | sort -n | uniq -c | sort -nr 
        | while read COUNT IP
          do
            if [ $COUNT -ge $WARN_NUM ]
            then    
                # 收集上一分钟异常IP扫描证据到证据文件
                cat /var/log/messages 
                    | grep "$(date -d '1 min ago' "+%b %e %H:%M")" 
                    | grep $IP     
                    > /tmp/$IP.log  
                # 取证据文件前10行作为邮件正文
                head /tmp/$IP.log 
                    | mail -r net-monitor@mail.com 
                        -s "异常IP: $IP 一分钟内扫描监控服务器 $COUNT 次" 
                        -a /tmp/$IP.log    
                        CC@mail.com 
                        network-manager@mail.com
                # 删掉服务器上的证据文件
                rm -rf /tmp/$IP.log
            else    
                exit        
            fi      
          done
    
    4、添加计划任务,每分钟执行一次脚本
    [root@net-monitor ~]# crontab -e
    * * * * * sh /opt/shells/net-monitor-iptables.sh
    
    5、完成后的效果,如图

    6、附1:手工分析上一分钟扫描情况
    [root@net-monitor ~]# cat /var/log/messages | grep "$(date -d '1 min ago' "+%b %e %H:%M")" | grep IPTABLES-TCP-SYN | awk -F ' |=' '{print $15}' | sort -n | uniq -c | sort -n
         21 10.12.28.8
    
    7、手工分析上一小时扫描情况
    [root@net-monitor ~]# cat /var/log/messages | grep "$(date -d '1 hour ago' "+%b %e %H")" | grep IPTABLES-TCP-SYN | awk -F ' |=' '{print $15}' | sort -n | uniq -c | sort -n
    
  • 相关阅读:
    iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent
    iOS AR技术初体验,使用EasyAR示例程序的小白指南
    导入GPUImage,实时滤镜相机,GUPImage遇到的问题解决,_OBJC_METACLASS_$_GBGPUImageView in GBGPUImageView.o
    iOS 除去图片的白色背景(接近白色),或者其它颜色的替换,获取像素点的ARGB值
    用const取代宏定义更好的管理内存
    一些字体设计的练习
    Appium 解决锁屏截屏问题(java篇)
    解决Appium无元素可选的如何定位(java篇)
    解决Appium 抓取toast(java篇)
    Appium 解决手势密码 (java篇)
  • 原文地址:https://www.cnblogs.com/www1707/p/14360046.html
Copyright © 2011-2022 走看看