LINUX入侵检测指导

检查用户登录记录

more /var/log/secure
who /var/log/wtmp

(unknown):0          2016-06-24 00:56 (:0)
root    :0          2016-06-24 00:57 (:0)
root    pts/0       2016-06-24 00:57 (:0)
root    pts/1       2016-06-26 18:38 (222.178.229.67)
root    pts/1       2016-06-26 19:07 (202.103.194.99)
root    pts/1       2016-06-28 21:25 (202.103.194.99)
root    pts/1       2016-07-05 16:54 (202.103.194.99)
root    pts/1       2016-07-06 15:29 (202.103.194.99)
root    pts/0       2016-07-08 10:41 (:0)
root    pts/0       2016-07-08 10:42 (:0)
root    pts/0       2016-07-08 10:48 (:0)
root    pts/0       2016-07-08 17:09 (202.103.194.99)
slview  pts/0       2016-07-12 10:29 (202.103.194.99)

 

检查系统守护进程

     检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v“^#”,输出的信息就是你这台机器所开启的远程服务。

     一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。


检查网络连接和监听端口

     输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。

     输入netstat –rn,查看本机的路由、网关设置是否正确。

     输入 ifconfig –a,查看网卡设置。

检查系统日志

     命令last |more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。

     linux下输入ls –al /var/log

     在solaris下输入 ls –al /var/adm

     检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法

干了些什么?

root账户下输入history

能看到这个用户历史命令,默认最近的1000条

.拨掉网线

这是最安全的断开链接的方法,除了保护自己外,也可能保护同网段的其他主机.

2.分析登录文件信息,搜索可能入侵的途径

被入侵后,决不是重新安装就可以了,还要分析主机被入侵的原因和途径,如果找出了问题点,就可能使您的主机以后更安全,同时也提高了自己的Linux水平.

如果不知道如何找出入侵途径,下次还有可能发生同样的事.一般:

1.分析登录文件:可以通过分析一些主要的登录文件找到对方的IP以及可能出现的漏洞.一般分析的文件为:/var/log/messages和/var/log/secure文件.还可以使用last命令找出最后一个登录者的信息.

2.检查主机开放的服务:很多Linux管理员不知道自己的主机上开放了多少服务,每个服务都有漏洞或不该启动的增强型或测试型功能.找出系统上的服务,逐个检查服务是否有漏洞或设置上的失误.


