Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ansible-ssh-hardening — 此 Ansible 角色提供了众多与安全相关的 SSH 配置,提供全方位的基线防护。 | Kitploit
工具/GitHubGitHub/dev-sec/ansible-ssh-hardening
云基础设施安全配置审计网络安全DevSecOps身份验证Archived
GitHubdev-sec/ansible-ssh-hardening

ansible-ssh-hardening

此 Ansible 角色提供了众多与安全相关的 SSH 配置,提供全方位的基线防护。

查看仓库
786190285年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

ssh-hardening(Ansible 角色)

注意: 此角色已迁移至我们的 hardening-collection:

  • https://github.com/dev-sec/ansible-os-hardening/
  • https://galaxy.ansible.com/devsec/hardening

请在那里提交任何 issue 和 pull request!

要求

  • Ansible > 2.5

角色变量

  • network_ipv6_enable
    • 默认值:false
    • 描述:如果需要 IPv6,则设为 true。ssh_listen_to 也必须设置为监听 IPv6 地址(例如 [::])。
  • ssh_server_ports
    • 默认值:['22']
    • 描述:ssh-server 应监听的端口
  • ssh_client_port
    • 默认值:'22'
    • 描述:ssh-client 应连接的端口
  • ssh_listen_to
    • 默认值:['0.0.0.0']
    • 描述:一个或多个 IP 地址,ssh-server 应监听这些地址。默认是所有 IPv4 地址,但出于安全原因应配置为特定地址!
  • ssh_host_key_files
    • 默认值:[]
    • 描述:sshd 的主机密钥。如果为空,将使用 ['/etc/ssh/ssh_host_rsa_key', '/etc/ssh/ssh_host_ecdsa_key', '/etc/ssh/ssh_host_ed25519_key'](只要已安装的 sshd 版本支持)。
  • ssh_host_key_algorithms
    • 默认值:[]
    • 描述:服务器提供的主机密钥算法。如果为空,将使用默认列表,否则使用指定的算法列表覆盖该设置。
  • ssh_client_alive_interval
    • 默认值:600
    • 描述:指定发送 keepalive 消息的间隔
  • ssh_client_alive_count
    • 默认值:3
    • 描述:定义 keep-alive 消息发送的次数
  • ssh_permit_tunnel
    • 默认值:false
    • 描述:如果需要 SSH 端口隧道,则设为 true
  • ssh_remote_hosts
    • 默认值:[]
    • 描述:一个或多个主机及其自定义选项,用于 ssh-client。默认为空。请参阅 defaults/main.yml 中的示例。
  • ssh_permit_root_login
    • 默认值:no
    • 描述:禁用 root 登录。设置为 without-password 或 yes 以启用 root 登录
  • ssh_allow_tcp_forwarding
    • 默认值:no
    • 描述:'no' 禁用 TCP 转发。设置为 'yes' 允许 TCP 转发。如果您使用 OpenSSH >= 6.2 版本,可以指定 'yes'、'no'、'all' 或 'local'。
      注意:传递给此变量的值必须是字符串,因此 'yes' 和 'no' 应带引号传递。
  • ssh_gateway_ports
    • 默认值:false
    • 描述:false 禁用将转发端口绑定到非回环地址。设置为 true 强制绑定到通配符地址。设置为 clientspecified 允许客户端指定要绑定的地址。
  • ssh_allow_agent_forwarding
    • 默认值:false
    • 描述:false 禁用代理转发。设置为 true 允许代理转发。
  • ssh_x11_forwarding
    • 默认值:false
    • 描述:false 禁用 X11 转发。设置为 true 允许 X11 转发。
  • ssh_pam_support
    • 默认值:true
    • 描述:如果 SSH 支持 PAM,则设为 true。
  • ssh_use_pam
    • 默认值:true
    • 描述:false 禁用 pam 认证。
  • ssh_gssapi_support
    • 默认值:false
    • 描述:如果 SSH 支持 GSSAPI,则设为 true。
  • ssh_kerberos_support
    • 默认值:true
    • 描述:如果 SSH 支持 Kerberos,则设为 true。
  • ssh_deny_users
    • 默认值:''
    • 描述:如果指定,则与任一模式匹配的用户名将被禁止登录。
  • ssh_allow_users
    • 默认值:''
    • 描述:如果指定,则仅允许与任一模式匹配的用户名登录。
  • ssh_deny_groups
    • 默认值:''
    • 描述:如果指定,则主组或附加组列表与任一模式匹配的用户将被禁止登录。
  • ssh_allow_groups
    • 默认值:''
    • 描述:如果指定,则仅允许主组或附加组列表与任一模式匹配的用户登录。
  • ssh_authorized_keys_file
    • 默认值:''
    • 描述:更改包含可用于用户认证的公钥的默认文件。
  • ssh_trusted_user_ca_keys_file
    • 默认值:''
    • 描述:指定包含用于签署用户证书的可信证书颁发机构公钥的文件。
  • ssh_trusted_user_ca_keys
    • 默认值:[]
    • 描述:设置用于签署用户证书的可信证书颁发机构公钥。仅在设置了 ssh_trusted_user_ca_keys_file 时使用。
  • ssh_authorized_principals_file
    • 默认值:''
    • 描述:指定包含允许的主体(principals)的文件。仅在设置了 ssh_trusted_user_ca_keys_file 时使用。
  • ssh_authorized_principals
    • 默认值:[]
    • 描述:包含文件路径和授权主体的哈希列表,所有选项请参阅 default_custom.yml。仅在设置了 ssh_authorized_principals_file 时使用。
  • ssh_print_motd
    • 默认值:false
    • 描述:false 禁用 MOTD 的打印
  • ssh_print_pam_motd
    • 默认值:false
    • 描述:false 禁用通过 pam 打印 MOTD(Debian 和 Ubuntu)
  • ssh_print_last_log
    • 默认值:false
    • 描述:false 禁用上次登录信息的显示
  • sftp_enabled
    • 默认值:false
    • 描述:true 启用 sftp 配置
  • sftp_umask
    • 默认值:'0027'
    • 描述:指定 sftp 的 umask
  • sftp_chroot
    • 默认值:true
    • 描述:false 禁用 sftp 的 chroot
  • sftp_chroot_dir
    • 默认值:/home/%u
    • 描述:更改默认的 sftp chroot 位置
  • ssh_client_roaming
    • 默认值:false
    • 描述:启用实验性的客户端漫游
  • sshd_moduli_file
    • 默认值:'/etc/ssh/moduli'
    • 描述:SSH moduli 文件的路径
  • sshd_moduli_minimum
    • 默认值:2048
    • 描述:移除小于定义大小的 Diffie-Hellman 参数以缓解 logjam 攻击
  • ssh_challengeresponseauthentication
    • 默认值:false
    • 描述:指定是否允许质询-响应认证(例如通过 PAM)
  • ssh_client_password_login
    • 默认值:false
    • 描述:true 允许 ssh 客户端使用基于密码的认证
  • ssh_server_password_login
    • 默认值:false
    • 描述:true 允许 ssh 服务器使用基于密码的认证
  • ssh_banner
    • 默认值:false
    • 描述:true 在登录时打印横幅
  • ssh_banner_path
    • 默认值:'/etc/sshd/banner.txt'
    • 描述:SSH 横幅文件的路径
  • ssh_client_hardening
    • 默认值:true
    • 描述:false 停止加固客户端
  • ssh_client_port
    • 默认值:'22'
    • 描述:指定连接远程主机的端口号。
  • ssh_client_compression
    • 默认值:false
    • 描述:指定客户端是否请求压缩。
  • ssh_compression
    • 默认值:false
    • 描述:指定用户成功认证后是否启用服务器端压缩。
  • ssh_login_grace_time
    • 默认值:30s
    • 描述:指定 SSH 服务器允许成功认证的时间
  • ssh_max_auth_retries
    • 默认值:2
    • 描述:指定每次连接允许的最大认证尝试次数。
  • ssh_max_sessions
    • 默认值:10
    • 描述:指定给定连接允许的最大打开会话数。
  • ssh_print_debian_banner
    • 默认值:false
    • 描述:true 打印 Debian 特定的横幅
  • ssh_server_enabled
    • 默认值:true
    • 描述:false 禁用 opensshd 服务器
  • ssh_server_hardening
    • 默认值:true
    • 描述:false 停止加固服务器
  • ssh_server_match_address
    • 默认值:''
    • 描述:引入一个条件块。如果 Match 行上的所有条件都满足,则以下行上的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个 Match 行或文件末尾。
  • ssh_server_match_group
    • 默认值:''
    • 描述:引入一个条件块。如果 Match 行上的所有条件都满足,则以下行上的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个 Match 行或文件末尾。
  • ssh_server_match_user
    • 默认值:''
    • 描述:引入一个条件块。如果 Match 行上的所有条件都满足,则以下行上的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个 Match 行或文件末尾。
  • ssh_server_match_local_port
    • 默认值:''
    • 描述:引入一个条件块。如果 Match 行上的所有条件都满足,则以下行上的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个 Match 行或文件末尾。
  • ssh_server_permit_environment_vars
    • 默认值:no
    • 描述:yes 指定 sshd 处理 ~/.ssh/environment 和 ~/.ssh/authorized_keys 中的 environment= 选项。使用 openssh 7.8 版本时,除了全局的 "yes" 或 "no" 设置外,还可以指定环境变量名称的白名单。
  • ssh_server_accept_env_vars
    • 默认值:''
    • 描述:指定客户端发送的哪些环境变量将被复制到会话的环境中,多个环境变量可以用空格分隔。
  • ssh_use_dns
    • 默认值:false
    • 描述:指定 sshd 是否应查找远程主机名,并检查远程 IP 地址解析出的主机名是否映射回完全相同的 IP 地址。
  • ssh_server_revoked_keys
    • 默认值:[]
    • 描述:ssh 服务器将始终拒绝的已撤销公钥列表,可用于撤销已知的弱密钥或已泄露密钥。
  • ssh_max_startups
    • 默认值:'10:30:100'
    • 描述:指定 SSH 守护进程允许的最大并发未认证连接数。
  • ssh_macs
    • 默认值:[]
    • 描述:更改此列表以覆盖 MAC 算法。默认值见 defaults/main.yml
  • ssh_kex
    • 默认值:[]
    • 描述:更改此列表以覆盖 KEX 算法。默认值见 defaults/main.yml
  • ssh_ciphers
    • 默认值:[]
    • 描述:更改此列表以覆盖加密算法。默认值见 defaults/main.yml
  • ssh_custom_options
    • 默认值:[]
    • 描述:SSH 客户端配置的自定义行
  • sshd_custom_options
    • 默认值:[]
    • 描述:SSH 守护进程配置的自定义行
  • sshd_syslog_facility
    • 默认值:'AUTH'
    • 描述:sshd 记录消息时使用的 facility 代码
  • sshd_log_level
    • 默认值:'VERBOSE'
    • 描述:sshd 记录消息时使用的详细级别
  • sshd_strict_modes
    • 默认值:true
    • 描述:在接受登录前检查用户文件和主目录的文件模式及所有权
  • sshd_authenticationmethods
    • 默认值:publickey
    • 描述:指定用户必须成功完成的认证方法才能获得访问权限。请确保为所选认证方法设置所有必需的变量。默认值见 defaults/main.yml

