首页 > 系统相关 >linux常见问题排查

linux常见问题排查

时间:2023-02-10 14:11:49浏览次数:47  
标签:常见问题 grep log 查看 etc -- 排查 linux var

查看用户账号

# 查看系统所有用户

cut --delimiter : --fields 1 /etc/passwd

或者

cut -d : -f 1 /etc/passwd

# 查看拥有特殊权限的用户

awk -F: '$3==0{print $1}' /etc/passwd

# 查询可以远程登录的帐号信息

awk '/\$1|\$6/{print $1}' /etc/shadow

# 除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

# 禁用或删除多余及可疑的帐号

usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel user       删除user用户
userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除

# 当前登录当前系统的用户信息

who     查看当前登录用户(tty本地登陆  pts远程登录)

w       查看系统信息,想知道某一时刻用户的行为

uptime  查看登陆多久、多少用户,负载

11:42:16 up 11 days, 16:17, 2 users, load average: 0.25, 0.19, 0.20

第一位0.25:表示最近1分钟平均负载

第二位0.19:表示最近5分钟平均负载

第三位0.20:表示最近15分钟平均负载

注:linux系统是5秒钟进行一次Load采样

1) 单核处理器

假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load <1;当车占满整个马路的时候 load=1;当马路都站满了,而且马路外还堆满了汽车的时候,load>1

2) 多核处理器

我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。

假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。

注:查看cpu 核数命令:

grep 'model name' /proc/cpuinfo | wc -l

0.7 < load < 1: 此时是不错的状态,如果进来更多的汽车,你的马路仍然可以应付。

load = 1: 你的马路即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧。

load > 5: 非常严重拥堵,我们的马路非常繁忙,每辆车都无法很快的运行

通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。

1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。

检查异常端口

# 使用netstat 网络连接命令,分析可疑端口、IP、PID等信息。

netstat -antlp|more

# 查询端口占用

① netstat -tunlp |grep 8080 

② lsof -i :8080

# 如发现异常的网络连接需要持续观察,可抓包分析

tcpdump -c 10 -q   //精简模式显示 10个包

检查可疑进程

# 使用ps命令列出系统中当前运行的那些进程,分析异常的进程名、PID,可疑的命令行等。

ps aux  ps -ef 

# 通过top命令显示系统中各个进程的资源占用状况,如发现资源占用过高

top

# 如发现异常,可使用一下命令进一步排查:

查看该进程启动的完整命令行:

ps eho command -p $PID

查看该进程启动时候所在的目录:

readlink /proc/$PID/cwd

查看下pid所对应的进程文件路径:

ls -l /proc/$PID/exe

查看该进程启动时的完整环境变量:

strings -f /proc/1461/environ | cut -f2 -d ''

列出该进程所打开的所有文件:

lsof -p $PID

检查系统服务

Linux系统服务管理,CentOS7使用systemd控制

chkconfig --list | grep "3:on\|5:on"

(1)对于systemd服务管理器来说,可以通过下述方式查看开机自启的服务:

systemctl list-unit-files --type=service | grep "enabled"

(2)chkconfig就是CentOS6以前用来控制系统服务的工具,查看服务自启动状态:

chkconfig  --list   chkconfig --list | grep "3:on\|5:on"

检查开机启动项

(1)检查启动项脚本

more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

(2)例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

检查计划任务

利用计划任务进行权限维持,可作为一种持久性机制被入侵者利用。检查异常的计划任务,需要重点关注以下目录中是否存在恶意脚本。

