可使用ansible实现linux服务器基础环境、安全策略与常用服务的无交互自动化配置:包括ssh免密连接、系统初始化、ssh加固、工具部署及防火墙日志策略。

如果您刚完成一台Linux服务器的初始安装,需要快速统一配置基础环境、安全策略和常用服务,则可以使用Ansible实现无交互、可复用的自动化配置。以下是具体实施步骤:
一、准备Ansible控制节点与目标主机连接
Ansible通过SSH协议管理远程主机,需确保控制节点能免密登录目标服务器,并具备Python运行环境。此步骤为后续所有操作的前提。
1、在控制节点上安装Ansible:pip install ansible 或使用系统包管理器(如 apt install ansible)。
2、生成SSH密钥对:ssh-keygen -t ed25519 -f ~/.ssh/id_ansible -N ""。
3、将公钥复制至目标服务器:ssh-copy-id -i ~/.ssh/id_ansible.pub user@target_ip。
4、创建Ansible主机清单文件 inventory.ini,内容为:[servers] 192.168.1.100 ansible_user=user ansible_ssh_private_key_file=~/.ssh/id_ansible。
二、编写基础系统初始化Playbook
该Playbook用于执行首次启动后的标准化操作,包括更新软件源、升级系统、禁用IPv6、配置时区与NTP等不可逆的基础设置。
1、创建文件 init.yml,定义 gather_facts: true 以获取目标主机信息。
2、使用 apt 模块更新缓存并升级所有包:apt: update_cache=yes upgrade=dist(Debian/Ubuntu)。
3、使用 yum 模块执行等效操作:yum: name=* state=latest update_cache=yes(RHEL/CentOS)。
4、禁用IPv6内核参数:lineinfile: path=/etc/sysctl.conf line='net.ipv6.conf.all.disable_ipv6 = 1' create=yes,随后执行 sysctl -p。
5、配置时区与时间同步:timezone: name=Asia/Shanghai,并启用 systemd_service: name=chronyd enabled=yes state=started。
三、配置SSH安全加固策略
默认SSH配置存在弱策略风险,本方法通过Ansible批量修改sshd_config并重载服务,提升远程访问安全性。
1、备份原始配置:copy: src=/etc/ssh/sshd_config dest=/etc/ssh/sshd_config.backup owner=root group=root mode='0600'。
2、禁用密码认证:lineinfile: path=/etc/ssh/sshd_config regexp='^PasswordAuthentication' line='PasswordAuthentication no'。
3、限制登录用户列表:lineinfile: path=/etc/ssh/sshd_config line='AllowUsers admin deploy' create=yes。
4、修改SSH端口(可选):lineinfile: path=/etc/ssh/sshd_config regexp='^Port' line='Port 2222'。
5、重载SSH服务:systemd: name=sshd state=reloaded(或 service: name=sshd state=reloaded)。
四、部署常用运维工具与用户环境
为新服务器预装高频工具(如htop、curl、jq、vim-enhanced)并为指定用户配置标准shell环境,减少手动干预。
1、使用 apt 或 yum 模块安装工具集:name: ["htop", "curl", "jq", "vim-enhanced"] state=present。
2、创建专用运维用户:user: name=deploy shell=/bin/bash generate_ssh_key=yes ssh_key_bits=4096。
3、将公钥注入用户authorized_keys:authorized_key: user=deploy key="{{ lookup('file', '/home/admin/.ssh/id_rsa.pub') }}"。
4、配置用户默认bashrc,添加别名与提示符:copy: src=files/.bashrc dest=/home/deploy/.bashrc owner=deploy group=deploy mode='0644'。
五、应用防火墙与日志保留策略
通过Ansible统一启用UFW(Ubuntu)或firewalld(RHEL),并调整rsyslog保留周期,满足基础合规性要求。
1、对于Ubuntu系统,启用UFW并放行必要端口:ufw: state=enabled policy=deny rule=allow port=2222 proto=tcp(若已改SSH端口)。
2、对于RHEL系统,启用firewalld并开放服务:firewalld: service=ssh permanent=yes state=enabled,随后执行 firewalld: service=ntp permanent=yes state=enabled。
3、修改rsyslog配置以保留90天日志:lineinfile: path=/etc/rsyslog.conf line='$ActionFileDefaultTemplate RSYSLOG_ForwardFormat' insertafter='^\$ActionFileDefaultTemplate' create=yes。
4、设置logrotate规则:copy: src=files/logrotate.d/syslog dest=/etc/logrotate.d/syslog owner=root group=root mode='0644',其中包含 rotate 90 指令。










