FIPS 규격 보안 원격 Linux 개발 설정Set up FIPS-compliant secure remote Linux development

Linux 지원은 Visual Studio 2017 이상에서 사용할 수 있습니다.Linux support is available in Visual Studio 2017 and later. FIPS 규격 보안 원격 Linux 개발은 Visual Studio 2019 버전 16.5 이상에서 사용할 수 있습니다.FIPS-compliant secure remote Linux development is available in Visual Studio 2019 version 16.5 and later.

FIPS(Federal Information Processing Standard) 게시 140-2는 암호화 모듈에 대한 미국 정부 표준입니다.Federal Information Processing Standard (FIPS) Publication 140-2 is a U.S. government standard for cryptographic modules. 표준 구현은 NIST에서 유효성을 검사합니다.Implementations of the standard are validated by NIST. Windows에서 FIPS 규격 암호화 모듈에 대한 지원의 유효성을 검사했습니다.Windows has validated support for FIPS-compliant cryptographic modules. Visual Studio 2019 버전 16.5 이상에서는 원격 개발을 위해 Linux 시스템에 대한 보안 FIPS 규격 암호화 연결을 사용할 수 있습니다.In Visual Studio 2019 version 16.5 and later, you can use a secure, FIPS-compliant cryptographic connection to your Linux system for remote development.

Visual Studio와 원격 Linux 시스템 간에 안전한 FIPS 규격 연결을 설정하는 방법을 소개합니다.Here's how to set up a secure, FIPS-compliant connection between Visual Studio and your remote Linux system. 본 가이드는 Visual Studio에서 CMake 또는 MSBuild Linux 프로젝트를 빌드할 때 적용할 수 있습니다.This guide is applicable when you build CMake or MSBuild Linux projects in Visual Studio. 이 문서는 원격 Linux 머신에 연결에서의 FIPS 규격 버전 연결 지침입니다.This article is the FIPS-compliant version of the connection instructions in Connect to your remote Linux computer.

FIPS 규격 연결 준비Prepare a FIPS-compliant connection

Visual Studio와 원격 Linux 시스템 간의 FIPS 규격 암호화 보안 SSH 연결을 사용하려면 몇 가지 준비가 필요합니다.Some preparation is required to use a FIPS-compliant, cryptographically secure ssh connection between Visual Studio and your remote Linux system. FIPS-140-2 규격의 경우 Visual Studio는 RSA 키만 지원합니다.For FIPS-140-2 compliance, Visual Studio only supports RSA keys.

이 문서의 예제에서는 OpenSSH 서버 버전 7.6과 함께 Ubuntu 18.04 LTS를 사용합니다.The examples in this article use Ubuntu 18.04 LTS with OpenSSH server version 7.6. 그러나 OpenSSH의 비교적 최근 버전을 사용하는 모든 배포판에 대한 지침은 동일해야 합니다.However, the instructions should be the same for any distro using a moderately recent version of OpenSSH.

원격 시스템에서 SSH 서버 설정To set up the SSH server on the remote system

  1. Linux 시스템에서 OpenSSH 서버를 설치하고 시작합니다.On the Linux system, install and start the OpenSSH server:

    sudo apt install openssh-server
    sudo service ssh start
    
  2. 시스템이 부팅될 때 SSH 서버가 자동으로 시작되도록 하려면 systemctl을 사용하여 사용하도록 설정합니다.If you’d like the ssh server to start automatically when the system boots, enable it using systemctl:

    sudo systemctl enable ssh
    
  3. 루트로 /etc/ssh/sshd_config를 엽니다.Open /etc/ssh/sshd_config as root. 다음 줄을 편집(또는 없는 경우, 추가)합니다.Edit (or add, if they don’t exist) the following lines:

    Ciphers aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
    HostKeyAlgorithms ssh-rsa
    KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1
    MACs hmac-sha2-256,hmac-sha1
    

    참고

    ssh-rsa는 유일하게 Virtual Studio가 지원하는 FIPS 규격 호스트 키 알고리즘입니다.ssh-rsa is the only FIPS compliant host key algorithm VS supports. aes*-ctr 알고리즘은 FIPS 규격이기는 하지만 Visual Studio에서 구현이 승인되지 않았습니다.The aes*-ctr algorithms are also FIPS compliant, but the implementation in Visual Studio isn't approved. ecdh* 키 교환 알고리즘은 FIPS 규격이지만 Visual Studio에서 지원하지 않습니다.The ecdh-* key exchange algorithms are FIPS compliant, but Visual Studio doesn't support them.

    하지만 이러한 옵션으로 제한되지 않고,You're not limited to these options. 추가 암호화, 호스트 키 알고리즘 등을 사용하도록 SSH를 구성할 수 있습니다.You can configure ssh to use additional ciphers, host key algorithms, and so on. 고려해야 할 다른 관련 보안 옵션은 PermitRootLogin, PasswordAuthenticationPermitEmptyPasswords입니다.Some other relevant security options you may want to consider are PermitRootLogin, PasswordAuthentication, and PermitEmptyPasswords. 자세한 내용은 sshd_config에 대한 기본 페이지 또는 SSH 서버 구성 문서를 참조하세요.For more information, see the man page for sshd_config or the article SSH Server Configuration.

  4. sshd_config를 저장하고 닫은 후 SSH 서버를 다시 시작하여 새 구성을 적용합니다.After saving and closing sshd_config, restart the ssh server to apply the new configuration:

    sudo service ssh restart
    

