Linux系统运维脚本:检查登录用户是否过多 (比如超过20个),使用uptime,who,cron等命令查看登录用户的数量

目            录

一、问题

二、解决方法

1、通过统计登录用户来发现非法入侵者

2、脚本实现登录用户数超过阈值,给出提醒

3、定期运行脚本,让提醒及时有效


一、问题

       Linux的服务器放在公网上,很多人需要访问这个服务器,知道服务器的IP地址,同时服务器的ssh端口也是开放的。那么这个服务器就可能碰到一些网络攻击,比如暴力破解用户密码、拒绝服务攻击(DoS)或其他形式的网络攻击。攻击者可能会尝试使用多个用户名和密码组合来登录系统,以获取未经授权的访问。攻击者一般都比较专业,往往会攻破一些防范不严的服务器。

       有时候,我们的服务器可能还会泄密,这样,攻击者会登录到我们系统,进行非法活动。

       如何最快的时间发现这个问题呢?

二、解决方法

        注意,以下演示的环境的系统为:CentOS Linux release 8.2.

1、通过统计登录用户来发现非法入侵者

        要查看当前登录的用户数,可以使用 who | wc -l 和uptime命令                           

who | wc -l

或命令 

uptime

实际环境演示如下:

[root@ecs-52a1 home]#
[root@ecs-52a1 home]# who
121yunwei pts/0        2024-03-10 21:39 (112.81.59.194)
121yunwei pts/3        2024-03-10 22:11 (112.81.59.194)
121yunwei pts/4        2024-03-10 22:14 (112.81.59.194)
vidisit  pts/5        2024-03-10 22:17 (112.81.59.194)
vidisit  pts/6        2024-03-10 22:18 (112.81.59.194)
vidisit  pts/7        2024-03-10 22:18 (112.81.59.194)
vidisit  pts/8        2024-03-10 22:18 (112.81.59.194)
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# who | wc -l
7
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# uptime22:48:29 up 47 days,  9:21,  7 users,  load average: 0.51, 0.54, 0.54
[root@ecs-52a1 home]#

2、脚本实现登录用户数超过阈值,给出提醒

        实现当登录到系统的用户数超过一定数值(比如20个)时,系统给出提醒,可以使用 shell 脚本来完成这个任务。以下是一个简单的示例脚本:

#!/bin/bash    
# 定义最大用户数 
MAX_USERS=20  # 获取当前登录用户数 
CURRENT_USERS=$(who | wc -l)    # 检查用户数是否超过最大值 
if [ "$CURRENT_USERS" -gt "$MAX_USERS" ]; then echo "警告:当前登录用户数超过 $MAX_USERS 个!" | mail -s "用户数警告" admin@example.com # 或者你可以使用其他通知方式,比如发送短信、Slack 消息等 
fi

        这个脚本首先定义了一个变量 MAX_USERS 来存储最大用户数。然后,它使用 who | wc -l 命令获取当前登录用户数,并将其存储在 CURRENT_USERS 变量中。接下来,脚本使用 if 语句检查当前用户数是否超过了最大值。如果超过了,它会使用 mail 命令发送一封包含警告信息的电子邮件给管理员(在这个例子中是 admin@example.com)。

        将脚本保存到一个文件中,比如 user_limit_prompt.sh,并给它执行权限:

chmod +x  user_limit_prompt.sh

3、定期运行脚本,让提醒及时有效

        要将这个脚本设置为定期运行,你可以使用 cron。首先,将脚本保存到一个文件中,比如 user_limit_alert.sh,并给它执行权限:

chmod +x  user_limit_alert.sh

        然后,编辑 crontab 文件来定期运行这个脚本。你可以使用 crontab -e 命令来编辑当前用户的 crontab:

crontab -e

        在打开的编辑器中,添加一行来指定脚本的运行时间和频率。例如,如果你想每分钟检查一次用户数,可以添加以下行:

* * * * * /home/user_limit_alert.sh

        保存并关闭文件后,crond 会自动每分钟运行一次这个脚本。

        发送电子邮件需要系统上安装有邮件发送工具(如 sendmail 或 postfix),并且正确配置了邮件发送设置。如果你不想使用电子邮件,可以考虑使用其他通知机制,比如写入日志文件、发送 HTTP 请求到某个监控服务等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI皮肤测试的基本原理

人工智能测试皮肤的实现原理通常涉及计算机视觉和机器学习技术。以下是一般的实现步骤和原理,涉及数据收集、特征提取、模型训练和优化等多个步骤,利用这些步骤中的技术手段来实现对皮肤状况的识别和分类。北京木奇移动技术有限公司,专业的软…

在用Java写算法的时候如何加快读写速度

对于解决该方法我们一般如下操作,不需要知道为什么,有模板(个人观点) 使用BufferedReader代替Scanner:Scanner类在读取大量输入时性能较差,而BufferedReader具有更高的读取速度。可以使用BufferedReader的r…

车规芯片为什么需要信息安全(2)

目录 1.车规芯片的信息安全应该从什么地方考虑 1.1 芯片硬件安全防护能力 1.2 车规芯片的信息安全服务

Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署)

我的环境 确保自己已经有cuda和cudnn的环境基础上进行。 cuda:11.7cudnn:适合cuda的版本Anaconda3 [python 3.10]TensorRt-8.6.1 安装TensorRt环境 查看自己的cuda环境,去官网下载适合的win版本。 官网地址 下载后解压,将解压后lib目录添加到环境变…

总结:Spring循环依赖详解与@Lazy注解使用详解

