SSH数据流量监控

这篇具有很好参考价值的文章主要介绍了SSH数据流量监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

检查网络连接的数据传输情况有以下一些实际意义:
安全监控:检查数据传输情况可以帮助你识别异常活动或潜在的安全威胁。如果发现大量不寻常的数据传输活动,可能表示有未经授权的访问或恶意行为。通过监控数据传输,可以及时发现并采取适当的安全措施来保护网络和系统。
流量控制和资源管理:了解数据传输情况可以帮助你做出更明智的决策,以管理网络资源。通过实时监控网络连接的数据传输,可以有效地分配带宽和资源,确保关键任务和应用程序获得足够的网络资源,而不会受到其他不必要的数据传输的影响。

脚本内容

使用内置工具和脚本来实现监控

#!/bin/bash

max_data_per_connection=2.5  # 每个连接的最大数据量,单位为GB
max_connections=20  # 允许的最大连接数
log_file="/var/log/connection_monitor.log"  # 日志文件路径
max_log_size=10  # 日志文件的最大大小,单位为MB
backup_dir="/var/log/backup_logs"  # 备份日志的目录

# 创建备份目录
mkdir -p "$backup_dir"

while true; do
    # 获取当前SSH连接数和总数据量
    read connection_count total_data <<< $(ss -n | grep -E "ESTAB.*:22" | awk -v max_data=$max_data_per_connection '{count++; total += max_data} END {print count, total}')

    echo "$(date +"%Y-%m-%d %H:%M:%S") - Current SSH Connections: $connection_count, Estimated Total Data: $total_data GB" >> "$log_file"

    # 判断是否超过允许的总数据量
    if (( $(echo "$total_data > $max_connections" | bc -l) )); then
        echo "$(date +"%Y-%m-%d %H:%M:%S") - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"
        # 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制
    fi

    # 检查日志文件大小
    current_size=$(du -m "$log_file" | cut -f1)

    if ((current_size >= max_log_size)); then
        # 备份并截断日志文件
        backup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_connection_monitor.log"
        cp "$log_file" "$backup_file"
        > "$log_file"
        
        echo "$(date +"%Y-%m-%d %H:%M:%S") - Log rotated. Backup: $backup_file" >> "$log_file"
    fi

    sleep 60  # 间隔时间,可以根据需要调整
done

启动

bash name.sh & #通过bash命令启动,&代表后台启动

启动后可以到/var/log/connection_monitor.log文件中查看日志

脚本的主要部分

基本监控部分

max_data_per_connection: 每个连接的最大数据量,单位为GB。
max_connections: 允许的最大连接数。
log_file: 日志文件的路径。

日志轮转部分

max_log_size: 日志文件的最大大小,单位为MB。
backup_dir: 备份日志的目录。

创建备份目录

mkdir -p "$backup_dir"

如果备份目录不存在,则创建它。
主循环部分:

while true; do

无限循环,不断执行以下操作。
获取当前SSH连接数和总数据量

read connection_count total_data <<< $(ss -n | grep -E "ESTAB.*:22" | awk -v max_data=$max_data_per_connection '{count++; total += max_data} END {print count, total}')

使用ss命令获取当前SSH连接信息,然后使用grep和awk提取连接数和估算的总数据量。
记录监控信息到日志文件

echo "$(date +"%Y-%m-%d %H:%M:%S") - Current SSH Connections: $connection_count, Estimated Total Data: $total_data GB" >> "$log_file"

记录当前SSH连接数和估算的总数据量到日志文件。
判断是否超过允许的总数据量

if (( $(echo "$total_data > $max_connections" | bc -l) )); then
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"
    # 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制
fi

判断估算的总数据量是否超过设定的阈值,如果超过则记录异常信息,你可以在这个部分添加触发警报的逻辑。
检查日志文件大小并进行轮转

current_size=$(du -m "$log_file" | cut -f1)
if ((current_size >= max_log_size)); then
    backup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_connection_monitor.log"
    cp "$log_file" "$backup_file"
    > "$log_file"
    echo "$(date +"%Y-%m-%d %H:%M:%S") - Log rotated. Backup: $backup_file" >> "$log_file"
fi

检查当前日志文件的大小,如果超过设定的阈值(max_log_size),则创建一个带有时间戳的备份文件,并将日志文件内容备份到该文件,然后截断原始日志文件。记录日志轮转的事件,包括备份文件的路径和时间戳。
休眠

sleep 60  # 间隔时间,可以根据需要调整

休眠一段时间,控制循环的执行间隔。
这个脚本结合了监控SSH连接和日志轮转两个功能。可以根据需要进行调整,例如修改监控条件、调整轮转的日志大小、备份目录等。在实际使用之前,建议在测试环境中进行充分测试以确保其在你的特定环境中的可用性和准确性。

使用iftop和Bash脚本编写

安装工具

sudo apt install ifop

脚本编写

#!/bin/bash

max_data_per_connection=2.5  # 每个连接的最大数据量,单位为GB
max_connections=20  # 允许的最大连接数
log_file="/var/log/network_monitor.log"  # 日志文件路径
max_log_size=10  # 日志文件的最大大小,单位为MB
backup_dir="/var/log/backup_logs"  # 备份日志的目录

# 创建备份目录
mkdir -p "$backup_dir"

