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的作者。

安装
ansible-galaxy install geerlingguy.security
许可证
mit
下载
1.5M
拥有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns