本文仅当作记录使用,方便后期查找。
一、查看网络连接信息
netstat 参数详解
-a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
注:LISTEN和LISTENING的状态只有用-a或者-l才能看到。
连接状态
LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。
ESTABLISHED的意思是建立连接。表示两台机器正在通信。
CLOSE_WAIT 对方主动关闭连接或者网络 异常导致连接中断
TIME_WAIT 我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT
二、查看进程
通过PID进程号查找启动程序全路径--netstat命令
通过netstat -pantu可以查看到系统正在运行的进程,也是可以看到对应进程的PID号。
如上图中,如果想知道hfish进程启动程序的全路径的话,可以通过下面的方法;
截图中hfish的进程号是2744,进入cd /proc目录下查找以该PID命名目录;
进入到/proc/2744 目录下后,会看到一个exe的文件, ls -ail就可以查看到程序的全路径;
根据目的IP及端口查找pid
netstat -pantu | grep 10.10.10.0
netstat -pantu | grep 3306
跟据文件查找PID--lsof命令
lsof 是 List Open File 的缩写, 它主要用来获取被进程打开文件的信息,我们都知道,在Linux中,一切皆文件,lsof命令可以查看所有已经打开了的文件,比如: 普通文件,目录,特殊的块文件,管道,socket套接字,设备,Unix域套接字等等,同时,它还可以结合 grep 以及 ps 命令进行更多的高级搜索
lsof 命令默认是没有安装的,而且它的使用需要有root权限或者赋予普通用于sudo权限, 使用以下命令安装
yum install -y lsof
-u 查看指定用户打开的文件
-i 列出所有打开了的网络文件
-p 列出指定进程打开的文件
lsof | more 分页查看当前所有活跃进程打开的所有文件
lsof -u ubuntu 使用 -u
选项可以列出指定(ubuntu用户)用户已经打开的文件
找出打开着但已被删除了的文件
有些文件虽然被删除了,但是文件仍然是打开着的,它仍然占用文件系统的空间,我们可以结合 grep
命令找出这种打开着,但是已经被删除的文件。
lsof -u ubuntu | grep deleted
其他使用方法
使用 lsof -i:3306 列出在指定端口打开的文件
使用
lsof -i TCP/UDP
列出使用了TCP 或 UDP 协议的文件使用
lsof -i TCP:3306
列出使用了TCP 协议并且端口为3306的文件使用
lsof -i TCP:1-1024
列出使用了TCP协议并且端口范围为 1 到 1024 的文件使用 lsof +D ./data/ 列出
data
目录中打开的文件(+D
选项会列出一个目录和其子目录中打开的文件,而+d
选项只会列出当前目录下已打开的文件)使用 lsof -p 2744 列出指定进程打开的文件
kill -9 PID 杀死执行进程
三、查看开机启动项
ununtu
查看所有开机启动项
sudo systemctl list-unit-files筛选enabled状态的开机项目
sudo systemctl list-unit-files | grep enabled
四、查看定时任务
crontab 命令选项基本只对用户操作的选项:
-l 列出当前用户计划
-r 清空当前用户计划
-e 编辑用户计划
-i 和 -r 选项搭配,删除用户计划前请求用户确认。
* * * * * run command
前五个 * 分别代表 分、时、天、月、星期
五、查看系统日志
日志文件 | 说明 |
---|---|
/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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
六、查看历史命令
cat /root/.bash_history 查看历史命令
七、其他
查看权限为777的可疑文件
find .-name *.jsp -perm 777
查看可以ssh登录的账户
s=$( sudo cat /etc/shadow | grep '^[^:]*:[^\*!]' | awk -F: '{print $1}');for i in $s;do cat /etc/passwd | grep -v "/bin/false\|/nologin"| grep $i;done | sort | uniq |awk -F: '{print $1}'
查看正在连接的 ssh sessions
who -a
netstat -tnpa | grep 'ESTABLISHED.*sshd'
查看登录失败的日志
cat /var/log/auth.log | grep "Failed password for" | more
查看登录成功的日志
cat /var/log/auth.log | grep "Accept"
统计登录失败的用户名及次数
grep "Failed password" /var/log/auth.log|perl -e 'while($_=<>){ /for(.*?)from/; print "$1\n";}'|sort|uniq -c|sort -nr
统计暴力破解的登录者
cat /var/log/auth.log | grep "Failed password for" |grep "root" | grep -Po'(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}'|sort|uniq -c|sort -nr