개발하는 설기

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (번외) 본문

SSH

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (번외)

mastersulgi 2024. 8. 16. 12:37

SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (상) (studysulgi.xyz)

 

SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (상)

일반적인 경우 서버를 여는 사람은 한 사람이고, 클라이언트의 배포나 서버의 관리도 이 한 사람이 도맡아서 합니다. 그러다보니 서버를 운영하는 사람은 좀처럼 자리를 비우기가 어렵습니다.

blog.studysulgi.xyz

 

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상) (studysulgi.xyz)

 

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상)

https://blog.studysulgi.xyz/5 SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (하)SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (상) (tistory.com) SSH 를 이용하여 외부에서 마인크래프

blog.studysulgi.xyz

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (중) (studysulgi.xyz)

 

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (중)

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상) (tistory.com) SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상)https://blog.studysulgi.xyz/5 SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (하)SSH 를 이

blog.studysulgi.xyz

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (하) (studysulgi.xyz)

 

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (하)

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상) (tistory.com) SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상)https://blog.studysulgi.xyz/5 SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (하)SSH 를 이

blog.studysulgi.xyz

지난 며칠 간 SSH 를 구축하고, 이 SSH 를 이용하여 마인크래프트 서버를 관리하면서 GUI 를 사용할 수 있는 방법을 탐구하고, 결과적으로 RDP 라는 Windows 기본 제공 프로토콜을 안전하게 이용할 수 있는 방법을 찾아냈었죠. 그러다가 바로 어제자 포스팅에서 암호가 아닌 키를 이용하여 SSH 에 접속할 수 있게끔 설정도 업데이트 해주었고요.

이러한 키를 이용한 인증은 암호를 사용하는 인증에 비해서 매우 안전한 한편, 평문으로 자료를 교환하는 RDP 는 SSH 로 보호되고 있으므로 실질적으로는 3중 암호화가 되고 있다고 볼 수 있으므로 인가되지 않은 사용자의 접근은 실질적으로 아예 불가능하다고 볼 수 있습니다.

그런데 이렇게 키를 이용한 인증에는 한 가지 불편한 점이 있습니다. 똑같은 키 파일을 이용해서 서버에 접근하려고 하면 해당 키가 복제된 키라는 것을 확인하고 자동으로 해당 키를 비활성화 시키기 때문에, 접근하고자 하는 기기마다 각각 다른 키를 이용해주어야 합니다. 보안과 편의성은 반비례한다고 하지만, 사용자에게 있어서 이러한 부분은 너무 과한 처사일지도 모르겠습니다.

게다가, SSH 와 RDP 를 '딸깍' 으로 접근할 수 있게 만들어놨던 우리들에게 있어서는 이게 더욱 악재입니다. PuTTY 의 keygen 과 powershell 에서 실행되는 ssh-keygen 의 키는 서로 호환되지 않기에, powershell 에서 발행된 키를 PuTTY 에 맞게 변환해주거나 PuTTY 에서 발행한 키를 서버의 authorized_keys 에 추가해주어야 정상적인 작동이 가능합니다.

오늘의 목표이자 SSH 카테고리의 마지막 목표는, PuTTY 를 활용하는 스크립트를 통해 서버창에 암호를 입력하는 일이 없이 진정한 '딸깍' 을 구현하는 것으로 잡고 나아가보겠습니다. 아마도 이 글이 SSH 카테고리의 마지막 글이 될 것으로 예상하는데, 이전에 설명드렸던대로 SSH - RDP 는 서버 관리의 정점에 있기 때문에 여기까지 따라오신 분들에게 있어서는 사실 상 설명드릴 내용이 많이 없습니다.

# PuTTY 에서 키 생성하기

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (중) (studysulgi.xyz)

 

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (중)

SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상) (tistory.com) SSH 와 RDP 의 연동: 안전하게 RDP 사용하기 (상)https://blog.studysulgi.xyz/5 SSH 를 이용하여 외부에서 마인크래프트 서버 관리하기 - (하)SSH 를 이

blog.studysulgi.xyz

이 글에서 우리가 서버에 접속할 스크립트를 만들 때, PuTTY 라는 외부 툴을 활용했었습니다. 해당 툴을 열어보도록 하겠습니다.

저장해두었던 Session 을 누르고 Load 를 누르면, 기존에 저장해두었던 정보들이 불러와집니다. 여기서, 아래에 있는 버튼 중 'Keygen' 버튼을 눌러주겠습니다.

PuTTY 에서도 키를 생성할 수 있는데, 다른 옵션은 건드리지 않고 'Generate' 버튼을 눌러준 뒤, 마우스를 이리저리 움직여주세요. 마우스의 움직에 따라서 랜덤의 키를 생성하는거라고 하는데, 처음 봤을 때는 신기했습니다.

