账号安全控制
Linux 账户类型
- root 用户(超级管理员)
- 权限最大,能删系统、该任何文件
- 最危险,严禁随便使用、严禁密码太简单
- 系统用户(程序 / 服务用)
- 如:bin、daemon、apache、nginx、mysql
- 供系统服务运行,不需要登陆,也不能删
- 普通用户
- 管理员手动创建,供人登录使用
- 权限小,日常操作优先用普通用户
用户信息存放在:
/etc/passwd:所有用户的基本信息(用户名、UID、家目录等)/etc/shadow:密码核心文件(只有 root 能看)
强制密码有效期
让用户必须定期改密码,防止泄露
-
查看当前用户密码策略
bashchage -l 用户名 -
设置密码 30 天必须更换
bashchage -M 30 用户名 -
密码过期前 7 天提醒
bashchage -W 7 用户名
用户锁定与解锁
-
锁定用户(禁止登录)
bashpasswd -l 用户名 usermod -L 用户名锁定后,
/etc/shadow密码前会加!!,无法登录 -
解锁密码
bashpasswd -u 用户名 usermod -U 用户名 -
禁用密码(只允许密钥登录,更安全)
bashpasswd -d 用户名⚠️清空密码后,无密码就能登录,一般配合密钥使用
删除无用 / 可疑用户
系统里不用的用户,直接删掉,减少风险
bash
# 删除用户(保留家目录)
userdel 用户名
# 删除用户 + 彻底删除家目录(推荐)
userdel -r 用户名
⚠️ 不要删系统用户(bin、daemon、mail 等)
用户切换安全(少用 root ,多用普通用户)
-
su 切换用户
bash# 切换到普通用户 su 用户名 # 切换到 root(需要root密码) su❌ 缺点:
- 普通用户要知道 root 密码才能切 root
- 密码泄露风险大
-
sudo 提权
让普通用户临时用管理员权限,不需要知道 root 密码
① 给用户加 sudo 权限
bashvisudo找到下面一行:
bashroot ALL=(ALL) ALL在下面加一行(比如给 zhangsan 加权限):
bashzhangsan ALL=(ALL) ALL② 普通用户用 sudo 执行命令
bashsudo 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)
-
核心目标
- 禁止未授权编辑 GRUB 菜单
- 禁止无密码进入单用户 / 救援模式
- 保护
/root分区与引导流程
-
加密配置(标准生产流程)
bash# 生成 PBKDF2 加密密码串 grub2-mkpasswd-pbkdf2编辑用户配置:
bashvi /etc/grub.d/00_header末尾添加:
bashset superusers="admin" password_pbkdf2 admin 你的加密字符串更新 grub 并生效:
bashgrub2-mkconfig -o /boot/grub2/grub.cfg -
强化策略
- 引导菜单必须密码才能编辑
- 单用户模式启动需认证
- 严禁直接修改
/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 文件或者重新启动主机以后,即可恢复正常。
弱口令检测、端口扫描
弱口令检测
核心思路
对系统账号、远程服务账号进行字典匹配 / 暴力尝试,发现简单密码、默认密码、空密码。
典型工具与实操命令
-
John the Ripper
本地
/etc/shadow密码破解神器。bash# 提取密码密文 unshadow /etc/passwd /etc/shadow > hash.txt # 开始弱口令破解 john hash.txt # 查看已破解结果 john --show hash.txt -
Hydra
远程服务器暴力破解(SSH/FTP/MySQL/RDP 等)。
bash# SSH 弱口令扫描 hydra -L 用户字典 -P 密码字典 目标IP ssh -t 6 # MySQL 弱口令扫描 hydra -L user.txt -P pass.txt 目标IP mysql -
本机快速自检
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