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

linux 安全与防护,全方向讲解

一、 核心安全理念

  1. 最小权限原则: 用户、进程、服务只拥有其完成任务所必需的最小权限。绝不使用 root 账户进行日常操作。

  2. 攻击面最小化: 关闭所有不必要的端口、服务、功能。系统暴露的越少,被攻击的可能性就越低。

  3. 防御纵深: 不依赖单一的安全措施,而是建立多层防御。即使一层被突破,还有其他层提供保护。

  4. 永不信任,始终验证: 对所有内部和外部的请求都进行身份验证和授权。


二、 物理安全与访问控制(第一道防线)

如果攻击者能物理接触服务器,那么绕过所有软件安全措施只是时间问题。

  • 机房安全: 限制对服务器机房的物理访问(门禁、监控、日志)。

  • BIOS/UEFI 安全

    • 设置 BIOS/UEFI 密码,防止从外部设备(如U盘)启动。

    • 禁用不必要的硬件接口(如USB端口)。

  • 引导加载程序安全

    • GRUB 加密: 为 GRUB 引导加载程序设置密码,防止用户进入单用户模式(无需密码即可获得 root 权限)或修改启动参数。

    • 示例: 在 /etc/grub.d/00_header 或 /etc/grub.d/40_custom 中设置 set superusers="root" 和 password_pbkdf2 root ...


三、 系统级安全加固

1. 用户、权限与认证
  • sudo 机制

    • 日常使用普通用户账户,仅在需要时使用 sudo 执行特权命令。

    • 通过 visudo 命令编辑 /etc/sudoers 文件,精细控制 sudo 权限,而不是简单地将用户加入 wheel 组。遵循最小权限原则。

  • 强密码策略

    • 修改 /etc/login.defs 设置密码最长有效期、最短长度等。

    • 使用 /etc/security/pwquality.conf (或 pam_pwquality 模块) 强制密码复杂性(最小长度、包含数字、大小写等)。

  • 禁止 root 远程登录

    • 编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no。这是必须做的!

  • 限制历史命令记录: 设置 HISTFILESIZE 和 HISTSIZE 环境变量,避免密码等敏感信息被记录在 .bash_history 中。

2. 服务与端口管理(攻击面最小化)
  • 服务管理

    • 停止并禁用所有不需要的服务:systemctl stop <service-name> && systemctl disable <service-name>

    • 使用 ss -tulnp 或 netstat -tulnp 查看所有监听端口,弄清楚每一个端口的作用。

  • 防火墙(iptables/nftables/firewalld)

    • iptables/nftables: Linux 内核自带的 netfilter 防火墙,功能强大但配置复杂。

    • firewalld(推荐): 更现代、动态的管理工具,简化了 zone 和 service 的管理。

    • 策略: 默认拒绝所有入站流量 (drop),只放行明确允许的端口(如 22, 80, 443)。同样要限制不必要的出站流量。

    • 示例 (firewalld)

      bash

      sudo firewall-cmd --permanent --add-service=ssh  # 放行SSH
      sudo firewall-cmd --permanent --add-service=http # 放行HTTP
      sudo firewall-cmd --permanent --add-service=https # 放行HTTPS
      sudo firewall-cmd --permanent --remove-service=dhcpv6-client # 移除不需要的服务
      sudo firewall-cmd --reload
3. 安全增强式 Linux (SELinux/AppArmor)
  • SELinux (RedHat/CentOS/Fedora): 一种强制访问控制(MAC)系统,为进程和文件提供细粒度的安全策略。即使攻击者拿到了 root 权限,其行为也会受到 SELinux 策略的限制。

    • 模式: enforcing (强制), permissive (仅记录不拦截), disabled (禁用)。

    • 建议: 在生产服务器上设置为 enforcing 模式。遇到权限问题时,首先查看 /var/log/audit/audit.log 日志,使用 audit2why 和 audit2allow 进行分析和解决,而不是直接禁用。

  • AppArmor (Debian/Ubuntu/SUSE): 另一种 MAC 系统,通过路径限制来配置策略,相对 SELinux 更易用。

