1. Ampere A1 인스턴스 생성

Tip. 본 강좌는 초보가 아닌 분들을 위한 캡처 설명없는 text only 가이드라서
Ubuntu 22.04로 ARM A1 인스턴스 생성하는 과정은 본 가이드에서 생략합니다.
참고가 필요하시면 제가 이전에 작성한 글을 참고하세요.
https://sonhc.tistory.com/948

 

[OCI] Oracle Cloud Ampere A1 인스턴스 생성

얼마전 서울리전에 Ampere A1 인스턴스 제한이 풀려서 Arm A1 인스턴스를 생성할 수 있었습니다. 이미 기존에 제가 올린 1장의 강좌를 따라해 보신 분들께서는 AMD 인스턴스를 생성해 보셨을테니 간

sonhc.tistory.com

 

 


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

1) 기본 패키지 설치
$ sudo apt update
$ sudo apt install net-tools

2) SSH 포트 및 로그인 방식 변경
// 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


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

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

5) 유저 계정 생성 및 sudo 권한 추가
// 유저 계정 생성
$ sudo adduser <USER_ID>
// sudo 권한 추가
$ sudo usermod -aG sudo <USER_ID>

6) 새로 생성한 <USER_ID> 계정과 추가/변경한 11122 포트로 ssh 접속 확인
// 새로운 유저 계정과 변경한 포트로 ssh 접속 확인
$ ssh <USER_ID>@<IP or DDNS> -p 11122

7) ubuntu 계정에서 ssh logout
// 맨 처음 접속한 ubuntu 기본 계정 ssh 접속 종료
$ exit



2-2. Ubuntu 22.04 기본 설정 (새로운 user 계정)

1) 새로 생성한 bbyongi 계정과 추가/변경한 11122 포트로 ssh 접속
$ ssh <USER_ID>@<IP or DDNS> -p 11122

2) SSH 사용자 접근제한 및 기본 22포트 제거 설정
// SSH 설정 변경
$ sudo vim /etc/ssh/sshd_config

// 추가 14라인: 새로 추가한 test1234는 허용, 기본값 ubuntu, opc는 불가로 설정
AllowUsers <USER_ID>
DenyUsers ubuntu opc
// 삭제: 기본 포트 22는 # 주석 처리하고 새로운 11122 포트 1개만 지정 (앞으로 22 포트로 접속 불가)
#Port 22
Port 11122

$ sudo service sshd restart

3) 오라클 클라우드 인스턴스 방화벽에서 ssh 포트 22 제거

4) 타임존 설정
$ sudo timedatectl set-timezone Asia/Seoul

5) 한글 언어팩, 한글폰트 설치
// 나눔폰트 (선호하는 폰트로 설치)
$ sudo apt install -y language-pack-ko fonts-nanum fonts-nanum-coding fonts-nanum-extra
// 은폰트 (선호하는 폰트로 설치)
$ sudo apt install -y language-pack-ko fonts-unfonts-core fonts-unfonts-extra

6) 시스템 언어 한글 설정
$ sudo locale-gen ko_KR.UTF-8
$ sudo dpkg-reconfigure locales
-> 페이지 다운 계속 눌러서 찾기 -> ko_KR.UTF-8 UTF-8 선택 -> 탭키 -> <확인>
-> ko_KR.UTF-8 선택 -> 탭키 -> <확인>
$ vim ~/.bashrc

// 맨 아래줄 추가: 원하는 언어 # 주석 해제
#export LANG=ko_KR.UTF-8
#export LANGUAGE=ko_KR.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

// 시스템 언어 한글 적용
$ source ~/.bashrc

7) 스왑(swap) 메모리 설정
// 스왑 파일 생성
$ sudo fallocate -l 8G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
// 스왑 설정
$ sudo swapon /swapfile
// 재부팅시 swap 적용되도록 설정
$ sudo vim /etc/fstab

// 맨 마지막줄에 추가
/swapfile swap swap defaults 0 0


// 스왑 메모리 확인
$ free -h

8) shell 프롬프트 색상 설정 (필요한 사람만)
$ vim ~/.bashrc

// 수정 46라인: # 주석 제거
force_color_prompt=yes
// 수정 60라인: prompt 색생 코드 32m(초록색) -> 31m(빨간색) 변경 (30 ~ 36 사이로 변경 가능)
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

$ source ~/.bashrc




2-3. Ubuntu 22.04 보안 설정

1) fail2ban 설치
$ sudo apt install -y fail2ban python3-pip sqlite3 rsyslog
$ sudo pip3 install pyinotify
// 정책 파일 복사 (필요시 수정)
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
// 서비스 재시작
$ sudo systemctl enable fail2ban
$ sudo systemctl restart fail2ban
$ sudo systemctl status fail2ban
// 현재 ssh 접속 실패 로그 확인 (아무 결과도 없는게 좋은겁니다.)
$ sudo cat /var/log/auth.log | grep "Failed password"
// Bans 테이블에서 차단된 IP 조회
$ sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips;"

