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
相关推荐
未来之窗软件服务2 小时前
服务器运维(四十四)Python Gradio服务器伪请求pseudo http —东方仙盟
运维·服务器·http·仙盟创梦ide·东方仙盟
十年编程老舅2 小时前
C++ 原子操作实战:实现无锁数据结构
linux·c++·c++11·原子操作·无锁队列
卢傢蕊2 小时前
Linux系统安全
linux·运维·系统安全
东北甜妹2 小时前
LVS故障排查
运维
银河麒麟操作系统2 小时前
服务器通用(全架构)【服务器存储系统原理与运维实践解析】技术文章
运维·服务器·架构
|华|2 小时前
系统安全及应用
安全·系统安全
爱丽_2 小时前
Nginx 从入门到项目部署(反向代理 / 负载均衡 / 静态资源)
运维·nginx·负载均衡
returnthem2 小时前
Docker基本命令
linux·运维·服务器
Albert Edison2 小时前
【ProtoBuf 语法详解】enum 类型
java·linux·服务器