Linux信息收集
本机基本信息
#管理员
$普通用户
@之前表示登录的用户名称,之后表示主机名,再之后表示当前所在目录
/ 表示根目录
~表示当前用户家目录
1、内核,操作系统和设备信息
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
lsb_release -a 发行版信息
cat /proc/version 内核信息
cat /etc/*-release 发行版信息
cat /etc/issue 发行版信息
cat /proc/cpuinfo CPU信息
2、用户和群组
cat /etc/passwd 列出系统上的所有用户
cat /etc/shadow 查看用户Hash
cat /etc/group 列出系统上的所有组
groups 当前用户所在的组
groups test test用户所在的组
getent group xxx xxx组里的用户
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户
awk -F: 'length($2)==0 {print $1}' /etc/shadow #查看是否存在空口令用户
awk '/\$1|\$6/{print $1}' /etc/shadow #查看远程登录的账号
whoami 查看当前用户
w 谁目前已登录,他们正在做什么
who 命令用于显示系统中有哪些使用者正在上面
last 最后登录用户的列表
lastlog 所有用户上次登录的信息
lastlog --u %username% 有关指定用户上次登录的信息
3、用户和权限信息
whoami 当前用户名
id 当前用户信息
cat /etc/sudoers 可以使用sudo提升到root的用户
sudo -l 当前用户可以以root身份执行操作
yokan用户可以以root身份执行任意操作
4、环境信息
env 显示所有的环境变量
set 显示本地环境变量
echo $PATH 环境变量中的路径信息
export [-fnp][变量名称]=[变量设置值] 显示和设置环境变量
pwd 输出工作目录
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shell
ls -la /etc/*.conf 查看etc下所有配置文件
5、历史命令
显示当前用户的历史命令记录
history
cat ~/.bash_history
# 查看其他用户的历史命令文件
cat /home/user/.bash_history
history显示内存和~/.bash_history中的所有内容 ;
内存中的内容并没有立刻写入~/.bash_history,只有当当前shell关闭时才会将内存内容写入shell
6、进程信息
ps aux 以用户的格式显示所有进程,包括非终端的进程
ps -ef 显示所有进程,显示UID,PPIP(父进程),C与STIME栏位
ps -ef | grep java 查询某个应用的所有进程信息
top 实时显示占用最多的进程
如果想查看进程的CPU占用率和内存占用率,可以使用
aux
如果想查看进程的父进程ID和完整的COMMAND命令,可以使用
-ef
lsof -c $PID 查看进程关联文件
/proc/$PID/cmdline 完整命令行信息
/proc/$PID/comm 进程的命令名
/proc/$PID/cwd 进程当前工作目录的符号链接
/proc/$PID/exe 运行程序的符号链接
/proc/$PID/environ 进程的环境变量
/proc/$PID/fd 进程打开文件的情况
7、服务信息
cat /etc/services 查询存在的服务
cat /etc/services | grep Java 查询对应的服务
systemctl list-units --type=service --state=running 查询已经开启的服务
8、计划任务
在Linux系统中,计划任务一般是由cron承担。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用工作任务。
/var/spool/cron/crontabs :这个目录以账号来区分每个用户自己的执行计划
/etc/crontab :系统执行计划,需要在后边加上用户格式
所有计划任务项:
/var/spool/cron/*
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.*
/etc/anacrontab
crontab -l 查询当前用户所有的计划任务
crontab -l -u user 查询指定用户的计划任务
cat /var/spool/cron/crontabs/root 查询root用户的计划任务
9、网络、路由和通信
查询ip
ifconfig
ip addr
打印路由信息
route 查询路由表
route -n 查询路由表,以ip地址显示
netstat -r 查询路由表
ip ro
查看系统arp表
arp -a
端口开放情况
netstat -antup 所有端口
netstat -antp tcp端口
netstat -anup udp端口
查看端口服务映射
cat /etc/services
列出iptables的配置规则
iptables -L
显示网卡信息
netstat -i
dns信息
cat /etc/resolv.conf 查看dns配置信息
dnsdomainname -V 打印DNS系统中FQDN名称中的域名
cat /etc/hosts 查看hosts域名解析文件
10、已安装应用
rpm -qa --last #Redhat、CentOS
rpm -qa polkit #查看指定应用的安装版本
dpkg -l #ubuntu、debian
dpkg -l policykit-1 #查看指定应用的安装版本
dpkg -L xxx #查询某个软件所关联的文件
11、查找能写或执行的目录
find / -writable -type d 2>/dev/null
find / -perm -o+w -type d 2>/dev/null
find / -perm -o+x -type d 2>/dev/null
12、防火墙
iptables -L 查看防火墙配置
查看防火墙状态:
systemctl status firewalld
service iptables status
暂时关闭防火墙:
systemctl stop firewalld
service iptables stop
永久关闭防火墙:
systemctl disable firewalld
chkconfig iptables off
重启防火墙:
systemctl enable firewalld
service iptables restart
13、敏感文件
find命令 -o参数 表示 或者 的意思
find / -type f -iname "*.bash_history" -o -iname "*config*" -o -iname "web.xml" -o -iname "*database*" -o -iname "*pass*" 2>/dev/null
查找SSH密钥:
find / -name "id_dsa*" -o -name "id_rsa*" -o -name "known_hosts" -o -name "authorized_hosts" -o -name "authorized_keys" 2>/dev/null |xargs -r ls
Web应用服务
常见配置文件路径:
/apache/apache/conf/httpd.conf
/apache/apache2/conf/httpd.conf
/apache/php/php.ini
/bin/php.ini
/etc/apache/apache.conf
/etc/apache/httpd.conf
/etc/apache2/apache.conf
/etc/apache2/httpd.conf
/etc/apache2/sites-available/default
/etc/apache2/vhosts.d/00_default_vhost.conf
/etc/httpd/conf.d/httpd.conf
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/php.ini
/etc/init.d/httpd
/etc/php.ini
/etc/php/apache/php.ini
/etc/php/apache2/php.ini
/etc/php/cgi/php.ini
/etc/php/php.ini
/etc/php/php4/php.ini
/etc/php4.4/fcgi/php.ini
/etc/php4/apache/php.ini
/etc/php4/apache2/php.ini
/etc/php4/cgi/php.ini
/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/phpmyadmin/config.inc.php
/home/apache/conf/httpd.conf
/home/apache2/conf/httpd.conf
/home/bin/stable/apache/php.ini
/home2/bin/stable/apache/php.ini
/NetServer/bin/stable/apache/php.ini
/opt/www/conf/httpd.conf
/opt/xampp/etc/php.ini
/PHP/php.ini
/php/php.ini
/php4/php.ini
/php5/php.ini
/usr/lib/php.ini
/etc/nginx/nginx.conf
/usr/lib/php/php.ini
/usr/local/apache/conf/httpd.conf
/usr/local/apache/conf/php.ini
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/php.ini
/usr/local/etc/php.ini
/usr/local/httpd/conf/httpd.conf
/usr/local/lib/php.ini
/usr/local/php/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php4/lib/php.ini
/usr/local/php4/php.ini
/usr/local/php5/etc/php.ini
/usr/local/php5/lib/php.ini
/usr/local/php5/php5.ini
/usr/local/share/examples/php/php.ini
/usr/local/share/examples/php4/php.ini
/usr/local/Zend/etc/php.ini
/var/apache2/config.inc
/var/httpd/conf/httpd.conf
/var/httpd/conf/php.ini
/var/httpd/conf/php.ini
/var/local/www/conf/httpd.conf
/var/local/www/conf/php.ini
/var/www/conf/httpd.conf
/web/conf/php.ini
/www/conf/httpd.conf
/www/php/php.ini
/www/php4/php.ini
/www/php5/php.ini
/xampp/apache/bin/php.ini
/xampp/apache/conf/httpd.conf
数据库
/etc/init.d/mysql
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf
/var/lib/mysql/mysql/user.MYD
/usr/local/mysql/bin/mysql
/usr/local/mysql/my.cnf
/usr/share/mysql/my.cnf
自动化脚本
linux_info.sh
#!/bin/bash
#输出文件
filename=$(date +%s)'.log'
echo "信息收集"
echo -e "\n" | tee -a $filename
echo "账户信息收集" | tee -a $filename
cat /etc/passwd | tee -a $filename
echo -e "\n" | tee -a $filename
echo "shadow" | tee -a $filename
cat /etc/shadow | tee -a $filename
echo -e "\n" | tee -a $filename
echo "进程信息收集" | tee -a $filename
ps aux | tee -a $filename
echo -e "\n" | tee -a $filename
echo "网络连接" | tee -a $filename
netstat -antlp | tee -a $filename
echo -e "\n" | tee -a $filename
echo "当前用户:" $(whoami) 2>/dev/null | tee -a $filename
echo -e "\n" | tee -a $filename
echo "端口监听" | tee -a $filename
netstat -lnpt | tee -a $filename
echo -e "\n" | tee -a $filename
echo "可登陆用户" | tee -a $filename
cat /etc/passwd | grep -E -v 'nologin$|false' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "增加用户的日志" | tee -a $filename
grep "useradd" /var/log/secure | tee -a $filename
echo -e "\n" | tee -a $filename
echo "History操作提取" | tee -a $filename
cat ~/.*history | tee -a $filename
echo -e "\n" | tee -a $filename
echo "登录成功的IP" | tee -a $filename
grep "Accepted " /var/log/secure* | awk '{print $11}' | sort | uniq -c | sort -nr | more | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看路由表" | tee -a $filename
route -n | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 SSH key" | tee -a $filename
sshkey=${HOME}/.ssh/authorized_keys
if [ -e "${sshkey}" ]; then
cat ${sshkey} | tee -a $filename
else
echo -e "SSH key文件不存在\n" | tee -a $filename
fi
echo -e "\n" | tee -a $filename
echo "查看 known_hosts" | tee -a $filename
cat ~/.ssh/known_hosts | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查找WEB-INF" | tee -a $filename
find / -name *.properties 2>/dev/null | grep WEB-INF | tee -a $filename
echo -e "\n" | tee -a $filename
echo "user|pass|pwd|uname|login|db_" | tee -a $filename
find / -name "*.properties" | xargs egrep -i "user|pass|pwd|uname|login|db_" | tee -a $filename
echo -e "\n" | tee -a $filename
echo "jdbc:|pass=|passwd=" | tee -a $filename
find / -regex ".*\.properties\|.*\.conf\|.*\.config\|.*\.sh" | xargs grep -E "=jdbc:|pass=|passwd=" | tee -a $filename
echo -e "\n" | tee -a $filename
# Author cances
echo "ip和网卡信息" | tee -a $filename
ip a | awk '{print $2,$4}' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "可登陆用户" | tee -a $filename
cat /etc/passwd | grep -E -v 'sync$|halt$|nologin$|false|shutdown' | tee -a $filename
echo -e "\n" | tee -a $filename
echo "用户登陆日志" | tee -a $filename
lastlog | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 hosts" | tee -a $filename
cat /etc/hosts | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 系统版本" | tee -a $filename
cat /etc/*-release | tee -a $filename
echo -e "\n" | tee -a $filename
echo "查看 内核版本" | tee -a $filename
uname -mrs | tee -a $filename