2) fail2ban 셋팅
// checkban 명령 alias 추가 (자주 실행해 보기 위해 단축 명령어 설정)
$ vim ~/.bashrc

// 맨 아래줄 추가
alias checkban='sudo sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select distinct ip from bips;"'
alias checkauth='sudo cat /var/log/auth.log | grep "Failed password"'

$ source ~/.bashrc
$ checkban
$ checkauth
// fail2ban 로그 마지막 100 라인 확인 (필요시에만 사용. CTRL+C 누르면 종료됨)
$ sudo tail -100f /var/log/fail2ban.log
// IP 차단 커맨드 설정/제거
$ sudo fail2ban-client set sshd banip <IP주소>
$ sudo fail2ban-client set sshd unbanip <IP주소>




2-4. Ubuntu 22.04 xRDP 설정 및 원격 데스크탑 연결

1) xRDP 설치
$ sudo apt install -y ubuntu-desktop
$ sudo apt install -y xrdp

2) xRDP 인증서 권한 추가
$ sudo adduser xrdp ssl-cert

3) xRDP 기본 포트 변경
$ sudo vim /etc/xrdp/xrdp.ini

// 수정 22라인: 기본 포트 3389를 변경할 포트 13389 으로 수정
[globals]
#port=3389
port=13389


4) xRDP 세션 설정 변경 (Ubuntu 22.04 에서는 설정할 필요 없음, 20.04는 # 제거하기)
$ sudo vim /etc/xrdp/startwm.sh

// 추가 32라인: "test -x /etc/X11/Xsession && exec /etc/X11/Xsession" 윗줄에 붙여넣기
// Ubuntu 22.04 에서는 설정할 필요 없음. Ubuntu 20.04는 # 제거하기
#unset DBUS_SESSION_BUS_ADDRESS
#unset XDG_RUNTIME_DIR


5) xRDP 재시작
$ sudo systemctl restart xrdp
$ sudo systemctl status xrdp 6) iptables 에 새로운 ssh 포트 허용 및 저장
$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp -m tcp --dport 13389 -j ACCEPT
$ sudo netfilter-persistent save
// 현재 설정된 iptalbes 확인 ("Chain INPUT (policy ACCEPT)" 참고)
$ sudo iptables -L 7) 윈도우 10 에서 "원격 데스크탑" 접속
- Start Setup -> hangul 선택 -> privacy, 그냥 NEXT -> Start Using Ubuntu
- 언어 지원 -> "언어 지원이 완벽하게 설치되지 않았습니다" -> 설치

8) 언어팩 설치 및 한영키 CTRL + SPACE 전환 설정




2-5. 블록볼륨 연결

- 기본 경로 : /dev/oracleoci/oraclevdb

1) iscsi 등록
$ sudo iscsiadm -m node -o new -T iqn.201?-??.com.oracleiaas:<블록정보> -p <블록IP정보>:<블록포트>
$ sudo iscsiadm -m node -o update -T iqn.201?-??.com.oracleiaas:<블록정보> -n node.startup -v automatic
$ sudo iscsiadm -m node -T iqn.201?-??.com.oracleiaas:<블록정보> -p <블록IP정보>:<블록포트> -l

2) 디스크 확인
$ sudo fdisk -l
$ ls -la /dev/oracleoci/oraclevdb

3) EXT4 포멧
$ sudo mkfs -t ext4 /dev/sdb
$ sudo lsblk -f
$ sudo blkid | grep sdb

// UUID 확인
"11111111-2222-3333-4444-555555555555"

4) 자동 마운트 등록
$ mkdir -p ~/block
$ sudo vim /etc/fstab

// 맨 아래줄 추가
UUID=11111111-2222-3333-4444-555555555555 /home/<USER_ID>/block/ ext4 defaults,_netdev,nofail 0 2


5) 마운트 확인
$ sudo mount -a
$ df -h | grep sd
$ ls -l /home/<USER_ID>/block/
$ sudo chown <USER_ID>:<USER_ID> -R /home/<USER_ID>/block/




3-1. docker 설치 및 docker network 설정

1) docker 설치
// ARM VM.Standard.A1.Flex) 인스턴스용
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ sudo apt update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
$ docker --version

2) docker compose 설치
$ sudo apt-get install -y docker-compose
$ docker-compose --version

3) docker network 설치 (NPM 전용)
$ sudo docker network create npm_common

// docker-compose.yml 맨 아래 추가 (NPM에서 Proxy Host 등록할 컨테이너들을 동일한 network로 지정하기 위함)
# Use same docker network with NPM
networks:
  default:
    external:
      name: npm_common




FINISH

 

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

 

+ Recent posts