그러면 Key fingerprint 와 Key comment 칸이 채워진 걸 확인할 수 있습니다. 이 때의 키는 공개 키와 개인 키 1쌍으로 발행되는데, powershell 을 이용한 ssh-keygen 도 공개 키와 개인 키 1쌍을 발행해주던 것, 기억하시죠?

'Save public key' 를 눌러서 적당한 장소에 적당한 이름으로 공개 키를 저장해줍니다. 이 공개 키는 사용자가 다루는 게 아니라, 서버 관리자에게 전달해주어야 하는 키입니다. 물론 우리들의 입장에 있어서는 사용자 및 서버 관리자이므로 이 파일도 중요하게 가지고 있어야 하겠죠.

'Save private key' 를 누르면 경고창이 나오는데, 개인 키에 대한 암호화를 하지 않고 저장할 것이냐고 물어보는 겁니다. 개인 키에 암호를 거는 것은 이 개인 키를 분실하였을 때 문제가 되는 항목이지만, 한 번 이상 해당 개인 키를 이용하여 서버에 접근하고 나면 해당 개인 키를 탈취당하더라도 어차피 서버에 접근할 수 있기 때문에 저는 따로 설정해주지 않고 '예' 를 눌러서 저장해주도록 하겠습니다.

어제 스크립트를 짜기 위해 PuTTY 툴을 넣으면서 폴더들을 만든 걸 기억하실 겁니다. 그 중 'key' 폴더에 이 파일을 저장해주시면 되고, 이름은 자신이 기억할 수 있게끔 저장해주시되 한글은 쓰지 않으면 됩니다. 저는 기존에 사용하고 있던 키 파일이 이미 있어서 mykey.ppk 파일이 있네요.

공개 키와 개인 키가 발급되었으니, SSH 서버에 공개 키를 등록해야 개인 키를 이용한 서버의 접근이 가능해집니다. 따라서 우리는 authorized_keys 항목을 수정해주어야 합니다.

Windows + R (키보드) 를 눌러 실행을 열고, 거기에 '.ssh' 라고 입력해줍니다. 자신의 사용자 폴더 최상위에 있는 .ssh 로 들어가게 해줍니다.

여기서 'authorized_keys' 항목을 메모장으로 열어서, 공개 키에 있는 내용들을 모두 복사해주면 됩니다. 이 때, 이미 다른 공개키가 저장되어 있을 경우에는 줄바꿈을 해서 저장해주면 됩니다.

모든 과정이 종료되면, Windows 검색창에 'powershell' 을 검색하고 관리자 권한으로 실행해준 뒤, 다음의 명령어를 입력해주세요.

net stop sshd
net start sshd

서비스를 재시작해주고 나면, 업로드한 공개키가 적용되고 PuTTY 에서 생성한 개인 키를 이용하여 서버에 접근할 수 있게 됩니다. 이 말인즉, PuTTY 를 활용한 우리의 스크립트도 이제 정상적으로 사용할 수 있게 된다는 뜻이 됩니다!

사실 상 기능 구현은 여기까지가 끝이기에 오늘의 포스팅은 굉장히 짧아졌지만, 이대로 끝내기에는 아쉬우니 서버 관리를 하는데에 있어서 도움을 줄 수 있는 툴 2가지를 소개하고 마치도록 하겠습니다,

# 서버 관리에 유용한 툴

1. IPBan

DigitalRuby 라는 팀에서 개발한 자동 접근금지 툴입니다. 쉽게 얘기해서, 5번 이상 연속으로 로그인에 실패하면 로그인을 시도했던 IP 의 서버 접근을 원천 차단해버립니다. 게다가 콘솔을 통해서 서버에 접근하려고 하는 사람들의 IP 와 시도한 사용자명을 볼 수 있기 때문에 편리하게 방화벽을 하나 더 세울 수 있게 해줍니다.

Release IPBan 2.0.0 · DigitalRuby/IPBan (github.com)

 

Release IPBan 2.0.0 · DigitalRuby/IPBan

Last update: 2024-07-13T18:05:00Z. .NET 8 Build. Allow override min time between failed logins for log files and event viewer expressions to block. Sort firewalld rules in the xml by priority, in ...

github.com

개발자의 공식 깃헙입니다. 자신에 버전에 맞는 파일을 다운로드 받으면 되는데 대부분의 경우 Windows_x64 라고 적혀있는 파일을 다운로드 받으면 됩니다.

저는 이 툴을 몇 번 실행했기 때문에 다른 파일도 조금 있지만, exe 파일과 ipban.config 파일을 가지고 설정을 해주면 됩니다. 먼저 ipban.config 파일을 메모장으로 열어보겠습니다.

