서버 개발

[서버 개발] NAS 구축 (Unbuntu + MobaXterm)

딸기토끼0623 2024. 10. 1. 14:24

0. 내 셋팅 환경

NAS: Unbuntu20.04 Desktop (removed Desktop gui)
외부 접속 환경: MobaXterm (ssh + sftp)


1. 포트 열기 (포트포워딩 + 방화벽)

1-1. 포트포워딩

본 포스트가 포트포워딩을 설명하기 위한 글은 아니기에, 간략한 소개만 할것이다. 포트포워딩의 개념이 궁금한 사람들은 다른 블로그를 보자.

난 집 대부분의 네트워크가 iptime을 지나고 있었고, Ubuntu도 예외는 아니었다. 일단 가장 먼저 아래 사진들에서 보이는 것처럼 본인의 공공 IP 와, 미니PC의 사설IP 주소를 알아야한다. (빨간색부분)

공공 IP
사설 IP

그 다음으론, 포트포워드 규칙을 설정해야한다.

포트포워드 규칙

외부 포트와 내부포트 모두 맘대로 정하면 된다. 헷갈린다면 모든 포트를 같게 설정해도 상관없다.

요약하자면 아래 4개를 적어놔야한다.

1. 공공 IP (IPtime 공유기 AP의)
2. 사설IP (Ubuntu MiniPC 의)
3. 외부 포트 (IPtime 공유기 AP의 특정 포트로 접속하면,)
4. 내부 포트 (Ubuntu MiniPC의 포트로 자동 변환해준다.)


1-2. 우분투 방화벽 설정

이제 unbuntu 에가서 방화벽 설정을 확인하고 우리가 지정한 4. 내부포트 로의 접속을 허용해줘야 한다.

방화벽 허용


2. ssh 구축

참고 블로그: [Ubuntu] 우분투 SSH .pem 원격 접속 및 보안 설정


2-1. ssh 설치

혹시라도 본인 minipc 에 ssh가 없다면 반드시 설치하고 시작하자.

sudo apt update
sudo apt install openssh-server

2-2. ssh 키 페어 생성

아래 명령어를 수행할 때 가장 중요한 점은, ssh-keygen을 sudo 로 실행하지 말것이다!!
ssh-keygen은 해당 명령을 실행한 user가 중요하다.
왜냐하면, ssh-keygen의 결과로 나오는 모든 파일의 owner가 수행한 user 이기 때문이다.
ssh-keygen을 실행한 user명으로만 해당 pem키로 로그인 할 수 있다.
sudo(Super User Do) 는 root로 로그인할게 아니면 쓰면 안된다!!

 

cd ~

# 이때, passphase 항목은 건너 뛰어도 된다.
# 하지만, 키 탈취 시 키를 해커가 바로 사용할 수 없도록 하고 싶다면 설정해주자.
ssh-keygen -t rsa -b 4096 -f server-key

# 만약 기존에 설정된 키가 없다면, 아래 cp 명령어를 사용해 직접 복사해도 된다.
# 하지만, 기존에 작성된 authrized_keys가 있고 내용이 사라지는 것이 싫다면 cat vi 등을 이용해 직접 복붙해야한다.
mkdir .ssh
cp server-key.pub .ssh/authorized_keys
sudo chmod 600 .ssh/authorized_keys

# private 키 변환
cp server-key server-key.pem
sudo chmod 400 server-key.pem

2-3. ssh reload

sudo systemctl reload sshd
sudo systemctl restart sshd

ls
ls .ssh/

sudo systemctl status sshd

sshd active
준비된 파일들

위와 같이 active(running) 이 뜨고, 파일들이 준비되었다면 끝이다.


3. pem 키 빼오기

이게 좀 까다로운데.. 지금 까지 minipc 작업을 로컬에서 했다면, usb를 직접 꽂아서 server-key.pem을 들고와야한다. 더구나 본인 usb의 파일 시스템이 어떤지도 알아야 한다.

참고 블로그: [Linux] 리눅스 usb 마운트 시키는 방법

 

[Linux] 리눅스 usb 마운트 시키는 방법

리눅스 OS에서도 USB를 사용하여 파일을 옮겨야 하는 경우가 있습니다. 1. USB을 Linux OS가 설치된 곳에 연결합니다. 2. usb를 연결한 Linux 로 접속합니다. 3. fdisk -l 명령어로 usb가 인식되었는지 확인합

krujy.tistory.com

 

(절대 귀찮아서는 아니고)

위 블로그가 워낙 잘 정리되어 있어서 중복해서 정리하는게 의미가 없다.

어쨌든 위 블로그를 참고해서 usb 를 mount 했다면, server-key.pem 을 빼와야한다.

간단하게 코드로만 정리해놓자면 아래와 같다.

# usb 마운트
mount -t ${usb 파일시스템입력} ${usb 디바이스 위치} ${마운트 지점}

# 키복사
cp server-key.pem ${마운트 지점}

# usb 언마운트
umount ${마운트 지점}

4. mobaXterm 설정

이제 1번에서 준비되었던 1. 공공IP3. 외부포트 를 사용해서 mobaXterm을 통해 접속하는 일만 남았다.

1. 공공 IP (IPtime 공유기 AP의)
3. 외부 포트 (IPtime 공유기 AP의 특정 포트로 접속하면,)
5. server-key.pem 키

SSh 접속 설정

mobaXterm 설정은 아주아주 간단하다.


5. 내부 포트 설정

여기까지 했으면 접속이 (4. 내부포트를 ssh 기본인 22로 셋팅한 사람은 그냥되지만,) 안될거다!

그래서 ssh 설정을 추가로 해줘야 한다.

sudo ${본인이 원하는 에디터 vi or nano} /etc/ssh/sshd_config

 

sshd 포트 변경

4. 내부 포트 (Ubuntu MiniPC의 포트로 자동 변환해준다.)

1번에서 셋팅했던 내부포트로 ssh 기본 접속 포트를 바꾸고, 꼭!! 저장하자.

sudo systemctl reload sshd
sudo systemctl restart sshd
sudo systemctl status sshd

꼭 위 명령어를 실행해서 다시 한번 ssh를 껐다 키고, 설정을 재적용시키는 것도 잊지 말자!

6. rm 막기 / chattr 사용하기 / 쓸때만 저장소 mount 하기 등등

여기까지만 하고 그대로 사용해도 되지만, Ubuntu 에는 아주아주 무시한 녀석이 있다.

 

그것은 바로 rm!!

 

이를 막기 위해선 chattr을 사용해야하는데, 이를 어떻게 적용해서 NAS 데이터를 보호했는지는 다음에 포스팅에서 소개하겠다.