在Ansible中编写剧本成功批量主机安保加固

在<< 初步应用Ansible成功批量主机智能化治理 >>文章中, 我初步成功了经过编写清单和剧原本成功多台主机的智能化治理,在本章节中, 我将应用Ansible的剧原本成功更适用、更复杂一点的性能, 关键性能包括三个:

1.编写剧本

假设只讲原理,没有通常, 学习起来会比拟单调, 所以我会在编写剧本的环节中边通常边解说剧本的语法。

在 上篇文章 中, 咱们曾经知道剧本是一个YAML格局文件, 在扫尾,咱们要加载一切的远程治理hosts,语法如下:

- hosts: all

还记得在上一章编写的清单文件inventory.yaml吗,看看外面的内容:

hosts: all自动会加载这里的一切IP地址, 紧随其后的命令是:

become: yes

该命令在Ansible中示意提权口头。

自动状况下,Ansible是以普通用户身份经过SSH衔接到远程主机的。但有些义务须要 root 或 sudo 权限,比如服务的重启,文件权限的修正等。这时就须要经常使用become模块提权, 加上become:yes示意这个剧本中的一切义务都须要提权口头。Ansible会在口头义务时智能切换到root身份或指标用户身份,而后口头指定的义务。

become模块十分弱小,可以精细控制在剧本中的提权行为,包括:

-以哪个身份提权(自动root,可以指定其余用户)-提权经常使用的方法(sudo、su等)-提权的明码-仅在某些义务中提权

紧接着就是编写咱们的义务了, 为了繁难引见, 我先给出一个完整的服务剧本,如图:

- hosts: allbecome: yestasks:- name: 修正SSH端口lineinfile:path: /etc/ssh/sshd_configregexp: '^Port'line: 'Port 2222'- name: 自动开启防火墙ufw:state: enabled- name: 在防火墙中开启2222端口ufw:rule: allowport: '2222'- name: 防火墙拒绝其它端口衔接ufw:rule: denydirection: indelete: yes- name: 准许指定的IP访问ufw:rule: allowsrc: 192.168.201.202- name: 拒绝一切其它IP访问ufw:rule: denysrc: 0.0.0.0/0- name: 重启ufw防火墙service:name: ufwstate: restarted- name: 重启SSH服务service:name: sshdstate: restarted

可以看出, 义务tasks标签上方有8个子项, 每个子项都有一个name, 这个name示意每个子义务的名字, 繁难咱们辨别子义务。

子义务1: 修正SSH端口

该义务经常使用了lineinfile模块, 目的是在门路/etc/ssh/sshd_config文件中按行搜查, 经过正则regexp婚配Port, 而后将其修正为2222端口。

咱们可以关上/etc/ssh/sshd_config文件看一下, 查找到该项:

在ubuntu系统中, Port普通在ssd_config文件的最后一行。

子义务2:自动开启防火墙

关于ubuntu系统来说,防火墙经常使用的是ufw, 这里将形态state一直置为:enabled, 由于大局部刚装完的系统自动没有开启ufw,因此这里须要提早设置形态, 否则会造成前面操作ufw不成功。

子义务3: 在防火墙中开启2222端口

在该义务中,咱们将之前修正的SSH服务的2222端口参与到防火墙中, 准许外界经过2222端口访问本机。

子义务4:防火墙拒绝其它端口衔接

在该义务中, 咱们关键设置了拒绝规定, 在防火墙中,除了2222端口之外的其它一切端口所有删除屏蔽掉。

子义务5:准许指定的IP访问

与上方的端口相反,这里设置只准许某一个IP访问本机,这里是只准许192.168.201.202主机访问。

子义务6:拒绝一切其它IP访问

同上方端口的拒绝规定, 拒绝除192.168.201.202的其它IP地址访问。

子义务7:重启ufw防火墙

这里关键经常使用restarted重启ufo防火墙,留意,这里不能用reload, 或者会造成防火墙重启失败, 用restart比拟稳当。

子义务8:重启SSH服务

经过设置restarted形态重启SSH服务

2.多义务同步口头

编写完剧本内容之后, 输入以下命令口头即可:

# ansible-playbook -i inventory.yaml playbook.yaml

假设不出异常, 会看到以下口头结果:

假设在口头环节中产生失误, 会看到很醒目的揭示,并给进口头形态, 如图:

3.结果验证

首先咱们看一下端口修正状况, 发现曾经所有将SSH端口修正为2222端口,并可以所有以2222端口登录, 如图:

接着咱们看一下IP限度状况, 上方登录的所有是在192.168.201.202机器上登录,而在我团体电脑上登录却失败,如图:

咱们登录到三台机器上看一下防火墙规定, 曾经依照剧本要求参与了对应规定,如图:

您可能还会对下面的文章感兴趣: