해보고 싶은 개인 프로젝트가 있어서 AWS 프리티어 및 Oracle 무료 인스턴스를 사용해 봤지만 사양이 넉넉치 않아서 저렴하고 성능 좋은 콘타보 인스턴스를 구매하게 되었다.
최초 로그인은 root 계정 패스워드 방식으로 해야 하지만, 더 안전하고 편리하게 사용하려면 새로운 계정을 추가하는 것이 좋다.
이번 글에서는 왜 root 대신 추가 계정을 사용하는 것이 좋은지, 그리고 어떻게 설정할 수 있는지 알아보자.
왜 root 대신 추가 계정을 사용할까?
- 보안 강화
root 계정은 모든 권한을 가지고 있어서 해킹당하면 피해가 크다. 대신 ubuntu 같은 계정을 만들어 사용하면 필요할 때만 관리자 권한을 사용하니 더 안전하다. - 접속 로그 관리
서버를 여러 명이 관리해야 할 경우, 각자 계정을 만들어 사용하면 누가 어떤 작업을 했는지 로그를 통해 쉽게 파악할 수 있다. - 접근 제한
root 계정은 기본적으로 알려져 있어서 해커가 접근을 시도하기 쉽다. 추가 계정을 사용하면 보안을 한층 더 강화할 수 있다.
계정 생성 및 설정 방법
1. 새로운 계정 추가
먼저 ubuntu라는 이름으로 새로운 계정을 생성한다.
adduser ubuntu
계정을 생성하면 비밀번호를 설정하라는 메시지가 나오고, 추가 정보를 입력하라는 단계가 이어진다. 이름이나 전화번호 같은 추가 정보는 그냥 Enter를 눌러 기본값으로 넘어가도 된다.
2. 관리자 권한 부여
생성한 계정에 sudo 권한을 부여해 관리자 권한을 사용할 수 있도록 설정한다.
usermod -aG sudo ubuntu
3. SSH로 접속할 수 있도록 설정
ubuntu 계정으로 SSH 접속을 가능하게 하기 위해 설정을 진행한다.
(1) SSH 디렉터리 생성
ubuntu 계정의 홈 디렉터리에 .ssh 디렉터리를 만들어 준다.
mkdir -p /home/ubuntu/.ssh
chmod 700 /home/ubuntu/.ssh
chown ubuntu:ubuntu /home/ubuntu/.ssh
(2) 공개키 복사
현재 root 계정에서 사용 중인 공개키를 복사해서 ubuntu 계정으로 등록한다.
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
cp ~/.ssh/authorized_keys /home/ubuntu/.ssh/
chown ubuntu:ubuntu /home/ubuntu/.ssh/authorized_keys
chmod 600 /home/ubuntu/.ssh/authorized_keys
공개키 인증 방식이란?
공개키 방식은 서버 접속 시 비밀번호 대신 키 파일을 사용하는 방법이다.
- 보안성: 패스워드는 해킹 위험이 있지만, 공개키 방식은 키 파일이 없으면 접속이 불가능하기 때문에 훨씬 안전하다.
- 편의성: 설정만 하면 매번 비밀번호를 입력하지 않아도 된다.
공개키 방식이 훨씬 안전하고 편리하기 때문에, 가능하면 패스워드 인증은 비활성화하고 공개키 인증만 사용하는 것이 좋다.
공개키가 없다면 새로 생성하기
만약 로컬 컴퓨터에 공개키가 없다면, 아래 명령어로 새로운 키를 생성할 수 있다.
ssh-keygen -t ed25519
프롬프트에 경로를 묻는 메시지가 나오는데, 기본값(~/.ssh/id_ed25519)을 그대로 사용하면 된다. 비밀번호 입력도 요청받지만 그냥 Enter를 눌러 생략할 수 있다.
RSA vs ED25519: 어떤 키를 사용해야 할까?
SSH 키를 생성할 때 RSA와 ED25519 중 선택할 수 있다. 둘의 차이점은 다음과 같다:
- RSA
충분히 안전하지만, 키 길이가 길어야(2048~4096비트) 높은 보안을 유지할 수 있다. 속도가 느린 편이다. - ED25519
최신 기술로 더 안전하고, 짧은 키(256비트)로도 높은 보안을 제공한다. 속도가 빠르고 키 생성도 간편하다.
추천: 가능하다면 ED25519 키를 사용하는 것이 좋다. 최신 환경에서 더 안전하고 효율적이다.
생성한 공개키를 서버에 등록하기
1. 로컬에서 공개키 내용을 확인한다.
cat ~/.ssh/id_rsa.pub
2. 출력된 내용을 복사한 후 서버의 ubuntu 계정 디렉토리에 추가한다.
mkdir -p /home/ubuntu/.ssh
vi /home/ubuntu/.ssh/authorized_keys
vim 편집기에서 복사한 공개키를 붙여넣고 저장한다.
3. 적절한 권한 설정을 적용한다.
chmod 700 /home/ubuntu/.ssh
chmod 600 /home/ubuntu/.ssh/authorized_keys
chown -R ubuntu:ubuntu /home/ubuntu/.ssh
비밀번호 인증 비활성화
root 계정이나 ubuntu 계정에 대해 비밀번호 인증을 비활성화하여 보안을 강화할 수 있다.
1.SSH 설정 파일을 열어 비밀번호 인증을 끈다.
sudo vi /etc/ssh/sshd_config
2.아래 설정을 찾아 수정하거나 추가한다.
PasswordAuthentication no
본인은 해당 프로퍼티가 없어서 직접 추가했다!
3.SSH 서비스를 재시작한다.
sudo systemctl restart sshd
이렇게 하면 비밀번호 인증은 비활성화되고, 공개키 인증으로만 접속할 수 있다.
ubuntu 계정으로 접속 테스트
설정이 끝났다면, 새로운 터미널에서 ubuntu 계정으로 접속을 시도한다.
ssh -i ~/.ssh/id_ed25519 ubuntu@<서버 IP>
(선택 사항) root 계정에도 공개키 등록
필요하다면 root 계정에서도 공개키 인증을 사용할 수 있다. 방법은 동일하다.
mkdir -p /root/.ssh
vi /root/.ssh/authorized_keys
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
위 내용처럼 설정하면 ubuntu 계정을 사용해 더 안전하고 편리하게 서버를 관리할 수 있다. 콘타보 인스턴스에서의 계정 관리와 SSH 설정은 간단하지만, 기본 보안 원칙만 잘 지켜도 서버를 훨씬 안전하게 사용할 수 있다.