이제 본격적으로 Ubuntu 20.04 서버 셋팅을 진행해 보겠습니다.

가이드는 아래와 같은 셋팅 정보를 예시로 설명을 진행합니다.
예시에 빨간색 표시한 값들을 선호하는 값으로 바꾸어 진행하셔도 됩니다.

예시)
- 인스턴스 IP : 123.45.67.89
- Ubuntu 유저 계정 : test1234
- 변경할 SSH 포트 : 11122
- 변경할 xRDP 포트 : 11133

Tip. 리눅스 console에서 command 실행 결과는 "접은글"로 숨겨 놓았습니다.
       실행 결과에 대한 참고가 필요한 경우 "더보기"를 클릭해서 확인 할 수 있습니다.

Tip. vim 편집 내용은 표로 정리 하였는데, 표 안의 // 주석은 편집해야할 위차나 설명이니
       // 까지 함께 copy & paste 하시면 에러 날 수 있으니 잘 필터링 해주세요.



 

2-1. 인스턴스 Ubuntu 20.04 초기 설정 (기본 ubuntu 계정)

1) 기본 패키지 설치

  • $ sudo apt update
  • $ sudo apt install net-tools

 

 

2) SSH 포트 및 로그인 방식 변경

Tip. 기본 포트 22를 사용 할 경우 외부 침입이 쉽게 발생하므로 다른 포트로 변경하는게 좋습니다.
     가이드는 기본 포트 22를 11122로 변경하는 예시로 설명합니다. (원하는 숫자로 지정하세요.)

// SSH 설정 편집

  • $ sudo vim /etc/ssh/sshd_config
// 수정 15라인: 기본 22 포트와 새로운 11122 포트 2개 지정 (초보자를 위해 포트를 둘 다 열기)
Port 22
Port 11122
// 수정 58라인: no -> yes 수정 (ssh key 파일대신 패스워드 입력 방식)
PasswordAuthentication yes
// 수정 59라인: # 주석 제거 (암호 없는 유저 로그인 불가)
PermitEmptyPasswords no

// SSH 설정 적용 (재실행)

  • $ sudo systemctl restart ssh
  • $ sudo netstat -tnlp | grep sshd

 

더보기

$ sudo systemctl restart ssh
$ sudo netstat -tnlp | grep sshd
tcp        0      0 0.0.0.0:11122           0.0.0.0:*               LISTEN      13867/sshd: /usr/sb
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      13867/sshd: /usr/sb
tcp6       0      0 :::11122                :::*                    LISTEN      13867/sshd: /usr/sb
tcp6       0      0 :::22                   :::*                    LISTEN      13867/sshd: /usr/sb

 

// 현재 설정된 포트 확인

  • $ cat /etc/ssh/sshd_config | egrep ^\#?Port

 

더보기

$ cat /etc/ssh/sshd_config | egrep ^\#?Port
Port 22
Port 11122

 

 

3) iptables 에 새로운 ssh 포트 허용 및 저장

// 11122 포트를 input 허용으로 등록

  • $ sudo iptables -I INPUT 6 -m state --state NEW -p tcp -m tcp --dport 11122 -j ACCEPT

// 변경한 내용 저장

  • $ sudo netfilter-persistent save

// 현재 iptables 설정 확인

  • $ sudo iptables -L

 

더보기

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp -m tcp --dport 11122 -j ACCEPT

$ sudo netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere             udp spt:ntp
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:11122
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
... (생략)

 

Tip. 가이드는 Ubuntu 20.04에서 기본으로 제공하는 iptables 설정을 유지합니다.
       만약 서버 셋팅하면서 ssh, http, xrdp 등 외부에서 인스턴스 서버로 접근되지 않을 경우에는
       오라클 클라우드 "Default Security List for vcn"의 수신 규칙과
       Ubuntu 20.04의 iptables 설정을 확인해 보셔야합니다.

Warning! iptable 사용하지 않고 싶은 분만 진행하세요.
       iptables 관리에 자신이 없으시면 비활성화도 가능합니다.
       다만 아래와 같이 INPUT/OUTPUT/FORWARD 모두 허용하여 iptables을 사용하지 않게 되면
       Ubuntu 20.04에서 제공하는 외부 침입을 막아줄 S/W 방화벽이 하나 제거된 상황이니
       포트 관리의 편리함을 선택하고 모두 허용할지, 복잡하고 어려워도 iptables을 계속 사용할지는
       관리자의 선택이 필요합니다. (향후 가이드에서 iptables 관련 내용은 더 이상 다루지 않습니다.)

// ubuntu iptables 설정 초기화 (INPUT/OUTPUT/FORWARD 모두 허용하여 iptables 사용 안함 효과)

  • $ sudo iptables -P INPUT ACCEPT
  • $ sudo iptables -P OUTPUT ACCEPT
  • $ sudo iptables -P FORWARD ACCEPT
  • $ sudo iptables -F
  • $ sudo iptables -L
  • $ sudo netfilter-persistent save

 

 

