您的需求已经提交,我们将在48小时内联系您
全国服务热线:400-1000-221
确定
免费享受企业级云安全服务
获取手机验证码
{{message}}
免费试用

linux服务器入侵检测

作者:
发布时间:2020-04-27

  最近遇到了很多用户提到自己的服务器被入侵,因为是linux系统,对于linux的操作了解不多,对于linux服务器安全防护也不是非常明了,这里就跟大家介绍一下linux服务器入侵检测的相关知识。

linux服务器入侵检测

  如果您对于linux服务器系统不是非常专业,可以直接使用安全狗的免费服务器安全软件,可以帮您检测入侵、拦截病毒、防御攻击,保证服务器的日常安全运作。

  服务器安全狗,永久免费使用:http://free.safedog.cn/server_safedog.html

linux服务器入侵检测

  多引擎,精准查杀网页木马、各类病毒

  独有的安全狗云查杀引擎、网马引擎与专业的二进制病毒引擎结合,精确查杀各类网页木马和主流病毒。多引擎智能查杀病毒,全面保障服务器安全。

  三层网络防护,实时保护网络安全

  强有力的网络防护,实时监测IP和端口访问的合法性,实时拦截ARP攻击、Web攻击(抗CC)、DDOS攻击、暴力破解。

  全面的文件/注册表保护,杜绝非法篡改

  全面开放保护规则,同时支持监控网站目录,有效保护重要文件、目录与注册表不被篡改与删除,实时防止网站被上传网页木马。系统默认规则与用户自定义规则全支持,灵活定制,全面保护。

  底层驱动防护,屏蔽入侵提权

  驱动级保护,拦截更快速,有效防止未授权的非法用户登录服务器,实时阻止非法创建和修改系统帐号。

  服务器安全加固,避免配置风险

  全面的服务器体检,暴露安全隐患,当前系统健康情况了然于心,同时提供贴心的优化建议措施,加固服务器更简单,系统运行更快速,更安全。

  

linux服务器入侵检测

linux服务器入侵检测

  1. 检查帐户

  less /etc/passwd

  grep :0: /etc/passwd (检查是否产生了新用户,和UID、GID是0的用户)

  ls -l /etc/passwd (查看文件修改日期)

  awk -F: ‘$3= =0 {print $1}’ /etc/passwd (查看是否存在特权用户)

  awk -F: ‘length($2)= =0 {print $1}’ /etc/shadow(查看是否存在空口令帐户)

  2. 检查日志

  journalctl 显示所有日志

  journalctl -n 10 查看最后10条日志

  journalctl -f 跟踪日志,让日志动态输出

  journalctl -p err..alert 只显示冲突、告警和错误

  journalctl -u nginx.service 显示某个单元日志 可同时显示多个添加多个 -u nginx.service -u php-fom.service)

  journalctl --since "20 min ago" 查找20分钟前的日志

  journalctl --since today 查找今天的日志

  journalctl --until 2019-4-24 查找2018-10-23日期的日志

  journalctl --until 2019-4-30 | nl > 1.txt 查找2019-4-30之前的所有日志并导出到指定文件

  journalctl -k 查看内核日志

  journalctl _UID=1000 查找指定用户(UID)日志

  systemctl list-unit-files 查看系统所有服务

  netstat -tlunp 查看所有开启的端口

  last(查看正常情况下登录到本机的所有用户的历史记录)

  注意”entered promiscuous mode”

  注意错误信息

  注意Remote Procedure Call (rpc) programs with a log entry that includes a large number (20) strange characters(-^PM-^PM-^PM-^PM-^PM-^PM-^PM-^PM)

  3. 检查进程

  ps -aux (注意UID是0的)

  lsof -p pid (察看该进程所打开端口和文件)

  cat /etc/inetd.conf | grep -v “^#” (检查守护进程)

  检查隐藏进程

  ps -ef|awk ‘{print }’|sort -n|uniq 1

  ls /porc |sort -n|uniq 2

  diff 1 2

  4. 检查文件

  find / -uid 0 –perm -4000 –print

  find / -size +10000k –print

  find / -name “…” –print

  find / -name “.. ” –print

  find / -name “. ” –print

  find / -name ” ” –print

  注意SUID文件,可疑大于10M和空格文件

  find / -name core -exec ls -l {} ; (检查系统中的core文件)

  检查系统文件完整性

  rpm –qf /bin/ls

  rpm -qf /bin/login

  md5sum –b 文件名

  md5sum –t 文件名

  5. 检查RPM

  rpm -Va

  输出格式:

  S – File size differs

  M – Mode differs (permissions)

  5 – MD5 sum differs

  D – Device number mismatch

  L – readLink path mismatch

  U – user ownership differs

  G – group ownership differs

  T – modification time differs

  注意相关的 /sbin, /bin, /usr/sbin, and /usr/bin

  6. 检查网络

  ip link | grep PROMISC (正常网卡不该在promisc模式,可能存在sniffer)

  lsof –i

  netstat –nap (察看不正常打开的TCP/UDP端口)

  arp –a

  7. 检查计划任务 注意root和UID是0的schedule

  crontab –u root –l

  cat /etc/crontab

  ls /etc/cron.*

  8. 检查后门

  cat /etc/crontab

  ls /var/spool/cron/

  cat /etc/rc.d/rc.local

  ls /etc/rc.d

  ls /etc/rc3.d

  find / -type f -perm 4000

  9.检查系统服务列表,防止一些程序加入到开机自启动中

  systemctl list-unit-files

  1

  10.账号文件

  /etc/passwd ##用户信息

  /etc/shadow ##用户密码信息

  /etc/profile ##系统配置文件,环境变量等信息

  /home/用户/.bash_profile ##用户独有环境配置文件

  /etc/rc.local ##用户自定义开机执行操作文件

  11.历史命令记录在/.bash_history文件中

  History ##查看历史命令

  History –w ##将历史命令写入到文件中

  History –c ##清除内存中历史命令

  HISTSIZE=100 ##定义记录历史命令的条数,默认1000

  HISTTIMEFORMAT=”%F-%T” ##记录历史命令时间

  HISTFTILE=”文件” ##第一历史命令存放文件,注意必须有写入权限

  

