florianutz.ubuntu2004_cis

Ubuntu 20.04 CIS STIG

构建状态
Ansible角色

该角色基于18.04迁移。任务内容是正确的,但需要重新排序以符合20.04基准。欢迎贡献。

配置Ubuntu 20.04机器以符合CIS标准。默认情况下,会纠正1级和2级发现。

该角色将对系统进行更改,可能会导致系统出现问题。它不是审计工具,而是用于审计后进行整改的工具。

基于 CIS Ubuntu Linux 20.04 LTS基准 - v1.0.0 - 2020年7月21日

反馈

  • 如果您喜欢我们的工作,但无法自行贡献代码,请花点时间在Ansible Galaxy上评价。您可以轻松地给开发者正面反馈。
    Galaxy社区评分
  • 如果您在角色中发现bug,但自己无法修复,请提交一个问题,并尽可能提供详细信息。请记住,所有开发者都是在业余时间进行项目工作,可能需要一些时间才能收到反馈。
    问题页面

重要安装步骤

如果您想通过ansible-galaxy命令安装,请按照以下方式运行:

ansible-galaxy install -p roles -r requirements.yml

在requirements.yml文件中包含以下内容:

- src: https://github.com/florianutz/ubuntu2004_cis.git

示例剧本

您可以在下方找到一个示例剧本。请务必阅读文档并查看您的设置。例如,默认设置将卸载X服务器!

- name: 加固服务器
  hosts: servers
  become: yes

  roles:
    - ubuntu2004_cis

要运行此存储库中的任务,首先在存储库上级创建此文件(即.playbook.yml和ubuntu2004_cis目录应在同一层级),然后查看defaults/main.yml文件,并禁用您不想执行的任何规则/部分。

假设您将文件命名为site.yml,请使用以下命令运行:

ansible-playbook site.yml

需求

在运行此剧本之前,请仔细阅读任务,确保这些更改不会破坏您的系统。

角色变量

在defaults/main.yml中定义了许多角色变量。以下是最重要的列表。

ubuntu2004cis_notauto: 运行CIS检查,这些检查通常我们不希望自动化,因为很可能会破坏系统(默认:false)

ubuntu2004cis_section1: CIS - 一般设置(第1部分)(默认:true)

ubuntu2004cis_section2: CIS - 服务设置(第2部分)(默认:true)

ubuntu2004cis_section3: CIS - 网络设置(第3部分)(默认:true)

ubuntu2004cis_section4: CIS - 日志和审计设置(第4部分)(默认:true)

ubuntu2004cis_section5: CIS - 访问、身份验证和授权设置(第5部分)(默认:true)

ubuntu2004cis_section6: CIS - 系统维护设置(第6部分)(默认:true)

禁用所有selinux功能

ubuntu2004cis_selinux_disable: false

服务变量

####这些控制服务器是否允许持续运行这些服务

ubuntu2004cis_avahi_server: false  
ubuntu2004cis_cups_server: false  
ubuntu2004cis_dhcp_server: false  
ubuntu2004cis_ldap_server: false  
ubuntu2004cis_telnet_server: false  
ubuntu2004cis_nfs_server: false  
ubuntu2004cis_rpc_server: false  
ubuntu2004cis_ntalk_server: false  
ubuntu2004cis_rsyncd_server: false  
ubuntu2004cis_tftp_server: false  
ubuntu2004cis_rsh_server: false  
ubuntu2004cis_nis_server: false  
ubuntu2004cis_snmp_server: false  
ubuntu2004cis_squid_server: false  
ubuntu2004cis_smb_server: false  
ubuntu2004cis_dovecot_server: false  
ubuntu2004cis_httpd_server: false  
ubuntu2004cis_vsftpd_server: false  
ubuntu2004cis_named_server: false  
ubuntu2004cis_allow_autofs: false

将服务器指定为邮件服务器

ubuntu2004cis_is_mail_server: false

仅供主机的系统网络参数

ubuntu2004cis_is_router: false

IPv6 需要

ubuntu2004cis_ipv6_required: true

AIDE

ubuntu2004cis_config_aide: true

AIDE cron设置

ubuntu2004cis_aide_cron:
  cron_user: root
  cron_file: /etc/crontab
  aide_job: '/usr/sbin/aide --check'
  aide_minute: 0
  aide_hour: 5
  aide_day: '*'
  aide_month: '*'
  aide_weekday: '*'  

如果在您的环境中需要X Windows,请设置为'true'

ubuntu2004cis_xwindows_required: no

客户应用程序要求

ubuntu2004cis_openldap_clients_required: false
ubuntu2004cis_telnet_required: false
ubuntu2004cis_talk_required: false  
ubuntu2004cis_rsh_required: false
ubuntu2004cis_ypbind_required: false
ubuntu2004cis_rpc_required: false

时间同步

ubuntu2004cis_time_synchronization: chrony
ubuntu2004cis_time_Synchronization: ntp

