3) 외부에서의 접속 그리고 vpn구축

jungi.seong·2024년 3월 14일
0
  • 지난내용 요약
  1. H/W 변경 후, 조립 진행 > PROXMOX 설치
  2. 중간에 이슈가 있었으나, 검색으로 해결
  3. FQDN에 대해서 알게 됨


우선 구축의 목적은 내부에서의 사용도 있었지만, 아이패드로 eve-ng를 이용한다던지 윈도우 RDP를 쓴다던지 하고 싶었다.

구글링을 해보았고 주된 내용은 아래와 같았다.
1. proxmox의 관리페이지는 최대한 노출이 안 되는게 좋음
2. 노출은 reverse proxy 정도로 서비스만 오픈 하는 것을 추천
3. 내부에 vpn구축 후 접속 하는게 가장 좋다.


vpn에 대해서 추가로 검색을 해 보았다.

VPN? (Virtual Private Network)

VPN 또는 가상 사설 네트워크는 인터넷을 통해 디바이스 간에 사설 네트워크 연결을 생성합니다. VPN은 퍼블릭 네트워크를 통해 데이터를 안전하게 익명으로 전송하는 데 사용됩니다. 또한 사용자 IP 주소를 마스킹하고 데이터를 암호화하여 수신 권한이 없는 사람이 읽을 수 없도록 합니다.

VPN의 작동방식

  1. 터널링 프로토콜
    가상 사설 네트워크는 기본적으로 로컬과 다른 vpn서버 사이에 보안 데이터 터널을 생성
    온라인이 되면 이 vpn서버가 모든 데이터의 소스가 되며 ISP와 기타 서드파티는 인터넷 트래픽을 볼수 없음
  1. 암호화
    VPN프로토콜은 데이터 터널을 통해 데이터를 전송하기 전에 데이터를 스크램블
    VPN서비스는 필터 역할을 하여 한쪽 끝에서는 데이터를 읽을 수 없게 만들며, 다른 쪽 끝에서는 디코딩만 함
    네트워크 연결이 손상 될 수는 있으나 개인 데이터 오용을 방지 할수 있음 > 공격에 취약하지 않으며 인터넷 연결이 안전하게 됨

출처 : https://aws.amazon.com/ko/what-is/vpn/

솔직히 이걸로는 이해가 잘 안된다. 그래서 구축을 해보기로 했다.


VPN구축 (in Proxmox with Wireguard)

  • 구축에는 서버 포럼의 달소님 글을 참고 했습니다.
    출처 : https://svrforum.com/os/282701

  • 구축 순서
    LXC생성(Ubuntu) > Docker 설치 > wg-easy(Wireguard GUI Ver.)

1. LXC(Linux Container) 생성

1-1 ubuntu LTS LXC컨테이너 다운로드


local > CT Templates > Templates로 이동합니다.


많은 양의 템플릿들


Ubuntu 23.04 다운로드 진행을 하였으나, 다운로드가 되지 않았다.


ISSUE : download Error

**CAUSE: dns 설정 문제
SOLVE:
구글링해보니 dns를 한번 체크해보라는 의견이 있었다.
참고 사이트 : https://forum.proxmox.com/threads/cannot-download-container-templates.58723/


ssh로 서버접속해서 resolv.conf 파일을 확인


맙소사...
데비안 OS의 네트워크 수정경로는 아래와 같았다.
"/etc/network/interfaces"


nano에디터로 게이트웨이 아래에 dns 경로를 추가 해 주었다.
이 후, 네트워크 재시작 "service networking restart"


잘 다운로드 되었다. ㅎㅎ


1-2 컨테이너 생성


우측 상단의 Creat CT 클릭


LXC컨테이너는 보안상 권한이 없는 컨테이너로 만들어야 안전하다고 한다.


템플릿은 아까 다운로드 했던 ubuntu를 선택해 준다.


디스크는 20G정도 주었다.
cpu와 램은 나중에 수정을 해도 되니 최대한 적게 잡아주었다. (1core/1024M)


네트워크는 위와 같이 설정


dns는 8.8.8.8로 설정 했다.


최종적으로 설정 확인


생성 완료!


콘솔로 접속도 잘 된다.
접속 후, "apt update와 apt upgrade -y" 진행해주었다.

2. Docker 설치

2-1 curl 설치

아래의 명령어로 curl 패키지 설치
(경량화 LXC이다보니 curl도 설치가 필요하다.)
apt install curl

2-2 docker 설치 전 준비

docker설치를 위해서 서버에 ssh로 연결을 하려고 했으나 아래와 같이 접근이 거부 되었다.

그래서 또 구글을 뒤졌다.

ISSUE : Connection & Permission Error

CAUSE: 리눅스 보안설정으로 root계정으로 바로 접속이 불가능
SOLVE: /etc/ssh/ssh_config 파일 내용 중, PermitRootLogin을 주석 제거 및 Yes로 변경
service sshd restart 명령어로 서비스 재시작
참고 사이트 : https://mkil.tistory.com/493

해결이 되는가 싶었으나... ssh 서비스 재시작 에러가 발생이 되었다.

journalctl로 에러로그 확인 및 구글 검색
참고 사이트 : https://askubuntu.com/questions/1113607/failed-to-start-openbsd-secure-shell-server-error-when-i-try-to-run-apt-get-or-t

ISSUE : Service Restart Error

CAUSE: ssh_config 구문 오류
SOLVE: ssh_config의 PermitRootLogin 구문 뒤에 yes추가


ssh 접속 완료


2-3 docker 설치

도커 설치는 아래의 사이트를 참고 했다.
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

apt 리포지터리 설치 및 사용

#Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
#Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
(. /etc/os-release && echo "VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

docker 패키지 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
(위 명령어를 그대로 복사해서 붙여 넣으면 된다.)

잘 설치 되었는지 hello-world 이미지 불러오기

2-4 docker compose 설치

apt install -y docker-compose 명령어를 입력하여 설치해 주었다.



3. Wiseguard 설치 (WG-Easy)

3-1 설치할 디렉터리 생성

아래 명령어로 디렉터리를 생성 및 이동
mkdir wg-easy
cd wg-easy

3-2 참고할 WG-Easy docker 사이트

https://github.com/WeeJeWel/wg-easy

3-3 yml파일 다운로드

wget https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/docker-compose.yml

yml 파일을 nano나 vi로 열어준다.


yml 파일에서 필요한 부분은 내 서버에 맞게 수정했다.


수정 후 아래 명령어로 compose 진행
docker-compose up --detach


docker ps 명령어로 가동중인 컨테이너 확인



ISSUE : 패스워드 없이 접속

CAUSE: .yml파일 주석이 제거되지 않아 적용이 되지 않음
SOLVE: .yml파일 수정 및 변경된 이미지를 다시 빌드


ISSUE : Rebuild Error

CAUSE: 읽어보니 yml파일의 문법에 문제가 있어 체크 > 7번째 줄의 띄어쓰기 문제
SOLVE: 수정 후 docker-compose up --build --force-recreate -d 로 재빌드


패스워드 창 확인!


ISSUE : Login error

CAUSE: yml 파일의 WG_DEFAULT_ADDRESS=의 설정이 잘못 되어 있었음
SOLVE: 사이트 참고하여 DEFALUT값으로 입력 > rebuild 후 정상접속
SITE:https://github.com/WeeJeWel/wg-easy



  • 요약 및 느낀점
  1. VPN이란 무엇인가에 대해서 알게 되었다.
  2. docker 및 docker compose설치
  3. LXC 컨테이너 및 VPN 설치
  4. 생각보다 작은거 하나 구축하는데도 이슈가 많이 생긴다는걸 알게 되었다.
  5. 구축을 해보긴 했으나, 직접 사용을 해봐야 vpn을 알 수 있을 것 같다.

감사합니다.

profile
hello world~!

0개의 댓글