duration 을 검색하면 접근 제한의 기한을 설정할 수 있습니다. 00:00:00:00 으로 설정하면 9999일, 최대치로 설정되며, 기본 값은 1일로 설정되어 있습니다. 원하시는 수치대로 변경을 해주시면 될 것 같습니다.

바로 위에는 Attempt 를 설정할 수 있는 란이 있습니다. 이건 연속으로 몇 번 로그인에 실패하면 접근 제한을 할 것이냐를 설정해주면 됩니다. 보통 암호를 이용하여 접근할 수 있는 서버의 경우 5회를 기본으로 삼지만, 키를 사용하는 서버의 경우 키 값이 만료된 것이 아닌 이상 계속해서 접근할 수 있기 때문에 2회 정도로 줄여놔도 크게 문제가 없습니다.

경우에 따라서는 이 툴을 이용함으로 인해 자신이 허용한 사용자나 본인의 IP가 차단될 수도 있습니다만, 이러한 경우 IPBan.exe 가 있는 폴더에 unban.txt 를 만들고 거기에 IP를 한 줄씩 추가해주면 자동으로 접근 제한이 해제되니 참고해주세요.

저 같은 경우 IPBan 이 컴퓨터를 시작하면 자동으로 활성화되도록 시작 프로그램에 넣어주었는데, 이는 사용자 및 서버 관리자가 원하는대로 설정해주면 됩니다.

2, TCPView

서버에 열려있는 포트를 통해 들어오고 나가는 데이터 량, 해당 포트를 사용하고 있는 프로세스 명들을 GUI 의 형태로 한 눈에 볼 수 있습니다. 쉽게 말해서 서버에 접근을 시도하는 다른 사용자들을 한 눈에 볼 수 있습니다.

Windows용 TCPView - Sysinternals | Microsoft Learn

 

Windows용 TCPView - Sysinternals

활성 소켓 명령줄 뷰어입니다.

learn.microsoft.com

여기에서 TCPView 를 다운로드 받고, 폴더의 모든 내용을 복사해서 C:\Windows\System32 폴더에 붙여넣기 해주면 됩니다. 이후에는 Windows + R (키보드) 를 눌러 실행을 열고, 'tcpview' 라고 적어주면 바로 실행이 가능해집니다.

이런식으로 프로세스 명, 프로세스 ID, 프로토콜, 현재상태, IP주소, 포트 등을 한 눈에 볼 수 있습니다! 저는 이 툴이 워낙 강력해서 다른 네트워크 감시 프로그램을 사용하지 않는데, 만약 추천해주실 만한 툴이 있다면 댓글로 남겨주시기 바랍니다.

여기까지가 제가 추천드리는 툴의 목록들입니다. 이 툴들은 서버 관리를 하는데에 있어서 조금 더 보안을 신경쓸 수 있게 해주는 한편, 한 눈에 알아보기가 쉬워서 대처하기도 매우 간편합니다.

SSH 파트에 대한 게시글은 이것으로 완결입니다. 새로운 내용을 알려드리고 싶어도 SSH - RDP 까지 구현한 이상, 더 이상 소개해드릴만한 내용도 없고요. 그런 이유로 다음 포스팅부터는 SSH 에 대한 내용은 올라오지 않을 예정입니다. 그럼에도 불구하고 SSH 에 관련해서 궁금하신 내용이 있다면, 언제든 댓글을 남겨주세요.

다음 포스팅 예고:

블로그에 포스팅을 하면서, 가끔 예제파일이나 툴들을 첨부파일처럼 제공해야 하는 경우가 있습니다. 저 같은 경우 첨부파일의 형태가 아닌 링크로 제공을 하고 있는데, 아무래도 개인 서버를 가지고 있다보니 굳이 업로드를 하는게 불편해서 이런 방법을 사용하고 있습니다.

내 컴퓨터를 이용하여 이를 웹서버처럼 이용하고, 다른 사람한테 링크로 제공하여 언제든 내 컴퓨터에서 파일을 다운로드 받을 수 있게 할 수 있는 방법이 있다면 믿으시겠습니까?

다음 포스팅에서는 Apache 를 활용하여 내 컴퓨터를 웹서버로 이용하는 방법에 대해서 소개하고자 합니다. 이 내용은 작성하기 위해서 충분한 준비가 필요하기 때문에 내일 바로 포스팅할 수 있을지는 모르겠으나, 최선을 다해보겠습니다.

글에 있어서 틀린 내용이 있거나 궁금하신 점이 있다면 댓글을 남겨주시거나,

mastersulgi@studysulgi.xyz 로 메일 남겨주시면 확인하는대로 회신 드리겠습니다!