Linux 系统安全及应用

账号安全控制

Linux 账户类型

  1. root 用户(超级管理员)
    • 权限最大,能删系统、该任何文件
    • 最危险,严禁随便使用、严禁密码太简单
  2. 系统用户(程序 / 服务用)
    • 如:bin、daemon、apache、nginx、mysql
    • 供系统服务运行,不需要登陆,也不能删
  3. 普通用户
    • 管理员手动创建,供人登录使用
    • 权限小,日常操作优先用普通用户

用户信息存放在:

  • /etc/passwd:所有用户的基本信息(用户名、UID、家目录等)
  • /etc/shadow:密码核心文件(只有 root 能看)

强制密码有效期

让用户必须定期改密码,防止泄露

  1. 查看当前用户密码策略

    bash 复制代码
    chage -l 用户名
  2. 设置密码 30 天必须更换

    bash 复制代码
    chage -M 30 用户名
  3. 密码过期前 7 天提醒

    bash 复制代码
    chage -W 7 用户名

用户锁定与解锁

  1. 锁定用户(禁止登录)

    bash 复制代码
    passwd -l 用户名
    
    usermod -L 用户名

    锁定后,/etc/shadow 密码前会加 !! ,无法登录

  2. 解锁密码

    bash 复制代码
    passwd -u 用户名
    
    usermod -U 用户名
  3. 禁用密码(只允许密钥登录,更安全)

    bash 复制代码
    passwd -d 用户名

    ⚠️清空密码后,无密码就能登录,一般配合密钥使用

删除无用 / 可疑用户

系统里不用的用户,直接删掉,减少风险

bash 复制代码
# 删除用户(保留家目录)
userdel 用户名

# 删除用户 + 彻底删除家目录(推荐)
userdel -r 用户名

⚠️ 不要删系统用户(bin、daemon、mail 等)

用户切换安全(少用 root ,多用普通用户)

  1. su 切换用户

    bash 复制代码
    # 切换到普通用户
    su 用户名
    
    # 切换到 root(需要root密码)
    su

    ❌ 缺点:

    • 普通用户要知道 root 密码才能切 root
    • 密码泄露风险大
  2. sudo 提权

    普通用户临时用管理员权限,不需要知道 root 密码

    ① 给用户加 sudo 权限

    bash 复制代码
    visudo

    找到下面一行:

    bash 复制代码
    root    ALL=(ALL)       ALL

    在下面加一行(比如给 zhangsan 加权限):

    bash 复制代码
    zhangsan    ALL=(ALL)       ALL

    ② 普通用户用 sudo 执行命令

    bash 复制代码
    sudo ls /root
    sudo systemctl restart sshd

    只输入自己密码,就能用管理员权限

系统引导和登录控制

开关机安全控制

Ctrl + Alt + Del 快捷键安全

原理

systemd 中 ctrl-alt-del.target 绑定快捷键,默认触发立即重启,属高危物理攻击面

加固配置

bash 复制代码
# 屏蔽
systemctl mask ctrl-alt-del.target

# 取消屏蔽(恢复默认)
systemctl unmask ctrl-alt-del.target

# 查看状态
systenctl status ctrl-alt-del.target

mask 会将服务链接到 /dev/null,彻底禁用,比 disable 更严格

GRUB2 引导安全(防止单用户模式破解 root)
  1. 核心目标

    • 禁止未授权编辑 GRUB 菜单
    • 禁止无密码进入单用户 / 救援模式
    • 保护 /root 分区与引导流程
  2. 加密配置(标准生产流程)

    bash 复制代码
    # 生成 PBKDF2 加密密码串
    grub2-mkpasswd-pbkdf2

    编辑用户配置:

    bash 复制代码
    vi /etc/grub.d/00_header

    末尾添加:

    bash 复制代码
    set superusers="admin"
    password_pbkdf2 admin 你的加密字符串

    更新 grub 并生效:

    bash 复制代码
    grub2-mkconfig -o /boot/grub2/grub.cfg
  3. 强化策略

    • 引导菜单必须密码才能编辑
    • 单用户模式启动需认证
    • 严禁直接修改 /boot/grub2/grub.cfg
本地终端安全限制

作用

