기존 Windows를 통한 RDP 연결이 서버에서 RDP 포트를 열고 해당 포트로 다이렉트로 진입하는 방식이였다. 다만 이 방식은, Brute Force공격에 취약하고, 포트탐지 봇등에 의해, 해당 포트를 통해 공격받을 가능성이 높았다.
따라서 해당 부분을 보안하고자, 기존 RDP연결 방식에서 SSH 터널링 방식을 추가함으로써 보안을 더욱 더 강화하였다.
목적
- SSH 터널 통과로 인한 패킷 암호화
- SSH 인증방식은 ssh-key 인증방식을 채용(key파일 없이 외부접속 불가)
- RDP 포트 미노출
- 내부 서버 접속 현황을 하나의 서버에서 통제 가능
- 단순 서버접속을 위한 포트개방이 필요없음
장점
- 뛰어난 보안
SSH 터널링 방식을 도입할 시, 외부에서 ssh private key 없이는 inbound rdp 접근은 거의 불가능하다.
- sshd에서 password 로그인 방식은 막고 ssh-key 방식으로만 ssh 접근을 허용
키 없이 ssh 연결 불가, Brute Force 공격 불가 (단, 키를 탈취당했을시 문제발생 대비책은 후에 서술)
- 최소 권한의 ssh 연결 전용 계정을 windows rdp 서버측에서 별도로 만들어 운영
ssh 키가 노출되어 ssh가 뚫려도 fully 컨트롤 및 rdp 권한 탈취 힘듬 RDP 연결시 필요한 패스워드까지 탈취를 해야 접근이 가능.
연결 구성도
- 윈도우 서버에 Openssh Server 설치.
- ssh 포트 변경 후, 내부 방화벽에 SSH포트 인바운드 허용.
- ssh 키 인증을 위해 서버의 ssh키의 public key 등록
- 클라이언트에서 SSH Private Key를 통해 서버에 SSH 연결.
- SSH 연결후, 클라이언트의 Listen Port에 RDP포트를 연결하여, 터널링
- 연결된 Listen Port로 RDP 연결시도
- RDP 연결시도 시, 사용자 계정과 비밀번호를 통해 RDP 연결.
주의사항
- Private Key 파일이 외부에 노출되지 않도록 주의한다.
SSH Private Key가 외부에 노출될 시, RDP 연결을 시도할 수 있으므로, 주의해야한다.
대비책 : 허용하지 않는 RDP 접속시도를 조기에 파악하여, 즉시 서버에 등록된 Public Key를 폐기한다.
- Administrator(최고 권한)계정의 경우 SSH,RDP 연결을 자제한다.
다이렉트로 최고 권한의 계정으로 연결되는것은 보안상 취약점이 매우 높다. 별도의 계정을 만들고, 해당 계정을 통해 ssh연결 및 터널링을 관리하는것이 보안상 이점이 매우 높다.
'개발 > DevOps' 카테고리의 다른 글
CI/CD 기본 개념과 Jenkins를 활용한 실습 (0) | 2024.05.20 |
---|---|
리눅스 맬웨어 발견과 제거 (2) | 2024.04.19 |