从零开始学 Linux 系统安全:基础防护与实战应用
一、Linux 系统安全核心原则:为何安全防护至关重要?
Linux 系统并非天生 “免疫” 从零开始学 Linux 系统安全:基础防护与实战应用攻击,其安全风险主要来自三个方面:
- 系统自身漏洞:内核、软件包等可能存在未修复的漏洞,成为攻击者的突破口;
- 配置不当风险:弱密码、过度开放的权限、不必要的服务启用等,会直接降低系统安全性;
- 人为操作失误:误删重要文件、误执行危险命令等操作,可能导致数据泄露或系统崩溃。
安全防护的核心目标是:保障系统保密性(数据不泄露)、完整性(数据不被篡改)、可用性(服务不中断)。对于初学者来说,从基础配置和日常操作入手,是构建安全体系的第一步。
二、用户与权限管理:Linux 安全的 “第一道防线”
Linux 是多用户操作系统,权限管理是安全防护的核心。不合理的用户权限配置,可能导致普通用户获取系统控制权,因此必须严格规范用户与权限管理。
1. 用户账号管理:最小权限原则
- 禁用 root 直接登录:root 是 Linux 系统的超级用户,拥有所有权限。直接使用 root 登录存在极高风险,建议创建普通用户并通过
sudo
命令临时获取权限。
操作示例:bash
# 创建普通用户 useradd -m username # 设置密码 passwd username # 授予sudo权限(需编辑/etc/sudoers文件) visudo # 在文件中添加:username ALL=(ALL:ALL) ALL
- 定期清理无效账号:删除长期不使用的用户账号,避免被恶意利用。
操作示例:userdel -r username
(-r 参数同时删除用户家目录)。 - 使用强密码策略:密码应包含大小写字母、数字和特殊符号,长度不低于 8 位。可通过
passwd
命令强制用户定期修改密码,或通过pam_cracklib
模块限制弱密码。
2. 文件与目录权限:控制访问边界
Linux 通过 “读(r)、写(w)、执行(x)” 三种权限,对文件和目录的访问进行控制,权限分为所有者(User)、所属组(Group)、其他用户(Other)三个维度。
- 权限表示方法:
权限既可以用数字表示(r=4,w=2,x=1),也可以用字母表示。例如 “rwxr-xr--” 表示:所有者可读 / 写 / 执行,所属组可读 / 执行,其他用户仅可读,对应的数字权限为 754。 - 关键目录权限配置:
/etc/
:系统配置文件目录,建议权限设置为 755(所有者可读写执行,其他用户只读执行),避免普通用户篡改配置;/home/
:用户家目录,权限建议为 700(仅所有者可访问),保护用户隐私数据;/bin/、/sbin/
:系统命令目录,权限建议为 755,禁止普通用户修改系统命令。
- 谨慎使用 chmod 777:777 权限表示所有用户可读写执行,会导致文件完全暴露,仅在临时测试场景使用,且需及时恢复权限。
3. 特殊权限与 ACL:精细化权限控制
- SUID/SGID 权限:允许用户临时获得文件所有者或所属组的权限(如
passwd
命令需要修改 /etc/shadow 文件,通过 SUID 权限实现普通用户执行)。但滥用会带来风险,需定期检查:
操作示例:find / -perm -4000 -o -perm -2000
(查找带有 SUID/SGID 权限的文件)。 - ACL(访问控制列表):当基础权限无法满足需求时,可通过 ACL 为用户或组设置更精细的权限。
操作示例:setfacl -m u:username:rwx /path/to/file
(为指定用户授予读写执行权限)。
三、系统服务与端口管理:关闭 “不必要的大门”
Linux 系统默认启用了部分服务(如 ssh、cups 等),每个服务对应一个网络端口,开放不必要的端口会增加被攻击的风险。因此,精简服务、控制端口是安全防护的重要环节。
1. 服务管理:只保留必要服务
- 查看运行中的服务:
不同 Linux 发行版命令不同,例如 CentOS 使用systemctl list-unit-files --type=service --state=enabled
,Ubuntu 使用service --status-all
。 - 禁用无用服务:
关闭不需要的服务(如邮件服务 postfix、打印服务 cups 等),操作示例:systemctl disable --now servicename
(disable 永久禁用,--now 立即停止)。 - 重点防护关键服务:
SSH 服务是远程管理的常用工具,需特别配置:- 修改默认端口(22)为自定义端口(如 2222),减少扫描攻击;
- 禁用密码登录,改用密钥登录(编辑
/etc/ssh/sshd_config
,设置PasswordAuthentication no
); - 限制允许登录的用户(添加
AllowUsers username
)。
2. 端口管理:控制网络访问
- 查看开放端口:
使用netstat -tuln
或ss -tuln
查看当前监听的端口,确认每个端口对应的服务是否必要。 - 使用防火墙限制端口访问:
Linux 防火墙工具主要有firewalld
(CentOS)和ufw
(Ubuntu),建议只开放必要端口(如 SSH 端口、Web 服务端口 80/443)。
操作示例(firewalld):bash
# 开放SSH端口2222 firewall-cmd --add-port=2222/tcp --permanent # 开放Web端口80和443 firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent # 重新加载配置 firewall-cmd --reload
四、日志管理与安全审计:及时发现异常行为
日志是系统运行的 “黑匣子”,通过分析日志可以追踪用户操作、检测异常登录、定位攻击痕迹。Linux 系统的日志文件主要存放在/var/log/
目录下。
1. 核心日志文件及作用
/var/log/secure
:记录用户登录、sudo 操作、SSH 连接等安全相关事件,是检测暴力破解、异常登录的关键日志;/var/log/messages
:系统综合日志,包含内核消息、服务启动 / 停止等信息;/var/log/auth.log
(Ubuntu):类似 secure 日志,记录认证相关事件。
2. 日志分析技巧
- 实时监控日志:使用
tail -f /var/log/secure
实时查看登录事件,若发现大量失败登录(如来自同一 IP 的多次尝试),可能是暴力破解攻击; - 关键词检索:通过
grep
命令筛选关键信息,例如查找失败的 SSH 登录:grep "Failed password" /var/log/secure
; - 设置日志轮转:日志文件会不断增大,通过
logrotate
工具自动切割、压缩旧日志,避免磁盘空间占满。
五、数据备份与恢复:最后一道 “安全网”
无论防护多么严密,都无法完全避免数据丢失风险(如硬件故障、勒索病毒等)。定期备份数据是保障系统可用性的最后一道防线。
1. 备份策略:3-2-1 原则
- 3 份备份:同一份数据至少保存 3 个副本;
- 2 种介质:备份到不同存储介质(如本地硬盘 + U 盘 + 云存储);
- 1 个离线备份:至少 1 份备份与网络隔离,防止勒索病毒加密。
2. 常用备份工具与操作
- tar 命令:适用于文件级备份,操作示例:
tar -zcvf /backup/etc_backup_$(date +%F).tar.gz /etc
(备份 /etc 目录并压缩); - rsync 工具:支持增量备份,适合远程备份,操作示例:
rsync -avz /home/ user@remote_ip:/backup/home/
(将本地 /home 同步到