深度揭秘:Linux系统安全攻防实战——从入侵排查到加固及备份的全方位指南1 账号安全1.1 查看特权用户1.2 查询可登录用户1.3 查看sudo权限用户1.4 查看当前登录用户1.5 禁用或删除多余账号1.5.1 禁用账号1.5.2 删除账号及家目录2 历史记录2.1 查看当前用户历史命令2.2 查看指定用户历史命令2.3 修改历史记录保存数量3 端口与进程3.1 查看端口连接情况3.1.1 确认没有未授权的网络连接3.1.2 分析可疑端口、IP和PID3.2 查看进程信息3.3 查找进程对应的执行文件4 开机启动项与定时任务4.1 查看开机启动项4.2 查看定时任务4.2.1 查看crontab4.2.2 编辑crontab4.2.3 删除crontab4.2.4 查看crontab相关详细内容5 系统日志5.1 查看系统日志5.1.1 SSH登录日志5.1.1.1 CentOS/RHEL系统5.1.1.2 Debian/Ubuntu系统5.1.2 系统核心和服务日志5.1.3 系统活动记录日志5.2 分析日志内容6 文件分析6.1 检查敏感目录6.2 检查文件属性6.3 查找隐藏文件6.4 检查系统完整性6.4.1 CentOS/RHEL系统6.4.2 Debian/Ubuntu系统7 rootkit检测7.1 chkrootkit7.1.1 安装编译工具包7.1.2 安装Chkrootkit7.1.3 使用Chkrootkit进行检查7.1.3.1 全局检查7.1.3.2 筛选检查7.2 rkhunter7.2.1 CentOS/RHEL系统7.2.2 Debian/Ubuntu系统7.3 Lynis7.3.1 CentOS/RHEL系统7.3.2 Debian/Ubuntu系统8 加固系统安全性8.1 更新和补丁8.1.1 CentOS/RHEL系统8.1.2 Debian/Ubuntu系统8.2. 防火墙配置8.2.1 CentOS/RHEL系统8.2.2 Debian/Ubuntu系统8.3 SELinux8.3.1 检查SELinux其状态8.3.2 临时启用SELinux8.3.3 永久启用SELinux8.4 审计和监控8.4.1 安装auditd和fail2ban8.4.1.1 CentOS/RHEL系统 8.4.1.2 Debian/Ubuntu系统 8.4.2 启动fail2ban8.5 最小化服务8.6 访问控制8.7 定期备份8.7.1 系统配置文件备份8.7.2 用户数据备份8.7.3 数据库备份8.7.4 引导加载器和分区表8.7.5 特殊文件和设备8.7.6 如何备份
深度揭秘:Linux系统安全攻防实战——从入侵排查到加固及备份的全方位指南
在Linux系统中,安全入侵排查是确保系统稳定性和数据安全的重要步骤。本文将详细介绍Linux系统安全入侵排查的方法,包括检查命令及说明,帮助系统管理员及时发现并应对潜在的安全威胁。
1 账号安全
1.1 查看特权用户
特权用户(UID为0的用户)是系统中最危险的角色,需要重点排查。
# awk -F: '{if($3==0)print $1}' /etc/passwd
1.2 查询可登录用户
查看能够登录的用户,特别是远程登录的用户。
# cat /etc/passwd | grep /bin/bash
# awk '/\$1|\$6/{print $1}' /etc/shadow
1.3 查看sudo权限用户
检查除root外,哪些用户拥有sudo权限。
# cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
1.4 查看当前登录用户
# who
# w
1.5 禁用或删除多余账号
1.5.1 禁用账号
# usermod -L [username]
1.5.2 删除账号及家目录
# userdel -r [username]
2 历史记录
2.1 查看当前用户历史命令
# history
2.2 查看指定用户历史命令
# cat /home/username/.bash_history
2.3 修改历史记录保存数量
# sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
3 端口与进程
3.1 查看端口连接情况
使用netstat
或ss
命令查看端口连接情况,分析可疑端口、IP和PID。
3.1.1 确认没有未授权的网络连接
# netstat -antup | grep LISTEN
显示所有监听状态的网络连接,检查是否有未知的监听端口。
或者
# ss -antup
类似于netstat,但通常输出更简洁,同样用于检查监听的网络连接。
3.1.2 分析可疑端口、IP和PID
# lsof -i :[Port]
# lsof -p [PID]
3.2 查看进程信息
使用ps
命令查看进程信息,结合grep
命令查找可疑进程。
# ps aux | grep [进程名或PID]
3.3 查找进程对应的执行文件
# ls -l /proc/[PID]/exe
4 开机启动项与定时任务
4.1 查看开机启动项
检查/etc/rc.local
、/etc/rc.d/rc[0~6].d
等目录下的脚本文件。
# systemctl list-unit-files --type=service | grep enabled
# chkconfig --list
4.2 查看定时任务
检查crontab
和anacron
的定时任务。
4.2.1 查看crontab
# crontab [-u username] -l
4.2.2 编辑crontab
# crontab [-u username] -e
4.2.3 删除crontab
# crontab [-u username] -r
4.2.4 查看crontab相关详细内容
# cat /etc/crontab
# cat /etc/cron.d/*
# cat /etc/anacrontab
# cat /var/spool/anacron/*
5 系统日志
5.1 查看系统日志
系统日志是追踪入侵者活动的重要线索。
5.1.1 SSH登录日志
5.1.1.1 CentOS/RHEL系统
# cat /var/log/secure
5.1.1.2 Debian/Ubuntu系统
# cat /var/log/auth.log
5.1.2 系统核心和服务日志
# cat /var/log/syslog
5.1.3 系统活动记录日志
包括应用程序和其他系统程序的输出。
# cat /var/log/messages
5.2 分析日志内容
使用grep
等工具分析日志内容,查找可疑的登录尝试、命令执行等。
# grep "Failed password" /var/log/secure
# grep "Accepted password" /var/log/secure
6 文件分析
6.1 检查敏感目录
使用find
命令检查敏感目录中的文件,如/opt
、/var/log
等。
比如查找一天内被访问的文件:
# find /opt -type f -atime -1
6.2 检查文件属性
使用stat
命令查看文件的创建、修改和访问时间。
# stat /path/file
6.3 查找隐藏文件
注意检查以.
开头的隐藏文件。
# find / -type f -name ".*"
6.4 检查系统完整性
确认系统文件没有被篡改。
6.4.1 CentOS/RHEL系统
对于RPM包管理的系统,检查所有包的完整性和校验和。
# rpm -Va
6.4.2 Debian/Ubuntu系统
对于Debian/Ubuntu系统,检查所有包的完整性。
# dpkg --verify
7 rootkit检测
Rootkit是黑客用来隐藏自身踪迹和恶意活动的工具,它们能够深入操作系统的底层,甚至修改内核来逃避检测。以下是几种常用的rootkit检测工具:
7.1 chkrootkit
chkrootkit
是一款流行的rootkit检测工具,它能够检查系统中是否存在多种rootkit的迹象。
7.1.1 安装编译工具包
# yum install gcc gcc-c++ make -y
# yum install glibc-static -y
7.1.2 安装Chkrootkit
-
下载软件包
# wget https://src.fedoraproject.org/repo/pkgs/chkrootkit/chkrootkit-0.57.tar.gz/sha512/ff35f01042bc68bdd10c4e26dbde7af7127768442c7a10f114260188dcc7e357e2c48d157c0b83b99e2fd465db3ed3933c84ae12fa411c5c28f64b955e742ff7/chkrootkit-0.57.tar.gz
-
解压软件包
# tar zxvf chkrootkit-0.57.tar.gz
-
进入目录
# cd chkrootkit-0.57
-
安装程序
# make sense
-
拷贝到安装目录
# cp ./chkrootkit /usr/local/bin/
7.1.3 使用Chkrootkit进行检查
7.1.3.1 全局检查
# chkrootkit
检查结果如果出现了INFECTED,则说明检测出系统后门。
7.1.3.2 筛选检查
# chkrootkit | grep INFECTED
检查结果若正常,则不会返回结果,有返回结果则说明检测出系统后门。
7.2 rkhunter
rkhunter
是另一个强大的rootkit检测工具,它不仅能检测rootkit,还能检测其他类型的恶意软件。
7.2.1 CentOS/RHEL系统
# yum install epel-release -y
# yum install rkhunter -y
# rkhunter --checkall
7.2.2 Debian/Ubuntu系统
# apt-get install epel-release -y
# apt-get install rkhunter -y
# rkhunter --checkall
7.3 Lynis
虽然Lynis主要是一个系统安全审计工具,但它也包含了一些rootkit检测功能。
7.3.1 CentOS/RHEL系统
# yum install lynis -y
# lynis audit system
7.3.2 Debian/Ubuntu系统
# apt-get install lynis -y
# lynis audit system
8 加固系统安全性
8.1 更新和补丁
保持系统和所有软件的最新状态,及时应用安全补丁。
8.1.1 CentOS/RHEL系统
# yum update -y
8.1.2 Debian/Ubuntu系统
# apt-get update && apt-get upgrade -y
8.2. 防火墙配置
配置防火墙以限制不必要的网络访问。
8.2.1 CentOS/RHEL系统
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload
8.2.2 Debian/Ubuntu系统
# ufw enable
8.3 SELinux
启用并配置SELinux(Security-Enhanced Linux),以增加系统的访问控制安全性。
对于使用SELinux的系统,检查其状态。
8.3.1 检查SELinux其状态
# sestatus
查看SELinux的状态和配置,确认没有被禁用或异常配置。
8.3.2 临时启用SELinux
# setenforce 1
8.3.3 永久启用SELinux
# sed -i s/SELINUX=disabled/SELINUX=enforcing/g /etc/selinux/config
注意:重启系统后生效。
8.4 审计和监控
启用系统审计(如auditd)和实时监控(如fail2ban),以检测并记录可疑活动。
8.4.1 安装auditd和fail2ban
8.4.1.1 CentOS/RHEL系统
# yum install audit -y
# yum install fail2ban -y
8.4.1.2 Debian/Ubuntu系统
# apt-get install audit -y
# apt-get install fail2ban -y
8.4.2 启动fail2ban
# systemctl start fail2ban
# systemctl enable fail2ban
8.5 最小化服务
关闭不必要的服务和守护进程,减少潜在的攻击面。
# systemctl disable [服务名]
# systemctl stop [服务名]
8.6 访问控制
确保对系统文件和目录的访问控制是恰当的,使用最小权限原则。
赋予用户相关账号文件最小权限
# chmod 644 /etc/passwd
# chmod 400 /etc/shadow
# chmod 644 /etc/group
# chmod 644 /etc/services
# chmod 600 /etc/xinetd.conf
# chmod 600 /etc/security
8.7 定期备份
定期备份系统数据和配置文件,以便在遭受攻击时能够快速恢复。
8.7.1 系统配置文件备份
-
/etc/
目录:包含了大多数的系统配置文件,如网络配置(/etc/network/interfaces
或/etc/sysconfig/network-scripts/
)、用户信息(/etc/passwd
,/etc/shadow
)、系统服务配置(如 Apache 的/etc/httpd/conf/
或 Nginx 的/etc/nginx/
)等。 -
/var/lib/dpkg/status
(Debian/Ubuntu系统):记录了已安装的软件包信息。 -
/var/log/
目录下的日志文件(可选备份,因为它们可能会迅速增长):虽然日志文件不是配置信息,但它们是诊断问题的重要资源。
8.7.2 用户数据备份
-
/home/
目录:包含所有用户的主目录和他们的个人文件。 -
/var/www/
或其他Web服务器目录(如果服务器用于Web服务):包含网站数据。 -
/var/mail/
(如果系统作为邮件服务器):包含电子邮件数据。
8.7.3 数据库备份
-
数据库文件和数据目录,这取决于你使用的数据库系统(如 MySQL 的
/var/lib/mysql/
,PostgreSQL 的/var/lib/postgresql/
等)。
8.7.4 引导加载器和分区表
-
虽然直接备份这些可能比较复杂,但确保你的引导加载器(如 GRUB)的配置文件(如
/boot/grub/grub.cfg
)和分区表(通常通过备份整个/boot
分区或使用如dd
的工具备份引导扇区)是恢复系统的关键部分。
8.7.5 特殊文件和设备
-
/proc
和/sys
目录是虚拟文件系统,通常不需要备份,因为它们包含了系统运行时的动态信息。 -
/dev
目录下的设备文件也不需要备份,因为它们在系统启动时由udev重新创建。
8.7.6 如何备份
-
使用如
rsync
、cp
、tar
等命令行工具进行文件级备份。 -
使用如
dump
和restore
(针对ext2/ext3/ext4文件系统)或xfsdump
和xfsrestore
(针对XFS文件系统)等工具进行更底层的备份。 -
使用如 Bacula、Amanda、Duplicati 或更简单的 rsync 脚本加 cron 作业来实现自动化定期备份。
-
考虑将备份数据存储在外部硬盘、网络附加存储(NAS)、云存储服务等不同位置,以防止本地灾难导致的数据丢失。
联络方式:
客服热线:400-1050-918
技术顾问:133-188-44580 166-6622-5144
邮箱:91huifu@91huifu.com