반응형

1. 시작전에

Visual Studio Code Server는 MS에서 만든 VScode를 서버에 설치하여 어디서든, 무엇이든 웹 브라우저와 인터넷만 가능하다면 이를 통하여 접근하여 개발이 가능한 환경을 제공합니다.

다양한 확장 프로그램(플러그인)을 포함하고 있으면서도 나름대로 가벼운 프로그램이기 때문에, 이를 이용하여 서버에 직접붙어 프로그램을 개발하려고합니다.

 

물론 이러한 방식은 '보안'의 입장에서는 별로 좋지 못한 생각이라고 느껴집니다.

차후 운영할 서버에 직접붙어 개발을 하는만큼 악의적인 마음만 있다면, IDE를 통하여 얼마든지 서버를 마음대로 컨트롤 할 수 있기 때문입니다.

 

이는 VSCode 뿐만의 문제가 아니라, Jupyter Notebook Server도 동일합니다. 서버에서는 누가 접속했는지 판단할 수 없는데, 해당 프로그램의 소유자권한이 제한하지 않는 범위에서는 마음대로 터미널 명령들을 수행할 수 있고, 통제가 가능하기 때문입니다.

 

이러한 문제에 대해서도 차후 고민해보고 나름대로 해결방안을 가져가보도록 하겠습니다.

 

2. VSCodeServer 설치

VSCodeServer 설치는 정말 간단합니다.

친절한 개발자분께서 스크립트를 개발해주셨으니까요.

 - 관련된 내용은 다음 링크(https://github.com/cdr/code-server)를 참고해주세요.

 

서버에 code-server 설치는 아래 명령어 한줄이면 끝입니다.

curl -fsSL https://code-server.dev/install.sh | sh

Code-server 설치

위와같이 설치가 완료되면, 이제 설정파일을 수정해주겠습니다.

 

여기까지만 따라해주시고, 이제부터는 다음 포스터까지 다 보시고 따라와주세요!

 

설정파일 위치 :  ~/.config/code-server/config.yaml

( 만약 설정파일이 존재하지 않는다면, [code-server] 명령을 통하여 한번 프로그램일 실행 후 종료해주세요.)

bind-addr: 0.0.0.0:2001
auth: password
password: password_입력     << 실제 접속에 사용될 암호
cert: false

일단은 해당 설정파일을 열어, 위와같이 입력해주시고 저장해주세요. (password는 본인 스스로!)

 

그리고, 외부 접속을 위한 보안설정을 넣어줘야합니다.

 

보안설정은 이전에 말씀드린 것과 마찬가지로, 오라클 클라우드 홈페이지에서 1차적으로 진행해주시기 바랍니다.

(전 포스터 하단에 해당내용이 나와있습니다. 참고해주세용,,,, Link : https://youngq.tistory.com/95)

 

그.리.고!!!

 

우분투 자체에서도 iptables를 통한 보안설정이 필요합니다.

(ufw를 이용한 보안정책이 더 쉽고하긴한데, 오라클 클라우드에서 ufw로 정책을 지원하지 않는건지 적용을해도 잘 안되는것같아 iptables를 이용하게 되었습니다.)

 

iptables 설정과 관련된 부분은 내용이 많아 별도로 차후에 포스팅을 하겠습니다. 그렇기에 일단은 아래내용만 확인해주세요.

 

  ######### 2001번 Port를 목적지로하는 TCP INPUT을 허용하겠다는 내용 #########
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 2001 -m state --state NEW,ESTABLISHED -j ACCEPT
(NEW : 새로운 연결, ESTABLISHED : 기존 연결에 이어지는 데이터)

  ######### 변경내용 저장 #########
sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak        # 원본파일 백업

su -                                                             # root login(root만 수정가능)
iptables-save > /etc/iptables/rules.v4                           # 수정내용 덮어쓰기
exit                                                             # root logout

적용 후 [sudo iptables --list] 명령을 입력하면, INPUT 부분에 아래내용이 추가된 것을 볼 수 있습니다.

위와 같이 설정이 끝난다면, 외부에서도 해당 Port를 통해 접속이 가능한 상태가 됩니다.

 

code-server 명령을 통해 서비스를 실행하고 접속이 잘 되는지 테스트해보겠습니다.

code-server 명령으로 VSCodeServer 실행
정상적으로 연결되는 것을 확인
패스워드 입력시 접속되는 것을 확인

 

위와같이 정상적으로 서버에 설치된 VSCode를 웹브라우저를 통하여 접속할 수 있는 것을 확인했습니다~!

 

짝짝짝!

 

하.지.만~ 문제가 하나 있습니다.

 

이를 이용하여 코드를 구현하는것은 전혀 문제가 아니지만, 역시나 또 보안상에 문제가 조금 남아있습니다.

 

가장 큰 문제는 두 가지입니다.

 1) HTTP 통신을 함에따른 접속 암호 및 정보 유출

 2) 우분투 유저가 분리되지 않아 발생하는 강력한 권한

 

위 두가지 문제는 카페와같은 공용공간에서 악의적인 마음만 먹는다면 손쉽게 여러분의 서버의 IP를 확인하고, VSCodeServer에 접속할 수 있고, 안전한 SSH 접속을 우회하여 마음대로 터미널 명령을 수행 할 수 있습니다.

 

이러한 문제에대한 해결은 다음포스팅에서 다루겠습니다~ 감사합니다.

반응형

+ Recent posts