/var/spool/cron/*  
/etc/crontab 
/etc/cron.d/* 
/etc/cron.daily/*  
/etc/cron.hourly/*  
/etc/cron.monthly/* 
/etc/cron.weekly/ 
/etc/anacrontab 
/var/spool/anacron/*

检查异常文件

1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

可以使用find命令来查找,如

 find /opt -iname "*" -atime 1 -type f 

找出 /opt 下一天前访问过的文件

3、针对可疑文件可以使用stat进行创建修改时间。

检查历史命令

一般而言,入侵者获取shell之后,会执行一些系统命令从而在主机上留下痕迹,我们可以通过history命令查询shell命令的执行历史。

(1)查询某个用户在系统上执行了什么命令

使用root用户登录系统,检查/home目录下的用户主目录的.bash_history文件

复制

(2)默认情况下,系统可以保存1000条的历史命令,并不记录命令执行的时间,根据需要进行安全加固。

a)保存1万条命令

sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

b)在/etc/profile的文件尾部添加如下行数配置信息:

\######jiagu history xianshi######### USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histappend export PROMPT_COMMAND="history -a" ######### jiagu history xianshi ##########

c)source /etc/profile让配置生效

检查系统日志

在Linux上一般跟系统相关的日志默认都会放到/var/log下面,若是一旦出现问题,用户就可以通过查看日志来迅速定位,及时解决问题。常用日志文件如下:

/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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

复制

一般,我们需要重点去关注secure安全日志,检查系统错误登陆日志,统计IP重试次数,成功登录的时间、用户名和ip,确认账号是否存在暴力破解或异常登录的情况。

1、定位有多少IP在爆破主机的root帐号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more grep "Failed password for tingyin" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

2、定位有哪些IP在爆破:

grep "Failed 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

3、爆破用户名字典是什么?

 grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

4、登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

5、登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

开放、关闭端口

firewall-cmd --zone=public --add-port=22/tcp --permanent        # 开放端口 

firewall-cmd --zone=public --remove-port=4320/tcp --permanent   # 关闭端口

注:需要使用 firewall-cmd --reload 或者 systemctl restart firewalld.service 设置的端口策略才生效

标签:常见问题,grep,log,查看,etc,--,排查,linux,var
From: https://www.cnblogs.com/xutingyin/p/17108712.html

相关文章

  • Linux系统的web管理工具——webmin搭建
    (Linux系统的web管理工具——webmin搭建)一、webmin介绍Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管......
  • linux 进程组和会话 守护进程
    这两个概念的产生,是为了shell更好的管理作业,管理其创建的子进程对其进行暂停,终止执行命令,命令之间有时还需要管道进行通信进程组是进程的合集会话是进程组的合集一个......
  • [换帖]Linux命令之iconv命令
    一、命令简介  日常工作中我们需要将windows生成的文件上传到Linux系统,有时候会因为编码问题出现显示乱码。例如我上传了一个csv文件到Linux服务器上,默认编码为GB......
  • Linux-常用基本命令(一)
    常用基本命令帮助命令man获得帮助信息1)基本语法man[命令或配置文件](功能描述:获取帮助信息)2)显示说明信息功能NAME命令的名称和单行描述SYNOPSIS......
  • Linux系列 -- XShell破解版安装教程
    原:https://www.cnblogs.com/bowendown/p/11937159.html#一xshell6商业版安装教程目录一、xshell6商业版安装教程1.为什么要用xshell2.打开Keygen软件获取注册码3......
  • 基于Linux的DockerFile添加中文字体
    FROMopenjdk:8u332-oraclelinux7#RUNsed-i's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'/etc/apk/repositories#RUNapkadd--updatefont-adobe-100dpittf......
  • 测开-面试题-OS、Linux、算法、其他
    1OS1.1 进程和线程区别? 1.2 进程间通信方式? 1.3 说一下socket长连接的概念? 1.4 同步和异步的区别? 1.5 了解IO操作吗?   2Linux2.1如何查看进程......
  • Linux命令大全,赶紧收藏!
    新的一年新的征程新的课程开班等你来学!本文为Linux命令大全,从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺!A命令描述access用于检查调用程序是否可以访问指定的文件,用于检......
  • 6. Linux网络管理
    1.网络接口接口名称是软件,而网卡才是硬件。1.1网络接口名称规则以前CentOS(6及之前)网络接口被枚举为eth0,eth1,eth2...等,ethernet的简写,服务器为了备份,以防止单点网络故......
  • Linux上使用selenium报错:AttributeError: 'Service' object has no attribute 'proces
    Linux上使用selenium报错:AttributeError:'Service'objecthasnoattribute'process'​ Linux上安装了谷歌浏览器及对应版本的浏览器驱动(chromedriver),执行如下代码:fr......