0. 개요

Windows Server 2008 R2 OS를 운용중인 서버가 있는데, OS 를 변경할 수 없는 상황이다. 이러한 환경에서 SFTP 통신을 통한 자동 백업 작업을 실시해야 하는 상황이 생겼는데, 설치 및 기본 보안 조치 방법에 대해 설명하고자 한다.
[OpenSSH] Windows용 OpenSSH 수동 설치를 통한 SSH / SFTP 서버 구축
0. 개요 Windows 10 버전 / Windows Server 2019 이후부터 자체 OpenSSH를 지원함에 따라 서드파티 프로그램을 사용하지 않고서 SSH 서버 구축이 가능하다. 이를 통해, Windows 환경에 OpenSSH를 수동 설치하여 SFT
acredev.tistory.com
▲ 최신 Windows 사용자는 상기 게시글을 참고하여 조치
1. 설치
Releases · PowerShell/Win32-OpenSSH
Win32 port of OpenSSH. Contribute to PowerShell/Win32-OpenSSH development by creating an account on GitHub.
github.com
OpenSSH 최신 Build 를 설치하기 위하여, 상기 링크에 접속한다.

본인 OS 환경에 맞는 OpenSSH 를 다운로드 받도록 한다. 본문에서는 .zip 파일을 통한 수동 설치 방법에 대해 안내한다.

압축 해제가 완료되면, 폴더명을 OpenSSH 로 변경하고 C:\Program Files 경로로 복사한다.

PowerShell 을 관리자 권한으로 실행한다.
powershell.exe -ExecutionPolicy Bypass -File .\install-sshd.ps1
PowerShell 의 기본 보안 정책이 .ps1 스크립트 실행을 보안상 차단하고 있기 때문에, OpenSSH 설치를 위해 실행하는 install-sshd.ps1 스크립트 파일만 정책을 무시하고 실행 할 수 있도록 한다.
※ 정상적으로 설치가 완료되면 sshd and ssh-agent services successfully installed 가 출력된다.
Set-Service sshd -StartupType Automatic
sshd 서비스가 시스템이 재부팅되어도 자동으로 실행될 수 있도록 설정한다.

sshd 서비스가 성공적으로 실행된 것을 확인한다.
2. 보안설정
2-1. OpenSSH 기본 보안 설정

Windows Server 2008 R2 는 이미 Microsoft 의 지원이 종료되어 보안 이슈에 취약하다. 따라서, 최소한의 보안 설정은 진행하도록 하자.
%ProgramData%\ssh 경로로 접속하여 sshd_config 파일을 텍스트 편집기로 연다.

Port 번호는 최소한 22번이면 안 된다. 주석을 해제하고, 다른 Port로 변경한다.

| 설정값 | 설명 |
| LoginGraceTime | n초 안에 로그인을 성공하지 못하면 접속을 끊어버린다. |
| PermitRootLogin | Administrator 계정 접속을 제한하기 위해 no로 설정한다. |
| MaxAuthTries | 로그인 시도 횟수를 n회 미만으로 제한한다. |
상기와 같이 부가적인 설정을 진행한다. 그 외 공개키로만 로그인 할 수 있도록 설정해도 무방하나, 필자의 환경에서는 비밀번호를 통한 접속이 필수적이기 때문에 관련 설정은 진행하지 않았다.
설정이 완료되면 sshd_config 를 저장한다.
2-2. 접속 가능 계정 제한
net user [사용자명] [비밀번호] /add
다시 PowerShell 을 실행 후, 상기와 같은 명령어를 입력하여 OpenSSH 접속에만 사용할 새 사용자를 만든다.
# OpenSSH 접속용 사용자가 관리자 권한이 필요할 경우
net localgroup administrators [사용자명] /add
방금 추가한 사용자가 관리자 권한이 필요하다면 상기 명령어를 이용하여 추가하도록 한다. 필자는 단순 조회용이므로, 굳이 취약점을 만들지 않기 위하여 추가하지 않았다.

# Administrator 접속차단 (블랙리스트)
DenyUsers Administrator
# 허용할 사용자 (화이트리스트)
# 이 사용자 이외 원천차단
AllowUsers [사용자명]
| 설정값 | 설명 |
| DenyUsers | ㆍ블랙리스트 ㆍ기재한 사용자 접속 전면차단 |
| AllowUsers | ㆍ화이트리스트 ㆍ기재한 사용자 이외의 사용자 전면차단 |
AllowUsers 에만 사용자를 기재해도 무방하나, 추후 유지보수 및 관리 편의성을 위하여 기재하도록 한다.
2-3. 보안 설정 검증
▣ 1. Administrator 접속 제한 확인

PuTTY 등 SSH 접속 프로그램을 사용하여 Administrator 접속을 시도하면, Access denied 가 출력되며 접속에 실패하는 것을 확인한다.
▣ 2. 로그인 시도 횟수 제한 확인

MaxAuthTries=n 으로 지정했을 경우, n회까지 시도하면 Too many authentication failures 가 출력되며 접속에 실패하는 것을 확인한다.
▣ 3. 접속 대기 시간 제한 확인

LoginGraceTime=n 으로 지정했을 경우, 로그인 대기 시간이 n초 이상 소요되면 Network error 이 출력되며 접속을 끊어버리는 것을 확인한다.
▣ 4. 접속 허용 사용자 정상 접속 확인

접속을 허용한 사용자만 정상적으로 접속되는 것을 확인한다.
상기 내용은 기본적인 보안 설정 방법에만 국한되어 안내하였다. Windows Server 2008 R2 OS 는 이미 보안 지원이 종료된지 너무 오래된 OS이기 때문에 부가적인 보안 설정을 각 서버 환경에 맞게 진행하는 것을 강력하게 권장한다.