总结:Spring循环依赖详解与Lazy注解使用详解 一前提知识储备:1.Spring Bean生命周期机制(IOC)2.Spring依赖注入机制(DI)(1)Autowired注解标注属性set方法注入(2&#xff…

Altium Designer如何对走线模式进行切换

AD软件提供了比较智能的走线模式切换功能,可以根据个人习惯进行切换,能有效的提高了PCB设计效率。 点击界面右上角系统参数的图标 或者在pcb界面中使用快捷键OP进入到优选项界面,然后选中 PCB Editor-Interactive Routing,在布线…

【C++】面向过程与面向对象

文章目录 1. 面向过程与面向对象2. 类(class)类的作用域 3. 访问限定符封装 4. 类的实例化5. this指针 1. 面向过程与面向对象 C语言是面向过程(procedure-oriented)的语言,分析出求解问题的步骤,通过函数…

mmdetection如何计算准确率、召回率、F1值

1、训练 python tools/train.py configs/fcos/fcosrdweed3.py 2、测试 这一步要加–outresult.pkl,才能计算准确率和召回率 python tools/test.py configs/fcos/fcosrddweed3.py work_dirs/fcosrddweed3/epoch_300.pth --outresultfcos.pkl3、计算准确率和召回率…

LDA 关键词提取

目录 介绍 主题数确认 代码实现 普通关键词提取 TF-IDF,textRank 实现链接:gensim 实现 TF-IDF;textRank 关键词提取_gensim tfidf关键词-CSDN博客 它们是直接从文本中提取关键词,如果想基于一些潜在语义,可以用 L…

【MySQL】巧用 Max 函数将字段值作为字段输出

力扣题 1、题目地址 学生地理信息报告 2、模拟表 表:student Column NameTypenamevarcharcontinentvarchar 该表可能包含重复的行。该表的每一行表示学生的名字和他们来自的大陆。 3、要求 一所学校有来自亚洲、欧洲和美洲的学生。 编写解决方案实现对大洲…

表的连接【MySQL】

文章目录 什么是连接测试表内连接外连接左外连接右外连接全外连接 自然连接交叉连接参考资料 什么是连接 数据库的连接是指在数据库系统中,两个或多个数据表之间建立的关联关系,使它们可以进行数据的交互和操作。连接通常基于某种共同的字段或条件&…

力扣每日一题 猜数字游戏 阅读理解

Problem: 299. 猜数字游戏 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 Code class Solution {public String getHint(String secret, String guess) {int a 0;int[] cntS new int[10];int[] cntG new int[10];for(int i 0; i < secret.length(); i){if(secre…

leetcode 226. 翻转二叉树 java解法

题目描述 给你一棵二叉树的根节点 root&#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 解题思路 翻转一棵二叉树意味着交换每个节点的左右子树。我们可以使用递归的方法&#xff0c;从根节点开始&#xff0c;对每个节点进行如下操作&#xff1a; 交换当前节点的左…

Vscode连接外部虚拟环境

如果vscode工程目录里面有一个超级大的虚拟环境文件夹&#xff0c;怎么说都不是一件优雅的事&#xff0c;因此我们希望这个虚拟环境在工程目录外部&#xff0c;我们开始&#xff1a; 1. 复制虚拟环境目录路径&#xff1a;E:\envs\test 2. 在vscode中打开文件夹&#xff0c;CT…

Python教程:一文弄懂Python字符串(很详细)

字符串是计算机编程中表示文本数据的一种数据类型。在Python和许多其他编程语言中&#xff0c;字符串是由字符序列组成的不可变序列&#xff0c;可以包含字母、数字、符号以及空格等字符。字符串通常用引号括起来表示&#xff0c;可以使用单引号&#xff08;&#xff09;、双引…

一文详解WebView,不好理解就想想iframe,类比后秒懂了。

Hi&#xff0c;我是贝格前端工场&#xff0c;又到了给大家做技术扫盲的时候&#xff0c;本文讲一讲webview&#xff0c;有些老铁觉得很难懂&#xff0c;其实借助iframe来中转一下&#xff0c;就好理解了。 WebView是一种用于在应用程序中显示Web内容的组件。它可以嵌入到应用程…

【C++】关键字:auto

文章目录 1. 介绍2. 如何使用 1. 介绍 从C11开始&#xff0c;auto变成了类型指示符&#xff08;之前auto并不是这个作用&#xff09;。使用auto定义变量时必须对其进行初始化&#xff0c;在编译阶段编译器自动推导auto变量的实际类型。因此auto并非是一种“类型”的声明&#…

爬取某乎专栏文章html格式,并转到pdf保存

import os import re import requests import pdfkit import parsel 1.先获取html文章内容获取小赖 2.把html文件转成pdffilename html\\ if not os.path.exists(filename):os.mkdir(filename)filename2 pdf\\ if not os.path.exists(filename2):os.mkdir(filename2)url htt…

柚见第十期(后端队伍接口详细设计)

创建队伍 用户可以 创建 一个队伍&#xff0c;设置队伍的人数、队伍名称&#xff08;标题&#xff09;、描述、超时时间 P0 队长、剩余的人数 聊天&#xff1f; 公开 或 private 或加密 信息流中不展示已过期的队伍 请求参数是否为空&#xff1f;是否登录&#xff0c;未登录不…

DockerCompose的介绍、安装与常用命令

Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具&#xff0c;通过一个docker-compose.yml配置文件来管理多个容器服务及其依赖关系 一 安装DockerCompose 1、下载 网盘下载 wget https://github.com/docker/compose/releases/download/v2.18.0/docker-comp…