alivx.cis_ubuntu_20_04_ansible
<div align="center">
<img src="https://raw.githubusercontent.com/alivx/CIS-Ubuntu-20.04-Ansible/master/files/header.png">
</div>
Ansible CIS Ubuntu 20.04 LTS 硬化 V1.1.0 最新版 [](https://travis-ci.com/alivx/CIS-Ubuntu-20.04-Ansible)
=========
CIS 硬化的 Ubuntu:针对关键任务系统的网络攻击和恶意软件预防
CIS 基准通过移除以下内容来锁定你的系统:
1. 不安全的程序。
2. 禁用未使用的文件系统。
3. 禁用不必要的端口或服务。
4. 审计特权操作。
5. 限制管理权限。
CIS 基准建议在公共和私有云的虚拟机中被采用。它们也被用于保护本地部署。对于某些行业,针对公开认可的标准进行系统硬化是审计员所要求的标准。CIS 基准通常是审计员推荐给需要 PCI-DSS 和 HIPAA 合规性行业(如银行、电信和医疗保健)的系统硬化选择。如果你试图获得行业认可的安全标准的合规性,例如 PCI DSS、APRA 或 ISO 27001,那么你需要证明你已在评估范围内的所有系统上应用了文档化的硬化标准。
Ubuntu CIS 基准分为不同的配置文件,分别是 **‘Level 1’** 和 **‘Level 2’**,旨在服务器和工作站环境中使用。
**Level 1 配置文件** 旨在以实用和谨慎的方式保护系统,而不会过多影响性能。
* 禁用不需要的文件系统,
* 限制用户对文件和目录的权限,
* 禁用不需要的服务。
* 配置网络防火墙。
**Level 2 配置文件** 适用于安全性被视为非常重要的情况下,可能对系统的性能产生负面影响。
* 创建单独的分区,
* 审计特权操作。
Ubuntu CIS 硬化工具允许你根据配置文件(Level 1 或 Level 2)和工作环境(服务器或工作站)选择所需的硬化水平。
示例:
```Bash
ansible-playbook -i inventory cis-ubuntu-20.yaml --tags="level_1_server"
你可以通过运行以下命令列出所有标签:
ansible-playbook -i host run.yaml --list-tags
我根据以下文档编写了所有角色:
CIS Ubuntu Linux 20.04 LTS 基准
v1.1.0 - 2020年7月21日
检查示例目录
要求
在运行此剧本之前,你应该仔细阅读任务,以确保这些更改不会破坏你的系统。
你可以通过该链接下载 免费 CIS 基准书: 免费基准
要开始使用此角色,你只需安装 Ansible。 安装 Ansible
角色变量
在运行此剧本之前,你必须查看所有默认配置。在 defaults/main.yml
中定义了许多角色变量。
- 如果你考虑将此角色应用于任何服务器,应该对 CIS 基准有基本了解,并认识到它可能对系统产生的影响。
- 阅读并更改可配置的默认值。
应该立即考虑排除的配置示例:
5.1.8 确保 cron 仅限授权用户使用 和 5.2.17 确保 SSH 访问受限,这默认情况下有效地限制了对主机的访问(包括通过 SSH)。
例如:
- CIS-Ubuntu-20.04-Ansible/defaults/main.yml
# 第5部分
# 5.1.8 确保 cron 仅限授权用户使用
allowed_hosts: "ALL: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 确保 SSH 访问受限
allowed_users: ali saleh baker root #用 None 或用户列表,用户之间用空格分开
如果你需要更改文件模板,可以在 files/templates/*
下找到。
依赖关系
- Ansible 版本 > 2.9
示例剧本
以下是一个剧本示例:
---
- hosts: host1
become: yes
remote_user: root
gather_facts: no
roles:
- { role: "CIS-Ubuntu-20.04-Ansible",}
运行所有
如果你想运行所有标签,可以使用以下命令:
ansible-playbook -i [inventoryfile] [playbook].yaml
运行特定部分
ansible-playbook -i host run.yaml -t section2
运行多个部分
ansible-playbook -i host run.yaml -t section2 -t 6.1.1
注意: 运行单个任务时,请确保任务之间的依赖关系。例如,如果在运行 4.1.1.2 确保 auditd 服务被启用 之前运行 4.1.1.1 确保 auditd 已安装,则在运行时会出现错误。
带有
波浪线的部分尚未实现,目前我正在进行中。确保选择一次性服务,我使用的是ntp,但你也可以使用其他服务,如 [
systemd-timesyncd
,ntp
,chrony
],请在defaults/main.yaml
设置下选择。测试 2020年11月1日 在 AWS EC2 ubuntu 20.04 LTS 测试 [通过] 2020年11月1日 在本地 Ubuntu 20.04 LTS 服务器测试 [通过]
在运行之前,请确保在
defaults/main.yaml
中更新用户列表,包括list_of_os_users
和allowed_users
确保
在defaults/main.yaml
中设置正确的子网,包括allowd_hosts
角色表:
1 初始设置
- 1.1 文件系统配置
- 1.1.1 禁用未使用的文件系统
- 1.1.1.1 确保不允许挂载 cramfs 文件系统(自动)
- 1.1.1.2 确保不允许挂载 freevxfs 文件系统(自动)
- 1.1.1.3 确保不允许挂载 jffs2 文件系统(自动)
- 1.1.1.4 确保不允许挂载 hfs 文件系统(自动)
- 1.1.1.5 确保不允许挂载 hfsplus 文件系统(自动)
- 1.1.1.6 确保不允许挂载 udf 文件系统(自动)
- 1.1.1.7 确保不允许挂载 FAT 文件系统(手动)
- 1.1.2 确保 /tmp 已配置(自动)
- 1.1.3 确保 /tmp 分区设置 nodev 选项(自动)
- 1.1.4 确保 /tmp 分区设置 nosuid 选项(自动)
- 1.1.5 确保 /tmp 分区设置 noexec 选项(自动)
- 1.1.6 确保 /dev/shm 已配置(自动)
- 1.1.7 确保 /dev/shm 分区设置 nodev 选项(自动)
- 1.1.8 确保 /dev/shm 分区设置 nosuid 选项(自动)
- 1.1.9 确保 /dev/shm 分区设置 noexec 选项(自动)
1.1.10 确保 /var 存在单独的分区(自动)1.1.11 确保 /var/tmp 存在单独的分区(自动)1.1.12 确保 /var/tmp 分区设置 nodev 选项(自动)1.1.13 确保 /var/tmp 分区设置 nosuid 选项(自动)1.1.14 确保 /var/tmp 分区设置 noexec 选项(自动)1.1.15 确保 /var/log 存在单独的分区(自动)1.1.16 确保 /var/log/audit 存在单独的分区(自动)1.1.17 确保 /home 存在单独的分区(自动)1.1.18 确保 /home 分区设置 nodev 选项(自动)1.1.19 确保可移动媒体分区设置 nodev 选项(手动)1.1.20 确保可移动媒体分区设置 nosuid 选项(手动)1.1.21 确保可移动媒体分区设置 noexec 选项(手动)- 1.1.22 确保所有世界可写目录的 sticky 位被设置(自动)
- 1.1.23 禁用自动挂载(自动)
- 1.1.24 禁用 USB 存储(自动)
1.2 配置软件更新
1.2.1 确保软件包管理器的仓库已配置(手动)1.2.2 确保已配置 GPG 密钥(手动)
1.3 文件系统完整性检查
- 1.3.1 确保安装 AIDE(自动)
- 1.3.2 确保定期检查文件系统的完整性(自动)
1.4 安全启动设置
- 1.4.1 确保已设置引导加载程序密码(自动)
- 1.4.2 确保引导加载程序配置的权限已设置(自动)
- 1.4.3 确保单用户模式需要身份验证(自动)
1.5 附加进程硬化
- 1.5.1 确保启用 XD/NX 支持(自动)
- 1.5.2 确保启用地址空间布局随机化(ASLR)(自动)
- 1.5.3 确保禁用预链接(自动)
- 1.5.4 确保受限核心转储(自动)
1.6 强制访问控制
- 1.6.1 配置 AppArmor
- 1.6.1.1 确保安装 AppArmor(自动)
- 1.6.1.2 确保在引导加载程序配置中启用 AppArmor(自动)
- 1.6.1.3 确保所有 AppArmor 配置文件处于强制或投诉模式(自动)
- 1.6.1.4 确保所有 AppArmor 配置文件均为强制执行(自动)
1.7 警告横幅
- 1.7.1.1 确保第每日信息正确配置(自动)
- 1.7.1.2 确保本地登录警告横幅正确配置(自动)
- 1.7.1.3 确保远程登录警告横幅正确配置(自动)
- 1.7.1.4 确保 /etc/motd 权限已配置(自动)
- 1.7.1.5 确保 /etc/issue 权限已配置(自动)
- 1.7.1.6 确保 /etc/issue.net 权限已配置(自动)
1.8 GNOME 显示管理器
- 1.8.1 确保已删除 GNOME 显示管理器(手动)
- 1.8.2 确保配置 GDM 登录横幅(手动)
- 1.8.3 确保禁用用户列表(手动)
- 1.8.4 确保未启用 XDCMP(手动)
1.9 确保安装更新、补丁和其他安全软件(自动)
2 服务
- 2.1 inetd 服务
- 2.1.1 确保未安装 xinetd(自动)
- 2.1.2 确保未安装 openbsd-inetd(自动)
- 2.2 特殊用途服务
- 2.2.1 时间同步
- 2.2.1.1 确保正在使用时间同步(自动)
- 2.2.1.2 确保配置 systemd-timesyncd(手动)
- 2.2.1.3 确保配置 chrony(自动)
- 2.2.1.4 确保配置 ntp(自动)
- 2.2.2 确保未安装 X 窗口系统(自动)
- 2.2.3 确保未安装 Avahi 服务器(自动)
- 2.2.4 确保未安装 CUPS(自动)
- 2.2.5 确保未安装 DHCP 服务器(自动)
- 2.2.6 确保未安装 LDAP 服务器(自动)
- 2.2.7 确保未安装 NFS(自动)
- 2.2.8 确保未安装 DNS 服务器(自动)
- 2.2.9 确保未安装 FTP 服务器(自动)
- 2.2.10 确保未安装 HTTP 服务器(自动)
- 2.2.11 确保未安装 IMAP 和 POP3 服务器(自动)
- 2.2.12 确保未安装 Samba(自动)
- 2.2.13 确保未安装 HTTP 代理服务器(自动)
- 2.2.14 确保未安装 SNMP 服务器(自动)
- 2.2.15 确保邮件传输代理已配置为本地模式(自动)
- 2.2.16 确保未安装 rsync 服务(自动)
- 2.2.17 确保未安装 NIS 服务器(自动)
2.3 服务客户端
- 2.3.1 确保未安装 NIS 客户端(自动)
- 2.3.2 确保未安装 rsh 客户端(自动)
- 2.3.3 确保未安装 talk 客户端(自动)
- 2.3.4 确保未安装 telnet 客户端(自动)
- 2.3.5 确保未安装 LDAP 客户端(自动)
- 2.3.6 确保未安装 RPC(自动)
2.4 确保删除或屏蔽非必要服务(手动)
3 网络配置
- 3.1 禁用未使用的网络协议和设备
- 3.1.1 禁用 IPv6(手动)
- 3.1.2 确保禁用无线接口(自动)
3.2 网络参数(仅限主机)
- 3.2.1 确保禁用数据包重定向发送(自动)
- 3.2.2 确保禁用 IP 转发(自动)
3.3 网络参数(主机和路由器)
- 3.3.1 确保不接受源路由的数据包(自动)
- 3.3.2 确保不接受 ICMP 重定向(自动)
- 3.3.3 确保不接受安全 ICMP 重定向(自动)
- 3.3.4 确保记录可疑数据包(自动)
- 3.3.5 确保忽略广播 ICMP 请求(自动)
- 3.3.6 确保忽略虚假 ICMP 响应(自动)
- 3.3.7 确保启用反向路径过滤(自动)
- 3.3.8 确保启用 TCP SYN Cookies(自动)
- 3.3.9 确保不接受 IPv6 路由器广告(自动)
3.4 不常见的网络协议
- 3.4.1 确保禁用 DCCP(自动)
- 3.4.2 确保禁用 SCTP(自动)
- 3.4.3 确保禁用 RDS(自动)
- 3.4.4 确保禁用 TIPC(自动)
3.5 防火墙配置
- 3.5.1 配置简单防火墙(Uncomplicated Firewall)
- 3.5.1.1 确保已安装简单防火墙(自动)
- 3.5.1.2 确保未安装 iptables-persistent(自动)
- 3.5.1.3 确保启용 ufw 服务(自动)
- 3.5.1.4 确保配置回环流量(自动)
- 3.5.1.5 确保配置出站连接(手动)
- 3.5.1.6 确保为所有开放端口存在防火墙规则(手动)
- 3.5.1.7 确保防火墙默认拒绝策略(自动)
3.5.2 配置 nftables3.5.2.1 确保已安装 nftables(自动)3.5.2.2 确保未安装或禁用简单防火墙(自动)3.5.2.3 确保清空 iptables(手动)3.5.2.4 确保存在表(自动)3.5.2.5 确保存在基本链(自动)3.5.2.6 确保配置回环流量(自动)3.5.2.7 确保配置出站和已建立连接(手动)3.5.2.8 确保防火墙默认拒绝策略(自动)3.5.2.9 确保启用 nftables 服务(自动)3.5.2.10 确保 nftables 规则是永久性的(自动)3.5.3 配置 iptables3.5.3.1.1 确保安装 iptables 包(自动)3.5.3.1.2 确保未安装 nftables(自动)3.5.3.1.3 确保未安装或禁用简单防火墙(自动)3.5.3.2.1 确保防火墙默认拒绝策略(自动)3.5.3.2.2 确保配置回环流量(自动)3.5.3.2.3 确保配置出站和已建立连接(手动)3.5.3.2.4 确保为所有开放端口存在防火墙规则(自动)3.5.3.3.1 确保 IPv6 防火墙默认拒绝策略(自动)3.5.3.3.2 确保配置 IPv6 回环流量(自动)3.5.3.3.3 确保为配置 IPv6 的出站和已建立连接(手动)3.5.3.3.4 确保为所有开放端口存在 IPv6 防火墙规则(手动)
4 日志记录与审计
- 4.1 配置系统帐户(auditd)
- 4.1.1 确保启用审计
- 4.1.1.1 确保安装 auditd(自动)
- 4.1.1.2 确保启用 auditd 服务(自动)
- 4.1.1.3 确保启用 auditd 启动前的审计(自动)
- 4.1.1.4 确保 audit_backlog_limit 足够(自动)
- 4.1.2 配置数据保留
- 4.1.2.1 确保配置审计日志存储大小(自动)
- 4.1.2.2 确保审计日志不会自动删除(自动)
- 4.1.2.3 确保审计日志满时禁用系统(自动)
- 4.1.3 确保收集修改日期和时间信息的事件(自动)
- 4.1.4 确保收集修改用户/组信息的事件(自动)
- 4.1.5 确保收集修改系统网络环境的事件(自动)
- 4.1.6 确保收集修改系统强制访问控制的事件(自动)
- 4.1.7 确保收集登录和注销事件(自动)
- 4.1.8 确保收集会话初始化信息(自动)
- 4.1.9 确保收集自愿访问控制权限修改事件(自动)
- 4.1.10 确保收集未成功的未经授权文件访问尝试(自动)
- 4.1.11 确保收集特权命令的使用(自动)
- 4.1.12 确保收集成功的文件系统挂载事件(自动)
- 4.1.13 确保收集用户的文件删除事件(自动)
- 4.1.14 确保收集系统管理范围(sudoers)的变动(自动)
- 4.1.15 确保收集系统管理员命令执行(sudo)的事件(自动)
- 4.1.16 确保收集内核模块的加载和卸载(自动)
- 4.1.17 确保审计配置是不可变的(自动)
4.2 配置日志记录
- 4.2.1 配置 rsyslog
- 4.2.1.1 确保已安装 rsyslog(自动)
- 4.2.1.2 确保启用 rsyslog 服务(自动)
- 4.2.1.3 确保配置日志记录(手动)
- 4.2.1.4 确保配置 rsyslog 默认文件权限(自动)
- 4.2.1.5 确保 rsyslog 配置为发送日志到远程日志主机(自动)
- 4.2.1.6 确保仅在指定日志主机上接受远程 rsyslog 消息(手动)
- 4.2.2 配置 journald
- 4.2.2.1 确保 journald 配置为发送日志到 rsyslog(自动)
- 4.2.2.2 确保 journald 配置为压缩大日志文件(自动)
- 4.2.2.3 确保 journald 配置为将日志文件写入持久磁盘(自动)
- 4.2.3 确保配置所有日志文件的权限(自动)
- 4.3 确保配置 logrotate(手动)
- 4.4 确保 logrotate 指定合适的权限(自动)
5 访问、身份验证和授权
- 5.1 配置基于时间的作业调度器
- 5.1.1 确保 cron 守护程序已启用并运行(自动)
- 5.1.2 确保 /etc/crontab 的权限已配置(自动)
- 5.1.3 确保 /etc/cron.hourly 的权限已配置(自动)
- 5.1.4 确保 /etc/cron.daily 的权限已配置(自动)
- 5.1.5 确保 /etc/cron.weekly 的权限已配置(自动)
- 5.1.6 确保 /etc/cron.monthly 的权限已配置(自动)
- 5.1.7 确保 /etc/cron.d 的权限已配置(自动)
- 5.1.8 确保 cron 仅限授权用户使用(自动)
- 5.1.9 确保 at 仅限授权用户使用(自动)
5.2 配置 SSH 服务器
- 5.2.1 确保 /etc/ssh/sshd_config 的权限已配置(自动)
- 5.2.2 确保 SSH 私钥文件的权限已配置(自动)
- 5.2.3 确保 SSH 公钥文件的权限已配置(自动)
- 5.2.4 确保 SSH 日志级别是合适的(自动)
- 5.2.5 确保禁用 SSH X11 转发(自动)
- 5.2.6 确保 SSH MaxAuthTries 设置为 4 或更少(自动)
- 5.2.7 确保启用 SSH IgnoreRhosts(自动)
- 5.2.8 确保禁用 SSH HostbasedAuthentication(自动)
- 5.2.9 确保禁用 SSH root 登录(自动)
- 5.2.10 确保禁用 SSH PermitEmptyPasswords(自动)
- 5.2.11 确保禁用 SSH PermitUserEnvironment(自动)
- 5.2.12 确保仅使用强加密(自动)
- 5.2.13 确保仅使用强 MAC 算法(自动)
- 5.2.14 确保仅使用强密钥交换算法(自动)
- 5.2.15 确保 SSH 空闲超时间隔已配置(自动)
- 5.2.16 确保 SSH LoginGraceTime 设置为一分钟或更少(自动)
- 5.2.17 确保 SSH 访问受限(自动)
- 5.2.18 确保 SSH 警告横幅已配置(自动)
- 5.2.19 确保启用 SSH PAM(自动)
- 5.2.20 确保禁用 SSH 允许 TCP 转发(自动)
- 5.2.21 确保配置 SSH MaxStartups(自动)
- 5.2.22 确保限制 SSH MaxSessions(自动)
5.3 配置 PAM
- 5.3.1 确保配置密码创建要求(自动)
- 5.3.2 确保配置失败密码尝试的锁定(自动)
- 5.3.3 确保限制密码重用(自动)
- 5.3.4 确保密码哈希算法为 SHA-512(自动)
5.4 用户账户和环境
- 5.4.1 设置 Shadow 密码套件参数
- 5.4.1.1 确保密码过期时间为 365 天或更少(自动)
- 5.4.1.2 确保配置密码更改之间的最小天数(自动)
- 5.4.1.3 确保密码过期警告天数为 7 天或更多(自动)
- 5.4.1.4 确保侵用密码锁定为 30 天或更少(自动)
- 5.4.1.5 确保所有用户最近的密码更改日期在过去(自动)
- 5.4.2 确保系统帐户的安全性(自动)
- 5.4.3 确保默认的 root 账户组为 GID 0(自动)
- 5.4.4 确保默认用户的 umask 为 027 或更具限制性(自动)
- 5.4.5 确保默认用户的 shell 超时时间为 900 秒或更少(自动)
- 5.5 确保 root 登录仅限于系统控制台(手动)
- 5.6 确保限制对 su 命令的访问(自动)
6 系统维护
- 6.1 系统文件权限
6.1.1 审计系统文件权限(手动)- 6.1.2 确保 /etc/passwd 的权限已配置(自动)
- 6.1.3 确保 /etc/gshadow 的权限已配置(自动)
- 6.1.4 确保 /etc/shadow 的权限已配置(自动)
- 6.1.5 确保 /etc/group 的权限已配置(自动)
- 6.1.6 确保 /etc/passwd- 的权限已配置(自动)
- 6.1.7 确保 /etc/shadow- 的权限已配置(自动)
- 6.1.8 确保 /etc/group- 的权限已配置(自动)
- 6.1.9 确保不存在世界可写文件(自动)
- 6.1.10 确保不存在无主文件或目录(自动)
- 6.1.11 确保不存在无组文件或目录(自动)
6.1.13 审计 SUID 可执行文件(手动)6.1.14 审计 SGID 可执行文件(手动)
6.2 用户和组设置
- 6.2.1 确保密码字段不为空(自动)
6.2.2 确保 root 是唯一的 UID 0 账户(自动)6.2.3 确保 root PATH 的完整性(自动)- 6.2.4 确保所有用户的主目录存在(自动)
- 6.2.5 确保用户主目录的权限为 750 或更具限制性(自动)
- 6.2.6 确保用户拥有自己的主目录(自动)
- 6.2.7 确保用户的点文件不是组可写或世界可写的(自动)
6.2.8 确保没有用户拥有 .forward 文件(自动)6.2.9 确保没有用户拥有 .netrc 文件(自动)6.2.10 确保用户的 .netrc 文件不是组或世界可访问的(自动)6.2.11 确保没有用户拥有 .rhosts 文件(自动)6.2.12 确保 /etc/passwd 中的所有组在 /etc/group 中存在(自动)6.2.13 确保没有重复的 UID 存在(自动)6.2.14 确保没有重复的 GID 存在(自动)6.2.15 确保没有重复的用户名存在(自动)6.2.16 确保没有重复的组名存在(自动)6.2.17 确保 shadow 组为空(自动)
故障排除
- 如果你想在同一台机器上运行剧本,请确保将此添加到运行任务中:
- hosts: 127.0.0.1
connection: local
- 如果遇到执行问题,请尝试在其他路径中运行剧本,例如
/srv/
。 - 对于
stderr: chage: user 'ubuntu' does not exist in /etc/passwd
这样的错误,请确保在CIS-Ubuntu-20.04-Ansible/defaults/main.yml
下更新配置。
TASK [CIS-Ubuntu-20.04-Ansible : 1.4.1 确保安装 AIDE] ***********************************************************************************************************************************************************************************************************fatal: [192.168.80.129]: FAILED! => {"cache_update_time": 1611229159, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\" install 'nullmailer' 'aide-common' 'aide' -o APT::Install-Recommends=no' failed: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "rc": 100, "stderr": "E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "stderr_lines": ["E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?"], "stdout": "", "stdout_lines": []}
- 对于上述错误,你需要确保没有正在后台运行的 apt 进程,或者你必须等待 apt 完成其进程。
TASK [CIS-Ubuntu-20.04-Ansible : 5.4.1.1 确保密码过期时间为 365 天或更少 | chage] ***************************************************************************************************************************************************************************failed: [192.168.80.129] (item=ubuntu) => {"ansible_loop_var": "item", "changed": true, "cmd": ["chage", "--maxdays", "300", "ubuntu"], "delta": "0:00:00.005478", "end": "2021-01-21 12:49:45.463615", "item": "ubuntu", "msg": "non-zero return code", "rc": 1, "start": "2021-01-21 12:49:45.458137", "stderr": "chage: user 'ubuntu' does not exist in /etc/passwd", "stderr_lines": ["chage: user 'ubuntu' does not exist in /etc/passwd"], "stdout": "", "stdout_lines": []}
- 确保在 defaults/main.yaml 下设置正确的用户。
TASK [CIS-Ubuntu-20.04-Ansible : 创建没有管理访问权限的用户] ***************************************************************************************************************
fatal: [golden]: FAILED! => {"msg": "crypt.crypt not supported on Mac OS X/Darwin, install passlib python module"}
安装 pip install passlib
许可证
GNU 通用公共许可证
作者信息
该角色最初由 Ali Saleh Baker 开发。
在为该库做出贡献之前,请先通过 GitHub 问题、电子邮件或其他途径与我讨论你希望进行的更改。 ```