应急响应知识总结

应急响应

Windows系统

查账号

1、查看服务器是否有弱口令,远程管理端口是否对公网开放。

  • 检查方法:据实际情况咨询相关服务器管理员。

2、查看服务器是否存在可疑账号、新增账号。

  • 检查方法:打开 cmd 窗口,输入 lusrmgr.msc 命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。

3、查看服务器是否存在隐藏账号、克隆账号、粘滞键后门

隐藏账号:

net user test$ test123 /add

net localgroup administrators test$ /add

通过这两条命令将隐藏账号加入administrators组,且使用net user不显示,但如果使用lusrmgr直接看还会被发现

克隆账号:

先创建账户,进去注册表,\HKEY_LOCAL_MACHINE\SAM\SAM注意这里要改权限并重新进入,然后进入如图:

然后更改suid,将administrator的suid(f值)复制到你的隐藏账号中,然后将users和names中的对应文件导出,然后删除账号(net user test$ /del),最后导入,即可保证其在net user和lusrmgr中不被发现(本人在测试中未成功,反而被封锁账号,就算不更改suid,也无法登录,只是账号不会锁定)

粘滞键后门:通过将其使用的程序替换为cmd.exe实现后门,太落后,几乎不可能;

  • 检查方法:

    a、打开注册表 ,查看管理员对应键值。

    b、使用D盾_web查杀工具,集成了对克隆账号检测的功能。

4、结合日志,查看管理员登录时间、用户名是否存在异常(是否存在明文泄露)。

明文抓取:

使用工具抓取管理员密码

  • 检查方法:

    a、Win+R 打开运行,输入"eventvwr.msc",回车运行,打开“事件查看器”。

    b、导出 Windows 日志 -- 安全,利用微软官方工具 Log Parser 进行分析。

日志主要有:系统日志、应用程序日志、安全日志,这里我门重点关注安全日志

在审计之前要开启策略,否则无法记录远程登录的日志(gpedit.msc)

对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:

事件ID说明
4624登录成功
4625登录失败
4634注销成功
4647用户启动的注销
4672使用超级用户(如管理员)进行登录
4720创建用户

每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

登录类型描述说明
2交互式登录(Interactive)用户在本地进行登录。
3网络(Network)最常见的情况就是连接到共享文件夹或共享打印机时。
4批处理(Batch)通常表明某计划任务启动。
5服务(Service)每种服务都被配置在某个特定的用户账号下运行。
7解锁(Unlock)屏保解锁。
8网络明文(NetworkCleartext)登录的密码在网络上是通过明文传输的,如FTP。
9新凭证(NewCredentials)使用带/Netonly参数的RUNAS命令运行一个程序。
10远程交互,(RemoteInteractive)通过终端服务、远程桌面或远程协助访问计算机。
11缓存交互(CachedInteractive)以一个域用户登录而又没有域控制器可用

重点关注4624(登陆成功)和4625(登录失败)这两个事件,关注登录失败中登录类型为10的记录(极可能是攻击者盗取管理员密码后登录),关注登录失败的IP的失败次数,如果有异常则封堵IP;

使用方法:

LogParser.exe -i:EVT -o:DATAGRID "SELECT EventID, EXTRACT_TOKEN(Strings,5,'|') AS Username, EXTRACT_TOKEN(Strings,8,'|') AS LoginType, EXTRACT_TOKEN(Strings,18,'|') AS IpAddr, TimeGenerated AS LoginTime FROM c:\Security.evtx WHERE EventID=4624"

 EXTRACT_TOKEN` 是 LogParser 中用于**从字符串中提取指定片段**的核心函数,语法为:`EXTRACT_TOKEN(源字符串, 索引位置, 分隔符)LogParser.exe -i:EVT  –o:DATAGRID  "SELECT EXTRACT_TOKEN(string,8,'|') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(string,18,' ') as Loginip FROM c:\Security.evtx where EventID=4624"

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"

  • 工具:LogParser.exe ,用于处理日志文件的实用程序

  • 输入格式:-i:EVT ,指定输入是 EVTX 日志格式

  • 输出格式:-o:DATAGRID ,指定输出为数据网格形式

  • 查询内容:从 c:\Security.evtx 文件中选取 EventID 为 4624 的所有事件记录 ,4624 事件通常对应 Windows 系统里的用户成功登录操作 。

检查异常端口、进程

1、检查端口连接情况,是否有远程连接、可疑连接。

  • 检查方法:

    a、使用netstat -ano |findstr ESTA 命令查看目前稳定建立连接的网络连接,定位可疑的 ESTABLISHED

    b、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位 tasklist | findstr "PID"

2、进程

  • 检查方法:

    a、开始 -- 运行 -- 输入 msinfo32 命令,依次点击 "软件环境 -- 正在运行任务" 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。

    b、打开D盾_web查杀工具,进程查看,关注没有签名信息的进程。

    c、通过微软官方提供的 Process Explorer(重要用这个) 等工具进行排查 。

    d、查看可疑的进程及其子进程。可以通过观察以下内容:

     没有签名验证信息的进程没有描述信息的进程进程的属主进程的路径是否合法CPU 或内存资源占用长时间过高的进程

3、小技巧:

a、查看端口对应的 PID:netstat -ano | findstr "port"

b、查看进程对应的 PID:任务管理器 -- 查看 -- 选择列 -- PID 或者 tasklist | findstr "PID"

c、查看进程对应的程序位置:

任务管理器 -- 选择对应进程 -- 右键打开文件位置

运行输入 wmic,cmd 界面输入 process

d、tasklist /svc 进程 -- PID -- 服务

e、查看Windows服务所对应的端口:

%systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路径)

检查启动项、计划任务、服务

1、检查服务器是否有异常的启动项。

  • 检查方法:

    a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。 b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。 c、单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:

     #run键HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\SOFRWARE\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFRWARE\Microsoft\Windows\CurrentVersion\Runonce# Winlogon\Userinit键HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\WinlogonHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon

    检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

    d、利用安全软件查看启动项、开机时间管理等。

    e、组策略,运行 gpedit.msc

2、检查计划任务

  • 检查方法:

    a、使用运行命令:按下 Win+R 组合键,打开 “运行” 对话框,输入 “taskschd.msc”,然后按回车键,即可快速打开 “任务计划程序” 窗口。

    b、单击【开始】>【运行】;输入 cmd,然后输入 at,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。

3、服务自启动

  • 检查方法:单击【开始】>【运行】,输入 services.msc,注意服务状态和启动类型,检查是否有异常服务。

检查系统相关信息

1、查看系统版本以及补丁信息

  • 检查方法:单击【开始】>【运行】,输入 systeminfo,查看系统信息。

2、查找可疑目录及文件

  • 检查方法:

    a、 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。

     Window 2003版本 C:\Documents and SettingsWindow 2008R2及以后版本 C:\Users\

    b、单击【开始】>【运行】,输入 %UserProfile%\Recent,分析最近打开分析可疑文件。

    c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。

    d、回收站、浏览器下载目录、浏览器历史记录

    e、修改时间在创建时间之前的为可疑文件

3、发现并得到 WebShell、远控木马的创建时间,如何找出同一时间范围内创建的文件?

a、利用 Registry Workshop 注册表编辑器的搜索功能,可以找到最后写入时间区间的文件。 b、利用计算机自带文件搜索功能,指定修改时间进行搜索。

Linux系统

查账号

基本使用:

 1、用户信息文件 /etc/passwdroot:x:0:0:root:/root:/bin/bashaccount:password:UID:GID:GECOS:directory:shell用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell注意:无密码只允许本机登陆,远程不允许登陆​2、影子文件 /etc/shadowroot:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留3、/etc/sudoers sudo配置文件
 who     查看当前登录用户(tty 本地登陆  pts 远程登录)w       查看系统信息,想知道某一时刻用户的行为uptime  查看登陆多久、多少用户,负载状态

入侵排查:

 1、查询特权用户特权用户(uid 为0)[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd2、查询可以远程登录的帐号信息[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"4、禁用或删除多余及可疑的帐号usermod -L user    禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头userdel user       删除 user 用户userdel -r user    将删除 user 用户,并且将 /home 目录下的 user 目录一并删除

查历史命令

基本使用:

通过 .bash_history 文件查看帐号执行过的系统命令

 1、root 用户的历史命令histroy2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号执行的历史命令。为历史的命令增加登录的 IP 地址、执行命令时间等信息:1)保存1万条命令sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile2)在/etc/profile的文件尾部添加如下行数配置信息:######jiagu history xianshi#########USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiexport HISTTIMEFORMAT="%F %T $USER_IP `whoami` "shopt -s histappendexport PROMPT_COMMAND="history -a"######### jiagu history xianshi ##########3)source /etc/profile 让配置生效生成效果: 1  2018-07-10 19:45:39 192.168.204.1 root source /etc/profile3、历史操作命令的清除:history -c但此命令并不会清除保存在文件中的记录,因此需要手动删除 .bash_profile 文件中的记录。

