Nginx访问日志及安全巡检统计

一、前言

因近期护网要求,为确保本次攻防演练可靠,特对此梳理相关安全巡检及使用命令,供相关需求同学参考!

二、词汇解释

2.1、pv和uv的区别

PV(Page View访问量/也卖弄浏览数):指在一定统计周期内,用户每次刷新网页一次即计算一次。PV高不一定代表来访者多:PV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量。比如一个网站就即使一个人进来,但通过不断的刷新页面,也可以制造出非常高的PV。

UV(Unique Visitor独立访客数):指访问您网站的一个客户端(非出口ip)即为一个访客。UV是指不同的、通过互联网访问、浏览一个网页的自然人。00:00-24:00内相同的客户端只被计算一次。在同一天内,UV只记录第一次进入网站的访问者,在同一天内再次访问该网站则不计数;UV的计算是和浏览器的Cookie密切相关的。如果cookie没变,即使ip变了,但客户端没变,UV还是之前的记录,不会重复统计;

2.2、tcp状态解释

CLOSED 无连接是活动的或正在进行

LISTEN 服务器在等待进入呼叫
SYN_RECV 一个连接请求已经到达,等待确认
SYN_SENT 应用已经开始,打开一个连接
ESTABLISHED 正常数据传输状态/当前并发连接数

FIN_WAIT1 应用说它已经完成

FIN_WAIT2 另一边已同意释放

ITMED_WAIT 等待所有分组死掉

CLOSING 两边同时尝试关闭

TIME_WAIT 另一边已初始化一个释放

LAST_ACK 等待所有分组死掉

三、日志及网络连接巡检

1)查看TCP连接状态

bash 复制代码
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n | awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

命令示例说明:

netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'

这个命令是用于显示当前系统的网络连接状态和统计信息。目的就是显示当前系统中各个TCP连接状态的统计信息。例如,ESTABLISHED表示已建立连接,TIME_WAIT表示等待关闭连接等。输出结果将以连接状态和对应的出现次数的形式呈现。下面来逐步解释这个命令的含义:

netstat -n:这是netstat命令的一个选项,用于显示网络连接信息。"-n"选项指定不要解析IP地址和端口号为主机名和服务名,而是直接显示IP地址和端口号。

|:这个符号是管道操作符,用于将一个命令的输出作为另一个命令的输入。

awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}':这部分是利用awk工具对netstat命令的输出进行处理和统计。

'/^tcp/ {++arr[$NF]}':这个部分使用正则表达式匹配以"tcp"开头的行,并使用数组arr 记录每个状态出现的次数。$NF 表示当前行的最后一个字段 ,即表示连接状态。NF 每行字段总数(Number of Font)。

END {for(k in arr) print k,"\t",arr[k]}:在处理完所有行后,使用for循环遍历数组arr中的键(连接状态)并打印出键和对应的值(状态出现次数)。

2)查找请求数请20个IP(多用于查找攻来源):

bash 复制代码
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
#其他
//获得访问前10位的ip地址
cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -n 10
cat access.log|awk '{counts[$(11)]+=1}; END {for(url in counts) print counts[url],url}'
//查看访问次数最多的文件或页面,取前20
cat access.log|awk '{print $11}'|sort|uniq -c|sort -nr|head -n 20
//列出传输最大的几个rar文件
cat access.log |awk '($7~/\.rar/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -n 20

//列出输出大于200000byte(约200kb)的rar文件以及对应文件发生次数
cat access.log |awk '($10 > 200000 && $7~/\.rar/){print $7}'|sort -n|uniq -c|sort -nr|head -n 100
//如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -n 100
//.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -n 100
//列出传输时间超过 30 秒的文件
cat access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -n 20

#统计网站流量(GB/s)

cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
#统计404的连接数

awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort

#统计http status
cat access.log |awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn

#查看是哪些爬虫在抓取内容

tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'

#按域统计流量

zcat access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

cat access.log| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

#

3)用tcpdump嗅探80端口的访问最高的IP

bash 复制代码
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

4)查找较多time_wait连接

bash 复制代码
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

5)找查较多的SYN连接

bash 复制代码
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

6)根据端口查找进程ID