while true; do
    # 使用 iftop 获取实时网络流量信息
    network_data=$(iftop -t -s 1 | grep "Total send and receive" | awk '{print $5}')

    # 获取当前时间戳
    current_timestamp=$(date +"%Y-%m-%d %H:%M:%S")

    # 记录网络流量信息到日志文件
    echo "$current_timestamp - Total Network Data: $network_data" >> "$log_file"

    # 解析网络数据信息
    total_data=$(echo "$network_data" | sed 's/\([0-9]*\.[0-9]*\)\([KMGT]\)/\1 \2/g' | awk '{if ($2=="G") $1=$1*1024; if ($2=="T") $1=$1*1024*1024; if ($2=="M") $1=$1; print $1}')

    # 判断是否超过允许的总数据量
    if (( $(echo "$total_data > $max_connections" | bc -l) )); then
        echo "$current_timestamp - Total data exceeded the allowed limit. Possible anomaly detected." >> "$log_file"
        # 在此处添加触发警报的逻辑,例如发送电子邮件或使用其他通知机制
    fi

    # 检查日志文件大小并进行轮转
    current_size=$(du -m "$log_file" | cut -f1)
    if ((current_size >= max_log_size)); then
        backup_file="$backup_dir/$(date +"%Y%m%d%H%M%S")_network_monitor.log"
        cp "$log_file" "$backup_file"
        > "$log_file"
        echo "$current_timestamp - Log rotated. Backup: $backup_file" >> "$log_file"
    fi

    sleep 60  # 间隔时间,可以根据需要调整
done

这个脚本使用iftop命令获取实时网络流量信息,然后解析并记录到日志文件中。脚本中的其他部分与之前的脚本相似,包括判断是否超过允许的总数据量以及日志轮转功能。可以根据实际需求进行调整。
SSH数据流量监控,ssh,linux,服务器文章来源地址https://www.toymoban.com/news/detail-806380.html

到了这里,关于SSH数据流量监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌实验10-3:Linux 远程联机服务(三)- SSH服务器

    上答案 还是下载 上答案 上答案 我是改的判定文件 键盘输入ggdG 键盘输入i 点击[Esc] 键盘输入 :wq

    2024年02月03日
    浏览(42)
  • Linux版百度网盘丨直接在服务器SSH命令行中使用百度云,轻松解决数据传输和分享难题

    本文主要的目的就是在Linux环境下通过命令行来使用百度云盘!直接在服务器上将数据(比如基因组等大文件)传输到百度网盘,之后可以进行轻松分享,而且还可以支持备份,解决文件的传输和分享难题。 bypy是一个Python客户端,用于操作百度网盘,提供了丰富的命令行操作

    2024年02月09日
    浏览(52)
  • Linux云服务器限制ip进行ssh远程连接

    对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点: 增加安全性:SSH是一种加密的网络传输协议,可以保护数据的机密性和完整性。通过限制SSH连接的IP地址,可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才能进行SSH连接,从而增加了服务器的安

    2024年02月03日
    浏览(62)
  • CentOS Linux服务器无法远程 SSH 登录故障处理

    在管理 CentOS Linux 服务器时,远程 SSH 登录是一项关键功能。然而,有时候你可能会遇到无法通过 SSH 远程登录到服务器的问题。这篇文章将为你提供一些故障处理的步骤,帮助你解决这个问题。 以下是一些可能导致无法远程 SSH 登录的常见问题和相应的解决方法: 确认 SSH 服

    2024年02月05日
    浏览(61)
  • linux远程服务器和本地服务器相互之间传输文件方法SSH(乌班图系统)

    提前知道几点 : 1.使用的 MobaXterm软件 2.访问本地、远程服务器,需要账号和密码(远程机器上的 用户名和密码 远程机器的 IP 地址或主机名(在同一子网上))。每次访问需要输入密码,可以搜 Ubuntu SSH 免密登录 3.主要是先要访问本地服务器,才能访问远端服务器,显卡装

    2024年02月15日
    浏览(56)
  • 使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)

    目录 前言 基本使用教程 新建远程连接 连接主机 自定义命令 路由追踪 后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是

    2024年04月16日
    浏览(76)
  • 外网SSH远程连接linux服务器「cpolar内网穿透」

    转载自内网穿透工具的文章:无公网IP,SSH远程连接Linux CentOS服务器【内网穿透】 本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的Linux CentOS服务器,无需公网IP,也不需要设置路由器。 公网SSH远程Linux CentOS服务器【内网穿透】 cpolar官网:https://www.cpolar.com

    2023年04月23日
    浏览(64)
  • 如何在 Linux 服务器上配置基于 SSH 密钥的身份验证

    前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 SSH是一种加密协议,用于管理服务器并与服务器通信。虽然登录 SSH 服务器的方式有多种,下面我们将重点关注设置 SSH 密钥。 SSH 密钥提供了一

    2024年01月23日
    浏览(59)
  • 「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接

    转发自cpolar内网穿透的文章:【Vscode远程开发】使用SSH远程连接服务器 「内网穿透」 远程连接服务器工具有很多,比如XShell、putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行、服务器上的图片也无

    2024年02月06日
    浏览(56)
  • 【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

    创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen ,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥在本地端即可。 安装 在服务器端 ~/.ssh/ 路径下执行以下命令,在

    2024年02月16日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包