雁过留声 发表于 2025-3-20 12:25:36

ansible实现服务器安全配置基线自动化核查及修复

【个人感悟拙见】
吾生也有涯,而知也无涯,以有涯随无涯,则殆已! ---《庄子·内篇·养生主第三节》
知识是无穷无尽无限多的,本随笔用到ansible相关技能栈,不建议去把ansible全部知识点学完,可大致了解ansible是什么,能做些什么。然后结合实际工作需要场景去现学现用特定知识点。参考链接:【拥抱运维次元的哆啦A梦】什么是Ansible?
【功效】
通过ansible playbook实现一次编排,对批量服务器开展安全基线核查及修复任务,提升安全运维自动化能力。同时ansible playbook基于.yml文件进行管理,方便后续更新维护。
【技能栈】

[*]Ansible
[*]Linux
[*]Python
【代码】

[*]暗码过期安全配置,核查并配置/etc/login.defs文件
PASS_MAX_DAYS   90   #设置暗码过期日期
PASS_MIN_DAYS   1      #设置暗码最少更改日期
PASS_MIN_LEN    8      #设置暗码最小长度
PASS_WARN_AGE   7      #设置过期提前警告天数
点击查看代码---
- name: 服务器安全基线配置检查
hosts: k8s-test1         # 指定目标主机组/节点
gather_facts: no         # 禁用事实收集以加快执行速度
vars:                      # 定义变量区
    file_name: "/etc/login.defs"   # 需修改的目标配置文件路径
become: true               # 启用特权权限执行任务
tasks:                     # 任务定义区
    - name: "配置密码过期天数"
      lineinfile:            # 使用行编辑模块
      path: '{{ file_name }}'   # 目标文件路径(变量引用)
      regexp: '^PASS_MAX_DAYS\s+\S+$'# 正则匹配原配置行
      line: 'PASS_MAX_DAYS   90'# 新配置值(90天过期)
      state: present       # 确保存在该配置

    - name: "配置密码最少更改日期"
      lineinfile:
      path: '{{ file_name }}'      
      regexp: '^PASS_MIN_DAYS\s+\S+$'
      line: 'PASS_MIN_DAYS   1'    # 最小间隔1天才能修改密码
      state: present

    - name: "配置密码最小长度"
      lineinfile:
      path: '{{ file_name }}'
      regexp: '^PASS_MIN_LEN\s+\S+$'
      line: 'PASS_MIN_LEN    8'    # 密码长度至少8位
      state: present

    - name: "配置密码过期提前警告天数"
      lineinfile:
      path: '{{ file_name }}'
      regexp: '^PASS_WARN_AGE\s+\S+$'
      line: 'PASS_WARN_AGE   7'    # 过期前7天提醒
      state: present
[*]暗码复杂度安全配置,核查并配置/etc/pam.d/system-auth文件
password    requisite   pam_cracklib.so minlen=8 ucredit=-2 lcredit=-1 dcredit=-4 ocredit=-1


[*]minlen:最小暗码长度
[*]dcredit:最少数字
[*]ucredit:最少大写字母
[*]ocredit:最少特别字符
[*]lcredit:最少小写字符
[*]retry:尝试次数
[*]difok:最少不同字符
点击查看代码- name: 服务器安全基线配置检查
hosts: k8s-test1
gather_facts: no
vars:
    file_name: "/etc/pam.d/system-auth"
become: true
tasks:
    - name: "配置密码复杂度"
      lineinfile:
      path: '{{ file_name }}'
      regexp: '^password    requisite   pam_cracklib.so.*$'
      line: 'password    requisite   pam_cracklib.so retry=3 minlen=8 maxrepeat=4 ucredit=-2 lcredit=-1 dcredit=-4 ocredit=-1 difok=3 gecoscheck=1'
      state: present【隐含条件】

[*]已在linux服务器上安装ansible,安装方法可自行上网搜索。
[*]配置了ansible操作主机对客户端主机的免密登录,linux免密登录配置方法可自行上网搜索。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: ansible实现服务器安全配置基线自动化核查及修复