다음으로 Windows 컴퓨터에 RSA 키 쌍을 만듭니다.Next, you'll create an RSA key pair on your Windows computer. 그런 다음 SSH에서 사용하기 위해 공개 키를 원격 Linux 시스템에 복사합니다.Then you'll copy the public key to the remote Linux system for use by ssh.

RSA 키 파일을 만들고 사용하기To create and use an RSA key file

  1. Windows 컴퓨터에서 다음 명령을 사용하여 퍼블릭/프라이빗 RSA 키 쌍을 생성합니다.On the Windows machine, generate a public/private RSA key pair by using this command:

    ssh-keygen -t rsa -b 4096
    

    이 명령은 퍼블릭 키와 프라이빗 키를 만듭니다.The command creates a public key and a private key. 기본적으로 키는 %USERPROFILE%\.ssh\id_rsa%USERPROFILE%\.ssh\id_rsa.pub에 저장됩니다.By default, the keys are saved to %USERPROFILE%\.ssh\id_rsa and %USERPROFILE%\.ssh\id_rsa.pub. (Powershell에서는 cmd 매크로 $env:USERPROFILE 대신 %USERPROFILE%을 사용) 키 이름을 변경하는 경우 이어지는 다음 단계에서 변경된 이름을 사용합니다.(In Powershell, use $env:USERPROFILE instead of the cmd macro %USERPROFILE%) If you change the key name, use the changed name in the steps that follow. 보안 강화를 위해 암호를 사용하는 것이 좋습니다.We recommend you use a passphrase for increased security.

  2. Windows에서 Linux 머신으로 퍼블릭 키를 복사합니다.From Windows, copy the public key to the Linux machine:

    scp %USERPROFILE%\.ssh\id_rsa.pub user@hostname:
    
  3. Linux 시스템에서 권한 있는 키 목록에 키를 추가하고 파일에 올바른 권한이 있는지 확인합니다.On the Linux system, add the key to the list of authorized keys, and ensure the file has the correct permissions:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  4. 이제 SSH에서 새 키가 작동하는지 테스트하여 확인할 수 있습니다.Now, you can test to see if the new key works in ssh. Windows에서 로그인하는 데 사용:Use it to sign in from Windows:

    ssh -i %USERPROFILE%\.ssh\id_rsa user@hostname
    

SSH를 성공적으로 설정하고, 암호화 키를 생성 및 배포하고, 연결을 테스트했습니다.You've successfully set up ssh, created and deployed encryption keys, and tested your connection. 이제 Visual Studio 연결을 설정할 준비가 되었습니다.Now you're ready to set up the Visual Studio connection.

Visual Studio에서 원격 시스템에 연결Connect to the remote system in Visual Studio

  1. Visual Studio의 메뉴 모음에서 도구 > 옵션을 선택하여 옵션 대화 상자를 엽니다.In Visual Studio, choose Tools > Options on the menu bar to open the Options dialog. 그런 다음 플랫폼 간 > 연결 관리자를 선택하여 연결 관리자 대화 상자를 엽니다.Then select Cross Platform > Connection Manager to open the Connection Manager dialog.

    이전에 Visual Studio에서 연결을 설정하지 않은 경우 프로젝트를 처음 빌드할 때 Visual Studio에서 연결 관리자 대화 상자를 엽니다.If you haven't set up a connection in Visual Studio before, when you build your project for the first time, Visual Studio opens the Connection Manager dialog for you.

  2. 연결 관리자 대화 상자에서 추가 단추를 선택하여 새 연결을 추가합니다.In the Connection Manager dialog, choose the Add button to add a new connection.

    연결 관리자

    원격 시스템에 연결 창이 표시됩니다.The Connect to Remote System window is displayed.

    원격 시스템에 연결

  3. 원격 시스템에 연결 대화 상자에서 원격 머신의 연결 정보를 입력합니다.In the Connect to Remote System dialog, enter the connection details of your remote machine.

    입력Entry 설명Description
    호스트 이름Host Name 대상 디바이스의 이름 또는 IP 주소Name or IP address of your target device
    포트Port SSH 서비스가 실행되는 포트(일반적으로 22)Port that the SSH service is running on, typically 22
    사용자 이름User name 인증할 사용자User to authenticate as
    인증 형식Authentication type FIPS 규격 연결에 대한 프라이빗 키 선택Choose Private Key for a FIPS-compliant connection
    프라이빗 키 파일Private key file SSH 연결을 위해 생성된 프라이빗 키 파일Private key file created for ssh connection
    암호Passphrase 위에서 선택한 프라이빗 키와 함께 사용된 암호Passphrase used with private key selected above

    인증 유형을 프라이빗 키로 변경합니다.Change the authentication type to Private Key. 프라이빗 키의 경로를 프라이빗 키 파일 필드에 입력합니다.Enter the path to your private key in the Private key file field. 찾아보기 단추를 사용하여 대신 프라이빗 키 파일로 이동할 수 있습니다.You can use the Browse button to navigate to your private key file instead. 그런 다음 암호 필드에서 프라이빗 키 파일을 암호화하는 데 사용되는 암호를 입력합니다.Then, enter the passphrase used to encrypt your private key file in the Passphrase field.

  4. 연결 단추를 선택하여 원격 컴퓨터에 대한 연결을 시도합니다.Choose the Connect button to attempt a connection to the remote computer.

    연결에 성공하면 Visual Studio에서 원격 헤더를 사용하도록 IntelliSense를 구성합니다.If the connection succeeds, Visual Studio configures IntelliSense to use the remote headers. 자세한 내용은 원격 시스템의 헤더에 대한 IntelliSense를 참조하세요.For more information, see IntelliSense for headers on remote systems.

    연결이 실패하면 변경해야 하는 입력 상자에 빨간색 윤곽선이 표시됩니다.If the connection fails, the entry boxes that need to be changed are outlined in red.

    연결 관리자 오류

    연결 문제를 해결하는 방법에 관한 자세한 내용은 원격 Linux 컴퓨터에 연결을 참조하세요.For more information on troubleshooting your connection, see Connect to your remote Linux computer.

