elk监控ssh登陆日志,通过脚本实现阈值告警

该博客介绍了如何利用Filebeat、Logstash和Python脚本来监控SSH登陆日志,并设定阈值触发告警。通过Filebeat收集日志,Logstash进行处理,然后使用Python脚本分析`elk_ssh_failed.log`文件,当失败登录次数超过3次时,发送邮件警告。邮件内容包含失败的用户、来源、状态和次数信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

filebeat配置:

filebeat.prospectors:

- input_type: log

  paths:
    - /var/log/secure

  exclude_lines: ["nagios"]

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.1.1:5050"]

logstash配置:

input {
       beats {
              port => 5050
       }
}    
filter {
    grok {
        match => { "message" => "%{SYSLOGTIMESTAMP:a_time} %{USERNAME:a_hostname} sshd\[%{WORD:a_jinchen}\]: %{WORD:a_leixing}\s%{WORD:a_fangshi}\sfor\s%{WORD:a_user}\sfrom\s%{IPV4:a_ip}\sport\s%{INT:a_port}\s%{WORD:a_xieyi}"}
    }
}
output {
    elasticsearch{
          hosts => [ "10.0.1.2:9200","10.0.1.3:9200","10.0.1.4:9200" ]
          index=> "logstash-fangwen-%{+YYYY.MM}"
    }
    if [a_leixing] == "Failed" {      
       file {
          path  => "/mapbar/app/elk/logstash-5.0.0/logs/elk_ssh_failed.log"
          codec => line { format => "custom format: %{message}"}
 }
}
}


python脚本:

import os
if os.path.exists('/mapbar/app/elk/logstash-5.0.0/logs/elk_ssh_failed.log'):
    file_dict = {}
    input_file = open('/mapbar/app/elk/logstash-5.0.0/logs/elk_ssh_failed.log')
    line_file = input_file.readlines()
    file_number = len(line_file)
    for i in line_file:
        file_list = i.split()
        file_key = file_list[5]+','+file_list[7]+','+file_list[8]+','+file_list[10]+','+file_list[12]
        if file_key in file_dict.keys():
            number = file_dict[file_key]
            number += 1
            file_dict[file_key] = number
        else:
            file_dict[file_key]=1
    echo_content = ''
    for k,v in file_dict.items():
        if int(v) > 2:
            k_info = k.split(',')
            echo_content += "User: %s \n From: %s\n Land: %s \n State: failed \n Failure Times: %s \n %s \n" % (k_info[3],k_info[4],k_info[0],v,'-'*50)
    if echo_content:
        os.system('echo "'+echo_content+'"| mail -s "ssh_failed:warning!" wzz@csdn.com')
    input_file.close()
    os.system('rm -rf /mapbar/app/elk/logstash-5.0.0/logs/elk_ssh_failed.log')

cronteb:

*/5 * * * * /mapbar/app/tools/anaconda2/bin/python  /mapbar/app/elk/logstash-5.0.0/sh/elk_ssh_failed.py  2>&1


原理:

当出现Failed失败时logstash会输出这个消息给elk_ssh_failed.log文件,每五分钟通过python脚本检测文件,如果超过3次发送邮件告警


邮件格式:

User: wangzz
From: ip地址
Land: 登陆的主机名
State: failed
Failure Times: 次数
--------------------------------------------------




