geerlingguy.security
Ansible角色:安全(基础)
首先,一个重要的警告:服务器的安全是您自己的责任。如果您认为仅仅包含这个角色并添加防火墙就能使服务器安全,那您就错了。请学习有关Linux、网络和应用程序安全的知识,明白无论您知道多少,总有可能使您系统的每个部分更安全。
话虽如此,这个角色会在基于RedHat和Debian的Linux系统上执行一些基本的安全配置。它尝试:
- 安装监控不良SSH访问的软件(fail2ban)
- 配置SSH以提高安全性(禁用root登录、要求基于密钥的身份验证、允许设置自定义SSH端口)
- 设置自动更新(如果配置为这样做)
还有一些您可能想做的额外事项(这些不包含在这个角色中),以确保您的服务器更安全,比如:
- 使用logwatch或集中日志服务器分析和监控日志文件
- 安全配置用户账户和SSH密钥(该角色假设您不使用密码身份验证或以root身份登录)
- 配备良好配置的防火墙(可以查看Ansible Galaxy上的
geerlingguy.firewall
角色以获得灵活的示例)
再说一遍:您服务器的安全性是您的责任。
要求
出于显而易见的原因,如果您想通过此角色管理sudoers文件,则必须安装sudo
。
在RedHat/CentOS系统上,请确保安装了EPEL仓库(您可以包括geerlingguy.repo-epel
角色以进行安装)。
Debian/Ubuntu系统没有特殊要求。
角色变量
可用的变量如下所列,并带有默认值(参见defaults/main.yml
):
security_ssh_port: 22
您希望SSH可访问的端口。默认是22端口,但如果您在公开互联网运营服务器,并且没有防火墙阻止对22端口的访问,您会很快发现每天数千次登录尝试并不罕见。如果您想避免这些数千次的自动渗透尝试,可以将端口更改为非标准端口(例如2849)。
security_ssh_password_authentication: "no"
security_ssh_permit_root_login: "no"
security_ssh_usedns: "no"
security_ssh_permit_empty_password: "no"
security_ssh_challenge_response_auth: "no"
security_ssh_gss_api_authentication: "no"
security_ssh_x11_forwarding: "no"
SSH身份验证的安全设置。最好将这些保持为"no"
,但有时(特别是在初始服务器配置或您没有基于密钥的身份验证的情况下)可以将其中一个或全部安全地设置为'yes'
。注意:非常重要的一点是,您必须用引号引住'yes'或'no'的值。否则,您可能会锁定自己无法访问服务器。
security_ssh_allowed_users: []
# - alice
# - bob
# - charlie
允许通过SSH连接到主机的用户列表。如果列表中没有定义用户,则任务将被跳过。
security_ssh_allowed_groups: []
# - admins
# - devs
允许通过SSH连接到主机的用户组列表。如果列表中没有定义组,则任务将被跳过。
security_sshd_state: started
SSH守护进程的状态。通常应保持为started
。
security_ssh_restart_handler_state: restarted
restart ssh
处理程序的状态。通常应保持为restarted
。
security_sudoers_passwordless: []
security_sudoers_passworded: []
应添加到sudoers文件的用户列表,以便他们可以无需密码或每个命令都需要密码地作为root运行任何命令(通过sudo
)。
security_autoupdate_enabled: true
是否安装/启用yum-cron
(基于RedHat的系统)或unattended-upgrades
(基于Debian的系统)。无论如何,系统重启不会自动发生,自动升级也不能作为随意打补丁和管理软件包的借口,但自动更新可能作为另一个安全措施很有帮助。
security_autoupdate_blacklist: []
(仅限Debian/Ubuntu)应禁止自动更新的软件包列表。
security_autoupdate_additional_origins: []
# - "${distro_id}ESM:${distro_codename}-infra-security"
# - "Docker:${distro_codename}"
(仅限Debian/Ubuntu)要参考的来源列表。
security_autoupdate_reboot: false
(仅限Debian/Ubuntu)在无人值守升级期间是否在需要时重启。
security_autoupdate_reboot_time: "03:00"
(仅限Debian/Ubuntu)在security_autoupdate_reboot
设置为true
时,如果需要重启,触发重启的时间。以24小时“hh:mm”格式表示。
security_autoupdate_mail_to: ""
security_autoupdate_mail_on_error: true
(仅限Debian/Ubuntu)如果security_autoupdate_mail_to
设置为非空值,则在出现错误时,无人值守升级会向该地址发送电子邮件。您可以将其设置为完整的电子邮件:[email protected]
或类似root
,这将使用/etc/aliases
来路由消息。如果您将security_autoupdate_mail_on_error
设置为false
,则在每次安装软件包后都会收到电子邮件。
security_fail2ban_enabled: true
是否安装/启用fail2ban
。如果您已经使用其他服务进行登录和入侵检测(例如ConfigServer),您可能不希望使用fail2ban。
security_fail2ban_custom_configuration_template: "jail.local.j2"
用于生成fail2ban
配置的模板文件名称。
依赖
无。
示例播放簿
- hosts: servers
vars_files:
- vars/main.yml
roles:
- geerlingguy.security
在vars/main.yml
中:
security_sudoers_passworded:
- johndoe
- deployacct
许可证
MIT(Expat)/ BSD
作者信息
此角色由Jeff Geerling于2014年创建,他是Ansible for DevOps的作者。
Security software installation and configuration.
ansible-galaxy install geerlingguy.security