入侵排查:

进入用户目录下,导出历史命令。
cat .bash_history >> history.txt

检查异常端口

使用 netstat 网络连接命令,分析可疑端口、IP、PID

netstat -antlp | more查看下 pid 所对应的进程文件路径,
运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)

检查异常进程

使用 ps 命令,分析进程

ps aux | grep pid 

检查开机启动项

基本使用:

系统运行级别示意图:

运行级别含义
0关机
1单用户模式,可以想象为windows的安全模式,主要用于系统修复
2不完全的命令行模式,不含NFS服务
3完全的命令行模式,就是标准字符界面
4系统保留
5图形模式
6重启动

查看运行级别命令 runlevel

系统默认允许级别

vi  /etc/inittab
id=3:initdefault  #系统开机后直接进入哪个运行级别

开机启动配置文件

/etc/rc.local
/etc/rc.d/rc[0~6].d

例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在 /etc/init.d 目录下,然后在 /etc/rc.d/rc*.d 文件中建立软链接即可。

注:此中的 * 代表 0,1,2,3,4,5,6 这七个等级

root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

入侵排查:

启动项文件:

more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/

检查定时任务

基本使用

1、利用 crontab 创建计划任务

  • 基本命令

    crontab -l   列出某个用户cron服务的详细内容Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/rootcrontab -r   删除每个用户cront任务(谨慎:删除所有的计划任务)crontab -e   使用编辑器编辑当前的crontab文件 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件

2、利用 anacron 命令实现异步定时任务调度

  • 使用案例

    每天运行 /home/backup.sh 脚本:
    vi /etc/anacrontab 
    @daily    10    example.daily   /bin/bash /home/backup.sh
    当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

入侵排查

重点关注以下目录中是否存在恶意脚本