配置角色变量中未列出的设置

如果您想配置上面未列出的 ssh 选项,可以使用 ssh_custom_options(用于 /etc/ssh/ssh_config)或 sshd_custom_options(用于 /etc/ssh/sshd_config)进行设置。这些选项将设置在文件的开头,因此您可以在文件后面覆盖这些选项。

示例 playbook:

- hosts: localhost
  roles:
    - dev-sec.ssh-hardening
  vars:
    ssh_custom_options:
      - "Include /etc/ssh/ssh_config.d/*"
    sshd_custom_options:
      - "AcceptEnv LANG"

更改默认端口和幂等性

此角色使用默认端口 22 或清单中配置的端口来连接服务器。如果通过 ssh_server_ports 更改了默认的 ssh 端口,一旦 ssh 服务器重启,它仍将尝试使用之前的端口连接。为了在同一服务器上再次运行此角色,必须更新清单以使用新的 ssh 端口。

如果幂等性很重要,请考虑使用角色 ssh-hardening-fallback,它是此角色的包装器,当配置的端口不可达时会回退到端口 22。

示例 Playbook

- hosts: localhost
  roles:
    - dev-sec.ssh-hardening

本地测试

本地测试此角色的首选方式是使用 Docker。您需要在系统上安装 Docker。请参阅入门获取适合您系统的 Docker 软件包。

您也可以使用 vagrant 和 Virtualbox 或 VMWare 在本地运行测试。您需要在系统上安装 Virtualbox 和 Vagrant。请参阅 Vagrant 下载获取适合您系统的 vagrant 软件包。我们所有的测试都使用 test-kitchen。如果您不熟悉 test-kitchen,请查看他们的指南。

接下来安装 test-kitchen:

# 安装依赖
gem install bundler
bundle install

使用 Docker 测试

# 在单台机器上快速测试
bundle exec kitchen test ssh-ubuntu1804-ansible-latest

# 在所有机器上测试
bundle exec kitchen test

# 用于开发
bundle exec kitchen create ssh-ubuntu1804-ansible-latest
bundle exec kitchen converge ssh-ubuntu1804-ansible-latest
bundle exec kitchen verify ssh-ubuntu1804-ansible-latest

# 清理
bundle exec kitchen destroy ssh-ubuntu1804-ansible-latest

使用 Virtualbox 测试

# 在单台机器上快速测试
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test ssh-ubuntu-1804

# 在所有机器上测试
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
下载工具