bash 复制代码
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1
netstat -b //显示在创建每个连接或侦听端口时涉及到的可执行文件
netstat -o //显示拥有的与每个连接关联的进程ID

7)数据库:查看数据库执行的sql

bash 复制代码
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

8)进程跟踪

系统Debug分析:strace -p pid

跟踪指定进程的PID:gdb -p pid

9)日志分析

bash 复制代码
//查看安全日志/var/log/audit中成功登陆服务器的IP和用户,并统计次数
cat /var/log/audit/audit.log |grep failed -v|awk '{print $10,$13}' |grep '/' -v |grep old -v |grep acct |awk -F "=" '{print $2,$3}' |awk -F "(" '{print $1,$2}'|awk -F "," '{print $1}'|uniq -c |grep ? -v|sort -d

//查看最近20条登陆服务器用户的持续时间、IP、用户
last |awk '{print $1,$3,$4,$5,$6,$7.$8.$9,$10}'|head -n20

#/var/log/secure 日志分析.查看哪些IP扫描过本机
grep "Failed password" /var/log/secure|grep invalid|awk '{print $13}'| sort |uniq

//查看成功登陆本机的记录
cat /var/log/secure |awk '{print $5,$9,$11,$12,$13}'|grep su -v|grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|awk -F ":" '{print $1,$2}'|uniq -c
cat /var/log/secure |awk '{print $1,$2,$3,$5,$9,$11,$12,$13}'|grep su -v|grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|less

#定位有多少IP在爆破主机的root帐号
grep "Failed password for root" /var/log/secure|awk'{print $11}'|sort|uniq -c|sort- nr |more
#查看定位有哪些IP在爆破
grep -E "(Failed password)|(incorrect 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
#爆破用户名字典是什么
grep "Failed password" /var/log/secure|perl -e 'while($_=<> ){/for (.*?) from /;print "$1\n";}'|uniq -c|sort -nr
#查看登录成功的IP
grep "Accepted password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
#查看登录成功的日期、用户名、IP
grep "Accepted password" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

10)检查系统

bash 复制代码
dmesg 检查硬盘是否运行在DMA模式
dmesg |grep DMA dmesg 检查网卡是否运行正常
dmesg |grep eth0 dmesg探测系统内核模块的加载情况
dmesg |grep acpi
systemctl list-units --type=service:列出当前系统上所有已启动的服务
chkrootkit:检查系统是否被rootkit攻击。
rkhunter:检查系统的安全性和完整性。rkhunter(Rootkit Hunter)是一款用于检测和报告系统上潜在的Rootkit、后门和可疑文件的工具。安装执行:sudo yum install rkhunter
udo rkhunter --update
//运行系统检查:
sudo rkhunter --check
#查看检查结果:检查结果会被保存在一个日志文件中,通常是/var/log/rkhunter.log。
使用以下命令查看日志文件内容:sudo cat /var/log/rkhunter.log

sudo rkhunter --propupd:更新rkhunter的文件属性数据库,以减少误报。
sudo rkhunter --list propfiles:列出rkhunter监控的文件和目录。

#查询特权用户特权用户(uid 为0)
awk -F: '$3==0 {print $1}' /etc/passwd
#查询可以远程登录的帐号信息
awk '/\$1|\$6/{print $1}' /etc/shadow
#查看sudo权限
more /etc/sudoers|grep -v "^#\|^$" |grep "ALL=(ALL)"
usermod -L user	禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel user	删除user用户
userdel -r user	将删除user用户,并且将/home目录下的user目录一并删除

#修改histroy记录
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile   //保存1万条命令

