Linux检查服务器是否被入侵

检查root用户是否被纂改
awk -F: '$3==0{print $1}' /etc/passwd
awk -F: '$3==0 {print}' /etc/passwd
查看空口令
awk -F: 'length(2)==0 {print}' /etc/shadow
查询可以远程登录的帐号,即:/bin/shell
awk '/\$1|\$6/{print $1}' /etc/shadow
检查sudo权限
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
禁用或删除多余及可疑的帐号
usermod -L user ###禁用帐号,帐号无法登录,验证:/etc/shadow 第二栏为 ! 开头
userdel user ###删除 user 用户
userdel -r user 将删除user用户,且将/home目录下的user家目录一并删除
检查当前及历史用户登录情况
who, whoami,last,lastb,cat .bash_history >> history.txt,lastlog
查看机器所有用户的连接时间(小时)
ac -dp

系统异常排查

检查当前主机系统负载
w、top、uptime
查看异常进程的端口
ss -antlp|less  ##分析可疑端口、IP、PID;如果发现异常,用以下命令查看下pid所对应的进程文件路径,
ls -l /proc/$PID/exe 或 file /proc/$PID/exe #($PID 为对应的 pid 号)
ps aux | grep pid ##分析异常进行,关联的子进程或线程
killall -9 可疑进程 ###杀掉所有可疑进程的关联进程/线程;
启动项配置文件查看是否异常
more /etc/rc.local /etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
查看系统启动文件rc.local和/etc/init.d有无异常脚本文件;
或进去/etc/init.d/删除异常开机文件
查看异常计划任务执行
crontab -l
crontab -e ##进去删除异常的任务
more /etc/cron.daily/* 查看目录下文件
ps aux | grep crond
关注以下目录中是否存在恶意脚本
/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/*
查看系统脚本异常
查看以下目录下脚本文件的修改时间和最近访问时间:
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/*
服务查看
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
查看日志
入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空
more /etc/rsyslog.conf #查看日志配置情况
ll -h /var/log/*
du -sh /var/log/*
cat /var/log/secure | grep -i "accepted password" ##尝试发现入侵者的信息
日志文件 说明
/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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
定位有多少IP在爆破主机的 root 帐号
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些 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
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
登录成功的 IP 有哪些
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP
grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’
增加一个用户日志,删除用userdel grep -i "useradd" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
查看sudo
visudo
sudo -l
异常文件查看
find . -name “muma.php” -type f -mtime -5 -exec ls -l {} ; ##如果怀疑muma.php
find常用:
find /home -size +512k; #查大于512k的文件
find /home -size -512k; #查小于512k的文件
find /home -mtime -2; # 在/home下查最近两天内改动过的文件
find /home -atime -1; # 查1天之内被存取过的文件
find /home -mmin +60; # 在/home下查60分钟前改动过的文件
find /home -amin +30; # 查最近30分钟前被存取过的文件
find /home -newer tmp.txt; # 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt; # 在/home下查存取时间比tmp.txt近的文件或目录
ls -lc filename 列出文件的创建时间

注意:ctime 是在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而更改的时间。
ls -l filename 列出文件的修改时间;
注意:mtime 是在写入文件时随文件内容的更改而更改的时间。如果ctime和mtime不一致时有可能是木马文件,黑客有可能会修改了mtime时间。 确认后删除木马文件:
find . -name “muma.php” -type f -mtime -5 -size -5k -exec rm -rf {} ;
查找目录下文件内容包含木马特定字符串(比如YLb)的文件列表,并删除处理:
#查找文件,并显示文件的ctime时间,比对文件信息
find . -name “.php" -exec grep -rl “YLb” {} ; -exec ls -lc {} ;
#确认没有问题后,删除掉
find . -name ".php” -exec grep -rl “YLb” {} ; -exec rm -rfv {} ;
如果杀不了,查看以下文件:
/usr/bin/killall
/usr/bin/wget
另外:木马也喜欢出现的目录/tmp,查看其下是否有异常文件;
查看cat /etc/resolv.conf,如果网页恶意重定向
安装杀毒软件
yum -y install clamav*
service clamd restart启动
freshclam ##更新病毒库
扫描方法:
clamscan -r /etc –max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin –max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr –max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r –remove /bin/
clamscan -r –remove /usr/bin/
查看常用运维排查软件
ps,ps,netstat,lsof等命令是否异常;如果ps命令,ls命令执行无输出,就该警惕被病毒感染替换为虚假命令工具;
/root/chattr -i -a /bin/ps && rm /bin/ps -f #删除这些可能被感染的命令,比如ps,ls,netstat,lsof,top等。可以通过ls -lh /bin/ps 查看这些命令的大小和正常程序是否一致;如果被感染,可去一个相同操作系统的的ps,ls, netstat,lsof命令,将这些命令复制到被感染的系统中,临时使用。
RPM check检查
 系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:./rpm -Va > rpm.log;如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验是否改变(可以看成文件内容是否改变)
D 设备中,从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变 rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到当前目录的/bin/ls下
查看异常进程
top #仔细检查异常进程pid
ls -l /proc/pid/exe 查看异常进程命令所在地
若发现异常进程,可在虚拟文件系统目录查找该进程的可执行文件:
ll /proc/1850/ | grep -i exe ##1850是进程的pid
ps -eFH ##
对关键目录加锁,降低危害
chmod 000 /usr/bin/可疑文件
chattr +i /usr/bin
chattr +i /bin
chattr +i /tmp
linux查找被入侵后留下的后门文件
找/opt/下的所有jsp,拷贝到/dir(提前创建隔离目录)
linux下:find /opt -name *.jsp | xargs cp -a --target-directory=/dir/ --parents
或:find . -name *.jsp|xargs cp -a --target-directory=/dir/ --parents
流量异常

如果发现机器产生了异常流量,可以使用命令“tcpdump”抓取网络包查看流量情况或者使用工具”iperf”查看流量情况,使用命令iftop,查看查看网卡流量情况;

ctrl+shift+esc打开你Windows任务管理器查看CPU、内存、网络等情况;

原理介绍

如果确认机器已经被入侵,重要文件已经被删除,可以尝试找回被删除的文件

1>当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

2>在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 为 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。

3>当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。

假设/var/log/secure文件被删除,用lsof命令查看当前是否有进程打开/var/log/secure,执行:lsof | grep /var/log/secure

结果示例:

rsyslogd 1264 root 4w REG 8,1 3173904 263917 /var/log/secure (deleted) ##其中4w的4表示:文件描述符未4

然后:在/proc/1264/fd/4(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息来确认:tail -f /proc/1264/fd/4

安全建议

1)密码文件安全:

/etc/hosts.deny 和/etc/hosts.allow利用这2个文件建立白名单,控制主机访问;

或利用iptables规则;

对/etc/passwd、/etc/group、/etc/sudoers、/etc/shadow等用户信息文件进行加锁(chattr +ai),验证lsattr,一切非必要用户登录权限均设为/sbin/nologin

禁ping设置:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

紧急临时账户锁定:passwd -l 异常账户 ##-u解锁,对应-L锁定需要-U解锁

2)密码安全控制

设置密码有效期和复杂度

对新建用户,编辑/etc/login.defs,新增PASS MAX DAYS 30

对老用户,chage -M 30 zabbix;修改已存在用户zabbix的密码有效期为30天

chage -d 0 zabbix //强制zabbix用户下次登录时必须更改密码

3)历史命令记录

减少历史命令记录条数,注销时自动清空命令历史

编辑/etc/profile,修改HISTSIZE=5参数值,这里配置为5条或export HISTSIZE=5;

同上修改/etc/profile,修改TMOUT=100参数,即让系统终端闲置100s后自动注销;如果针对单个特定用户来进行,只需修改该用户下的.bash_profile的TMOUT=100参数。

4)限制su命令使用和sudo权限

将允许使用su命令的用户加入wheel组,启用pam_wheel模块;su的操作记录在/var/log/secure日志里;编辑/etc/login.defs,文末添加SU_WHEEL_ONLY yes

注:PAM认证一般遵循顺序:service—>pam配置文件—>pam_*.so;pam认证首先要确定当前求情的事哪一项服务,后加载响应的pam配置文件(位于/etc/pam.d/),找到后调用认证文件(/lib/security/)来安全认证;

pam常见4种控制类型:验证开始----->required—>requisite—>sufficient—>optional—>验证结束

sudo权限限制visudo或vim /etc/sudoers,记录格式:用户 主机名列表 = 命令程序列表

sudo默认日志/var/log/sudo;

5)禁止root从其他终端登录,只能从安全终端登录

编辑/etc/securetty,只保留tty1为安全终端,其他注释掉。

6)临时禁止普通用户登录

1.建立/etc/nologin文件,这样当普通用户登录时,login程序会检查/etc/nologin文件是否存在,如存在就拒绝普通用户登录系统,root不受此限制。

攻防演练工具

1)DDos演练工具:

1> windows:Hyenae

hyenae是在Windows平台上非常好用的一款ddos攻击工具,可以完成绝大多数的攻击操作。软件下载

使用简述:

●攻击源的IP,MAC地址以及端口号可以非常灵活的设置,按MAC-IP@port的格式书写,上图中的攻击源匹配模式%-172.17.14.158@80,其中:

% 代表任意,在此处代表任意的MAC地址

172.17.14.158为伪造的攻击源IP,可以修改为任意的合法IP

80为端口号,80同时也是网络服务器的默认端口

●攻击目标的设置方式与攻击源一致,图中的%-172.17.14.10@80,其中:

% 随机生成MAC地址

172.17.14.10代表被攻击的IP

80为攻击目标的被攻击端口号

上述图示的作用是产生MAC地址随机,IP为172.17.14.158,端口为80的伪造源,去攻击目的MAC随机,IP为172.17.14.10的web server。

由于目的MAC随机,当MAC地址首字节为奇数时,生成的数据包为广播包,此时将产生广播风暴,局域网内的所有设备都将收到大量的广播包,当速率很高时,很容易导致局域网瘫痪,这是需要注意的。本人当时年少轻狂,有次测试,使用全速率的广播式SYN/ACK攻击,直接导致部门的局域网瘫痪断网,幸好是晚上,后来找人重置了部门内的网络设备才恢复,想想真是罪过啊。

2> Linux:hping3

hping3是用于生成和解析TCPIP协议数据包的开源工具。hping3同样可用于产生ddos攻击包,但与hyenae不同的是,hping3无法手动设置MAC地址,而是根据IP地址自动获取。

使用介绍参见

hping3编译安装

软件下载:http://www.hping.org/hping3-20051105.tar.gz

对应windows版本:http://www.hping.org/hping2.win32.tar.gz

3> 其他工具:

免费DDOS攻击测试工具大合集

4> webshell查杀

河马webshell查杀:http://www.shellpub.com

深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html

5>Rootkit查杀

网址:http://www.chkrootkit.org

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense #编译完成没有报错的话执行检查
./chkrootkit

6>rkhunter

网址:http://rkhunter.sourceforge.net

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install rkhunter -c

7>Clamav杀毒

官方下载地址为:http://www.clamav.net/download.html

#安装zlib依赖:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
#安装一下gcc编译环境:
yum install gcc CFLAGS="-O3 -fPIC"
./configure --prefix= /usr/local/zlib/
make && make install #添加用户组clamav和组成员clamav:
groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav #安装Clamav:
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make
make install #配置Clamav:
mkdir /opt/clamav/logs
mkdir /opt/clamav/updata
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log #ClamAV 使用:
/opt/clamav/bin/freshclam #升级病毒库
./clamscan –h #查看相应的帮助信息
./clamscan -r /home #扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin 扫描bin目录并且显示有问题的文件的扫描结果 #yum安装
yum install -y clamav
freshclam #更新病毒库
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log #扫描方法
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ #扫描并杀毒
clamscan -r --remove /usr/local/zabbix/sbin
cat /root/usrclamav.log |grep FOUND #查看日志发现

8>linux安全检查脚本

https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
https://github.com/T0xst/linux

来源: https://blog.csdn.net/ximenjianxue/article/details/101018708

Linux检查服务器是否被入侵的更多相关文章

  1. Linux 如何判断自己的服务器是否被入侵

    如何判断自己的服务器是否被入侵了呢?仅仅靠两只手是不够的,但两只手也能起到一些作用,我们先来看看UNIX系统上一些入侵检测方法,以LINUX和solaris为例. 1.检查系统密码文件 首先从明显的入 ...

  2. Linux如何判断自己的服务器是否被入侵

    如何判断自己的服务器是否被入侵了呢?仅仅靠两只手是不够的,但两只手也能起到一些作用,我们先来看看UNIX系统上一些入侵检测方法,以LINUX和solaris为例. 1.检查系统密码文件 首先从明显的入 ...

  3. 深度解析Linux通过日志反查入侵

    有一个朋友的服务器发现有入侵的痕迹后来处理解决但是由于对方把日志都清理了无疑给排查工作增加了许多难度.刚好手里有些资料我就整理整理贴出来分享一下.其实日志的作用是非常大的.学会使用通过日志来排查解决我 ...

  4. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

  5. Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

    负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesa ...

  6. linux web服务器静态资源的处理 unison+inotify双向同步

    linux web服务器静态资源的处理 unison+inotify双向同步 http://monkeyzhu.blog.51cto.com/5764358/1324391 简介 unison可以使两 ...

  7. 优化Linux生产服务器的经验之谈

    [51CTO独家特稿]如何优化自己的Linux生产服务器?本文结合实际的工作经验,总结了优化Linux生产服务器的九大要点.如果有些方法您尚未采用,不妨一试. 一.时间同步 生产环境下的服务器对时间的 ...

  8. Linux 高性能服务器编程——多线程编程

    问题聚焦:     在简单地介绍线程的基本知识之后,主要讨论三个方面的内容:    1 创建线程和结束线程:    2 读取和设置线程属性:    3 线程同步方式:POSIX信号量,互斥锁和条件变量 ...

  9. Linux 高性能服务器编程——I/O复用

    问题聚焦:     前篇提到了I/O处理单元的四种I/O模型.     本篇详细介绍实现这些I/O模型所用到的相关技术.     核心思想:I/O复用 使用情景: 客户端程序要同时处理多个socket ...

随机推荐

  1. CSS3带你实现3D转换效果

    前言 在css3中允许使用3D转换来对元素进行格式化,在原本只是2D转化的平面中引入了Z轴.在这之前我们讲解了css3中的2D转换,也就是二维空间变换,本篇的3D转换就是基于原来的2D转换而来,与2D ...

  2. Python编程知识

    继承->重写 class A(object): def __init__(self): print("super(B,self).__init__():运行A:init") ...

  3. Linux_shell命令说明

    1.1 pwd命令 该命令的英文解释为print working directory(打印工作目录).输入pwd命令,Linux会输出当前目录. 1.2 cd命令 cd命令用来改变所在目录. cd / ...

  4. mysql 查询附近N公里内数据

    mysql 查询一个地点(经纬度) 附近N公里内的数据.(根据一个地点的经纬度查询这个地点方圆几公里内的数据)1.创建测试表 CREATE TABLE `location` ( `id` int(10 ...

  5. 从零开始, 开发一个 Web Office 套件(4):新的问题—— z-index

    <从零开始, 开发一个 Web Office 套件>系列博客目录 这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office ...

  6. 什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)

    前言 在记忆里上次绕安全狗还是在上次,开开心心把自己之前绕过狗的payload拿出来,发现全部被拦截了,事情一下子就严肃起来了,这就开整. 环境 本次环境如下sqli-lab的sql注入靶场 网站安全 ...

  7. Java泛型的那些事

    1.泛型概述 1.1.为什么使用泛型 没有泛型,在编写代码时只能使用具体类型或Object类型,无法做到使用者想要使用什么类型就是类型.比如:创建一个方法,形参需要指定需要使用的数据类型,在创建方法之 ...

  8. CobaltStrike逆向学习系列(14):CS功能分析-DotNet

    这是[信安成长计划]的第 14 篇文章 0x00 目录 0x01 DotNet功能分析 0x02 DotNet功能执行 0x03 写在最后 在上两篇文章中,讲述了 CS 中的一种功能执行方式 RDI, ...

  9. [error]ModuleNotFoundError: No module named 'MySQLdb'

    错误详情(错误详情如标题,图是网上找的): 解决方法: 在项目目录下 settings.py 的同级目录中的 __init__.py 中加入如下代码: import pymysql ​ pymysql ...

  10. RFC2544学习频率“Learning Frequency”详解—信而泰网络测试仪实操

    在RFC2544中, 会有一个Learning Frequency的字段让我们选择, 其值有4个, 分别是learn once, learn Every Trial, Learn Every Fram ...