ubuntu2004cis_time_synchronization_servers:
  - uri: "0.pool.ntp.org"
    config: "minpoll 8"
  - uri: "1.pool.ntp.org"
    config: "minpoll 8"
  - uri: "2.pool.ntp.org"
    config: "minpoll 8"
  - uri: "3.pool.ntp.org"
    config: "minpoll 8"

- 名称: "SCORED | 1.1.5 | 补丁 | 确保/tmp分区设置noexec选项"

此项未实现,/tmp的noexec会干扰apt。/tmp在软件包安装期间包含可执行脚本。


1.5.3 | PATCH | 确保单用户模式要求身份验证

默认情况下禁用,因为它设置了root的随机密码。要启用,请设置:

ubuntu2004cis_rule_1_5_3: true

要使用随机密码以外的密码:

ubuntu2004cis_root_password: '新密码'
ubuntu2004cis_firewall: firewalld
ubuntu2004cis_firewall: iptables

5.3.1 | 补丁 | 确保配置密码创建要求

ubuntu2004cis_pwquality:
  - key: 'minlen'
    value: '14'
  - key: 'dcredit'
    value: '-1'
  - key: 'ucredit'
    value: '-1'
  - key: 'ocredit'
    value: '-1'
  - key: 'lcredit'
    value: '-1'

依赖

与Ansible 2.10开发和测试过。

标签

有许多标签可供精确控制哪些内容可以更改,哪些内容不能为空。

一些使用标签的示例:

    # 审核并修补站点
    ansible-playbook site.yml --tags="patch"

推荐列表:

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 确保/configured (自动化)
    • 1.1.3 确保/tmp分区设置nodev选项(自动)
    • 1.1.4 确保/tmp分区设置nosuid选项(自动)
    • 1.1.5 确保/tmp分区设置noexec选项(自动)
    • 1.1.6 确保/configured (自动)
    • 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 配置sudo
    • 1.3.1 确保安装了sudo(自动)
    • 1.3.2 确保sudo命令使用pty(自动)
    • 1.3.3 确保存在sudo日志文件(自动)
  • 1.4 文件系统完整性检查
    • 1.4.1 确保安装了AIDE(自动)
    • 1.4.2 确保定期检查文件系统完整性(自动)
  • 1.5 安全启动设置
    • 1.5.1 确保设置了引导加载程序密码(自动)
    • 1.5.2 确保引导加载程序配置的权限(自动)
    • 1.5.3 确保单用户模式要求身份验证(自动)
  • 1.6 额外的进程强化
    • 1.6.1 确保启用XD/NX支持(自动)
    • 1.6.2 确保启用地址空间布局随机化(ASLR)(自动)
    • 1.6.3 确保禁用prelink(自动)
    • 1.6.4 确保限制核心转储(自动)
  • 1.7 强制访问控制
    • 1.7.1 配置AppArmor
      • 1.7.1.1 确保安装了AppArmor(自动)
      • 1.7.1.2 确保在引导加载程序配置中启用了AppArmor(自动)
      • 1.7.1.3 确保所有AppArmor配置文件处于强制执行或投诉模式(自动)
      • 1.7.1.4 确保所有AppArmor配置文件都在执行中(自动)
  • 1.8 警告横幅
    • 1.8.1 命令行警告横幅
      • 1.8.1.1 确保每天的消息配置正确(自动)
      • 1.8.1.2 确保本地登录警告横幅配置正确(自动)
      • 1.8.1.3 确保远程登录警告横幅配置正确(自动)
      • 1.8.1.4 确保/etc/motd上的权限配置(自动)
      • 1.8.1.5 确保/etc/issue上的权限配置(自动)
      • 1.8.1.6 确保/etc/issue.net上的权限配置(自动)
  • 1.9 确保更新、补丁和额外的安全软件已安装(手动)
  • 1.10 确保GDM已删除或登录配置(自动)

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 配置简单防火墙
      • 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 配置nftables
      • 3.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 配置iptables
      • 3.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的 permissions(自动)
    • 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 LogLevel适当(自动)
    • 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登录宽限时间设置为1分钟或更少(自动)
    • 5.2.17 确保SSH访问受到限制(自动)
    • 5.2.18 确保配置了SSH警告横幅(自动)
    • 5.2.19 确保启用SSH PAM(自动)
    • 5.2.20 确保禁用SSH AllowTcpForwarding(自动)
    • 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 Password Suite参数
      • 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 确保/etc/gshadow的权限已配置(自动)
    • 6.1.10 确保不存在全世界可写的文件(自动)
    • 6.1.11 确保不存在无主文件或目录(自动)
    • 6.1.12 确保不存在无组文件或目录(自动)
    • 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组为空(自动)

许可证

MIT

其他

此存储库来源于MindPointGroup的工作。

关于项目

Ansible role to apply Ubuntu 20.04 CIS Baseline

安装
ansible-galaxy install florianutz.ubuntu2004_cis
许可证
mit
下载
7.9k
拥有者