#为历史的命令增加登录的IP地址、执行命令时间等信息
vim /etc/profile
######history #########
USER_IP=`who -uam 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`
if [ $USER_IP="" ]; then
 USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami`"
shopt -s histappend
export PROMPT_COMMAND="history -a"

#########history########## 
#仅让历史记录中带上命令执行时间
vi /home/$USER/.bash_profile  //新增如下
export HISTTIMEFORMAT='%F %T '   //注意"%T"后面的空格,用来将时间和命令之间分割
或
export HISTTIMEFORMAT="%F %Twho -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'whoami "

#修改bash源码,让history记录通过syslog发送到远程logserver中,下载bash源码
env | grep SHELL  //查看系统当前使用的shell
bash --version
//从https://mirrors.ustc.edu.cn/gnu/bash/或https://ftp.gnu.org/gnu/bash/下载对应版本bash源码包,重新编译
wget https://ftp.gnu.org/gnu/bash/bash-4.2.53.tar.gz
tar -xvf bash-3.2.tar.gz -C /opt/sources/
cd /opt/sources/bash-3.2
vim bashhist.c  //修改如下
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "PID=%d UID=%d User=%s Cmd=%s", getpid(), current_user.uid, current_user.user_name, line);
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "PID=%d UID=%d User=%s Cmd=%s", getpid(), current_user.uid, current_user.user_name, trunc);

//修改源码config-top.h,取消/\#define SYSLOG_HISTORY/这行的注释
define SYSLOG_HISTORY   #syslog的FACILITY为 LOCAL6,日志级别为NOTICE

./configure --prefix=/opt/bash
#备份源bash
cp -pr /usr/bin/bash /usr/bin/bash_r_`date`
chmod 755 /opt/bash/bin/bash
cp -pr /opt/bash/bin/bash /usr/bin

#验证
tail -f /var/log/message   #这时,发现history记录已经写到了/var/log/message中

#转发到log服务器
vim /etc/rsyslog.conf  //修改
local6.notice /var/log/bash.log
*.info;mail.none;authpriv.none;cron.none;local6.none; /var/log/messages
local6.notice @172.16.1.33:13514

#修改历史记录文件为只能被追加来进行阻止
chattr +a /home/bob/.bash_history
hattr +a /home/bob/.bash_profile
chattr +a /home/bob/.bash_login
chattr +a /home/bob/.profile
chattr +a /home/bob/.bash_logout
chattr +a /home/bob/.bashrc  #只在当non-login交互式shell调用时被读取,其他三个配置文件本身会调用.bashrc

#将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户。
chage -m0 -M30 -E2000-01-01 -W7 <用户名>
设置连续输错三次密码,账号锁定五分钟。使用命令
vi/etc/pam.d/common-auth  //修改配置文件,添加
auth required pam tally.so onerr=fail deny=3 unlock time=300

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

//定位有多少IP在爆破主机的root帐号:

grep "Failedpasswordforroot"/var/log/secure|awk'{print$11}'|sort|uniq-c|sort- nr |more

//SHELL中的内置命令约有60个,通过内置的enable命令即可查看所有的内部命
enable
enable -n cd #禁用命令cd在SHELL中的内置功能

chkconfig --list | grep "3:on\|5:on"  //查看系统在3与5级别下的启动项

#系统完整性检查
/rpm -Va > rpm.log  //通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了,如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过
rpm	-qf /bin/ls	#查询ls命令属于哪个软件包
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio-idv ./bin/ls #提取rpm包中ls命令到当前目录的/bin/ls下,-i:copy-in模式,还原;-d:还原时自动新建目录;-v:显示还原过程
cp /root/bin/ls	/bin/ #把ls命令复制到/bin/目录修复文件丢失,最后就按着旧文件授权修改一致即可

#僵尸进程,找到该defunct僵尸进程的父进程,将该进程的父进程杀掉,则此defunct进程将自动消失
ps aux | grep Zs |  grep -v grep
ps -ef | grep defunct
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
ps -ef | grep defunct | grep -v grep | awk {print "kill -9 " $2,$3}  //谨慎kill
cat /proc/defunct_pid/stack  #查看具体僵尸进程的情况
lsof -p defunct_pid
#查看stopped进程,stopped进程的STAT状态为T
ps -e j | grep T 
ps -A -ostat,ppid,pid,cmd | grep -e '^[T]'
#搜索伪装成病毒的可执行文件
find / -size -1223124c -size +1223122c -exec ls -id {} \; 搜索1223123大小的文件
ll -h /etc/rc.d/init.d/
less /etc/rc.local  #查看启动文件里是否嵌入启动脚本命令

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切换用户

附:SSH暴力破解,三次握手会话状态回顾

① TCP初始化连接三次握手:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但有些异常,当请求者收到SYS/ACK包后,就开始建立连接了,而被请求者第三次握手结束后才建立连接。

② 客户端TCP状态迁移:

CLOSED->SYN_SENT ->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务器TCP状态迁移:

CLOSED->LISTEN->SYN_recv ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

③ 当客户端开始连接时,服务器还处于LISTENING,客户端发一个SYN包后,服务端接收到了客户端的SYN并 且发送了ACK时,服务器处于SYN_RECV状态,有些异常时候会出现,之后没有再收到客户端的ACK就进入了ESTABLISHED状态,而服务端显示一直停留在SYN_RECV状态,很可能是爆破了。

11)MAC欺骗

bash 复制代码
arp -an  //查看所有连接本地主机的ip和mac地址

12)windows

bash 复制代码
 netsh wlan show profiles  //查看连接过的wifi点
 netsh wlan show profile name='sdc-qwimq' key=clear //查看wifi key
 net view hostname/ip   //查看对应IP地址共享的资源
 net share //显示本地共享资源
 net share ipc$ /del //删除ipc$共享 
net share c$ /del //删除C:共享 
 net user  //查看用户
 net user 帐户名 //查看帐户的属性 
 net use 
 net start //查看开启了哪些服务
 net time \\目标ip /set #设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息
 net config 显示系统网络设置
 finger username @host  //查看最近有哪些用户登陆
 attrib 文件名(目录名) //查看某文件(目录)的属性 
 attrib 文件名 -A -R -S -H 或 +A +R +S +H //去掉(添加)某文件的 存档,只读,系统,隐藏 属性;用+则是添加为某属性
 date /t 、 time /t //将只显示当前日期和时间
 set //显示当前所有的环境变量
 ver //在cmd窗口下显示版本信息
 winver //弹出一个窗口显示版本信息
 type 文件名 显示文本文件的内容 
 more 文件名 逐屏显示输出文件
 msinfo32 //软件环境→正在运行任务"就可以查看到进程的详细信息
 systeminfo  //查看系统信息
 cacls 文件名 /参数  #显示或修改文件访问控制列表(ACL)--针对NTFS格式时。参数:/D 用户名:设定拒绝某用户访问;/P 用户名erm 替换指定用户的访问权限;/G 用户名erm 赋予指定用户访问权限;Perm 可以是: N 无,R 读取, W 写入, C 更改(写入),F 完全控制;
 icacls 文件名
 at  //查看计划任务
 eventvwr.msc  //查看日志
 运行,输入%UserProfile%\Recent  //分析最近打开分析可疑文件
 #好玩的
 color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿 、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白 
 wmic process get caption,commandline /value >> tmp.txt  //进程分析
 wmic process where caption="svchost.exe" get caption,commandline /value  #查询某一个进程的信息,得到进程的可执行文件位置等信息

13)工具

1、使用WWWGrep来检查你的网站元素安全

WWWGrep是一款针对HTML安全的工具,该工具基于快速搜索"grepping"机制实现其功能,并且可以按照类型检查HTML元素,并允许执行单个、多个或递归搜索。Header名称和值同样也可以通过这种方式实现递归搜索。

2、chkrootkit

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz

cd chkrootkit-0.52

make sense

./chkrootkit //检查

3、rkhunter:http://rkhunter.sourceforge.net

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz

tar -zxvfrkhunter-1.4.4.tar.gz

cd rkhunter-1.4.4

./installer.sh --install

rkhunter -c

4、Clamav:病毒查杀

wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz

tar-zxvfzlib-1.2.7.tar.gz

cd zlib-1.2.7

#安装依赖的gcc编译环境:

yum install gcc -y

CFLAGS="-O3-fPIC" ./configure --prefix=/usr/local/zlib/

make && makeinstall

#添加用户组clamav和组成员clamav:

groupadd clamav

useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

#安装Clamav

tar --zxvf clamav-0.97.6.tar.gz

cd clamav-0.97.6

./configure--prefix=/opt/clamav--disable-clamav-with-zlib=/usr/local/zlib

make

make install

#配置Clamav

mkdir /opt/clamav/logs

mkdir /opt/clamav/updata

touch /opt/clamav/logs/freshclam.log

touch /opt/clamav/logs/clamd.log

cd /opt/clamav/logs

chown clamav:clamav clamd.log

chown clamav:clamav freshclam.log5、ClamAV 使用:

/opt/clamav/bin/freshclam #升级病毒库

./clamscan --h #查看相应的帮助信息

./clamscan-r/home #扫描所有用户的主目录就使用

./clamscan -r --bell -i /bin #扫描bin目录并且显示有问题的文件的扫描结果

#使用

yum install -y clamav #更新病毒库

freshclam #扫描方法

clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log

clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log

clamscan -r /us r--max-dir-recursion=5 -l /root/usrclamav.log #扫描并杀毒

clamscan -r --remove /usr/bin/bsd-port

clamscan -r --remove /usr/bin/

clamscan -r--remove /usr/local/zabbix/sbin #查看日志发现

cat /root/usrclamav.log |grep FOUND

5、日志分析:使用LogParser对windows日志提取数据分析

6、360勒索病毒网站(http://lesuobingdu.360.cn

7、D盾_Web查杀软件:能剖析更加掩藏的WebShell后门个人行为。能查杀更加掩藏的后门,并把异常的基本参数呈现在你眼前,让你能更迅速的掌握后门的状况。

8、"拒绝勒索软件"网站:https://www.nomoreransom.org/zh/index.html

9、IpTool抓包工具

10、河马查杀:支持多平台,但是需要联网环境

wget http://down.shellpub.com/hm/latest/hm-linux-amd64.tgz

tar xvf hm-linux-amd64.tgz

hm scan /www

四、日志配置

4.1、Nginx被篡改示例

上图中,Nginx配置文件VirtualHost.conf被篡改,通过反向代理匹配以"sc"后缀的专题链接, 劫持到http://103.233.248.163,该网站为博彩链接导航网站。

4.2、Nginx后台网页js文件被篡改劫持示例

五、脚本示例

5.1 Nginx 脚本

bash 复制代码
#!/bin/bash

# Nginx日志路径
LOG_PATH="/var/log/nginx/access.log"

# 检查IP访问频率/次数
check_ip_frequency() {
    echo "IP访问频率检查结果:"
    awk '{print $1}' $LOG_PATH | sort | uniq -c sort -nr
}

# 检查访问状态码
check_response_codes() {
    echo "访问状态码检查结果:"
    awk '{print $9}' $LOG_PATH | sort | uniq -c | sort -nr
}

# 检查请求来源URL
check_referers() {
    echo "请求来源URL检查结果:"
    awk '{print $11}' $LOG_PATH | sort | uniq -c | sort -nr
}

# 检查异常User-Agent
check_user_agents() {
    echo "异常User-Agent检查结果:"
    awk -F\" '{print $6}' $LOG_PATH | sort | uniq -c | sort -nr
}

# 检查潜在的SQL注入攻击
check_sql_injections() {
    echo "潜在的SQL注入攻击检查结果:"
    grep -iE "(union|select|from|where|insert|update|delete|drop)" $LOG_PATH
}

# 执行巡检
echo "开始巡检Nginx日志安全性..."
echo ""
check_ip_frequency
echo ""
check_response_codes
echo ""
check_referers
echo ""
check_user_agents
echo ""
check_sql_injections
echo ""
echo "巡检完成!"

5.2、短连接捕捉脚本

短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。 在系统维护中,一般很难去察觉,需要借助网络安全设备或者抓包分析,才能够去发现。多次刷新netstat命令可能会看到,但该进程pid多变,不容易被捕捉,很难捕捉到对应的进程和源文件;

bash 复制代码
#!/bin/bash 
ip=外连异常ip
i=1 while :
do
	tmp=netstat-anplt|grep $ip|awk -F'[/]' '{print $1}'|awk'{print $7}' 
#echo $tmp
if test -z "$tmp" ;then
((i=i+1))
else
  for pid in $tmp; 
   do echo "PID: "${pid}
   result=ls -lh /proc/$pid|grep exe 
   echo "Process: "${result}
   kill -9 $pid
   done
break 
fi 
done
echo "Total number of times: "${i}
相关推荐
Binary-Jeff14 小时前
一文读懂 HTTPS 协议及其工作流程
网络协议·web安全·http·https
七夜zippoe17 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64819 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满19 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠19 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90319 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
lingggggaaaa19 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
介一安全20 小时前
【Web安全】XML注入全手法拆解
xml·web安全·安全性测试
珠海西格电力科技20 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt21 小时前
未授权访问漏洞
网络·安全·web安全