一、Linux系统安全核心概述
Linux系统以开源、稳定、可定制性强著称,但开源特性也使其面临更多安全风险(如权限滥用、恶意攻击、漏洞利用等)。系统安全的核心目标是:保障系统机密性、完整性、可用性,防止未授权访问、数据泄露、系统被篡改或瘫痪。
安全防护原则:最小权限原则(仅授予必要权限)、纵深防御原则(多层面防护)、定期审计原则(及时发现异常)。
二、用户与权限安全
2.1 用户管理安全
-
禁用root远程登录:root为超级用户,权限极高,一旦泄露后果严重。修改SSH配置文件
/etc/ssh/sshd_config,设置PermitRootLogin no,重启SSH服务(systemctl restart sshd)。 -
创建普通用户并授权:通过
useradd 用户名创建普通用户,passwd 用户名设置密码;如需管理员权限,通过visudo添加用户到sudoers文件(避免直接修改/etc/sudoers),格式为用户名 ALL=(ALL) ALL。 -
清理无用用户/组:删除长期不使用的用户(
userdel -r 用户名)、组(groupdel 组名),避免冗余账号成为安全隐患。 -
密码安全策略:设置密码复杂度(长度≥8位,包含大小写、数字、特殊符号),修改
/etc/login.defs配置密码有效期(PASS_MAX_DAYS)、最小长度(PASS_MIN_LEN);定期强制用户修改密码(chage -d 0 用户名)。
2.2 文件与目录权限控制
Linux权限分为读(r=4)、写(w=2)、执行(x=1),对应所有者(u)、所属组(g)、其他用户(o),通过ls -l查看权限,chmod修改权限,chown修改所有者/所属组。
-
关键文件权限设置:
-
/etc/passwd(用户信息文件):权限设为
644(只有root可写,其他只读),防止被篡改。 -
/etc/shadow(密码加密文件):权限设为
000或400,仅root可访问,避免密码泄露。 -
系统命令(如/bin/ls、/bin/bash):权限设为
755(所有者可读写执行,其他只读执行),禁止普通用户修改。
-
-
目录权限注意:禁止给普通用户赋予/tmp、/var/tmp等临时目录写权限(避免恶意脚本执行);/home目录给每个用户设置
700权限(仅自身可访问)。 -
特殊权限控制:避免使用SUID、SGID权限(可能被滥用提权),通过
chmod -s 文件名取消特殊权限,定期用find / -perm +4000 -o -perm +2000排查特殊权限文件。
三、系统服务与端口安全
3.1 服务管理
-
关闭无用服务:通过
systemctl list-unit-files --type=service查看所有服务,禁用不需要的服务(如telnet、ftp、rpcbind等),命令为systemctl disable --now 服务名,避免服务暴露漏洞。 -
服务运行权限:尽量以普通用户身份运行服务(如Nginx、MySQL),避免用root运行,降低服务被攻破后的影响范围。
-
定期更新服务:及时更新服务版本(
yum update 服务名或apt update && apt upgrade 服务名),修复已知漏洞(如Heartbleed、Shellshock等漏洞)。
3.2 端口安全
-
查看开放端口:通过
netstat -tulnp或ss -tulnp查看当前开放的端口及对应服务,排查未授权开放的端口。 -
防火墙配置:使用firewalld(CentOS)或ufw(Ubuntu)限制端口访问,仅开放必要端口(如SSH的22端口、HTTP的80端口),禁止所有不必要的入站连接。
-
firewalld常用命令:
firewall-cmd --add-port=22/tcp --permanent(开放22端口)、firewall-cmd --reload(重载配置)、firewall-cmd --list-ports(查看开放端口)。 -
禁止端口扫描:配置防火墙拦截ICMP协议(ping请求),避免被端口扫描工具探测。
-
四、系统漏洞与补丁管理
Linux系统漏洞主要分为内核漏洞、应用程序漏洞,漏洞利用是黑客攻击的主要方式,因此补丁更新是安全防护的重要环节。
-
定期更新系统:CentOS使用
yum update,Ubuntu使用apt update && apt upgrade,更新系统内核及所有已安装软件,修复已知漏洞。 -
漏洞扫描:使用工具(如OpenVAS、Nessus)定期扫描系统漏洞,生成漏洞报告,针对高危漏洞优先修复。
-
内核安全:禁止内核模块加载(修改
/etc/modprobe.d/blacklist.conf,添加禁止加载的模块);如需升级内核,选择稳定版本,避免使用测试版内核。
五、日志审计与监控
日志是排查安全事件、发现异常行为的重要依据,Linux系统日志主要存储在/var/log/目录下,核心日志文件如下:
-
/var/log/secure:记录SSH登录、用户认证等安全相关日志,重点关注失败登录记录(如"Failed password"),排查暴力破解尝试。
-
/var/log/messages:系统核心日志,记录系统启动、服务运行、错误信息等,可排查系统异常。
-
/var/log/audit/audit.log:审计日志,记录文件访问、权限变更等操作,需开启auditd服务(
systemctl enable --now auditd)。
日志监控技巧:
-
使用
tail -f /var/log/secure实时监控SSH登录情况,发现异常立即阻断IP。 -
定期备份日志:避免日志被篡改或删除,可将日志同步到远程服务器(如使用rsync工具)。
-
使用日志分析工具:如ELK(Elasticsearch+Logstash+Kibana),实现日志集中管理、检索和可视化,快速发现异常行为。
六、恶意软件与入侵防御
6.1 恶意软件防护
-
安装杀毒软件:如ClamAV(开源杀毒软件),定期扫描系统(
clamscan -r /),查杀病毒、木马、恶意脚本。 -
禁止恶意脚本执行:限制
.sh、.py等脚本的执行权限,避免普通用户运行恶意脚本;排查/tmp、/var/tmp目录下的可疑文件。 -
谨慎安装软件:仅从官方源或可信渠道安装软件,避免安装来路不明的rpm、deb包,防止软件中植入恶意代码。
6.2 入侵防御
-
防止暴力破解:配置SSH登录限制,修改
/etc/ssh/sshd_config,设置MaxAuthTries 3(最多3次登录失败),LoginGraceTime 60(登录超时时间60秒);使用fail2ban工具,自动封禁多次登录失败的IP。 -
禁止异常登录:通过
last命令查看用户登录记录,lastlog查看用户最近登录时间,发现陌生IP登录立即排查。 -
文件完整性检查:使用
md5sum或sha256sum记录关键文件的哈希值,定期校验,若哈希值变化,说明文件被篡改,需立即排查。
七、应急响应流程
当系统发生安全事件(如被入侵、数据泄露、服务瘫痪)时,需遵循"止损→排查→修复→复盘"的流程,降低损失。
-
止损:立即断开受影响服务器的网络连接(避免攻击扩散),暂停相关服务,备份重要数据(防止数据被进一步破坏)。
-
排查:查看系统日志(secure、messages),定位攻击来源(IP、攻击方式);检查可疑进程(
ps aux)、可疑文件(find / -mtime -1查看最近1天修改的文件)、用户账号(是否有新增陌生用户)。 -
修复:删除可疑文件、进程,禁用陌生用户;修复漏洞(更新系统、服务补丁);重新配置权限、防火墙,恢复系统正常运行。
-
复盘:记录安全事件的原因、影响范围、处理过程,优化安全防护策略,避免同类事件再次发生。
八、常用安全工具汇总
常用安全工具包括多种类型,各自有明确用途和常用操作命令:firewalld/ufw是防火墙工具,主要用于限制端口访问,常用命令有firewall-cmd --list-ports(查看开放端口)、ufw status(查看ufw防火墙状态);fail2ban用于防止SSH暴力破解,可自动封禁多次登录失败的IP,常用命令为systemctl start fail2ban(启动服务)、fail2ban-client status(查看服务状态);ClamAV是开源杀毒软件,能够查杀病毒、木马、恶意脚本,常用命令有clamscan -r /(全盘扫描系统)、freshclam(更新病毒库);OpenVAS用于漏洞扫描,可检测系统漏洞,常用命令为openvas-start(启动漏洞扫描服务);auditd是系统审计工具,用于记录文件访问、权限变更等操作,常用命令有systemctl start auditd(启动审计服务)、ausearch -k keyword(根据关键词查询审计日志)。
九、安全防护总结
Linux系统安全是一个持续的过程,核心在于"预防为主、防治结合":
-
基础防护:做好用户权限、文件权限、端口防火墙配置,关闭无用服务。
-
定期维护:定期更新系统补丁、扫描漏洞、审计日志,备份重要数据。
-
应急准备:熟悉应急响应流程,掌握常用安全工具,发生安全事件时快速止损、修复。
-
持续优化:根据系统运行情况和安全威胁,不断调整安全策略,提升防护能力。