Linux服务器入侵检测常用命令

 

  审计命令

  last

  这个命令可用于查看我们系统的成功登录、关机、重启等情况,本质就是将/var/log/wtmp文件格式化输出,因此如果该文件被删除,则无法输出结果。

  相关参数:

  last -10(-n) 查看最近10条记录

  last -x reboot 查看重启的记录

  last -x shutdown 查看关机的记录

  last -d 查看登陆的记录

  last –help 命令帮助信息

  last -f wtmp 用last命令查看wtmp文件(直接打开无法查看)

  lastb

  这个命令用于查看登录失败的情况,本质就是将/var/log/btmp文件格式化输出。

  相关参数:

  lastb name(root) 查看root用户登陆失败记录

  lastb -10(-n) 查看最近10条登陆失败记录

  lastb –heplp 命令帮助信息

  lastlog

  这个命令用于查看用户上一次的登录情况,本质就是将/var/log/lastlog文件格式化输出。

  相关参数:

  lastlog 所有用户上一次登陆记录

  lastlog -u username(root) root用户上一次登陆记录

  lastlog –help 命令帮助信息

  who

  这个命令用户查看当前登录系统的情况,本质就是将/var/log/utmp文件格式化输出。主要用来查看当前用户名称,以及登陆的ip地址信息,w命令与who一样,会更详细一些。

  history

  查看历史命令记录,其实就是查看root/.bash_history文件内容,删除这个文件,记录就没了。

  相关参数:

  history 查看所有历史记录

  history -10 查看最近10条记录

  history | grep “wget” 查看wget相关信息的记录

  history –help 命令帮助信息

  history显示时间戳:

  export HISTTIMEFORMAT=”%F %T `whoami` ”

  history | more

  检查用户

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

  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

  检查进程

  一般被入侵的服务器都会运行一些恶意程序,或是挖矿程序,或者DDOS程序等等,如果程序运行着,那么通过查看进程可以发现一些信息。

  普通进程

  ps -aux  查看进程

  top 查看进程

  lsof -p pid  查看进程所打开的端口及文件

  lsof -c 进程名  查看关联文件

  ps -aux | grep python | cut -d ‘ ‘ -f 2 | xargs kill 杀死python相关的进程

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

  如果进程中没有发现异常,那么可以看看有没有开启某些隐藏进程。

  隐藏进程

  ps -ef | awk ‘{print}’ | sort -n | uniq >1

  ls /proc | sort -n |uniq >2

  diff 1 2

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

  检查文件

  被入侵的网站,通常肯定有文件被改动,那么可以通过比较文件创建时间、完整性、文件路径等方式查看文件是否被改动。

  find / -uid 0 -print  查找特权用户文件

  find / -size +10000k -print  查找大于10000k的文件

  find / -name “…” -prin  查找用户名为…的文件

  find / -name core -exec ls -l {} \;  查找core文件,并列出详细信息

  md5sum -b filename  查看文件的md5值

  rpm -qf /bin/ls  检查文件的完整性(还有其它/bin目录下的文件)

  whereis 文件名  查看文件路径

  ls -al 文件名  查看文件创建时间

  du -sh 文件名 查看文件大小

  检查网络

  检查网络的目的,是查看黑客是否通过篡改网卡类型,进行流量嗅探等操作。

  ip link | grep PROMISC  正常网卡不应该存在promisc,如果存在可能有sniffer

  lsof -i

  netstat -nap  查看不正常端口

  arp -a  查看arp记录是否正常

  ifconfig -a  查看网卡设置

  检查计划任务

  当我们尝试kill恶意程序时,往往会遇到被kill程序自动启动的问题,那么就要检查下计划任务(cron)了。

  crontab -u root -l  查看root用户的计划任务

  cat /etc/crontab

  ls -l /etc/cron.*  查看cron文件是否变化的详细信息

  ls /var/spool/cron/

  检查系统后门

  可以使用工具,如:Conmodo、rkhunter等,当然也可以手工输入命令检查。

  vim $HOME/.ssh/authorized_keys  查看ssh永久链接文件

  lsmod  检查内核模块

  chkconfig –list/systemctl list-units –type=service  检查自启

  查看著名的木门后门程序:

  ls /etc/rc.d #系统开机后,此目录下的文件会被启动

  ls /etc/rc3.d

  find / -name “.rhosts” –print

  find / -name “.forward” –print

  检查网站后门

  如果服务器上运行着web程序,那么需要检查是否通过web漏洞入侵服务器,具体的判断方法可以结合分析中间件日志以及系统日志,但过程需要较长时间。我们也可以通过检查服务器上是否留有入侵者放置的网站后门木马,以此判断黑客是否通过web应用入侵到服务器。

  Method One

  将网站目录下,文件名中含有jsp、php、asp、aspx的文件(注意是含有)都copy出来并压缩。

  通过windows下的D盾工具扫描打包出来的目录,扫描是否存Webshell(网站后门)

  Method Two

  直接使用MaskFindShell工具,进行webshell扫描(目前只能扫描jsp与php的网站,并且php的误报比较高)

  关于MaskFindShell详细用法,可以参考:MaskFindShell-Document

  寻找服务器物理路径

  无论哪种方法的webshell查找,首先要确定的是web服务器安装的路径,因为webshell都是放在web路径下的。

  询问管理员、网站开发商

  SearchWebPath,具体用法参考:SearchWebPath用法

  打包文件

  当我们做好一切入侵检测分析后,我们需要把一些日志文件copy到本地进行更进一步详细的分析时,怎么打包服务器相关信息,并且copy到本地呢?

  打包web文件

  打包文件名中包含jsp的文件,打包后的文件为my_txt_files.tar:

  tar cvf my_txt_files.tar `find . -type f -name “*.jsp*”`

  打包日志文件

  tar -cvf log.tar /var/log

  打包其他信息

  last > last.log

  netstat -an > netstat.log

  ……

  传输文件到本地

  将服务器上的文件传输到本地电脑上的几种方法。

  lrzsz

  如果ssh连接的客户端为xshell等,可以安装lrzsz命令(putty无法使用)

  apt-get install lrzsz

  使用:

  上传文件到linux,rz;下载linux文件,sz 文件名。

  开启ftp或者http

  开ftp这里我不介绍了,网上很多教程,这里主要说说开启http服务。

  一般linux服务器都默认安装了python,那么可以借助python快速开启一个http服务,详细参考:基于Python的WebServer

  U盘挂载

  如果我们不是通过ssh的方式连接,而是直接通过显示器连接上服务器进行操作,那么可以尝试U盘传输。

  fdisk -l 查看U盘路径

  monut /dev/sdb4 /mnt 挂载U盘

  cd /mnt 进入U盘

  umount /mnt 退出U盘

  关于linux服务器入侵检测的相关知识就为大家介绍到这里,建议您在操作linux系统之前先进行系统备份,以免因为误操作而导致系统出现问题,毕竟在服务器上进行任何操作都需要慎重对待。

标签: