系统安全及应用

10.1 账号安全控制

10.1.1基本安全措施

|--------|---------|---------------------------------------------------|
| 类别 | 子项 | 描述与操作 |
| 账号安全控制 | 基本安全措施 | |
| | 禁止登录终端 | 设置登录 shell 为 /sbin/nologin |
| | 锁定账号 | 使用 usermod -L 用户名 锁定账号, usermod -U 用户名 解锁账号 |
| | 锁定文件 | 使用 chattr +i 锁定 /etc/passwd 和 /etc/shadow 文件,防止修改 |
| | | 使用 lsattr 查看文件隐藏属性 |
| 密码安全控制 | 密码有效期设置 | 查看 /etc/shadow 文件中用户密码的详细信息 |
| | | 修改 /etc/login.defs 文件中的 PASS_MAX_DAYS 设置密码最长过期天数 |

  • chattr 命令用于设置文件的隐藏属性,其中 +i 表示设置不可修改和删除的属性。
  • lsattr 命令用于显示文件的隐藏属性。
  • /etc/passwd 和 /etc/shadow 是存储用户账号和密码的文件,需要保护其安全。
  • /etc/login.defs 文件定义了系统级的账号和密码策略。

(1)chatter文件隐藏属性参数说明:

  • A: 访问时间不被修改
  • S: 同步写入磁盘
  • a: 文件只能增加数据,不能删除或修改
  • c: 自动压缩文件
  • d: 不被 dump 备份
  • i: 文件不能被删除、改名,不能写入或添加数据
  • s: 文件被删除后彻底删除
  • u: 文件删除后数据内容仍存在于磁盘

(2)lsattr显示隐藏文件属性参数说明

  • -a:将隐藏文件的属性也显示出来
  • -d:如果接的是目录,仅列出目录本身的属性而不是目录内的文件名
  • -R:连同子目录的数据也显示出来

10.1.2:密码安全控制

在 /etc/shadow 文件中,每个用户账号的密码信息都存储为一行,并且使用冒号()分隔成多个字段

复制代码
[root@localhost ~]# cat /etc/shadow
root:$6$zFZ8kavFcjTKEq9v$3eEDeLV42bSDjRvflGFRdXs23LjMbzHLJRxtjXFpAKlBBTKv2rg3mxmkgZSxhaxGx.W9k2xQFKRhxDyazVaP./::0:99999:7:::

下面对每组的解释:

|-------------|----------------------------|------------------------------------------------------------------------------------------------------------|
| 字段 | 含义 | 示例值 |
| 用户名 | 用户的登录名 | root |
| 加密后的密码 | 使用 idsalthashed 格式加密的密码 | 6zFZ8kavFcjTKEq9v3eEDeLV42bSDjRvflGFRdXs23LjMbzHLJRxtjXFpAKlBBTKv2rg3mxmkgZSxhaxGx.W9k2xQFKRhxDyazVaP./ |
| 密码最后一次更改日期 | 从1970年1月1日算起的天数 | :: (这里为占位符,实际值应为一个数字) |
| 密码最小年龄 | 密码更改后必须保持的最小天数 | 0 |
| 密码最大年龄 | 密码到期前的天数(密码有效期) | 99999 (通常表示密码永不过期) |
| 密码到期前的警告天数 | 密码到期前多少天开始警告用户 | 7 |
| 密码到期后账号的宽限期 | 密码过期后用户还可以登录的天数 | :: (这里为占位符,实际值应为一个数字) |
| 账号失效日期 | 账号过期的日期(从1970年1月1日算起的天数) | :: (这里为占位符,实际值应为一个数字) |
| 保留字段 | 保留给未来使用 | :: (通常为空或占位符) |

(1)密码有效期的设置

新建用户可以通过修改login.defs文件修改密码有效期

复制代码
PASS_MAX_DAYS   99999  
PASS_MIN_DAYS   0  
PASS_MIN_LEN    5  
PASS_WARN_AGE   7
  • PASS_MAX_DAYS 99999
    • 这个参数定义了密码的最大有效期(天数)。在此例中,密码的最大有效期被设置为 99999 天,这通常意味着密码永不过期(除非手动更改)。
  • PASS_MIN_DAYS 0
    • 这个参数定义了用户更改密码后必须等待的最小天数。在此例中,设置为 0 意味着用户可以随时更改他们的密码,没有等待期。
  • PASS_MIN_LEN 5
    • 这个参数定义了密码的最小长度。在此例中,用户设置的密码长度必须至少为 5 个字符。这有助于提高密码的安全性,因为较短的密码更容易被猜测或暴力破解。
  • PASS_WARN_AGE 7
    • 这个参数定义了从密码到期日开始,系统开始警告用户密码即将过期的天数。在此例中,如果用户的密码设置了有效期(尽管在上面的 PASS_MAX_DAYS 中设置为 99999),那么系统会在用户密码到期前 7 天开始发出警告。

PASS_MIN_LEN的值需要在/etc/pam.d/system-auth文件中设置,此处设置是不生效的,此参数由pam认证机制决定。

以下方式设置用户最短密码策略

root@localhost \~# vim /etc/pam.d/system-auth

添加:

password requisite pam_cracklib.so try_first_pass retry=3 minlen=12

10.1.3 命令历史,自动注销的步骤

|----|-----------------|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | 操作目标 | 命令或配置 | 解释 |
| 1 | 为新登录的用户设置命令历史 | vi /etc/profile ,添加 HISTSIZE=20 | 修改 /etc/profile 文件,为新登录用户设置命令历史记录的最大数量为20条。 |
| 2 | 为已登录的当前用户设置命令历史 | export HISTSIZE=200 | 为当前已登录的shell会话设置命令历史记录的最大数量为200条。 |
| 3 | 清空历史命令 | vi ~/.bash_logout ,添加 history -c 和 clear | 在用户的 ~/.bash_logout 文件中添加 history -c 命令以清空历史记录, clear 命令用于清除屏幕内容。但这并不是真正在注销时清空历史记录的正确方法,因为 history -c 通常在当前shell会话中有效,并不会影响已保存的历史文件(如 ~/.bash_history )。 |
| 4 | 检查命令历史的清除效果 | logout 后重新登录, history 查看 | 在终端中输入 logout 注销用户,然后重新登录并使用 history 命令查看历史记录是否被清空。但如前所述, history -c 的效果可能不会在重新登录时体现。 |
| 5 | 新登录用户设置空闲自动注销 | vi /etc/profile ,添加 export TMOUT=600 | 修改 /etc/profile 文件,为新登录用户设置空闲时间达到600秒(10分钟)后自动注销。 |
| 6 | 当前已登录用户设置空闲自动注销 | export TMOUT=600 | 为当前已登录的shell会话设置空闲时间达到600秒(10分钟)后自动注销。 |

10.2用户切换与提权

10.2.1.su命令

(1)su切换用户

复制代码
[root@localhost ~]# su lisi
[lisi@localhost root]$ 

(2)只允许指定的用户使用su进行切换

复制代码
[root@localhost ~]# gpasswd -a zhangsan wheel
正在将用户"zhangsan"加入到"wheel"组中
[root@localhost ~]# 
[root@localhost ~]# vim /etc/pam.d/su
#auth            required        pam_wheel.so use_uid
把这一行#去掉

3:sudo命令提权

(1)在配置文件/etc/sudoers中添加授权

复制代码
[root@localhost ~]# visudo 
root    ALL=(ALL)       ALL
zhangsan ALL=(ALL)     ALL

10.3:系统引导和登录控制

10.3.1:开关机安全控制

1:调整 BIOS 引导设置

2:限制更改 GRUB 引导参数(为GRUB添加密码)

(1)生成密文密码

