(CentOS/Debian/Ubuntu)入侵检测详细必须步骤

(CentOS/Debian/Ubuntu)入侵检测详细必须步骤

发布时间:2024-10-05 00:10:10

1. 检查登录历史

1.1 查看最近的登录记录

命令:

bash
last

预期输出:

 

username pts/0 192.168.1.100 mon oct 4 10:00 still logged in
username pts/1 192.168.1.101 mon oct 4 09:30 - 09:45 (00:15)

解释:

  • 检查是否有来自陌生ip地址的登录
  • 注意任何异常时间的登录活动
  • 关注长时间保持连接的会话

1.2 查看失败的登录尝试

centos:

bash
sudo grep "failed password" /var/log/secure

debian/ubuntu:

bash
sudo grep "failed password" /var/log/auth.log

预期输出:

 
oct 4 11:30:25 hostname sshd[1234]: failed password for invalid user test from 192.168.1.200 port 12345 ssh2

解释:

  • 大量失败尝试可能表示暴力破解攻击
  • 注意来自同一ip的重复失败尝试
  • 检查是否有针对特定用户名的攻击模式

1.3 查看当前登录的用户

命令:

bash

who
w

预期输出(who):

 
username pts/0 2023-10-04 10:00 (192.168.1.100)

预期输出(w):

 

10:30:00 up 7 days, 2:14, 1 user, load average: 0.08, 0.03, 0.01
user tty from login@ idle jcpu pcpu what
username pts/0 192.168.1.100 10:00 0.00s 0.04s 0.00s w

解释:

  • 确认所有当前登录的用户都是经过授权的
  • 检查用户的登录时间和来源ip是否合理
  • 注意任何异常的活动或长时间空闲的会话

2. 检查系统进程

2.1 查看所有运行中的进程

命令:

bash
ps aux

预期输出:

 

user pid %cpu %mem vsz rss tty stat start time command
root 1 0.0 0.1 225384 9012 ? ss sep30 0:16 /sbin/init
root 123 0.0 0.1 45680 5124 ? ss sep30 0:00 /usr/sbin/sshd

解释:

  • 寻找任何不熟悉或可疑的进程名称
  • 注意任何异常高的cpu或内存使用
  • 检查是否有以root权限运行的可疑进程

2.2 检查网络连接

命令:

bash
sudo netstat -tulpn

预期输出:

 

proto recv-q send-q local address foreign address state pid/program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* listen 123/sshd
tcp6 0 0 :::80 :::* listen 456/apache2

解释:

  • 确认所有开放的端口都是预期的服务
  • 注意任何连接到可疑ip地址的进程
  • 检查是否有未知程序在监听端口

3. 检查文件系统

3.1 查找最近修改的文件

命令:

bash
sudo find / -type f -mtime -7 -ls

预期输出:

 
1234567 4 -rw-r--r-- 1 root root 1234 oct 4 10:00 /etc/someconfig

解释:

  • 关注系统关键目录(如/etc, /bin, /sbin)中的任何异常更改
  • 注意任何新创建的可执行文件
  • 检查是否有在异常时间修改的重要系统文件

3.2 检查重要系统文件的完整性

命令:

bash
sudo md5sum /etc/passwd /etc/shadow /etc/group

预期输出:

 

1a2b3c4d5e6f7g8h9i0j /etc/passwd
2b3c4d5e6f7g8h9i0j1a /etc/shadow
3c4d5e6f7g8h9i0j1a2b /etc/group

解释:

  • 将结果与之前记录的校验和进行比较
  • 任何变化都可能表示文件被篡改
  • 定期执行此检查并保存结果很重要

4. 检查用户和权限

4.1 查看所有用户账户

命令:

bash
cat /etc/passwd

预期输出:

 

root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:regular user:/home/user:/bin/bash

解释:

  • 检查是否有任何不熟悉的用户账户
  • 注意任何具有登录shell的系统用户
  • 验证所有用户的uid和gid是否合理

4.2 检查具有root权限的用户

命令:

bash
grep 'x:0:' /etc/passwd

预期输出:

 
root:x:0:0:root:/root:/bin/bash

解释:

  • 通常应该只有root用户有uid 0
  • 任何额外的条目都可能表示有其他用户获得了root权限
  • 验证所有具有uid 0的用户都是授权的管理员账户

5. 检查网络活动

5.1 查看开放的端口

命令:

bash
sudo ss -tulpn

预期输出:

 

