一、前言
因近期护网要求,为确保本次攻防演练可靠,特对此梳理相关安全巡检及使用命令,供相关需求同学参考!
二、词汇解释
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连接状态
netstat-nat|awk'{print $6}'|sort|uniq -c|sort-rnnetstat-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-rnnetstat-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(多用于查找攻来源):
netstat -anlp|grep80|grep tcp|awk'{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head-n20netstat-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-n10cat 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-n20
//列出传输最大的几个rar文件
cat access.log |awk'($7~/\.rar/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head-n20
//列出输出大于200000byte(约200kb)的rar文件以及对应文件发生次数
cat access.log |awk'($10 > 200000 && $7~/\.rar/){print $7}'|sort -n|uniq -c|sort -nr|head-n100
//如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk'($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head-n100
//.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk'($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head-n100
//列出传输时间超过 30 秒的文件
cat access.log |awk'($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head-n20#统计网站流量(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 statuscat 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-s0-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
tcpdump -i eth0 -tnn dst port 80-c1000|awk -F"."'{print $1"."$2"."$3"."$4}'|sort|uniq-c|sort-nr|head-20
4)查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk'{print $5}'|sort|uniq -c|sort -rn|head-n20
5)找查较多的SYN连接
netstat-an|grep SYN |awk'{print $5}'|awk -F: '{print $1}'|sort|uniq-c|sort-nr|more
6)根据端口查找进程ID
netstat-ntlp|grep80|awk'{print $7}'|cut -d/ -f1netstat-b //显示在创建每个连接或侦听端口时涉及到的可执行文件
netstat-o //显示拥有的与每个连接关联的进程ID
7)数据库:查看数据库执行的sql
/usr/sbin/tcpdump -i eth0 -s0-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)日志分析
//查看安全日志/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}'|grepsu -v|grep'[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|awk-F":"'{print $1,$2}'|uniq-ccat /var/log/secure |awk'{print $1,$2,$3,$5,$9,$11,$12,$13}'|grepsu -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#查看登录成功的IPgrep"Accepted password" /var/log/secure |awk'{print $11}'|sort|uniq-c|sort-nr|more#查看登录成功的日期、用户名、IPgrep"Accepted password" /var/log/secure |awk'{print $1,$2,$3,$9,$11}'
10)检查系统
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-uam2>/dev/null|awk'{print $NF}'|sed-e's/[()]//g'`if[$USER_IP=""];thenUSER_IP=`hostname`fiexportHISTTIMEFORMAT="%F %T $USER_IP`whoami`"shopt-s histappend
exportPROMPT_COMMAND="history -a"#########history########## #仅让历史记录中带上命令执行时间vi /home/$USER/.bash_profile //新增如下
exportHISTTIMEFORMAT='%F %T ' //注意”%T”后面的空格,用来将时间和命令之间分割
或
exportHISTTIMEFORMAT="%F %Twho -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'whoami "#修改bash源码,让history记录通过syslog发送到远程logserver中,下载bash源码env|grepSHELL //查看系统当前使用的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
#备份源bashcp-pr /usr/bin/bash /usr/bin/bash_r_`date`chmod755 /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=300more /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命令即可查看所有的内部命
enableenable-ncd#禁用命令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-vgrepps-ef|grep defunct
ps-A -ostat,ppid,pid,cmd |grep-e'^[Zz]'ps-ef|grep defunct |grep-vgrep|awk{print "kill -9 "$2,$3} //谨慎kill
cat /proc/defunct_pid/stack #查看具体僵尸进程的情况lsof-p defunct_pid
#查看stopped进程,stopped进程的STAT状态为Tps-e j |grep T
ps-A -ostat,ppid,pid,cmd |grep-e'^[T]'#搜索伪装成病毒的可执行文件find / -size-1223124c-size +1223122c -execls-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欺骗
arp -an //查看所有连接本地主机的ip和mac地址
12)windows
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 -c4、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 FOUND5、日志分析:使用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 脚本
#!/bin/bash# Nginx日志路径LOG_PATH="/var/log/nginx/access.log"# 检查IP访问频率/次数check_ip_frequency(){echo"IP访问频率检查结果:"awk'{print $1}'$LOG_PATH|sort|uniq-csort-nr}# 检查访问状态码check_response_codes(){echo"访问状态码检查结果:"awk'{print $9}'$LOG_PATH|sort|uniq-c|sort-nr}# 检查请求来源URLcheck_referers(){echo"请求来源URL检查结果:"awk'{print $11}'$LOG_PATH|sort|uniq-c|sort-nr}# 检查异常User-Agentcheck_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多变,不容易被捕捉,很难捕捉到对应的进程和源文件;
#!/bin/bash ip=外连异常ip
i=1while:dotmp=netstat-anplt|grep$ip|awk -F'[/]''{print $1}'|awk'{print $7}'#echo $tmpiftest-z"$tmp";then((i=i+1))elseforpidin$tmp;doecho"PID: "${pid}result=ls -lh /proc/$pid|grep exe
echo"Process: "${result}kill-9$piddonebreakfidoneecho"Total number of times: "${i}
版权归原作者 羌俊恩 所有, 如有侵权,请联系我们删除。