4) 오라클 클라우드 인스턴스 방화벽에서 추가/변경한 ssh 포트 오픈

Tip. 1부 1-4 가이드 참조해서 새로 추가한 11122 포트 추가 or 기존 22 포트 숫자만 변경

* START -> [메뉴] -> [컴퓨트] -> [인스턴스] -> "instance" 선택
-> 서브넷: "공용 서브넷-vcn" 선택 -> "Default Security List for vcn" 선택
-> [수신 규칙 추가] -> 정보 입력 -> [수신 규칙 추가] - END
    - 소스 CIDR :  "0.0.0.0/0" 입력
    - 대상 포트 범위 : "11122" 입력
    - 설명 : "SSH" 입력 (지정하고 싶은 이름으로 입력)

Tip. 외부 접근 안될 때 참고
       오라클 관리 페이지에 [수신 규칙] 추가할 수 있는 페이지가 여러개 있습니다. (가상 네트워크가 여러개라서)
       제가 1부에서 가이드대로 셋팅하셨다면 "공용 서브넷-vcn"의 "Default Security List for vcn" 에서
       수신 규칙을 추가해 주셔야 외부에서 접근이 가능합니다. 

 

 

5) 유저 계정 생성 및 sudo 권한 추가

Tip. 보안을 위해 디폴트 ubuntu 계정 대신 새로운 유저 계정을 사용하는게 좋습니다.
       필수는 아니니 유저 계정을 추가하는게 귀찮다면 기본값 ubuntu 계정을 그대로 사용해도 무방합니다.

       본 가이드에서는 test1234 계정을 생성하도록 예시로 설명합니다. (원하는 유저 계정 생성하세요.)

// 유저 계정 생성

  • $ sudo adduser test1234

// sudo 권한 추가

  • $ sudo usermod -aG sudo test1234

 

더보기

$ sudo adduser test1234
Adding user `test1234' ...
Adding new group `test1234' (1002) ...
Adding new user `test1234' (1002) with group `test1234' ...
Creating home directory `/home/test1234' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for test1234
Enter the new value, or press ENTER for the default
        Full Name []: <--- ENTER
        Room Number []: <--- ENTER
        Work Phone []: <--- ENTER
        Home Phone []: <--- ENTER
        Other []: <--- ENTER
Is the information correct? [Y/n] <--- ENTER 나 y 입력

$ sudo usermod -aG sudo test1234

 

 

6) 새로 생성한 test1234 계정과 추가/변경한 11122 포트로 ssh 접속 확인

Tip. 만약 ssh 포트 변경 셋팅이 잘못된 경우 다시 ssh 셋팅을 확인하기 위해서
      기존 ubuntu 계정이 연결된 ssh 세션을 닫지 말고
새로운 세션으로 
       test1234 계정이 11122 포트로 ssh 접속되는지 확인하시는게 좋습니다.

// 새로운 유저 계정과 변경한 포트로 ssh 접속 확인

  • $ ssh test1234@123.45.67.89 -p 11122

 

더보기

$ ssh test1234@123.45.67.89 -p 11122
test1234@123.45.67.89's password: <--- 암호 입력
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.13.0-1018-oracle x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Thu Apr  7 13:04:48 UTC 2022

  System load:  0.1               Processes:             121
  Usage of /:   4.3% of 44.97GB   Users logged in:       1
  Memory usage: 24%               IPv4 address for ens3: 10.0.0.252
  Swap usage:   0%

51 updates can be applied immediately.
28 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

test1234@instance:~$ <--- 새로 생성한 유저 계정과 변경한 포트로 ssh 접속 확인됨

 

 

7) ubuntu 계정에서 ssh logout

// 맨 처음 접속한 ubuntu 기본 계정 ssh 접속 종료

  • $ exit

 

더보기

ubuntu@instance$ exit   <--- 오라클 인스턴스의 ubuntu 계정 로그인 상태에서 exit 종료
logout
Connection to 123.45.67.89 closed.
tetsu@ubuntu:~$  <--- 오라클 인스턴스에 ssh 접속 종료되고, 원래의 리눅스 환경 쉘로 복귀

 

 

tip. 앞으로 메인으로 사용할 유저 계정을 만들고 ssh 접속을 확인했으니
      앞으로 ubuntu 기본 계정은 사용하지 않고, test1234 계정으로 셋팅을 진행합니다.

 

NEXT

 

PS. 본 포스팅이 도움이 되셨다면 소중한 리플로 후기 공유해주세요. 광고 클릭도 큰 도움이 됩니다.

 

+ Recent posts