• Linux系统信息收集


    目录

    系统相关

    文件相关

    敏感文件

    常见web服务配置文件

    Mysql配置

    Find命令

    软件相关

    防火墙

    端口相关

    自动化收集

    结语


    系统相关

    root@vulntarget.com:[/root]

    #    管理员root用户
    $    普通用户
    @  前表示登录的用户名称,后表示主机名,再之后表示当前所在目录
    /    表示根目录  
    ~   表示当前用户家目录


    uname -a                 打印所有相关的系统信息
    hostname                系统主机名
    cat /proc/version      内核信息
    cat /etc/*-release     发行版信息
    cat /etc/issue           发行版信息
    cat /proc/cpuinfo      CPU信息

    hostnamectl

    #用于显示主机名和一些系统相关的信息 

    #可以简单的判断系统是否是虚拟机

    id                   当前用户信息

    whoami         查看当前用户    #能比较直观看到当前系统时间信息
    w                   显示目前已登录,及正在运行
    who               用于显示系统中目前哪些使用者
    last                最后登录用户的列表
    lastlog           所有用户上次登录的信息

    lastlog –u username  有关指定用户上次登录的信息

    这里的 'still logged in' 也表示当前系统在线的用户, 这里的 '19:30 (00:28)' 表示用户登录的时间及登录的时长。

    /var/run/utmp

    #文件记录当前正在登录系统的用户信息

    #默认是who和w命令的记录

    #uptime记录系统启动时间

    #将文件清空后w和who命令也就没有了相关的记录

    date

    #查看系统当前日期

    #date -f 文件名 可从文件读取日期信息进行打印,不是日期信息则将文件内容打印

    /var/log/wtmp

    #记录当前正在登录和历史登录系统的用户信息,默认由last命令查看

    #清空后last命令的记录也将被清除

    /var/log/btmp

    #文件记录失败的登录尝试信息,默认由lastb命令查看。

    清空文件后lastb命令也将失去相关记录。

    /var/run/utmp

    /var/log/wtmp

    /var/log/btmp

    需要注意的是,通常3个文件都是二进制数据文件,并且文件结构相同,类似的还有

    /var/log/btmp         记录所有用户错误登录信息,使用lastb命令查看
    /var/log/wtmp        记录所有用户成功登录、注销信息,使用last命令查看
    /run/utmp              记录当前已经登录的用户信息,使用w、who、users等命令查看
    /var/log/secure      记录与安全相关的日志信息,涉及使用账户和密码登录的程序都会记录

    /var/log/auth.log    记录与安全相关的日志信息,涉及使用账户和密码登录的程序都会记录
    /var/log/lastlog      记录所有用户最后一次的登录时间的曰志,使用lastlog命令查看
    /var/log/messages    记录系统启动后的信息和错误日志

    将相关文件的可读权限去掉,非root用户就不能用相关联的命令查看到相应的信息了,如果是btmp文件,手工创建的话注意权限必须为600,否则不能正确写入信息。

    一键清除脚本:
    #!/usr/bin/bash
    echo > /var/log/syslog
    echo > /var/log/messages
    echo > /var/log/httpd/access_log
    echo > /var/log/httpd/error_log
    echo > /var/log/xferlog
    echo > /var/log/secure
    echo > /var/log/auth.log
    echo > /var/log/user.log
    echo > /var/log/wtmp
    echo > /var/log/lastlog
    echo > /var/log/btmp
    echo > /var/run/utmp
    rm ~/.bash_history

    bash ./res-history
    history -c

    文件相关

    /etc/group        存放系统上的所有组

    /etc/passwd     存放系统存在的所有用户

    /etc/sudoers    可以对用户做权限修改,通常非root用户不可读
    /etc/shadow     存放用户相关信息包括密码
    #Linux操作系统采用5中常用的加密算法,主要通过/etc/shadow文件账号后面的$x进行判断

    $1:Md5加密算法
    $2:Blowfish加密算法
    $5:sha-256加密算法
    $6:sha-512加密算法
    其他均为标准DES加密算法

    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

    #查看可登录的账号 

    cat /etc/sudoers|grep "ALL=("

    usermod -L user   
    #禁用帐号使帐号无法登录

    stat /etc/passwd 
    #查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题

    /etc/services                            #文件存放系统所有的服务

    cat /etc/services | grep ssh     #查询对应的服务

    service --status-all  #列出系统所有的服务状态

    systemctl list-units --type=service --state=running   #查询已经开启的服务

    敏感文件

    查找敏感文件

    #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

    history                                       #命令查询历史命令记录
    cat ~/.bash_history                   #查看当前用户历史命令记录
    cat /home/user/.bash_history   #查看其他用户的历史命令文件

    常见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

    Mysql配置

    /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

    #mysql默认会保留登陆日志
    cat /var/log/mysql/error.log 

    Find命令

    find / -type f -prem 777  //查找777权限的文件
    find / -perm /u=s            //查找SUID文件
    find / -prem /g=s            //查找SGID文件
    find / -prem /o=t             //查找Sticky文件

    find / -perm -u=s -type f 2>/dev/null
    find / -user root -perm -4000-print2>/dev/null
    find / -user root -perm -4000-exec ls -ldb {} ;

    #查找能写或执行的目录
    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

    软件相关

    查看已安装应用

    rpm -qa --last          #Redhat、CentOS
    rpm -qa polkit         #查看指定应用的安装版本
    dpkg -l                    #ubuntu、debian
    dpkg -l policykit-1   #查看指定应用的安装版本
    dpkg -L xxx             #查询某个软件所关联的文件

    top         #实时显示占用最多的进程

    ps aux   #以用户的格式显示所有进程,包括非终端的进程
    ps -ef    #显示所有进程,显示UID,PPIP(父进程),C与STIME栏位
    ps -ef | grep java   #查询某个应用的所有进程信息

    lsof -c $PID                  #查看进程关联文件
    /proc/$PID/cmdline      #完整命令行信息 
    /proc/$PID/comm        #进程的命令名 
    /proc/$PID/cwd            #进程当前工作目录的符号链接 
    /proc/$PID/exe            #运行程序的符号链接 
    /proc/$PID/environ      #进程的环境变量 
    /proc/$PID/fd               #进程打开文件的情况 

    cat /etc/resolv.conf      #查看dns配置信息
    dnsdomainname -V    #打印DNS系统中FQDN名称中的域名
    cat /etc/hosts              #查看hosts域名解析文件

    防火墙

    iptables -L   

    #查看防火墙配置,列出iptables的配置规则


    #查看防火墙状态
    systemctl status firewalld
    service iptables status


    #暂时关闭防火墙
    systemctl stop firewalld
    service iptables stop


    #永久关闭防火墙
    systemctl disable firewalld
    chkconfig iptables off


    #重启防火墙
    systemctl enable firewalld
    service iptables restart

    linux下实用iptables封ip段的一些常见命令

    #封单个IP的命令是
    iptables -I INPUT -s 211.1.0.0 -j DROP

    #封IP段的命令是
    iptables -I INPUT -s 211.1.0.0/16 -j DROP
    iptables -I INPUT -s 211.2.0.0/16 -j DROP
    iptables -I INPUT -s 211.3.0.0/16 -j DROP

    #封整个段的命令是
    iptables -I INPUT -s 211.0.0.0/8 -j DROP

    #封几个段的命令是
    iptables -I INPUT -s 61.37.80.0/24 -j DROP
    iptables -I INPUT -s 61.37.81.0/24 -j DROP

    让服务器启动自运行

    1、把它加到/etc/rc.local中


    2、iptables-save >/etc/sysconfig/iptables可以把你当前的iptables规则放到/etc/sysconfig/iptables中,系统启动iptables时自动执行


    3、service iptables save 也可以把你当前的iptables规则放/etc/sysconfig/iptables中,系统启动iptables时自动执行。

    后两种更好此,一般iptables服务会在network服务之前启来,更安全。

    解封

    iptables -D INPUT -s IP地址 -j REJECT  

    #此命令执行后提示:no chain/target/match by that name.

    #封停一个IP
    iptables -I INPUT -s ***.***.***.*** -j DROP

    #解封一个IP
    iptables -D INPUT -s ***.***.***.*** -j DROP

    -I是表示Insert(添加)

    -D表示Delete(删除)后面跟的是规则

    INPUT表示入站,***.***.***.***表示要封停的IP

    DROP表示放弃连接

    端口相关

    netstat -antup     #查看所有端口
    netstat -antp       #tcp端口
    netstat -anup      #udp端口

    查看所有80端口的连接数
    netstat -nat|grep -i “80”|wc -l

    对连接的IP按连接数量进行排序
    netstat -anp | grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr
    netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr

    链接最多的前20
    netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr|head -20
    netstat -ntu | awk ‘{print $5}’ | egrep -o “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” | sort | uniq -c | sort -nr

    查找较多time_wait连接
    netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

    查找较多的SYN连接
    netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

    查看TCP连接状态
    netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
    netstat -n | awk ‘/^tcp/ {print $NF}’|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 -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]’ | sort | uniq -c

    查看80端口连接数最多的20个IP
    cat /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    tail -n 10000 /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    cat /www/web_logs/waitalone.cn_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    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}’ |sort -rn|head -n20

    用tcpdump嗅探80端口的访问看看谁最高
    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

    查找较多time_wait连接
    netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

    查找较多的SYN连接
    netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

    自动化收集

    #!/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


    结语

    长大以后我们都喜欢说"小孩子才做选择",但现实是只有小孩子才有照单全收的资格,而我们不得不让理性压抑情感,才能做出一些从长远来看正确的决定。

  • 相关阅读:
    学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计
    周易算卦流程c++实现
    egg中的一些基本使用注意事项以及如何跨域(CORS)、JSONP、Proxy
    居舍杂志居舍杂志社居舍编辑部2022年第27期目录
    [管理与领导-103]:IT经营者、管理者与所有者的关系
    ERP查询Q报表开发代码
    selenium环境+元素定位大法
    由于找不到emp.dll无法继续执行此代码问题的五个解决方法
    ONNX 转换成 ncnn
    使用 GRPC C++ API连接Java的RPC服务
  • 原文地址:https://blog.csdn.net/l1593572468/article/details/127852464