【shell】每日shell练习:安全日志入侵检测/专业的系统配置文件合规检查

news/2025/11/16 15:12:20/文章来源:https://www.cnblogs.com/yangykaifa/p/19228207

题目7:安全日志入侵检测

描述:分析 auth.log 安全日志,检测潜在的 SSH 暴力破解攻击。

测试数据(保存为 auth_log.txt):

Dec  1 10:30:15 server1 sshd[1234]: Accepted password for john from 192.168.1.100 port 54321 ssh2
Dec  1 10:31:22 server1 sshd[1235]: Failed password for alice from 192.168.1.200 port 54322 ssh2
Dec  1 10:32:33 server1 sshd[1236]: Failed password for alice from 192.168.1.200 port 54323 ssh2
Dec  1 10:33:44 server1 sshd[1237]: Failed password for alice from 192.168.1.200 port 54324 ssh2
Dec  1 10:34:55 server1 sshd[1238]: Failed password for alice from 192.168.1.200 port 54325 ssh2
Dec  1 10:35:06 server1 sshd[1239]: Failed password for alice from 192.168.1.200 port 54326 ssh2
Dec  1 10:36:17 server1 sshd[1240]: Failed password for alice from 192.168.1.200 port 54327 ssh2
Dec  1 10:37:28 server1 sshd[1241]: Failed password for bob from 192.168.1.201 port 54328 ssh2
Dec  1 10:38:39 server1 sshd[1242]: Failed password for bob from 192.168.1.201 port 54329 ssh2
Dec  1 10:39:50 server1 sshd[1243]: Failed password for charlie from 10.0.0.1 port 12345 ssh2
Dec  1 10:40:01 server1 sshd[1244]: Failed password for charlie from 10.0.0.1 port 12346 ssh2
Dec  1 10:41:12 server1 sshd[1245]: Failed password for charlie from 10.0.0.1 port 12347 ssh2
Dec  1 10:42:23 server1 sshd[1246]: Failed password for charlie from 10.0.0.1 port 12348 ssh2
Dec  1 10:43:34 server1 sshd[1247]: Failed password for charlie from 10.0.0.1 port 12349 ssh2
Dec  1 10:44:45 server1 sshd[1248]: Failed password for charlie from 10.0.0.1 port 12350 ssh2
Dec  1 10:45:56 server1 sshd[1249]: Failed password for charlie from 10.0.0.1 port 12351 ssh2
Dec  1 10:46:07 server1 sshd[1250]: Failed password for charlie from 10.0.0.1 port 12352 ssh2
Dec  1 10:47:18 server1 sshd[1251]: Failed password for charlie from 10.0.0.1 port 12353 ssh2
Dec  1 10:48:29 server1 sshd[1252]: Failed password for charlie from 10.0.0.1 port 12354 ssh2
Dec  1 10:49:40 server1 sshd[1253]: Failed password for charlie from 10.0.0.1 port 12355 ssh2
Dec  1 10:50:51 server1 sshd[1254]: Accepted password for admin from 192.168.1.1 port 22 ssh2
Dec  1 10:51:02 server1 sshd[1255]: Failed password for root from 203.0.113.1 port 54321 ssh2
Dec  1 10:51:13 server1 sshd[1256]: Failed password for root from 203.0.113.1 port 54322 ssh2
Dec  1 10:51:24 server1 sshd[1257]: Failed password for root from 203.0.113.1 port 54323 ssh2
Dec  1 10:51:35 server1 sshd[1258]: Failed password for root from 203.0.113.1 port 54324 ssh2
Dec  1 10:51:46 server1 sshd[1259]: Failed password for root from 203.0.113.1 port 54325 ssh2

#!/bin/bash
# SSH暴力破解检测脚本
echo "===SSH安全检测报告==="
#统计失败登陆尝试
echo "失败登陆尝试统计:"
awk '/Failed password/ {ip = $11user = $9failed_attempts[ip]++user_attempts[user]++
}
END{print "按IP地址统计:"for (ip in failed_attempts) {if(failed_attempts[ip]>=5){print " ⚠️ "ip": "failed_attempts "次失败尝试"}}print "\n按用户名统计:"for (user in user_attempts) {if(user_attempts[user]>=5){print " ⚠️ "user": "user_attempts "次失败尝试"}}
}' auth_log.txt
#检测潜在的暴力破解攻击(同一IP在短时间内多次失败)
echo -e "\n===潜在暴力破解攻击==="
awk '/Failed password/ {ip = $11time = $3attempts[ip]++if (attempts[ip]==5){print " 警告: IP"ip "在短时间内有5次失败登陆尝试"}
}' auth_log.txt
#成功登录统计
echo -e "\n成功登录统计"
grep "Accepted password" | awk '{printf"  ✓ %s 从 %s 登录成功\n",$9,$11
}'
#安全建议
echo -e "\n===安全建议==="
high_attempts=$(awk '/Failed password/ {attempts[$11]++} END {count=0; for(ip in attempts) if(attempts[ip]>=10) count++; print count}' auth_log.txt)
if [[$high_attempts -gt 0]]; thenecho "   建议: 启用fail2ban或配置iptables规则阻止恶意IP"echo "   建议: 禁用root远程登录,使用普通用户+sudo"echo "   建议: 配置SSH密钥认证,禁用密码认证"
elseecho "  ✅ 未发现明显的暴力破解攻击"
fi

