히비스서커스의 블로그

[Linux] jupyter notebook을 통한 서버 침입 (feat. docker container network를 host로 설정하기) 본문

Programming/Linux

[Linux] jupyter notebook을 통한 서버 침입 (feat. docker container network를 host로 설정하기)

HibisCircus 2022. 6. 9. 18:49
728x90

최근 서버의 docker container로 알 수 없는 파일들이 설치되어 GPU를 통해 채굴하고 있었다.. 문제는 방화벽으로 내가 사용하는 local의 IP만 allow하도록 설정하였고 기록을 봐도 다른 IP의 기록도 없었다. 서버의 비밀번호도 새로 설정해놔서 쉽게 access하지 못하도록 해놨는데 반복적으로 이런 일이 일어나고 있었다.

 

문제

 

사수분의 도움을 받아 해결해보니 docker로 컨테이너를 띄울 때 jupyter notebook 설정을 할 때 ip를 'localhost'로 설정하지 않고 0.0.0.0으로 설정을 해두었는데 이것이 문제였다. ip를 0.0.0.0으로 해둔 이유는 두 가지 설정 때문이다.

 

첫번째는 local에서 ssh로 server에 접속하는 것이고 두번째는 docker container를  띄울 때 network를 host로 지정하지 않았던 것이다. 

 

server에서 jupyter notebook에 직접 접속하려는 경우 docker container의 network를 host로 설정하지 않아도 localhost:(port번호)로 접속이 가능하다. 하지만 local에서 server로 ssh 접속을 할 때는 docker container의 network를 host로 설정을 해주어야 한다.

여튼 문제는 ip=0.0.0.0으로 설정을 해두어 모든 아이피에 대해 접속을 가능하게 해준 것인데 이때 ssh를 통해서가 아니더라도 특정 ip를 통한 jupyter 로의 접근이 가능한 것으로 보인다. 여기에 jupyter notebook token도 설정을 안해두어 더더욱 접속이 쉬웠던 것으로 보인다.

 

jupyter notebook으로 접속 후 colab-terminal 관련한 코드를 통해 채굴 관련 코드를 다운 후 명령을 내린 것으로 보인다.

 

해결(?)

 

해결이 되었는지 모르겠지만 일단은 도커 컨테이너를 띠울 시에 --network를 host로 지정하고 jupyter notebook ip를 localhost로 지정하였더니 local에서 localhost:(port번호)로 접속이 가능하였다.

 

또한, 혹시나 모를 사항에 대비하여 jupyter notebook의 token을 자동으로 생성하게 하여 혹여나 침입하더라도 jupyter notebook의 token을 알아야 접속이 가능하도록 조치하였다.

 

해결이 되었는지는 시간이 지나봐야 알겠지만 아직까지는 해결된 것으로 보인다. 역시 채굴과 같이 돈되는 일이면 어떻게든 방법을 찾아서 하려는 사람들의 노력이 가상하다.

 

 

 

-히비스서커스-

728x90