4. 系统更新与漏洞管理
  • 定期更新: 建立流程,定期使用 yum updateapt update && apt upgrade 安装安全补丁和软件更新。

  • 自动化更新: 对于不重要的测试环境,可配置 yum-cron 或 unattended-upgrades 进行自动安全更新。生产环境建议先测试再手动更新。

  • 漏洞扫描: 使用 lynis(一款优秀的开源安全审计工具)定期对系统进行安全扫描,并根据建议进行加固。


四、 网络安全防护

1. SSH 安全加固

SSH 是进入服务器的门户,必须重点防护。

  • 修改默认端口: 编辑 /etc/ssh/sshd_config,将 Port 22 改为一个高端口(如 2345),减少自动化扫描攻击。

  • 密钥认证: 完全禁用密码登录,强制使用 SSH 密钥对进行认证。

    • PubkeyAuthentication yes

    • PasswordAuthentication no

    • PermitEmptyPasswords no

  • 禁止其他用户: 使用 AllowUsers 或 AllowGroups 指令明确指定允许通过 SSH 登录的用户。

  • 使用 Fail2ban: 一款非常有效的防暴力破解工具。它监控系统日志(如 /var/log/secure),当发现多次失败登录尝试后,会自动调用防火墙封锁源 IP 一段时间。

    • 安装: yum install fail2ban 或 apt install fail2ban

    • 配置: 通常复制 /etc/fail2ban/jail.conf 为 jail.local 并进行修改。

2. 服务本身的安全
  • 以非特权用户运行服务: 如 Nginx、MySQL 等,应创建专用低权限用户来运行,并在配置文件中指定。

  • 加密通信: 对所有网络服务使用 TLS/SSL 加密(如 HTTPS),避免明文传输敏感数据。使用 Let's Encrypt 获取免费证书。

  • 安全响应头: 在 Web 服务器(Nginx/Apache)上配置安全头,如:

    • Strict-Transport-Security (HSTS): 强制浏览器使用 HTTPS 连接。

    • X-Content-Type-Options: 防止 MIME 类型混淆攻击。

    • X-Frame-Options: 防止点击劫持。


五、 主动防御与监控

1. 入侵检测系统 (IDS)
  • 文件完整性检查 (FIM)

    • AIDE 或 Tripwire: 这些工具会为系统文件创建一个数据库(哈希值、权限等),定期扫描并与数据库对比,一旦发现文件被篡改(如木马、后门)就发出警报。这是检测入侵的关键手段

  • 网络入侵检测系统 (NIDS)

    • Suricata 或 Zeek (Bro): 实时监控网络流量,基于规则库(如 Emerging Threats)检测恶意活动、扫描行为和漏洞利用尝试。

2. 日志管理与分析

“日志告诉你发生了什么”,但海量的日志需要集中分析。

  • 集中式日志: 使用 Rsyslog 或 Syslog-ng 将所有服务器的日志发送到一个中央日志服务器,避免攻击者在本机擦除日志。

  • 日志分析平台: 使用 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Graylog 对日志进行索引、搜索和可视化,以便快速发现安全事件(如多次登录失败、异常进程行为)。

3. 安全审计
  • auditd: Linux 内核的审计框架,用于记录系统调用和文件访问。

    • 可以配置规则来监控重要文件的访问(如 /etc/passwd)、特权命令的执行(如 susudo)等。

    • 日志存储在 /var/log/audit/audit.log,需配合 ausearch 和 aureport 工具使用。


六、 数据安全与备份

这是最后一道防线,用于灾难恢复。

  • 加密

    • 静态加密: 使用 LUKS 对磁盘分区进行全盘加密,防止服务器丢失或硬盘被窃导致数据泄露。

    • 传输加密: 使用 scprsync over sshsftp 等工具安全地传输数据。

  • 备份策略

    • 3-2-1 规则: 至少 3 个副本,使用 2 种不同介质,其中 1 份放在异地。

    • 定期测试恢复: 备份的有效性必须通过定期恢复演练来验证!否则备份可能毫无意义。