<think>好的,我现在需要帮用户设计一个云计算安全漏洞监测系统,包含漏洞扫描、风险评估、实时监控告警功能,还要提供论文参考和代码示例。首先,我得理清楚用户的需求。用户提到的功能模块比较明确,但可能需要进一步细化。例如,漏洞扫描具体要扫描哪些方面,风险评估的方法有哪些,实时监控的数据源是什么,告警的触发条件如何设定等等。 接下来,我得考虑如何将这些功能模块整合到一个系统中。云计算环境通常涉及多个虚拟机和容器,系统需要能够跨平台工作。漏洞扫描可能需要集成现有的工具,比如Nessus或OpenVAS,或者自己开发扫描模块。风险评估部分可能需要机器学习模型来分析漏洞的严重性和潜在影响。实时监控可能需要日志收集和分析,比如使用ELK栈(Elasticsearch, Logstash, Kibana)或者Prometheus+Grafana。告警功能则需要设置阈值和规则,可能用到像Nagios这样的工具,或者自己实现告警逻辑。 然后,论文设计方面,用户可能需要结构上的指导。通常论文包括引言、相关研究、系统设计、实现、实验结果、结论等部分。需要确保每个功能模块在论文中有详细的设计和实现描述,特别是如何整合这些模块,解决可能的技术难点,比如数据处理、系统性能优化等。 代码示例部分,用户可能需要具体的代码片段来展示关键功能的实现。比如,用Python写一个简单的漏洞扫描脚本,调用API进行扫描;用机器学习库(如scikit-learn)实现风险评估模型;使用Flask或Django搭建一个监控面板,展示实时数据并触发告警。 需要注意的是,用户提到的引用[1]和[2]提到了监控管理、审计日志告警管理等功能,引用[3]提到了大模型的安全风险,所以在设计系统时需要考虑这些方面,比如如何防止数据泄露,如何记录审计日志,如何管理网络设备等。可能还需要结合大模型来进行更智能的风险评估,但也要注意安全性风险,如模型攻击,这需要在系统中加入相应的防护措施。 另外,用户可能需要系统架构图,展示各个模块之间的关系和数据流。例如,前端展示层、后端处理层、数据库层,以及各个功能模块如何交互。在代码实现时,可能需要用到微服务架构,每个功能模块作为独立的服务,通过API进行通信,提高系统的可扩展性和维护性。 最后,用户可能需要一些参考文献或现有的开源项目作为参考,比如相关论文或GitHub上的类似项目,这可以帮助用户更快地找到实现方法和优化点。同时,代码示例需要确保语法正确,符合最佳实践,比如异常处理、日志记录、性能优化等。</think>### 云计算安全漏洞监测系统设计 #### 一、功能需求设计 1. **漏洞扫描模块** - 支持多协议资产发现(HTTP/SSH/RDP等) - 集成CVE/NVD漏洞数据库匹配 - 提供主动扫描与被动流量嗅探双模式 实现方法:使用$Nmap$进行端口扫描,结合$OpenVAS$插件化漏洞检测[^1] 2. **风险评估模块** - 构建CVSS评分体系量化漏洞威胁 - 采用贝叶斯网络模型计算攻击路径概率 - 动态生成资产拓扑关联图 实现公式: $$ Risk = \sum_{i=1}^n (Severity_i \times Exploitability_i \times AssetValue_i) $$ 3. **实时监控告警** - 网络流量异常检测(基于LSTM时序预测) - 日志审计与用户行为分析(UEBA) - 多级告警阈值设定(警告/严重/紧急) 引用监控管理模块设计原则[^2] 4. **辅助功能** - 自动化修复建议生成 - 合规性检查(GDPR/HIPAA等) - 可视化仪表盘 #### 二、系统架构实现 ```python # 漏洞扫描示例(伪代码) import nmap from pyTenable import OpenVAS class VulnerabilityScanner: def __init__(self): self.nm = nmap.PortScanner() self.ovas = OpenVAS() def active_scan(self, target): self.nm.scan(target, arguments='-sV -T4') return self.ovas.analyze(self.nm.csv()) ``` ```python # 风险评估模型(简化版) from sklearn.naive_bayes import GaussianNB import pandas as pd class RiskEvaluator: def __init__(self): self.model = GaussianNB() def train(self, dataset): df = pd.read_csv(dataset) X = df[['severity','exposure','value']] y = df['risk_level'] self.model.fit(X, y) ``` #### 三、论文设计要点 1. **引言**:分析云计算安全现状与挑战,引用大模型安全风险研究[^3] 2. **系统架构**:包含数据采集层、分析引擎层、决策层三层架构图 3. **核心算法**:详细说明风险评估模型与监控算法的数学推导 4. **实验验证**:对比传统方法与本文系统的漏报率/误报率 5. **应用展望**:讨论与Kubernetes等云原生技术的集成 #### 四、关键技术实现 1. **分布式扫描引擎** ```python # 使用Celery实现分布式任务 from celery import Celery app = Celery('scanner', broker='redis://localhost:6379/0') @app.task def cluster_scan(subnet): return nmap.PortScanner().scan(subnet) ``` 2. **实时监控告警** ```python # 基于Prometheus的监控实现 from prometheus_client import start_http_server, Gauge risk_score = Gauge('security_risk', 'Current system risk score') def update_risk(data): risk_score.set(calculate_risk(data)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值