Linux系统安全

用户账户的上锁(锁定)和解锁:

  • 作用:
    • 锁定: 临时或永久禁止某个用户账户登录系统。常用于:
      • 员工离职或休假期间。
      • 怀疑账户被盗用或存在异常活动。
      • 作为安全策略的一部分(例如,连续多次登录失败后自动锁定)。
    • 解锁: 恢复被锁定账户的正常登录权限。通常由管理员在确认安全后操作。
  • 常用命令(Linux):
    • passwd -l <username>:锁定用户 <username> 的账户。
    • passwd -u <username>:解锁用户 <username> 的账户。
    • usermod --expiredate 1 <username>:设置账户过期时间为过去(一种锁定方式)。
    • usermod --expiredate "" <username>:清除过期时间(解锁)。

服务端口的开启(启用)和关闭(禁用):

  • 作用:
    • 开启端口: 允许外部网络通过该端口访问运行在系统上的特定服务(如 Web 服务器、数据库、远程登录等)。是服务正常运行的必要条件。
    • 关闭端口: 阻止外部网络通过该端口访问系统上的服务。这是网络安全中最小化攻击面 的重要原则:
      • 减少暴露风险: 关闭不必要的端口,意味着黑客可以利用的潜在入口点减少。
      • 降低被攻击概率: 许多攻击(如漏洞利用、暴力破解)都针对特定端口上的服务。关闭未使用的服务端口能有效防御此类攻击。
      • 合规要求: 很多安全审计标准要求仅开放业务必需的服务端口。
  • 实现方式:
    • 防火墙配置: 这是最常用、最推荐的方式。使用防火墙(如 iptables, nftables, firewalld, ufw)规则来明确允许(ACCEPT)或拒绝(DROP/REJECT)特定端口上的流量。例如:
      • 开启 80 端口 (HTTP):sudo ufw allow 80/tcp
      • 关闭 23 端口 (Telnet):sudo ufw deny 23/tcp
    • 停止服务: 直接停止监听该端口的服务进程。但这通常不是最佳实践,因为服务可能会在系统重启后自动启动。防火墙控制更灵活可靠。例如停止 SSH 服务:sudo systemctl stop sshd (但端口可能仍被防火墙规则允许)。

密码安全配置:

  • 作用: 确保用户账户密码具有足够的强度,难以被猜测或破解,是防御未授权访问的第一道防线。
  • 关键配置项:
    • 密码强度策略:
      • 最小长度: 要求密码至少包含一定数量的字符(如 12 位)。越长通常越安全。
      • 复杂度要求: 强制密码包含大写字母、小写字母、数字和特殊符号中的几种组合。
      • 禁止常见弱密码: 防止使用 password, 123456 等容易被猜中的密码。
    • 密码有效期策略:
      • 最大使用天数: 强制用户定期(如每 90 天)更换密码。
      • 最小使用天数: 防止用户过于频繁地改回旧密码。
      • 过期前警告天数: 提前提醒用户密码即将过期。
    • 密码历史策略: 禁止用户重复使用最近用过的若干次(如 5 次)密码。
    • 登录失败锁定: 在连续多次(如 5 次)登录失败后,临时锁定账户一段时间或需要管理员解锁,防止暴力破解。
  • 配置文件(Linux - PAM 和 login.defs): 这些策略通常在 /etc/pam.d/system-auth (或类似文件,取决于发行版) 和 /etc/login.defs 中配置,也可能通过专门的工具如 pam_cracklibpam_pwquality 模块来实施。修改这些文件需要管理员权限。

su 命令的用法:

  • 作用: su (Switch User) 命令用于在终端会话中切换到另一个用户账户的身份。最常用的是切换到 root (超级管理员) 用户以执行需要特权的操作。
  • 基本语法:
    • su -su - root:切换到 root 用户,并加载 root 用户的环境变量(如 PATH, HOME)。这是推荐的做法
    • su <username>:切换到指定的 <username> 用户,但可能不会完全加载该用户的环境变量。
  • 关键点:
    • 执行 su 后,系统会提示输入目标用户 的密码(例如,要切换到 root,就需要输入 root 的密码)。
    • 安全风险: 直接使用 su 切换到 root 并长期停留在 root shell 下是危险的,因为任何操作失误都可能导致严重后果。更安全的做法是使用 sudo 来临时提升权限执行特定命令。
    • su vs sudo
      • su 要求你知道目标用户(尤其是 root)的密码。
      • sudo 允许配置好的普通用户使用自己的密码来临时以 root (或其他用户) 身份执行命令。它提供了更细粒度的控制(通过 /etc/sudoers 文件配置哪些用户能在哪些主机上以谁的身份运行哪些命令)和操作审计(记录谁在何时执行了什么 sudo 命令)。现代最佳实践更倾向于使用 sudo 而非频繁使用 su
    • 退出: 完成需要目标用户权限的操作后,使用 exit 命令或按 Ctrl+D 返回原来的用户身份。
  • 总结: 用户锁定/解锁管理账户访问权限;端口管理控制网络服务的暴露范围;密码策略是账户安全的基础;su 提供了切换用户身份的能力,但需谨慎使用,尤其是在切换到 root 时。结合使用这些措施,并遵循最小权限原则(用户和服务只拥有完成其任务所必需的最小权限),是构建安全系统环境的关键。
相关推荐
十年编程老舅2 小时前
C++ 原子操作实战:实现无锁数据结构
linux·c++·c++11·原子操作·无锁队列
东北甜妹2 小时前
LVS故障排查
运维
银河麒麟操作系统2 小时前
服务器通用(全架构)【服务器存储系统原理与运维实践解析】技术文章
运维·服务器·架构
|华|2 小时前
系统安全及应用
安全·系统安全
爱丽_2 小时前
Nginx 从入门到项目部署(反向代理 / 负载均衡 / 静态资源)
运维·nginx·负载均衡
returnthem2 小时前
Docker基本命令
linux·运维·服务器
Albert Edison2 小时前
【ProtoBuf 语法详解】enum 类型
java·linux·服务器
05大叔2 小时前
Docker
运维·docker·容器
恒创科技HK2 小时前
海外服务器回国线路对比,带宽选择指南
运维·服务器