연결 관리자에 대한 명령줄 유틸리티Command-line utility for the Connection Manager

Visual Studio 2019 버전 16.5 이상: ConnectionManager.exe는 Visual Studio 외부에서 원격 개발 연결을 관리하는 명령줄 유틸리티입니다.Visual Studio 2019 version 16.5 or later: ConnectionManager.exe is a command-line utility to manage remote development connections outside of Visual Studio. 새 개발 컴퓨터를 프로비저닝하는 등의 작업에 유용합니다.It's useful for tasks such as provisioning a new development machine. 또는 연속 통합을 위해 Visual Studio를 설정하는 데 사용할 수 있습니다.Or, you can use it to set up Visual Studio for continuous integration. ConnectionManager 명령에 대한 예제 및 전체 참조는 ConnectionManager 참조를 참조하세요.For examples and a complete reference to the ConnectionManager command, see ConnectionManager reference.

선택 사항: FIPS 모드 사용 또는 사용 안 함Optional: Enable or disable FIPS mode

Windows에서 FIPS 모드를 전역적으로 사용하도록 설정할 수 있습니다.It's possible to enable FIPS mode globally in Windows.

  1. FIPS 모드를 사용하도록 설정하려면 Windows+R을 눌러 실행 대화 상자를 연 다음 gpedit.msc를 실행합니다.To enable FIPS mode, press Windows+R to open the Run dialog, and then run gpedit.msc.

  2. 로컬 컴퓨터 정책 > 컴퓨터 구성 > Windows 설정 > 보안 설정 > 로컬 정책을 확장하고 보안 옵션을 선택합니다.Expand Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies and select Security Options.

  3. 정책에서 시스템 암호화: 암호화, 해시 및 서명에 FIPS 규격 알고리즘을 사용을 선택한 다음, 엔터 키를 눌러 해당 대화 상자를 엽니다.Under Policy, select System cryptography: Use FIPS-compliant algorithms for encryption, hashing, and signing, and then press Enter to open its dialog box.

  4. 로컬 보안 설정 탭에서 사용 또는 사용 안 함을 선택하고 확인을 선택하여 변경 내용을 저장합니다.In the Local Security Setting tab, select Enabled or Disabled, and then choose OK to save your changes.

경고

FIPS 모드를 사용하도록 설정하면 일부 애플리케이션이 예기치 않게 중단되거나 동작하지 않을 수 있습니다.Enabling FIPS mode may cause some applications to break or behave unexpectedly. 자세한 내용은 블로그 게시물 “FIPS 모드”를 더 이상 권장하지 않는 이유를 참조하세요.For more information, see the blog post Why We’re Not Recommending "FIPS mode" Anymore.

추가 자료Additional resources

FIPS 140 유효성 검사에 대한 Microsoft 설명서Microsoft documentation on FIPS 140 validation

FIPS 140-2: 암호화 모듈에 대한 보안 요구 사항(NIST 기준)FIPS 140-2: Security Requirements for Cryptographic Modules (from NIST)

암호화 알고리즘 유효성 검사 프로그램: 유효성 검사 참고 사항(NIST 기준)Cryptographic Algorithm Validation Program: Validation Notes (from NIST)

“FIPS 모드”를 더 이상 권장하지 않는 이유에 대한 Microsoft 블로그 게시물Microsoft blog post on Why We’re Not Recommending "FIPS mode" Anymore

SSH 서버 구성SSH Server Configuration

관련 항목See Also

Linux 프로젝트 구성Configure a Linux project
Linux CMake 프로젝트 구성Configure a Linux CMake project
원격 Linux 컴퓨터에 연결Connect to your remote Linux computer
Linux 프로젝트 배포, 실행 및 디버그Deploy, run, and debug your Linux project
CMake 디버깅 세션 구성Configure CMake debugging sessions