Linux服务器安全检查是保障系统稳定运行和数据安全的重要环节,需从系统基础配置、服务端口管理、日志审计、权限控制、漏洞修复等多个维度进行全面排查,以下从具体操作步骤和检查要点展开详细说明:
系统基础信息检查
首先确认系统版本、内核信息及运行时间,确保系统为官方支持的稳定版本,避免使用已停止维护的发行版(如CentOS 7),通过命令uname -a查看内核版本,uptime检查系统运行时长,异常长时间关机后重启可能暗示异常访问,同时检查/etc/issue和/etc/issue.net,确保未泄露系统敏感信息(如默认欢迎语中的版本号),必要时清空或修改为自定义提示。
账户与权限安全
- 用户账户审计:使用
cat /etc/passwd查看所有系统用户,重点关注UID为0的root账户及UID小于1000的系统账户,检查是否存在异常高权限用户(如非管理员的UID为0账户),通过last命令查看用户登录历史,识别异常登录时间或来源IP。 - 密码策略:检查
/etc/login.defs中密码复杂度要求(如最小长度、有效期)和/etc/security/pwquality.conf中的密码规则,确保符合企业安全标准,使用chage -l username查看用户密码过期时间,强制长期未修改密码的用户更新密码。 - sudo权限管理:检查
/etc/sudoers文件(通过visudo编辑),确保只有必要用户拥有sudo权限,避免使用NOPASSWD选项,防止权限滥用。
服务与端口管理
- 运行服务检查:使用
systemctl list-units --type=service --state=running查看当前运行的服务,禁用不必要的服务(如telnet、rsh等高风险服务),仅保留业务必需的服务(如sshd、nginx等),对于第三方服务,需确认其来源可信并及时更新。 - 端口开放检查:通过
netstat -tuln或ss -tuln查看监听端口,确认端口开放符合最小化原则,默认情况下应只开放80(HTTP)、443(HTTPS)等业务端口,避免直接暴露22(SSH)端口,如需开放建议修改默认端口并启用密钥认证。 - 服务版本安全:使用
nmap -sV IP地址扫描开放服务的版本信息,检查是否存在已知漏洞(如Apache 2.4.49路径穿越漏洞),及时更新服务版本或打补丁。
日志与审计
- 系统日志检查:Linux系统日志通常位于
/var/log/目录,重点检查/var/log/secure(SSH登录记录)、/var/log/auth.log(认证日志)、/var/log/messages(系统消息),通过grep "Failed password" /var/log/secure分析失败登录尝试,识别暴力破解风险。 - 日志轮转配置:检查
/etc/logrotate.conf及/etc/logrotate.d/下的配置文件,确保日志设置了合理的轮转策略(如每天轮转、保留30天),避免日志占满磁盘导致审计失效。 - 集中日志管理:对于多台服务器,建议配置rsyslog或ELK stack将日志集中存储,便于统一分析和异常事件追溯。
文件系统与权限
- 重要文件权限:检查关键配置文件权限,如
/etc/passwd应为644,/etc/shadow应为400,/etc/sudoers应为440,避免普通用户可读写,使用chmod命令修正异常权限。 - 敏感文件扫描:使用
find / -type f -name "*.key" -o -name "*.pem" -o -name "id_rsa"查找密钥文件,确保权限设置为600,且未泄露到非授权目录。 - 异常文件检测:通过
find / -mtime -7 -type f查找最近7天内修改的文件,结合ls -la检查文件所有者和修改时间,识别可疑文件(如非预期的可执行文件)。
安全加固措施
- 防火墙配置:启用iptables或firewalld,仅允许必要端口入站,
# iptables示例 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -j DROP
- 入侵检测系统:部署AIDE(高级入侵检测环境)定期检查文件完整性,配置
/etc/aide.conf监控关键目录,通过aide --check运行扫描。 - 内核参数优化:调整
/etc/sysctl.conf增强安全性,如禁用IPv4转发(net.ipv4.ip_forward=0)、开启SYN Cookies(net.ipv4.tcp_syncookies=1)。
漏洞与补丁管理
定期使用yum update或apt upgrade更新系统补丁,使用lynis等安全审计工具扫描系统漏洞:
# 安装lynis apt install lynis # 运行审计 lynis audit system
根据扫描结果修复高危漏洞,如OpenSSL、Samba等组件的已知漏洞。
FAQs
Q1: 如何判断服务器是否被入侵?
A: 可通过以下方式排查:
- 检查进程列表:
ps aux查看是否存在异常进程(如非系统自带的高CPU占用进程); - 分析登录日志:
grep "Accepted password" /var/log/secure查看成功登录IP,结合who检查当前登录用户; - 检查系统文件:
rpm -Va(RPM系统)或debsums -c(Debian系统)校验文件完整性; - 查看网络连接:
netstat -an | grep ESTABLISHED检查异常外联连接,若发现异常,应立即隔离服务器并备份日志。
Q2: 如何防止SSH暴力破解?
A: 可采取以下措施:
- 修改默认端口:编辑
/etc/ssh/sshd_config,将Port 22改为其他端口(如2222),重启SSH服务; - 禁用密码登录,启用密钥认证:在
sshd_config中设置PasswordAuthentication no和PubkeyAuthentication yes; - 使用fail2ban:安装fail2ban,配置
/etc/fail2ban/jail.local,对SSH失败登录进行封禁(如3次失败后封禁IP 10分钟); - 限制登录IP:通过iptables或firewalld仅允许指定IP访问SSH端口。