题目8:系统配置文件合规检查

描述:检查 SSH 配置文件的安全设置,确保符合安全基线要求。

测试数据(保存为 sshd_config.txt):

# Package generated configuration file
# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
MaxAuthTries 6
MaxSessions 10

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
#Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#!/bin/bash
# SSH 安全配置检查
echo "===SSH配置安全检查报告==="
#检查各项安全配置
echo "配置检查结果:"
#1、检查是否允许root登录
if grep -q "^PermitRootLogin yes" sshd_config.txt; thenecho "  ❌ PermitRootLogin: 允许root登录 (不安全)"
elif grep -q "^PermitRootLogin no" sshd_config.txt; thenecho "  ✅ PermitRootLogin: 禁止root登录 (安全)"
elseecho "  ⚠️  PermitRootLogin: 未明确设置,默认可能允许"
fi
#2、检查密码认证
if grep -q "^PasswordAuthentication yes" sshd_config.txt; thenecho "  ❌ PasswordAuthentication: 允许密码认证 (建议禁用)"
elif grep -q "^PasswordAuthentication no" sshd_config.txt; thenecho "  ✅ PasswordAuthentication: 禁用密码认证 (安全)"
elseecho "  ⚠️  PasswordAuthentication: 未明确设置"
fi
#3、检查认证尝试次数
max_auth=$(grep "MaxAuthTries" sshd_config.txt | awk'{print $2}')
if [[ -n $max_auth ]]; thenif [[ $max_auth -le 3 ]]; thenecho "  ✅ MaxAuthTries: $max_auth (合理)"elseecho "  ⚠️  MaxAuthTries: $max_auth (建议设置为3或更小)"fi
elseecho "  ⚠️  MaxAuthTries: 未设置,默认值可能较高"
fi
#4、检查端口设置
port=$(grep "^Port" sshd_config.txt | awk '{print $2}')
if [[ "$port" == "22" ]] || [[ -z "$port" ]]; thenecho "  ⚠️  Port: 使用默认端口22 (建议修改)"
elseecho "  ✅ Port: 使用非标准端口 $port (安全)"
fi
#5、检查空密码设置
if grep -q "^PermitEmptyPasswords yes" sshd_config.txt; thenecho "  ❌ PermitEmptyPasswords: 允许空密码 (非常不安全)"
elif grep -q "^PermitEmptyPasswords no" sshd_config.txt; thenecho "  ✅ PermitEmptyPasswords: 禁止空密码 (安全)"
elseecho "  ✅ PermitEmptyPasswords: 默认禁止空密码"
fi
#6、检查X11转发
if grep -q "^X11Forwarding yes" sshd_config.txt; thenecho "  ⚠️  X11Forwarding: 启用 (非必要时建议禁用)"
elif grep -q "^X11Forwarding no" sshd_config.txt; thenecho "  ✅ X11Forwarding: 禁用 (安全)"
fi
#生成安全建议
echo -e "\n安全建议"
echo "   建议修改SSH端口为非标准端口"
echo "   建议禁用root直接登录"
echo "   建议禁用密码认证,使用SSH密钥"
echo "   建议设置MaxAuthTries为3"
echo "   建议禁用X11Forwarding (如不需要)"

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

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

相关文章

2025年第39周数字取证与事件响应技术动态

本周技术动态涵盖Salesloft-Drift入侵事件分析、SaaS供应链安全、恶意软件检测技术、数字取证新方法、威胁狩猎实践、漏洞利用分析等网络安全前沿技术内容,为安全专业人员提供全面技术参考。赞助内容 Salesloft-Drift…

第三次算法作业

动态规划法求解步骤​ (1)状态定义​:设 dp[i][j] 表示从第 i 行第 j 列元素出发,到达三角形底部的最大路径和。该定义精准捕捉了子问题的核心:每个位置的最优解仅依赖其下方的子问题结果。​ (2)递归方程式推导…

milvus: 搜索collection

一,代码:from flask import Blueprint,jsonify,render_template,requestfrom app import milvus_client from pymilvus import FieldSchema, DataType, CollectionSchema, Collection, connections from helpers.uti…