netid state recv-q send-q local address:port peer address:port process
tcp listen 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp listen 0 128 [::]:80 [::]:* users:(("apache2",pid=5678,fd=4))

解释:

  • 确认所有开放的端口都对应预期的服务
  • 注意任何监听在非标准端口的服务
  • 检查是否有未知程序在监听端口

5.2 检查防火墙规则

centos 7+:

bash
sudo firewall-cmd --list-all

centos 6 及更早版本/debian/ubuntu:

bash
sudo iptables -l

预期输出(iptables):

 

chain input (policy accept)
target prot opt source destination
accept tcp -- anywhere anywhere tcp dpt:ssh
accept tcp -- anywhere anywhere tcp dpt:http

解释:

  • 确保只有必要的端口被允许
  • 检查是否有任何可疑的允许规则
  • 验证默认策略是否安全(通常应该是drop或reject)

6. 检查定时任务

6.1 查看系统cron作业

命令:

bash

sudo cat /etc/crontab
sudo ls -l /etc/cron.*

预期输出:

 
0 * * * * root /usr/local/bin/backup.sh

解释:

  • 确认所有定时任务都是预期的和授权的
  • 检查任何新添加或修改的任务
  • 验证定时任务执行的脚本或命令的内容

6.2 查看用户cron作业

命令:

bash
sudo ls -l /var/spool/cron/crontabs/

预期输出:

 
-rw------- 1 user user 1234 oct 4 10:00 user

解释:

  • 检查是否有任何不应该有定时任务的用户
  • 验证每个用户的定时任务是否合理
  • 注意任何最近修改过的crontab文件

7. 检查日志文件

7.1 检查系统日志

centos:

bash
sudo tail -n 1000 /var/log/messages

debian/ubuntu:

bash
sudo tail -n 1000 /var/log/syslog

预期输出:

 

oct 4 12:00:01 hostname cron[1234]: (root) cmd (/usr/local/bin/backup.sh)
oct 4 12:00:05 hostname kernel: [ufw block] in=eth0 out= mac=00:11:22:33:44:55 src=192.168.1.100 dst=192.168.1.1 len=40 tos=0x00 prec=0x00 ttl=64 id=54321 df proto=tcp spt=12345 dpt=80 window=1234 res=0x00 syn urgp=0

解释:

  • 寻找任何异常的系统事件或错误消息
  • 注意任何重复的失败操作或警告
  • 检查是否有任何未预期的系统配置更改

7.2 检查认证日志

centos:

bash
sudo tail -n 1000 /var/log/secure

debian/ubuntu:

bash
sudo tail -n 1000 /var/log/auth.log

预期输出:

 

oct 4 12:30:00 hostname sshd[1234]: accepted publickey for user from 192.168.1.100 port 54321 ssh2
oct 4 12:35:00 hostname sudo: user : tty=pts/0 ; pwd=/home/user ; user=root ; command=/bin/ls

解释:

  • 注意任何失败的登录尝试,特别是反复的尝试
  • 检查是否有可疑的权限提升(如频繁使用sudo)
  • 验证所有成功的登录是否都是预期的和授权的

进行这些详细的检查后,如果发现任何可疑活动,请立即采取行动,包括隔离系统、深入调查和寻求专业帮助。

--------------------------------------------------------------------

以上是更加详细的linux服务器(包括centos、debian和ubuntu)入侵检测步骤指南。这个新的指南提供了更具体的操作指令、预期输出示例和如何解释结果。

主要步骤包括:

  1. 检查登录历史
    • 查看最近的登录记录
    • 查看失败的登录尝试
    • 查看当前登录的用户
  2. 检查系统进程
    • 查看所有运行中的进程
    • 检查网络连接
  3. 检查文件系统
    • 查找最近修改的文件
    • 检查重要系统文件的完整性
  4. 检查用户和权限
    • 查看所有用户账户
    • 检查具有root权限的用户
  5. 检查网络活动
    • 查看开放的端口
    • 检查防火墙规则
  6. 检查定时任务
    • 查看系统cron作业
    • 查看用户cron作业
  7. 检查日志文件
    • 检查系统日志
    • 检查认证日志

每个步骤都包含了具体的命令、预期输出的示例,以及如何解释这些输出。这样的设计使得管理员可以更容易地理解每个检查的目的,并识别潜在的安全问题。

这个指南现在更加实用和易于遵循,为系统管理员提供了一个系统的方法来检查他们的linux服务器是否被入侵。它涵盖了从基本的系统检查到更深入的安全分析。

感谢提供:05互联