问题描述
在按照Azure官方的Terraform快速入门指南(链接)创建虚拟机后,发现在新创建的主机上使用lastb
命令查看登录尝试记录时,发现有很多不同IP地址的登录尝试。用户注意到在所提供的安全规则中,SSH访问的规则过于宽松,希望能将源IP地址限制为自己的IP地址。
以下是用户列出的一些可能的解决方案:
1. 在main.tf
中静态配置当前IP地址。
2. 在资源创建时动态配置安全规则,使用当前IP地址。
3. 运行一个后置部署脚本,只允许当前IP地址访问。
4. 其他方法。
用户希望获得关于如何最佳限制SSH访问的建议。
解决方案
请注意以下操作可能涉及到版本差异,操作前请确保已备份数据。
最佳解决方案
最佳的解决方案是使用变量和环境变量来动态地配置安全规则,以仅允许特定的IP地址访问SSH。以下是实现此目标的步骤:
- 在项目目录中的
variables.tf
文件中添加一个变量来表示允许SSH连接的源IP地址。
variable "source_address_prefix" {
type = string
description = "Source IP address allowed to make ssh connections."
}
- 在
main.tf
文件中,将安全规则修改为如下所示,将源IP地址限制为前面定义的变量值。
resource "azurerm_security_rule" "ssh" {
name = "ssh"
priority = 1001
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "22"
source_address_prefix = var.source_address_prefix
destination_address_prefix = "*"
}
- 在命令行或脚本中设置环境变量,将允许SSH连接的源IP地址赋值给之前定义的变量。确保替换为你实际使用的公共IP地址。
export TF_VAR_source_address_prefix=你的公共IP地址
- 运行Terraform命令来应用配置变更。
terraform apply
- 验证是否不再有其他IP地址尝试访问新创建的Azure虚拟机。
通过以上步骤,你将能够动态地配置安全规则,仅允许特定的IP地址访问SSH端口,从而增强安全性。
其他方案
除了使用变量和环境变量的方法外,你也可以考虑使用其他方法,如运行后置部署脚本来限制IP地址访问,但这可能会增加复杂性并需要确保脚本的正确性。最佳的解决方案是通过Terraform的动态配置来实现此目标,以保持一致性和可维护性。
在实际操作中,请根据你的需求和情况选择适合你的方法,并在操作前充分了解可能的风险。
以上就是在Azure Terraform中配置仅允许特定IP地址访问SSH的解决方案,希望对你有所帮助!
正文完