Ubuntu EC2 초기 설정하기

Aiden·2023년 5월 19일
4
post-thumbnail

저는 새로운 환경에서 개인적인 프로젝트를 시작하거나 간단한 테스트를 돌려야 할 때, 주로 AWS 의 EC2 를 사용합니다.

AMI 를 활용하면 동일한 환경을 빠르게 구축할 수도 있고, 가볍고 단순한 작업 정도는 EC2 프리티어에서도 충분히 가능하기 때문입니다.

이 때 EC2 최초 접속 시에 가장 먼저 설정하는 세 가지가 있는데, 매번 찾아보는 것이 번거로워 정리해두려고 합니다.

  • Root 사용자 패스워드 설정
  • 접속 포트 변경
  • needRestart 설정(Ubuntu 22.04 LTS)

1. Root 사용자 패스워드 설정

보안상의 이유로 Linux 에서는 root 사용자 계정이 초기에 활성화되어 있지 않습니다.
따라서 최고 사용자 권한이 필요한 명령의 경우, 일회성으로 sudo 를 사용해 각각의 명령을 수행해주어야 합니다.

하지만 매번 터미널 작업 시마다 sudo 와 함께 명령을 작성하는 것이 생각보다 번거로운 일이라,
보통 root 계정으로 로그인하여 터미널 작업을 수행하곤 합니다.

아래는 Ubuntu root 계정 로그인을 위한 초기 패스워드 설정 방법입니다.

$ sudo passwd root

위 명령으로 root 계정의 초기 패스워드를 설정하면, 앞으로는 비밀번호와 함께 root 계정으로 로그인할 수 있게 되고,
명령 단위가 아닌 세션 단위로 최고 사용자 권한을 사용할 수 있습니다.

$ su -
# 비밀번호 입력

위 명령으로 root 계정에 로그인할 수 있습니다.


2. 접속 포트 변경

EC2 에 SSH 방식으로 최초 접속할 때는 22번을 기본 포트로 사용하게 됩니다.

하지만 22번은 잘 알려진 SSH 기본 포트이기 때문에 보안 상 취약점이 되기도 합니다.
따라서 저는 EC2 최초 접속 시에 기본 포트를 변경하고, 이후 접속은 변경된 포트를 사용하여 접근하는 방법을 사용합니다.

아래는 Ubuntu 의 SSH 포트를 변경하는 방법입니다.
사전에 AWS EC2 보안그룹의 인바운드 규칙새로운 포트번호에 대한 규칙을 추가해주어야 합니다.

$ sudo vi /etc/ssh/sshd_config

sshd_config 파일을 편집기로 열어보면 아래와 같은 내용을 확인할 수 있습니다.

...
Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
...

여기서 #Port 22 의 주석을 해제하고, 이후 사용할 새로운 포트 번호를 입력한 뒤 저장해줍니다.

...
Include /etc/ssh/sshd_config.d/*.conf

Port 9292
#AddressFamily any
...

새로운 변경사항을 적용하기 위해 ssh 서비스를 재시작해줍니다.

$ sudo service ssh restart

📌 ufw 설정

만약 Ubuntu Firewall(ufw) 이 활성화되어 있다면, 기존 SSH 22번 포트를 막고 새로운 포트를 열어주어야 합니다.
ufw 는 기본적으로 비활성화되어 있으며, 활성화 여부는 아래 명령을 통해 확인할 수 있습니다.

sudo ufw status verbose

Status: inactive

ufw 가 활성화되어 있다면 아래 명령을 통해 포트 방화벽 설정을 적용합니다.

sudo ufw deny 22
sudo ufw allow 9292

📌 ec2 접속

이제 앞으로는 변경된 포트 번호를 사용하여 EC2 에 접근하여야 합니다.
아래는 .pem 키 방식의 SSH 접근에서 포트 번호를 지정하여 접근하는 명령입니다.

ssh -i "test_20230513.cer" ubuntu@1.23.45.67 -p 9292

기존 포트 번호인 22번으로 접근할 경우, 정상적으로 접근이 거부되는지를 확인합니다.

ssh -i "test_20230513.cer" ubuntu@1.23.45.67

ssh: connect to host 1.23.45.67 port 22: Connection refused

3. needRestart 설정(Ubuntu 22.04 LTS)

📌 Kernal Hint 비활성화

아래는 Ubuntu 22.04 LTS 버전의 EC2 에서 apt 를 사용한 패키지 설치/업데이트/제거 시 발생하는 Kernal Hint 를 제거하는 설정입니다.

Ubuntu 22.04 LTS 버전에서는 apt 를 사용한 패키지 작업 이후, 재시작되어야 하는 daemon 프로그램을 자동으로 검사하여 로그를 출력합니다.
이러한 작업은 needRestart 라는 기본 패키지를 통해 수행되는데, 이 때 새로운 버전의 Kernal 을 사용하기 위해서는 시스템을 재시작하여야 한다는 Kernal Hint 를 함께 띄워주게 됩니다.

문제는 위 메시지가 apt 작업 시마다 매번 출력된다는 점입니다.
EC2 환경 구축 후 여러가지 패키지를 설치하여야 하는데, 위 메시지가 매번 출력되는 것이 굉장히 번거롭고 색상도 참 눈이 아픕니다.

아래 파일의 내용을 수정해줌으로서 Kernal Hint 를 비활성화할 수 있습니다.

$ sudo vi /etc/needrestart/needrestart.conf

아래 내용에서 kernelhints 옵션값을 0 으로 변경한 뒤 저장해줍니다.

...
# Enable/disable hints on pending kernel upgrades:
#  1: requires the user to acknowledge pending kernels
#  0: disable kernel checks completely
# -1: print kernel hints to stderr only
$nrconf{kernelhints} = 0;

📌 restart 설정

사실 needRestart 패키지에서 출력하는 메시지는 Kernal Hint 만이 아닙니다.
apt 를 사용한 패키지 작업 이후, 관련 패키지를 사용하는 서비스들 중 자동으로 재시작할 서비스를 선택하는 메시지도 매번 함께 출력됩니다.

따라서 같은 파일에서 아래 내용을 수정해주어야 합니다.

$ sudo vi /etc/needrestart/needrestart.conf
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
#
$nrconf{restart} = 'l';

restart 옵션값을 l 로 변경하게 되면,
재시작이 필요한 서비스들을 목록 (l)ist only 로만 확인한 뒤, 이후 사용자에 의해 수동으로 재시작함을 의미합니다.

제공하고 있는 다른 restart mode 옵션은 아래와 같습니다.

2개의 댓글

comment-user-thumbnail
2023년 5월 24일

늘 잘 읽고 있습니다. 공부하는 흐름이 좋다고 생각했었는데 일 하면서도 흐름을 잘 잡으시네요 👍

1개의 답글