3.重要数据备份
所谓重要的数据就是非Linux上的原有数据.如/etc/passwd,/etc/shadow,WWW网页的数据,/home里的用户文件,至于/etc/*,/usr/,/var等目录下的数据就不要备份了.

4.系统重装

重要的是选择合适的包,不要将所有的包都安装.

5.包漏洞修补

安装后,要立即更新系统包,更新后再设置防火墙机制,同时关闭一些不必要的服务,最后才插上网线.

6.关闭或卸载不需要的服务

启动的服务越少,系统入侵的可能性就越底

7.数据恢复与恢复服务设置

备份的数据要复制回系统,然后将提供的服务再次开放.

8.将主机开放到网络上

查找Centos Linux服务器上入侵者的WebShell后门

服务器被挂马或被黑的朋友应该知道,黑客入侵web服务器的第一目标是往服务器上上传一个webshell,有了webshell黑客就可以干更多的事情。网站被挂马后很多人会束手无策,无从查起,其实并不复杂,这里我将以php环境为例讲几个小技巧,希望对大家有帮助。

先讲一下思路,如果服务器上被上传了webshell那么我们肯定能够查到蛛丝马迹,比如php文件的时间,如果我们可以查找最后一次网站代码更新以后的所有php文件,方法如下。
假设最后更新是10天前,我们可以查找10天内生成的可以php文件:

find /var/webroot -name “*.php” -mtime -10

命令说明:
/var/webroot为网站根目录
-name “*.php”为查找所有php文件
-time -10为截止到现在10天

如果文件更新时间不确定,我们可以通过查找关键字的方法来确定。要想查的准确需要熟悉webshell常用的关键字,我这里列出一些常用的,其他的大家可以从网收集一些webshell,总结自己的关键字,括号里面我总结的一些关键字(eval,shell_exec,passthru,popen,system)查找方法如下:

find /var/webroot -name “*.php” |xargs grep “eval” |more
find /var/webroot -name “*.php” |xargs grep “shell_exec”|more
find /var/webroot -name “*.php” |xargs grep “passthru” |more

当然你还可以导出到文件,下载下来慢慢分析:

find /home -name “*.php”|xargs grep “fsockopen”|more>test.log

这里我就不一一罗列了,如果有自己总结的关键字直接替换就可以。当然并不是所有的找出的文件都是webshell需要自己做一下判断,判断的方法也简单,直接从浏览器访问一下这个文件或者和自己找的一些webshell比较一下,看得多了,基本上一眼就可以判断是不是webshell文件​


0x00 审计命令


在linux中有5个用于审计的命令:

  • last:这个命令可用于查看我们系统的成功登录、关机、重启等情况;这个命令就是将/var/log/wtmp文件格式化输出。
  • lastb:这个命令用于查看登录失败的情况;这个命令就是将/var/log/btmp文件格式化输出。
  • lastlog:这个命令用于查看用户上一次的登录情况;这个命令就是将/var/log/lastlog文件格式化输出。
  • who:这个命令用户查看当前登录系统的情况;这个命令就是将/var/log/utmp文件格式化输出。
  • w:与who命令一致。

关于它们的使用:man last,last与lastb命令使用方法类似:

1
2
3
last [-R] [-num] [ -n num ] [-adFiowx] [ -f file ] [ -t YYYYMMDDHHMMSS ] [name...] [ tty ...]
lastb [-R] [-num] [ -n num ] [ -f file ] [-adFiowx] [name...]  [ tty ...]
who [OPTION]... [ FILE | ARG1 ARG2 ]

参数说明:

  1. 查看系统登录情况

    last:不带任何参数,显示系统的登录以及重启情况

    p1

  2. 只针对关机/重启

    使用-x参数可以针对不同的情况进行查看

    p2

  3. 只针对登录

    使用-d参数,并且参数后不用跟任何选项

    p3

  4. 显示错误的登录信息

    lastb

  5. 查看当前登录情况

    who、w

0x01 日志查看


在Linux系统中,有三类主要的日志子系统:

  • 连接时间日志:由多个程序执行,把记录写入到/var/log/wtmp和/var/run/utmp,login等程序会更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。(utmp、wtmp日志文件是多数Linux日志子系统的关键,它保存了用户登录进入和退出的记录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出记录在文件wtmp中; 数据交换、关机以及重启的机器信息也都记录在wtmp文件中。所有的记录都包含时间戳。)
  • 进程统计:由系统内核执行,当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
  • 错误日志:由syslogd(8)守护程序执行,各种系统守护进程、用户程序和内核通过syslogd(3)守护程序向文件/var/log/messages报告值得注意的事件。另外有许多Unix程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。

日志目录:/var/log(默认目录)

  1. 查看进程日志

    cat /var/log/messages

    p4

  2. 查看服务日志

    cat /var/log/maillog

    p5

0x02 用户查看


Linux不同的用户,有不同的操作权限,但是所有用户都会在/etc/passwd /etc/shadow /etc/group/etc/group- 文件中记录;

  1. 查看详细

    • less/etc/passwd:查看是否有新增用户
    • grep :0/etc/passwd:查看是否有特权用户(root权限用户)
    • ls -l/etc/passwd:查看passwd最后修改时间
    • awk -F: '$3==0{print $1}' /etc/passwd:查看是否存在特权用户
    • awk -F:'length($2)==0 {print $1}' /etc/shadow:查看是否存在空口令用户

    注:linux设置空口令:passwd -d username

    p6

0x03 进程查看


  1. 普通进程查看

    进程中我们一般使用ps来查看进程;man ps

    • ps-aux:查看进程
    • lsof -ppid:查看进程所打开的端口及文件
  2. 检查隐藏进程

    • ps -ef | awk'{print }' | sort -n | uniq >1
    • ls /proc |sort -n |uniq >2
    • diff 1 2

    注:以上3个步骤为检查隐藏进程

0x04 其他检查


  1. 检查文件

    • find / -uid 0-print:查找特权用户文件
    • find / -size+10000k -print:查找大于10000k的文件
    • find / -name"..." -prin:查找用户名为...的文件
    • find / -namecore -exec ls -l {} \;:查找core文件,并列出详细信息
    • md5sum -bfilename:查看文件的md5值
    • rpm -qf/bin/ls:检查文件的完整性(还有其它/bin目录下的文件)
  2. 检查网络

    • ip link | grepPROMISC:正常网卡不应该存在promisc,如果存在可能有sniffer
    • lsof -i
    • netstat-nap:查看不正常端口
    • arp-a:查看arp记录是否正常
  3. 计划任务

    • crontab -uroot -l:查看root用户的计划任务
    • cat/etc/crontab
    • ls -l/etc/cron.*:查看cron文件是变化的详细
    • ls/var/spool/cron/
  4. 检查后门

    对于linux的后门检查,网络上有一些公开的工具,但是在不使用这些工具的前提时,我们可以通过一些命令来获取一些信息。

    首先就是检测计划任务,可以参考上面;
    第二:查看ssh永久链接文件:vim $HOME/.ssh/authorized_keys
    第三:lsmod:检查内核模块
    第四:chkconfig --list/systemctl list-units--type=service:检查自启
    第五:服务后门/异常端口(是否存在shell反弹或监听)
    其它:
    ls /etc/rc.d
    ls /etc/rc3.d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值