复制代码
[root@localhost ~]# grub2-mkpasswd-pbkdf2 
输入口令:
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.6DB0943C2C7BDC916F4E86031380162FEC7C49BE39712405E74DC3F63A819DC032CA7B72C8908962C6ACE3B8DC0F757106A13FC7C39015DE2A76134C1763F68B.0E8C4E317C1835166C7B146923B4BA7AA5F3524D22FDE50A79E7F5190D0457D8077F771387CEB5DF8CA543B4CE7EAEB9210F8390AF1438A0129FC8DF0B1F926B
[root@localhost ~]# 
[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/01_users /etc/grub.d/01_users.bak
[root@localhost ~]# vim /etc/grub.d/01_users
cat << EOF
set superusers="root"
export superusers
password_pbkdf2 root grub.pbkdf2.sha512.10000.6DB0943C2C7BDC916F4E86031380162FEC7C49BE39712405E74DC3F63A819DC032CA7B72C8908962C6ACE3B8DC0F757106A13FC7C39015DE2A76134C1763F68B.0E8C4E317C1835166C7B146923B4BA7AA5F3524D22FDE50A79E7F5190D0457D8077F771387CEB5DF8CA543B4CE7EAEB9210F8390AF1438A0129FC8DF0B1F926B
 EOF
 [root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
 重启进入GRUB测试密码
 在GRUB菜单处第一行按下字母e,提示输入账号和密码

10.3.2:弱口令检测,端口扫描

1:弱口令检测-John the Ripper

复制代码
 在GRUB菜单处第一行按下字母e,提示输入账号和密码

三:弱口令检测,端口扫描
3.1:弱口令检测-John the Ripper 
# 安装 John the Ripper  
tar zxf john-1.8.0.tar.gz  
cd john-1.8.0/src/  
yum -y install gcc libssl-devel libunistring-devel  
make clean linux-x86-64  
  
# 复制 shadow 文件(注意:此操作可能存在安全风险,请确保你有权限这样做)  
cp /etc/shadow /root/shadow.txt  
  
# 检测弱口令  
cd /root/john-1.8.0/run/  
./john /root/shadow.txt  
  
# 查看检测结果  
./john --show /root/shadow.txt  
  
# 使用密码字典检测  
vim /root/pass.list  
./john --wordlist=/root/pass.list /root/shadow.txt  
./john --show /root/shadow.txt

2:网络扫描NMAP

复制代码
# 安装 NMAP  
yum install -y nmap  
  
# 扫描本机  
nmap 127.0.0.1  
  
# 扫描常用 UDP 端口  
nmap -sU 127.0.0.1  
  
# 显示网络接口(仅为了确认IP地址)  
ifconfig  
  
# 扫描网段中启用 21 端口的主机  
nmap -p 21 192.168.10.0/24  
  
# 扫描存活主机  
nmap -sn 192.168.10.0/24  
  
# 扫描主机是否开启 SMB 共享(139, 445 端口)  
nmap -p 139,445 192.168.10.10-20  
  
# 扫描类型示例  
# TCP SYN 扫描  
nmap -sS 192.168.10.10  
  
# TCP 连接扫描  
nmap -sT 192.168.10.10  
  
# TCP FIN 扫描  
nmap -sF 192.168.10.10  
  
# UDP 扫描  
nmap -sU 192.168.10.10  
  
# ICMP 扫描  
nmap -sn 192.168.10.10  
  
# 跳过 ping 检测  
nmap -Pn 192.168.10.103
相关推荐
鹏大师运维2 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰2 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
云边云科技_云网融合2 小时前
云边云科技亮相 2026 WOD 制造业数智化博览会 云网融合赋能制造焕新
人工智能·科技·安全·制造
weixin_604236673 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春3 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks4 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
56AI4 小时前
2026 企业级AI智能体开发平台推荐:聚焦底层安全与准确率的智能体平台
人工智能·安全·智能体
AI智图坊4 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
站斧小威5 小时前
TikTok跨境电商浏览器怎么使用:多账号防关联,IP独立隔离
安全
bjzhang755 小时前
CentOS下安装MySQL详解
linux·mysql·centos