/var/spool/cron/* 
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/* 
/etc/cron.hourly/* 
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

小技巧:

more /etc/cron.daily/*  查看目录下所有文件

检查服务

服务自启动

第一种修改方法:

chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level  2345 httpd on  开启自启动
chkconfig httpd on (默认level是2345)

第二种修改方法:

修改 /etc/re.d/rc.local 文件  
加入 /etc/init.d/httpd start

第三种修改方法:

使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。

入侵排查

1、查询已安装的服务:

RPM 包安装的服务

chkconfig  --list  查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务系统在3与5级别下的启动项 
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"

源码包安装的服务

查看服务安装位置 ,一般是在/user/local/
service httpd start
搜索/etc/rc.d/init.d/  查看是否存在

检查异常文件

1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件

3、针对可疑文件可以使用 stat 进行创建修改时间。

检查系统日志

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

日志文件说明
/var/log/cron记录了系统定时任务相关的日志
/var/log/cups记录打印信息的日志
/var/log/dmesg记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog记录邮件信息
/var/log/message记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

重点关注:/var/log/lastlog/var/log/wtmp/var/log/secure这三个日志

日志分析技巧:

1、定位有多少IP在爆破主机的root帐号:    
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c自动封堵IP的脚本
#!/bin/bash# 定义失败次数阈值和封堵时长(秒)
FAIL_COUNT=5
BAN_DURATION=3600  # 1小时# 临时存储失败IP和次数的文件
TMP_FILE="/tmp/ssh_failures.tmp"# 确保临时文件存在
touch $TMP_FILE# 提取最近的SSH失败日志(根据不同系统的日志路径调整)
# CentOS/RHEL通常是/var/log/secure,Debian/Ubuntu通常是/var/log/auth.log
if [ -f "/var/log/secure" ]; thenLOG_FILE="/var/log/secure"
elif [ -f "/var/log/auth.log" ]; thenLOG_FILE="/var/log/auth.log"
elseecho "未找到SSH日志文件"exit 1
fi# 提取失败的IP地址并计数,read count ip:将每行的第一个数值(失败次数)赋值给变量 count,将后面的 IP 地址赋值给变量 ip。
awk '/Failed password/ {print $11}' $LOG_FILE | sort | uniq -c | while read count ip; do# 检查是否已经记录过该IPif grep -q "$ip" $TMP_FILE; then# 更新已存在IP的计数sed -i "s/^.* $ip$/$count $ip/" $TMP_FILEelse# 添加新的IP记录echo "$count $ip" >> $TMP_FILEfi# 如果失败次数超过阈值,且尚未被封堵,则执行封堵if [ $count -ge $FAIL_COUNT ] && ! iptables -C INPUT -s $ip -j DROP 2>/dev/null; theniptables -A INPUT -s $ip -p tcp --dport 22 -j DROPecho "[$(date)] 封堵IP: $ip,失败次数: $count,封堵时长: $BAN_DURATION秒" >> /var/log/ssh_ban.log# 设置定时任务,自动解除封堵(crontab -l 2>/dev/null | grep -v "$ip"; echo "$(( $(date +%M) + $BAN_DURATION/60 % 60 )) $(( $(date +%H) + $BAN_DURATION/3600 )) * * * iptables -D INPUT -s $ip -p tcp --dport 22 -j DROP") | crontab -fi
done# 清理临时文件中计数低于阈值的记录
awk -v threshold=$FAIL_COUNT '$1 < threshold {next} 1' $TMP_FILE > $TMP_FILE.tmp
mv $TMP_FILE.tmp $TMP_FILE2、登录成功的IP有哪些: 	
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 

web日志分析

日志分析技巧

在对WEB日志进行安全分析时,一般可以按照两种思路展开,逐步深入,还原整个攻击过程。

第一种:确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。

第二种:攻击者在入侵网站后,通常会留下后门维持权限,以方便再次访问,我们可以找入侵时间范围内被修改或创建的文件,这极有可能就是攻击者的后门

常用分析工具:

Window下,推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。

Linux下,使用Shell命令组合查询分析。

Shell+Linux命令实现日志分析,一般结合grep、awk等命令等实现了几个常用的日志分析统计技巧。

Apache日志分析技巧:

1、列出当天访问次数最多的IP命令:
cut -d- -f 1 log_file|uniq -c | sort -rn | head -202、查看当天有多少个IP访问:
awk '{print $1}' log_file|sort|uniq|wc -l3、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l4、查看每一个IP访问了多少个页面:
#{++S[$1]}
这是对每一行的处理逻辑:
$1 表示每行的第一个字段(默认以空格 / 制表符分隔)。
S[$1] 定义了一个名为 S 的关联数组(类似字典),以第一列的值为键。
++S[$1] 表示对该键对应的数组值进行累加(即统计该值出现的次数)。
例如,当第一列是 IP 时,每遇到相同 IP 就会让其计数+1;
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file5、将每个IP访问的页面数进行从小到大排序:
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n6、查看某一个IP访问了哪些页面:
grep ^111.111.111.111 log_file| awk '{print $1,$7}'7、去掉搜索引擎统计当天的页面:
awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l8、查看2018年6月21日14时这一个小时内有多少IP访问:
awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l	

日志统计分析技巧

统计爬虫:

grep -E 'Googlebot|Baiduspider'  /www/logs/access.2019-02-23.log | awk '{ print $1 }' | sort | uniq

统计浏览器:

从 Web 访问日志中筛选出非主流浏览器的访问记录,并统计这些访问的来源信息(通常是 IP 地址),最后按访问次数排序并显示前 100 条结果

cat /www/logs/access.2019-02-23.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100		

IP 统计:

grep '23/May/2019' /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 102206 219.136.134.131497 182.34.15.2481431 211.140.143.1001431 119.145.149.1061427 61.183.15.1791427 218.6.8.1891422 124.232.150.1711421 106.187.47.2241420 61.160.220.2521418 114.80.201.18			

统计网段:

cat /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200			

统计域名:

cat  /www/logs/access.2019-02-23.log |awk '{print $2}'|sort|uniq -c|sort -rn|more		

HTTP Status:

cat  /www/logs/access.2019-02-23.log |awk '{print $9}'|sort|uniq -c|sort -rn|more
5056585 304
1125579 2007602 4005 301	

URL 统计:

cat  /www/logs/access.2019-02-23.log |awk '{print $7}'|sort|uniq -c|sort -rn|more			

文件流量统计:

cat /www/logs/access.2019-02-23.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|moregrep ' 200 ' /www/logs/access.2019-02-23.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more			

URL访问量统计:

cat /www/logs/access.2019-02-23.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more			

脚本运行速度:

查出运行速度最慢的脚本

grep -v 0$ /www/logs/access.2019-02-23.log | awk -F '\" ' '{print $4" " $1}' web.log | awk '{print $1" "$8}' | sort -n -k 1 -r | uniq > /tmp/slow_url.txt			

IP, URL 抽取:

# tail -f /www/logs/access.2019-02-23.log | grep '/test.html' | awk '{print $1" "$7}'			

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

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

相关文章

智慧水务赋能二次供水管理精细化转型:物联网驱动的全链路解决方案

随着我国城镇化率激增&#xff0c;高层建筑占比上升&#xff0c;二次供水系统已成为保障城市供水安全的核心环节。然而&#xff0c;传统管理模式面临设备老化、运维粗放、监管缺失等矛盾&#xff0c;在此背景下&#xff0c;《“十四五”节水型社会建设规划》明确要求推进二次供…

tsmc 5nm lvs之 short难搞的类型

1、M3层以上的层次发生的short&#xff0c;dengsity很高的情况下&#xff0c;两根信号net导致的short&#xff0c;删除其中一根然后ecoRoute fix不掉的情况下&#xff0c;该怎么办&#xff0c;可以尝试去cut 周围或者上方的power。 2、M1&#xff0c; M2由于cell 内部出pin&…

初识神经网络01——认识PyTorch

文章目录一、认识PyTorch1.1 PyTorch是什么1.2 安装PyTorch二、认识Tensor2.1 创建Tensor2.1.1 基本方式2.2.2 创建线性和随机张量2.2 Tensor属性2.2.1 切换设备2.2.2 类型转换2.3 Tensor与Numpy的数据转换2.3.1 张量转ndarray2.3.2 Numpy转张量2.4 Tensor常见操作2.4.1 取值2.…

Android UI 组件系列(十一):RecyclerView 多类型布局与数据刷新实战

博客专栏&#xff1a;Android初级入门UI组件与布局 源码&#xff1a;通过网盘分享的文件&#xff1a;Android入门布局及UI相关案例 链接: https://pan.baidu.com/s/1EOuDUKJndMISolieFSvXXg?pwd4k9n 提取码: 4k9n 引言 在 Android 应用中&#xff0c;RecyclerView 是最常用…

如何学习跨模态对齐(尤其是 CLIP 思想)

学习跨模态对齐&#xff08;尤其是CLIP思想&#xff09;需要结合理论基础、经典模型原理、实践复现和前沿扩展&#xff0c;以下是一套系统的学习路径&#xff0c;从入门到深入逐步展开&#xff1a; 一、先补基础&#xff1a;跨模态对齐的“前置知识” 跨模态对齐的核心是让图…

日记研究:一种深入了解用户真实体验的UX研究方法

在用户体验&#xff08;UX&#xff09;研究中&#xff0c;我们常常需要了解用户在真实世界中如何与产品互动。然而&#xff0c;由于时间和空间的限制&#xff0c;我们很难像“特工”一样全天候跟踪用户。这时&#xff0c;“日记研究”&#xff08;Diary Studies&#xff09;就成…

鸿蒙app 开发中 加载图片的时候闪一下 如何解决

1.解决 在图片上 加载这个属性 .syncLoad(true) 参考的官方链接

【OS】进程与线程

进程进程实体代码段相关数据PCB进程标识符外部标识符&#xff1a;为方便用户对进程的访问&#xff0c;为每个进程设置一个外部标识符&#xff0c;通常由字母和数字组成内部标识符&#xff1a;为方便系统对进程的使用&#xff0c;在OS中又为进程设置了内部标识符&#xff0c;赋予…

Django 序列化详解:从 Model 到 JSON,全面掌握数据转换机制

一、引言&#xff1a;什么是 Django 序列化&#xff1f;在 Web 开发中&#xff0c;序列化&#xff08;Serialization&#xff09; 是指将复杂的数据结构&#xff08;如数据库模型对象&#xff09;转换为可传输的格式&#xff08;如 JSON、XML、YAML 等&#xff09;&#xff0c;…

茶叶蛋大冒险小游戏流量主微信抖音小程序开源

游戏特点 响应式设计&#xff1a;完美适配各种移动设备屏幕尺寸 直观的触摸控制&#xff1a;左右滑动屏幕控制茶叶蛋移动 中式风格元素&#xff1a; 茶叶蛋角色带有裂纹纹理和可爱表情 筷子、蒸笼等中式厨房元素作为障碍物 八角、茶叶等香料作为收集物 锅底火焰动画效果 游戏机…

区分邮科工业交换机与路由器

在这个数字化的时代&#xff0c;我们每天都在享受着互联网带来的便利。无论是工作还是娱乐&#xff0c;网络已经成为我们生活中不可或缺的一部分。然而&#xff0c;在这个看似简单的背后&#xff0c;隐藏着两个至关重要的设备——邮科工业交换机和路由器。它们就像网络世界的双…

【数据结构入门】数组和链表的OJ题(2)

目录 1.回文链表 分析&#xff1a; 代码&#xff1a; 2.相交链表 分析&#xff1a; 代码&#xff1a; 3.环形链表 分析&#xff1a; 代码&#xff1a; 面试提问&#xff1a; 4.环形链表II 分析1&#xff1a; 分析2&#xff1a; 代码&#xff1a; 5.随机链表的复…

文件包含篇

web78 第一题filter伪协议直接读源码即可 ?filephp://filter/convert.base64-encode/resourceflag.php web79 flag.php的php无法用大小写绕过&#xff0c;所以用Php://input只读流 import requests url "http://fadb524a-f22d-4747-a35c-82f71e84bba7.challenge.ctf.sho…

互作蛋白组学技术对比:邻近标记与传统IP-MS、Pull down-MS优势对比

在生命科学领域&#xff0c;蛋白质间的相互作用构成了生命活动的核心网络&#xff0c;驱动着信号传导、基因调控、代谢途径等关键过程。为了绘制这幅复杂的“分子互作地图”&#xff0c;科学家们开发了多种技术&#xff0c;其中免疫共沉淀结合质谱&#xff08;IP-MS&#xff09…

(ZipList入门笔记一)ZipList的节点介绍

ZipList是 Redis 中一种非常紧凑、节省内存的数据结构 Ziplist&#xff08;压缩列表&#xff09; 的内部内存布局。它被用于存储元素较少的 List、Hash 和 Zset。 下面我们来详细介绍每一个节点的含义&#xff1a; 1. zlbytes (ziplist bytes) 含义&#xff1a; 整个压缩列…

Unix 发展史概览

这里是一个简明清晰的 Unix 发展史概览&#xff0c;涵盖从起源到现代的重要节点和演变过程。Unix 发展史概览 1. Unix 起源&#xff08;1969年&#xff09; 贝尔实验室&#xff1a;Ken Thompson 和 Dennis Ritchie 开发出 Unix 操作系统。最初设计目标&#xff1a;简洁、可移植…

基于coze studio开源框架二次定制开发教程

目录 一、 项目介绍 1.1 什么是Coze Studio 1.2 功能清单 1.3对比商业版本 二、 功能定开说明 2.1 技术栈简介 2.2 项目架构

RHCE认证题解

考前说明请勿更改 IP 地址。DNS 解析完整主机名&#xff0c;同时也解析短名称。• 所有系统的 root 密码都是 redhat• Ansible 控制节点上已创建用户账户 devops。可以使用 ssh 访问• 所需的所有镜像保存在镜像仓库 utility.lab.example.compodman 可使用下述账号登录使用 用…

调用com对象的坑

1、谏言 最近我在弄64位调用32位dll的问题&#xff0c;在几种IPC之间&#xff0c;最后考虑了调用COM 毕竟我们只在windows平台 2、第一坑–修改编译后都需要重新注册&#xff0c;注册表 一直以为只需要编译就好了&#xff0c;结果调用没反应、报错什么的&#xff0c;需要先撤销…

【Python】PyQt 实现 TreeWidget 多级联动选择逻辑,打造素材搜索自定义树形控件!

在开发自己的写作素材管理工具时,我遇到了一个非常典型但又略显棘手的 UI 问题: 💡 如何实现一个“可自由勾选分类标签”的树形结构界面,支持父子节点自动联动勾选,提升用户体验? 虽然 PyQt 的 QTreeWidget 是构建多层分类结构的好帮手,但默认却不具备父子节点的自动级…