系统安全及应用学习笔记
一、账号安全控制
(一)账户管理策略
- 冗余账户处理
- 非登录账户:Linux 系统中默认存在如 bin、daemon 等非登录账户,其登录 Shell 应为 /sbin/nologin,需定期检查确保未被篡改。
- 冗余账户清理 :对于长期未使用或冗余账户(如 games),可直接删除;若无法确定是否删除,可使用
usermod -L
锁定账户,后续通过passwd -S
查看状态。 - 账户配置锁定 :通过
chattr +i
锁定/etc/passwd
和/etc/shadow
文件,防止非法修改账户信息,锁定后任何账户增删或属性变更操作将被拒绝。
- 密码策略管理
- 有效期设置 :通过
chage
命令限制密码最大使用天数,例如将用户 lisi 的密码有效期设为 30 天:chage -M 30 lisi
,或全局修改/etc/login.defs
中的PASS_MAX_DAYS
参数。 - 强制密码修改 :使用
chage -d 0
强制用户下次登录时修改密码,如chage -d 0 zhangsan
,用户登录后系统将提示必须更改密码。
- 有效期设置 :通过
- 会话安全配置
- 历史命令限制 :修改
/etc/profile
中的HISTSIZE
变量,限制历史命令记录条数(如设为 200 条),并可在用户目录的.bash_logout
中添加history -c
,实现退出时自动清空历史命令。 - 闲置超时注销 :通过设置
TMOUT
变量(单位:秒)实现终端闲置超时自动注销,如export TMOUT=600
设置超时时间为 10 分钟,执行关键操作时可通过unset TMOUT
取消设置。
- 历史命令限制 :修改
(二)用户权限管理
- su 命令安全控制
- 切换用户功能 :
su -
命令用于切换用户并进入目标用户的登录环境,默认任何用户均可使用 su 命令,存在安全风险。 - 权限限制 :通过
pam_wheel
模块限制 su 使用权限,将允许使用 su 的用户加入 wheel 组(如gpasswd -a tsengyia wheel
),并修改/etc/pam.d/su
配置文件,启用pam_wheel.so use_uid
认证,非 wheel 组成员尝试切换时将被拒绝。
- 切换用户功能 :
- sudo 权限提升
- 配置文件管理 :通过
visudo
编辑/etc/sudoers
文件,授权用户执行特定特权命令,格式为user MACHINE=COMMANDS
。例如,授权用户 jerry 执行ifconfig
命令:jerry localhost=/sbin/ifconfig
,或允许 wheel 组无密码执行所有命令:%wheel ALL=NOPASSWD:ALL
。 - 别名与通配符 :使用
User_Alias
、Host_Alias
、Cmnd_Alias
定义别名简化配置,支持通配符*
和取反符号!
。例如,授权用户 syrianer 执行 /sbin 目录下除ifconfig
和route
外的所有命令:syrianer localhost=/sbin/*, !/sbin/ifconfig, !/sbin/route
。 - 日志记录 :在
/etc/sudoers
中添加Defaults logfile="/var/log/sudo"
启用 sudo 日志,记录用户执行的特权命令及时间。
- 配置文件管理 :通过
二、系统引导和登录控制
(一)物理与引导安全
- BIOS 安全设置
- 引导顺序锁定:将第一引导设备设为系统所在磁盘,禁用从光盘、U 盘、网络等外部设备引导,设置 BIOS 管理密码(安全级别设为 "setup"),防止未授权修改引导配置。
- GRUB 引导保护
- 密码设置 :使用
grub2-mkpasswd-pbkdf2
生成加密密码,修改/etc/grub.d/01_users
文件添加用户和密码配置,重新生成grub.cfg
文件后,用户修改 GRUB 引导参数需输入正确密码,避免未授权系统启动项修改。
- 密码设置 :使用
(二)终端登录控制
- root 登录限制
- 通过修改
/etc/securetty
文件,注释掉禁止 root 登录的终端(如 tty5、tty6),限制 root 用户仅从安全终端登录,降低误操作和密码泄露风险。
- 通过修改
- 临时登录限制
- 在服务器维护期间,创建
/etc/nologin
文件可禁止普通用户登录(root 用户不受限),维护完成后删除该文件或重启服务器即可恢复正常登录。
- 在服务器维护期间,创建
三、弱口令检测与端口扫描
(一)弱口令检测(John the Ripper)
- 工具安装
- 从官网下载源码包(如 john-1.8.0.tar.gz),解压后进入 src 目录执行
make clean linux-x86-64
编译,编译完成后可在 run 目录找到可执行程序 john,无需额外安装,可直接复制使用。
- 从官网下载源码包(如 john-1.8.0.tar.gz),解压后进入 src 目录执行
- 检测操作
- 直接检测 :复制
/etc/shadow
文件到安全路径(如/root/shadow.txt
),执行./john /root/shadow.txt
进行暴力破解,破解结果实时输出,弱口令账户信息将显示在终端。 - 字典攻击 :使用
--wordlist
选项指定字典文件(如默认的 password.lst),例如./john --wordlist=./password.lst /root/shadow.txt
,可提高破解效率,破解结果保存至 john.pot 文件,通过--show
选项查看已破解账户。
- 直接检测 :复制
(二)端口扫描(NMAP)
- 工具安装
- 使用 YUM 安装:
yum install -y nmap
,安装完成后可在 /usr/bin/nmap 路径下找到扫描程序。
- 使用 YUM 安装:
- 常用扫描类型
- TCP SYN 扫描(-sS):半开扫描,发送 SYN 包探测端口状态,适用于隐蔽扫描,避免完整连接记录。
- TCP 连接扫描(-sT):完整 TCP 三次握手,准确性高但易被日志记录,适用于非敏感环境。
- UDP 扫描(-sU):探测 UDP 端口,速度较慢,需注意防火墙过滤规则。
- ICMP 扫描(-sP):类似 ping 检测,快速判断主机存活状态,不进行端口扫描。
- 扫描示例
- 本地端口扫描 :
nmap 127.0.0.1
扫描常用 TCP 端口,nmap -sU 127.0.0.1
扫描 UDP 端口,结果中 "open" 表示端口开放,"filtered" 可能被防火墙过滤,"closed" 表示端口关闭。 - 网段服务扫描 :
nmap -p 21 192.168.4.0/24
扫描指定网段内提供 FTP 服务(21 端口)的主机,快速定位目标服务。
- 本地端口扫描 :
四、总结
- 核心目标:通过账户安全策略、引导登录控制、弱口令检测及端口扫描等技术,构建多层次系统安全防护体系,降低未授权访问、密码泄露、服务暴露等风险。
- 实践要点:定期清理冗余账户、强化密码策略、限制特权操作、及时扫描检测弱口令和开放端口,结合日志分析持续优化系统安全状态。