限制 root 可登录的本地终端(tty),防止物理控制台直接 root 登录。

bash 复制代码
vi /etc/securetty

注释掉所有 tty 行,即禁止 root 本地登录,仅允许普通用户登录后 su/sudo 提权。

会话闲置自动注销

全局生效:

bash 复制代码
vi /etc/profile
export TMOUT=300  # 5分钟无操作自动登出
bash 复制代码
source /etc/profile
  • 对本地 tty、远程 ssh 均生效
  • 属开关机 / 登录后安全延伸

终端及登录控制

当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时候,只需要简单地建立 /etc/nologin 文件即可。login 程序会检查 /etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统( root 用户不受限制)。

bash 复制代码
touch /etc/nologin

此方法实际上是利用了 shutdown 延迟关机的限制机制,只建议在服务器维护期间临时使用。当手动删除 /etc/nologin 文件或者重新启动主机以后,即可恢复正常。

弱口令检测、端口扫描

弱口令检测

核心思路

对系统账号、远程服务账号进行字典匹配 / 暴力尝试,发现简单密码、默认密码、空密码。

典型工具与实操命令

  1. John the Ripper

    本地 /etc/shadow 密码破解神器。

    bash 复制代码
    # 提取密码密文
    unshadow /etc/passwd /etc/shadow > hash.txt
    
    # 开始弱口令破解
    john hash.txt
    
    # 查看已破解结果
    john --show hash.txt
  2. Hydra

    远程服务器暴力破解(SSH/FTP/MySQL/RDP 等)。

    bash 复制代码
    # SSH 弱口令扫描
    hydra -L 用户字典 -P 密码字典 目标IP ssh -t 6
    
    # MySQL 弱口令扫描
    hydra -L user.txt -P pass.txt 目标IP mysql
  3. 本机快速自检

    bash 复制代码
    # 查看空密码账号(密码字段为 !! 表无密码/锁定)
    awk -F: '$2 == "" {print $1}' /etc/shadow
    
    # 查看可登录用户
    grep "/bin/bash" /etc/passwd

端口扫描

核心工具:nmap

常用扫描类型

bash 复制代码
# 基础全连接扫描
nmap 192.168.1.10

# SYN 半开放扫描(隐蔽、速度快、生产常用)
nmap -sS 192.168.1.10

# 扫描全部 1-65535 端口
nmap -p- 192.168.1.10

# 指定端口扫描
nmap -p 22,80,3306,6379 192.168.1.10

# 探测服务版本
nmap -sV 192.168.1.10

# 探测操作系统
nmap -O 192.168.1.10

# 全面扫描(端口+服务+OS+路由)
nmap -A 192.168.1.10

本机端口查看

bash 复制代码
# 查看监听端口(推荐)
ss -tuln

# 查看端口+进程
ss -tulnp
netstat -tulnp

# 查看某端口对应进程
lsof -i :22
相关推荐
云边有个稻草人10 小时前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
谁似人间西林客12 小时前
工厂大脑如何让汽车制造告别“救火式”运维?
运维·汽车·制造
飞飞传输13 小时前
数字化科研提速关键 构建安全可控一体化跨网数据传输体系
大数据·运维·安全
wanhengidc13 小时前
服务器中带宽的重要性
运维·服务器·网络·安全·web安全
云游牧者14 小时前
K8S故障排查三板斧-CSDN博客
运维·docker·云原生·kubernetes·k8s·容器化·故障排查
程序员老邢14 小时前
【技术底稿 32】Nginx 经典大坑复盘:本机公网域名自环代理,导致接口返回首页 / 404 实战排障
java·运维·nginx·前后端分离·技术底稿·后端部署
忧云15 小时前
开源 SSH 客户端 Netcatty:免费替代 Termius,带 AI 的现代化运维工具
运维·开源·ssh
想唱rap15 小时前
传输层协议TCP
linux·运维·服务器·网络·c++·tcp/ip
曦夜日长15 小时前
Linux系统篇,权限(二):缺省权限、最终权限的计算、文件隔离的两种方式
linux·运维·服务器
云水一下16 小时前
黑客的“猜密码”游戏:SSH暴力破解实战与Linux安全加固
linux·渗透测试·ssh·暴力破解