当前位置: 首页 > news >正文

从零开始学 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 -tulnss -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 同步到
http://www.dtcms.com/a/283621.html

相关文章:

  • 12.9 Mixtral-8x7B核心技术解密:如何用1/3参数实现4倍推理速度碾压LLaMA2?
  • 取消office word中的段落箭头标记
  • 多方案对比分析:后端数据加密策略及实践
  • 菜单权限管理
  • 【Linux】LVS(Linux virual server)
  • zabbix安装(docker-compose)
  • 若依框架开启注册功能全流程指南
  • I3C Host Adapter Pro+ (3)
  • 36.在列表或字典中查找匹配项
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • 数据分析全流程指南:从明确目标到数据呈现的实操方法论
  • Kiro vs Cursor: AI IDE 终极对比指南
  • github不能访问怎么办
  • mac OS上docker安装zookeeper
  • 3t车用手动卧式千斤顶设计含8张CAD图纸PDF图
  • 有n棍棍子,棍子i的长度为ai,想要从中选出3根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。
  • 优先队列的实现
  • 基础算法题
  • 批判式微调(CFT):原理、架构与高效推理训练新范式
  • 基于vue + Cesium 的蜂巢地图可视化实现
  • 学习OpenCV---显示图片
  • 全局异常处理
  • 图示+例子 深入理解 前向反向传播
  • NodeJS Express+Sequelize实现单个模块的增删改查功能
  • 数据集相关类代码回顾理解 | utils.make_grid\list comprehension\np.transpose
  • Wi-Fi 渗透测试 – 第一部分(网络基础)
  • 卷积神经网络CNN的Python实现
  • 学习软件测试的第十七天
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(6):语法+单词)
  • github上传大文件(多种解决方案)