2025/11/16

2025/11/16学习算法

实用指南:《vector.pdf 深度解读:vector 核心接口、扩容机制与迭代器失效解决方案》

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【MX-S11】梦熊 NOIP 2025 模拟赛 3 WAOI R7 FeOI R6.5(同步赛)总结分析

感觉打梦熊就是这样前两题都是中等偏下,后两题难得不成样子。 估分&最终得分:\(100+100+0+0=200\)。 T1 感觉应该是黄题吧。 题目概述 一个数轴,前 \(k\) 个地给小 \(A\),后面的地给小 \(B\),小 \(A\) 先手,…

2025 年 11 月旅游船厂家推荐排行榜,新能源电动旅游船,画舫仿古双层豪华旅游船,定制旅游船,玻璃钢钢质铝合金旅游船公司精选

2025 年 11 月旅游船厂家推荐排行榜,新能源电动旅游船,画舫仿古双层豪华旅游船,定制旅游船,玻璃钢钢质铝合金旅游船公司精选 随着国内水上旅游市场的快速发展,旅游船行业正迎来新一轮技术变革与产品升级。从传统观…

2025 年 11 月观光船厂家推荐排行榜,新能源观光船,电动观光船,画舫观光船,仿古观光船,双层观光船,豪华观光船,定制观光船,玻璃钢观光船,钢质观光船,铝合金观光船公司推荐

2025 年 11 月观光船厂家推荐排行榜:新能源与电动观光船品牌权威指南 行业背景与发展趋势 观光船行业作为水上旅游产业的重要组成部分,近年来呈现出多元化、环保化、定制化的发展趋势。随着新能源技术的不断成熟和环…

[Win] [ffmpeg] Win下如何安装ffmpeg

[Win] [ffmpeg] Win下如何安装ffmpeg$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 ffmpeg简介02 安装流程2.1 安装chocolately2.2 choco安装ffmpeg…

开发日记

历程就是先去找ai编了一个http服务器的py脚本,真的很快,不过刚开始条件没说清楚,是一个http://localhost:8080这样的网站,发现这是一个只有本地电脑才能登录的http服务器,localhost就是本地地址 而后继续调教ai,…

[Win] [包管理器] powershell 安装Win下的包管理器 Chocolatey

[Win] [包管理器] powershell 安装Win下的包管理器 Chocolatey$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 简介02 安装流程2.1 使用管理员打开po…

实现AI和BI整合的初步思路和探索-Part3

前两篇探索了用code和dify的实现思路,实现起来均有一定的门槛。那么市面上有没有什么开源的现成产品已经对这个方向进行了探索呢?最近还真搜罗到了两个不错的产品,一个是飞致云下的SQLBot,还有一个是WrenAI。实现A…

[Win] [包管理器] powershell 安装 choco

[Win] [包管理器] powershell 安装 choco$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 简介02 安装流程2.1 使用管理员打开powershell2.2 执行以下…

win11 报错

核心解决步骤(按优先级推荐)修复系统文件与Edge配置‌以‌管理员身份‌打开「命令提示符」,依次执行以下命令(每行执行后等待完成再输入下一行): cmdCopy CodeDISM /Online /Cleanup-Image /ScanHealthDISM /Onl…

数据结构——二十四、图(王道408) - 实践

数据结构——二十四、图(王道408) - 实践2025-11-16 14:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

本地CMake编译opencv库(Mingw)

环境 Win10 Mingw8.1 下载 https://opencv.org/releases/ 下载4.5.5版本的sources,解压到文件夹,可以看到文件夹下有CmakeList.txt 过程 打开cmake的gui,选定source code文件夹,指定build文件夹configure后选择ming…

C# Avalonia 18- ControlTemplates - ColorPickerUserControlTest

C# Avalonia 18- ControlTemplates - ColorPickerUserControlTest自定义ColorPicker2类 ColorPicker2.cs代码using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.P…

《重生之我成为世界顶级黑客》第四章:实践出真知

《重生之我成为世界顶级黑客》第四章:实践出真知停更一下,今天还有事忙,先这样吧。清晨,天还没亮,龙傲天便已经被胃部持续不断的震痛所唤醒。 那不是尖锐的刺痛,而是一种沉闷的、带着灼烧感的疼痛,仿佛有块烧红…

Spring AI Alibaba 项目源码学习(九)-其他继承BaseAgent

其他继承BaseAgent 实现分析 请关注微信公众号:阿呆-bot 概述 本文档分析 Spring AI Alibaba Agent Framework 中除 ReactAgent 和 FlowAgent 之外的其他 BaseAgent 实现,主要包括 A2aRemoteAgent(Agent-to-Agent 远…

Linux进程状态 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …