Linux 서버 세팅

0

기존에 운영하고 있던 서버가 너무 오버스펙이고 비용도 너무 많이 나왔기 때문에 서버를 이전하려 한다. 저번에 서버 세팅할때 너무 해메어서 기록할겸 다시 글을 작성한다.

왜 AWS를 사용하지 않았나?

Docker를 자주사용하기 때문에 2코어 4기가 정도 되는 서버가 필요했다.
보통 AWS EC2를 많이 이용하는데 가격이 나에겐 부담스러웠고, AWS는 다양한 서비스를 제공하기 때문에 많이 사용되는데 (S3, RDS, Lambda, Elastic Beanstalk 등) 우리는 그것들을 이용한 필요가 없었기 때문에 저렴한 vultr 의 클라우드 서비스를 이용하기로 했다.


CURL 설치

$ sudo apt-get install -y curl

CURL은 서버와 통신할 수 있는 커맨드 명령어 툴이자 웹개발에 매우 많이 사용되고 있는 무료 오픈소스다. 우분투에 CURL 을 설치한다.

Nodejs설치

$ sudo apt update

우분투(Ubuntu)에서 apt은 "Advanced Packaging Tool"의 약어로, 리눅스에서 소프트웨어를 설치, 업데이트, 제거하는 명령 줄 도구이다. apt를 사용하면 사용자가 간단하게 소프트웨어를 관리할 수 있다.

sudo apt update 명령어는 인터넷으로부터 최신 패키지 리스트를 다운로드하여 로컬 시스템의 패키지 데이터베이스를 최신 상태로 업데이트한다. 이를 통해 시스템은 최신 소프트웨어를 찾아내고, 사용자가 필요로 하는 패키지들을 업그레이드 또는 설치할 수 있게 된다.

$ sudo apt install nodejs

apt 패키지 매니저를 사용해 우분투 패키지 저장소에 기본으로 들어가 있는 Node.js 를 다운받는다.

sudo apt install npm

노드 패키지 매니저 npm 도 다운로드 한다

Docker 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

도커를 설치하기 위한 패키지를 설치한다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Docker의 공식 GPG키를 추가한다.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Docker의 공식 apt 저장소를 추가한다.

sudo apt-get install docker-ce docker-ce-cli containerd.io

이제 docker를 설치한다.

sudo systemctl status docker

다 설치했으면, 도커가 실행중인지 확인한다.

Docker-compose 설치

sudo curl -sSL "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

docker-compose를 다운받는다.

chmod +x /usr/local/bin/docker-compose

docker-compose 파일에 실행 권한을 추가한다.

유저 생성 및 권한 부여

리눅스에서 root 계정은 시스템의 최상위 권한을 가진 슈퍼 유저(superuser) 계정이다. root 계정은 시스템의 모든 파일과 설정을 수정하고 관리할 수 있으며, 모든 권한을 갖게 된다.

보안 문제, 데이터 손실 등의 문제가 있기 때문에, 필요한 작업에 따라 권한을 필요한 만큼만 부여한 일반 사용자 계정을 사용하는 것이 권장된다. 관리자 권한이 필요할 때는 sudo 명령어를 사용하여 특정 작업에 대한 임시적인 루트 권한을 얻어 실행해야 한다.

sudo adduser <username>

새로운 유저 생성

id <username>

유저 정보 확인.

su - <username>

해당 유저로 변경한다.

cut -d: -f1 /etc/passwd

유저 목록 확인

생성한 유저에게 도커에 대한 권한 부여

sudo usermod -aG docker [username]

도커는 항상 root 권한으로로 실행되기 대문에 sudo를 사용하여 명령어를 입력해야한다.

따라서 해당 사용자를 docker 그룹에 추가 함으로써 sudo 명령어를 사용하지 않고 도커 명령어를 사용할 수 있게 한다.

sudo service docker restart

도커를 재시작 한다.

방화벽 설정

방화벽은 네트워크와 인터넷 사이에서 컴퓨터 또는 네트워크의 보안을 관리하는 경계를 형성한다. 이러한 보안 경계를 통해 비인가된 사용자나 악성 코드 등으로부터 시스템을 보호하고, 허용된 트래픽만이 시스템으로 들어오거나 나가도록 허용 또는 차단할 수 있다.

ufw enable

ufw enable 명령어를 실행하면 방화벽이 활성화되고 현재 설정에 따라 통과할 수 있는 트래픽과 차단되는 트래픽이 결정된다. 기본적으로 ufw는 모든 입력 트래픽을 차단하도록 설정되어 있다. 따라서 ufw를 활성화한 후에는 원하는 서비스나 애플리케이션에 대한 예외 규칙을 추가하여 허용할 트래픽을 지정해야 한다.

ufw allow 80/tcp  # 일반 웹 정보 관련 입출력 통로

80 port 는 웹 서버가 기본적으로 사용하는 포트로, 웹 브라우저가 웹 사이트에 접속할 때 사용된다. HTTP(Hypertext Transfer Protocol)를 통해 웹 페이지를 불러오고 정보를 주고받기 위해 사용되는 포트이다.

ufw allow 443/tcp  # SSL 설치 시 웹 정보 관련 입출력 통로 

443 port는 HTTPS(보안 HTTP) 통신에 사용되는 표준 포트이다. HTTPS는 웹 서버와 클라이언트 간의 암호화된 통신을 제공하여 보안성을 강화하는 프로토콜이다. 따라서 443 포트를 열어주는 것은 안전한 웹 사이트 접속을 위해 필요하다.

ufw allow 22/tcp  # ssh용 신규 포트

22 port는 SSH(Secure Shell) 서비스에 사용되는 포트이다. SSH는 원격 접속을 안전하게 제공하는 프로토콜로, 리눅스와 유닉스 기반 시스템에서 원격으로 서버에 접속하고 관리하는데 사용된다. SSH를 통해 원격으로 로그인하여 서버를 관리하기 위해 허용해준다.

ufw disable

방화벽을 비활성화 명령어

ufw status

현재 방화벽의 상태를 확인하는데 사용.

ufw deny 22

특정 포트 또는 IP 주소로부터의 모든 트래픽을 거부하는 명령어.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글