Azure Linux VM 비밀번호 인증 허용

SSH 키 접속을 먼저 준비한 뒤 필요하지 않은 비밀번호 로그인을 차단하세요.

설명

Linux VM의 비밀번호 인증은 추측, 재사용과 유출 위험을 관리해야 합니다. 비밀번호 인증을 허용해도 SSH 키를 함께 사용할 수 있으며, 이 설정만으로 VM이 인터넷에 공개되는 것은 아닙니다. 운영 환경에서는 보호된 SSH 키 기반 인증을 우선 사용하는 편이 좋습니다.

잠재적 영향

  • 약하거나 재사용된 비밀번호가 관리자 계정 탈취에 악용될 수 있습니다.
  • 넓게 공개된 SSH 접속 경로는 자동화된 로그인 시도를 늘릴 수 있습니다.

해결 방법

  • 승인된 admin_ssh_key를 등록하고 실제 키 기반 접속을 시험한 뒤 disable_password_authentication = true로 설정하세요. Terraform 계획의 VM 교체 여부도 확인하세요.
  • 개인 키를 보호하고 불필요한 키를 회수하세요. 관리자 접속의 네트워크 범위도 필요한 출발지로 제한하세요.

예시

인증 방식만 비교하는 발췌입니다. 현재 Linux VM의 size 속성과 동일한 NIC를 사용하며 OS 디스크와 이미지 구성은 생략했습니다. 비밀번호 변수와 키 파일은 실제 승인된 값으로 준비하세요.

변경 전

hcl
resource "azurerm_linux_virtual_machine" "example" {
  name                            = "${var.prefix}-vm"
  location                        = azurerm_resource_group.main.location
  resource_group_name             = azurerm_resource_group.main.name
  network_interface_ids           = [azurerm_network_interface.main.id]
  size                         = "Standard_DS1_v2"
  admin_username                  = "adminuser"
  admin_password                  = var.admin_password
  disable_password_authentication = false
}

변경 후

hcl
resource "azurerm_linux_virtual_machine" "example" {
  name                  = "${var.prefix}-vm"
  location              = azurerm_resource_group.main.location
  resource_group_name   = azurerm_resource_group.main.name
  network_interface_ids = [azurerm_network_interface.main.id]
  size               = "Standard_DS1_v2"

  admin_username                  = "adminuser"
  disable_password_authentication = true

  admin_ssh_key {
    username   = "adminuser"
    public_key = file("~/.ssh/id_rsa.pub")
  }
}

설명:

  • 변경 전: 비밀번호 인증을 허용합니다.
  • 변경 후: 관리자 공개 키를 등록하고 비밀번호 인증을 비활성화합니다.

참조