리눅스 - 클라우드 머신 세팅하기 (Naver Cloud)
이 글은 네이버 클라우드에서 Server 인스턴스를 생성한 후 수행해야 할 가장 기본적인 작업인 계정 생성 및 ssh 설정을 다룬다. 이후 Docker 설치까지 진행한다.
1. Server 생성 및 인증키, 비밀번호 확인
Server 생성
그냥 하면 된다. Zone과 사양만 지정한다.
ACG 생성
그냥 하면 된다. 없으면 하나 만든다. 단순한 방화벽 설정이다.
인증키 다운로드
다운로드 하면 된다. 그냥 key다.
WSL을 사용한다면 Windows에서 cp로 WSL에 파일을 옮기고 난 후
chmod 400 $FILENAME.pem
으로 적절한 권한을 줘서 보호한다.
비밀번호 확인
서버 콘솔 > 서버 관리 및 설정 변경 버튼 > 관리자 비밀번호 확인
열리는 Modal에 인증키를 업로드하면 확인할 수 있다.
포트포워딩 설정하기
모든 포트를 열어주는 게 아니라 SSH 접속 용도로만 공인 아이피를 제공한다. 1024~65535 사이의 포트는 임의로 지정할 수 있다.
보통 편리하게 2222로 하는 편이다.
애초에 포트포워딩을 안 하더라도 ssh 포트는 변경하는 편이다.
포트 설정의 자유를 제공한 것은
- enterprise에선 요구사항이 다양하기 때문이고,
- 통계적으로 특정 포트로 몰리지 않기 때문인 듯하다.
서버 접속
ssh root@SERVER_IP -p PORT
로 비밀번호 방식으로 ssh 접속을 할 수 있다.
2. privatekey 기반 ssh 로그인 구성
ssh의 비밀번호 방식을 허용할 경우 Bruteforce 공격의 대상이 된다.
- 이는 aws instance를 생성한 후 아무런 정보 없이도 공격이 매우 많이 쌓이는 것을 확인할 수 있다.
이는 임의의 매우 긴 rsa keypair를 사용한다면 공격의 비용이 매우 커지므로 효과적으로 줄일 수 있으며, 일반적인 password에 비해 key의 길이가 훨씬 더 기므로 더 안전할 것이다.
RSA 방식으로 생성된 key로 로그인하는 방식이다.
서버에 publickey를 직접 등록한다. (즉, 최초의 rsa 방식의 연결 이전에 미리 서버에 접근할 수 있어야 한다.)
publickey 방식으로 ssh 접속한다.
- server에서 메시지를 publickey로 암호화한다.
- client에서 메시지를 privatekey로 복호화한다.
- client에서 메시지를 전송하고, server에서 일치 여부를 확인하고 접근을 허가한다.
[생활코딩]
1 | #-----내 PC------ |
authorized_keys는 .ssh 밑에 있으므로 유저 한 명의 범위이다.
같은 privatekey로 여러 사용자로 접속하고 싶다면, /home/{USER}/.ssh/authorized_keys
에 모두 등록해주어야 한다.
authorized_keys 등록을 하지 않고 passwordlogin을 못하게 설정하면 이후 해당 서버로는 영영 접속할 수 없게 된다.
- 클라우드 상에서 직접 접속할 수 있는 콘솔을 제공하는 경우는 될지도 모르겠다.
3. sudo 계정 생성
네이버 클라우드로 인스턴스를 프로비저닝한 경우 계정이 따로 생성되지 않으므로 직접 생성해야 한다.
root 계정을 그냥 사용하는 경우의 단점:
- 과도한 권한이 있다. (모든 작업이 가능하다.)
- 생성한 파일 소유권이 root가 된다. (root 계정의 사용의 악순환 유발)
- 이름이 root이다. (공격 대상이 되기 매우 쉽다.)
계정 생성
[jhnyang]
아래 파일을 생성 즉시 곧장 실행한다면 Permission denied이 발생한다.
chmod +x ./{filename}
을 수행하여, 실행 권한을 부여한 후 실행(./{filename}
)한다.
1 |
|
신기한 점은, home_directory를 자동으로 생성하면,
/etc/skel
에 있는 파일이 자동으로 복사되지 않아ll
과 같은 alias를 사용할 수 없다는 점이다. 이는useradd
에서-m
옵션을 주면 자동으로 생성되며 파일들도 잘 복사되어 해결된다.-p
옵션으로 plaintext로 비밀번호를 전달하니 해당 비밀번호로는 로그인할 수 없었다. 암호화를 적용하니 잘 됐는데,passwd
로 변경 시 자동으로 암호화되는 듯하다.
계정 생성, 삭제 과정의 명령어들 모음
1 | # 그룹 조회 |
sudoer 등록
나중에 수동으로 sudoer에 등록하려면 간단하다.
sudo 그룹에 사용자명을 추가하면 된다.
1 | nano /etc/group |
기본 셸을 bash 사용하게 등록
나중에 수동으로 bash 셸을 사용하게 하려면 간단하다.
1 | nano /etc/passwd |
4. sshd 보안 설정
root 계정 로그인 시도 차단
1 | nano /etc/ssh/sshd_config |
비밀번호 접속 차단
비밀번호 접속을 차단하지 않으면 bruteforce 공격이 매우 많이 들어오게 된다.
1 | #PasswordAuthentication yes |
5. Docker 및 Docker-compose 설치
1 |
|
리눅스 - 클라우드 머신 세팅하기 (Naver Cloud)