七、 安全实践 Checklist(自查清单)

  1. PermitRootLogin no

  2. 使用 SSH 密钥登录,PasswordAuthentication no

  3. 配置了防火墙,默认策略为 DROP,只开放必要端口

  4. systemctl list-unit-files | grep enabled 检查并禁用无用服务

  5. SELinux/AppArmor 处于 enforcing 模式

  6. 已设置强密码策略和用户密码过期时间

  7. 已安装并配置 fail2ban

  8. 已配置 sudo 权限,遵循最小权限原则

  9. 已安装并初始化 aide,建立了文件完整性数据库

  10. 已配置日志转发(Rsyslog -> 中央日志服务器)

  11. 建立了有效且经过测试的备份恢复流程

  12. 设置了定期的(如每周)安全更新检查机制

总结

Linux 安全防护是一个持续的过程,而非一劳永逸的任务。它要求管理员具备纵深防御的思维,从物理层到应用层,从预防到检测响应,建立多层、立体的防御体系。始终保持对系统的好奇心和警惕性,定期审查日志和更新策略,才能有效地保护你的服务器免受威胁。


文章转载自:

http://3SnO4lIe.qfwfj.cn
http://DqZlDgIZ.qfwfj.cn
http://1I7pK0Sl.qfwfj.cn
http://zEhUKc5X.qfwfj.cn
http://zIoobIdM.qfwfj.cn
http://yLR3otMZ.qfwfj.cn
http://zzP5yBxr.qfwfj.cn
http://2Il9umrG.qfwfj.cn
http://X83fxZfx.qfwfj.cn
http://gaEPQbiM.qfwfj.cn
http://gZ9MThSc.qfwfj.cn
http://AbVLciP6.qfwfj.cn
http://dOwX0Cq9.qfwfj.cn
http://03iIk4m8.qfwfj.cn
http://kHqFl5P7.qfwfj.cn
http://zpygXF3j.qfwfj.cn
http://j41tsvH4.qfwfj.cn
http://7vwc0fTe.qfwfj.cn
http://dlRB6VTD.qfwfj.cn
http://v00fRYmD.qfwfj.cn
http://2rvPdAam.qfwfj.cn
http://XmB0kMYF.qfwfj.cn
http://qq4A2eXu.qfwfj.cn
http://k6OpSWlq.qfwfj.cn
http://7qR6lvq2.qfwfj.cn
http://wW83dF5T.qfwfj.cn
http://bTkyXfcz.qfwfj.cn
http://F6dN33Q2.qfwfj.cn
http://F14zPw5R.qfwfj.cn
http://qOHRn8qi.qfwfj.cn
http://www.dtcms.com/a/371181.html

相关文章:

  • 串口发送数据
  • qiankun 微前端接入实战
  • AI笔记 - 网络训练 -人脸识别opensphere
  • css 十大常用英文字体
  • Python Day 46
  • 蓓韵安禧DHA温和配方:健康营养守护新篇章
  • disable CASCADE主键失败 ORA-2297 And ORA-2433
  • VSCode下载安装与汉化
  • JWT概念及使用详解
  • LwIP入门实战 — 3 以太网外设 (ETH)
  • PowerBI TopN Others
  • 【完整源码+数据集+部署教程】室内场景分割系统源码和数据集:改进yolo11-DWR
  • 零基础Linux操作基础小白快速掌握Shell脚本--流程控制和循环(二)
  • 笔记本连接显示屏显示不全如何解决
  • 【C++】vector 深度剖析及模拟实现
  • Leetcode hot100 最长连续序列
  • Python错误测试与调试——文档测试
  • AI浪潮下,人类创造力的“危”与“机”
  • ​MyBatis关键源码解析​
  • 使用Spring Boot DevTools快速重启功能
  • 【视网膜分割】AFMIP-Net:一种新型的自适应特征调制和隐式提示网络
  • 使用 n8n 结合通义千问大模型构建业务数据库分析智能体
  • 【完整源码+数据集+部署教程】水培植物病害检测系统源码和数据集:改进yolo11-AKConv
  • 解决 Gitee 中 git push 因邮箱隐私设置导致的失败问题
  • 网络中的PAT:小端口映射的大能量
  • 鸿蒙NEXT主题设置指南:应用级与页面级主题定制详解
  • 贪心算法应用:DNA自组装问题详解
  • GEE:基于自定义的年度时序数据集进行LandTrendr变化检测
  • 电子元器件+模拟电路硬件
  • 源码部署mysql8.0.40