Linux - 安全排查 1

排查特权用户

找出系统中UID0 的账户(通常只有 root,排查非root 特权账户)

awk -F: '$3 == 0 {print $1}' /etc/passwd

解析:

  • -F::以冒号 作为字段分隔符(/etc/passwd 格式为 用户名:密码占位符:UID:GID:描述:家目录:登录Shell
  • $3 == 0 : 判断第三字段(UID)是否等于0
  • {print $1} :打印第一字段(用户名)

在这里插入图片描述

/etc/passwd 详解



统计日志中访问量最多的IP并排序

分析 Web 日志(如 Nginx/Apache),找出请求量最高的客户端 IP

awk '{print $1}' 日志文件 | sort | uniq -c | sort -nr

解析

  • awk ‘{print $1}’ :默认以空格分隔,提取第一字段(通常是IP)
  • sort :对IP进行排序(为uniq -c 准备)
  • uniq -c:统计重复行出现的次数
  • sort -nr :按次数降序排序(-n 按数值,-r 反转结果)

在这里插入图片描述
目的
识别DDoS攻击源,等等

Web服务器通常日志位置

  • Nginx:
/var/log/nginx/access.log
/usr/local/nginx/logs/access.log
  • Apache:
/var/log/apache2/access.log
/var/log/httpd/access_log


统计访问次数最多的文件或目录

分析最常被访问的 URL 路径(资源)

awk '{print $7}' 日志文件 | sort | uniq -c | sort -nr

解析

  • awk ‘{print $7}’:提取第七字段(通常请求的是URL路径)
  • 后面同上

在这里插入图片描述

目的
排查恶意扫描路径



awk详解

awk 是一种强大的文本处理工具和编程语言,专门用于在 Linux/Unix 系统中处理结构化文本数据

工作原理

  • 逐行扫描输入(文件或数据流)
  • 按指定分隔符将每行拆分成字段$1$2,…)
  • 对符合特定模式的行执行动作
  • 支持BEGIN(处理前执行)和END(处理后执行)块

基本语法

awk [选项] '模式{动作}' 输入文件

内置变量

变量说明示例
$0整行内容{print $0}
$1 ~ $n第n个字段{print $1}
NF当前行的字段数量{print $NF}(打印最后一个字段)
NR当前行号(所有文件累计)NR > 10 {print}(打印10行后的内容)
FNR当前文件的行号{print FNR, $0}
FS输入字段分隔符(默认空格)BEGIN{FS=" : "}
OFS输出字段分割符(默认空格)BEGIN{OFS=" - "}
RS输入记录分割符(默认 \nBEGIN{FS=" ; "}

模式匹配

  • 正则表达式:/error/ {print} (匹配包含“error”的行)
  • 比较表达式:$3 > 100 {print $1} (第三列值大于100)
  • 范围模式:/start/, /end/ {print} (匹配两个模式之间的行)
  • 特殊模式:
    • BEGIN : 处理前执行 (初始化)
    • END : 处理后执行(汇总)

动作

  • 打印输出:{print $1, $3}
  • 计算机操作:{sum += $1}
  • 流程控制:if/else,for,while
  • 字符串操作:length($1),substr($1,2,4),gsub(/old/ ,“new”, $1)


grep详解

grep 是 Linux/Unix 系统中强大的文本搜索工具,用于在文件或标准输入中查找匹配指定模式的行。其名称源自 global regular expression print(全局正则表达式打印)

基本语法

grep [选项] 模式 [文件...]

核心功能
1.基础文本搜索

grep "111" 123.txt           #在 123.txt 中查找包含 "111" 的行

2.多文本搜索

grep "111" 222.txt 333.txt   #同时在两个文件中搜索

3.标准输入管道

cat 123.txt | grep "111"    #从管道输入数据从而搜索

常用选项

选项作用示例
-i忽略大小写grep -i “hello” file.txt
-v反向匹配(显示不包含模式的行)grep -v “success” data.log
-n显示匹配行的行号grep -n “bug” code.py
-c统计匹配行数(不显示内容)grep -c “GET” access.log
-r/-R递归搜索目录下的文件grep -r “main()” src/
-l仅显示包含匹配项的文件名grep -l “deprecated” *.js
-w匹配完整单词(非子串)grep -w “port” config.txt
-A NUM显示匹配行及后 NUM 行grep -A 2 “Exception” error.log
-B NUM显示匹配行及前 NUM 行grep -B 1 “FAILED” test.log
-C NUM显示匹配行前后各 NUM 行grep -C 3 “timeout” debug.log
-o仅输出匹配的部分grep -o “user_[0-9]+” ids.txt
-E使用扩展正则表达式(同 egrep)grep “mem(ory|leak)” report.txt
-F按字面字符串匹配(禁用正则)grep -F “*.log” files.txt
–color高亮显示匹配文本grep --color “critical” app.log

正则表达式
grep 默认支持基本正则表达式(BRE),使用 -E 启用扩展正则表达式(ERE)

字符作用示例
.匹配任意字符a.c 匹配 abc、aac
*前一个字符0次或多次lo*se 匹配 lse、lose、loose
^行首锚点^start 匹配以 “start” 开头的行
$行尾锚点end$ 匹配以 “end” 结尾的行
[ ]字符集[aeiou] 匹配任意元音字母
\转义特殊字符\ . 匹配实际的点号

扩展正则表达式(-E)额外支持:

字符作用示例
+前一个字符1次或多次no+ 匹配 no、nooo
?前一个字符0或1次colou?r 匹配 color 或 colour
()分组匹配(abc)+ 匹配 abc、abcabc


head详解

head 是 Linux/Unix 系统中用于查看文件开头部分内容的实用命令,默认显示文件前 10 行。它是文本处理的常用工具,尤其适合快速预览大型文件

基本语法

head [选项] 文件名

核心选项详解

1. -n <行数> :指定显示的行数

head -n 10  123.txt  # 显示前 10 行
head -10 111.txt    # 简写形式(部分系统支持)

2. -c <字节数> :指定显示的字节数

head -c 20 111.txt  # 显示前 20 字节
head -c 1k 111.txt  # 显示前 1KB(支持 K/KB, M/MB, G/GB 单位)

3. -v 或 --verbose:显示文件名标题

head -v -n 3 222.txt 333.txt

4. -q 或 --quiet:隐藏文件名标题(默认行为)

head -q -n 3 222.txt 333.txt  # 直接输出内容,无文件名分隔

高级用法
1.处理多个文件

head -n 4 222.txt 333.txt     # 分别显示每个文件前 4 行

2.从管道读取数据

grep "111" 123.txt | head -n 5

3. 显示除最后 N 行外的所有内容

head -n -5 111.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值