1. Oracle Cloud 가입(신용카드 정보 입력)
2. Oracle VM 생성 및 Start
- VM 명칭 원하는 명칭으로 수정
- OS의 경우, Oracle Linux가 아닌 Ubuntu 20.04로 변경
- SSH private.key 다운로드 (추후 ssh 방식으로 접속)
- 생성 버튼 클릭(생성시간 2분)
- Start 버튼 클릭을 통한 기동
3. 도메인 연결을 위한 고정 IP 설정해두기
인스턴스는 프리티어 기간이 끝나도 총 2개, 2개 합 용량 100GB까지는 얼마든지 삭제하고 다시 만들수 있으나 고정 IP(예약 IP)를 1개만 만들 수 있으므로, 하나만 고정된 IP를 사용할 수 있다.
- 오라클 클라우드에 로그인 및 접속 후에 네트워킹 > Reserved IPs 에 접속하시면 됩니다.
① 메뉴바 클릭
② 네트워킹 링크 클릭
③ Reserved IPs 링크 클릭
- 네트워킹 > IP관리 > 공용IP 에 접속하셨다면 예약된 공용 IP 주소 등록해주시면 됩니다.
① 공용 IP Link 클릭
② 예약된 공용 IP주소 버튼 클릭
③ 예약된 공용 IP주소 이름 입력
④ 예약된 공용 IP주소 버튼 클릭 후 등록하기
- 컴퓨트> 인스턴스 > 인스턴스 세부정보 > 연결된 VNIC에 접속하시면 됩니다.
① 리소스항목에 연결된 VNIC Link 클릭
② 만들어져 있는 기본 VNIC Link 클릭 후 접속
- 고정아이피를 적용하기 위해 컴퓨트> 인스턴스 > 인스턴스 세부정보 > 연결된 VNIC > IPv4주소에 접속하시면 됩니다.
① ... 버튼 클릭
② 편집 버튼 클릭
③ 공용 IP 없음으로 변경
④ 업데이트 버튼 클릭
⑤ ... 버튼 클릭
⑥ 편집 버튼 클릭
⑦ 예약된 공용IP 선택
⑧ 값 선택 선택
⑨ 업데이트 버튼 선택
4. SSH 접속 테스트
- Instance access 영역의 Public IP address 복사
- local terminal에서 아래와 같이 접속(ssh 명령어 없을 경우, 설치 요망)
```
sudo ssh -i '다운받은 Private KEY' ubuntu@IP주소
```
- linux 명령어를 통한 리소스 확인
```
# 메모리 사용량 확인(1G)
free -h
# 하드 가용량 확인(50G) : /dev/sda1 내 저장되는 듯?
df
```
5. 메모리 부족사태 방지를 위한, Swap(디스크를 메모리 같이 사용) 적용하기
- 아래 명령어로 Swap 적용 여부 확인하기(swap 영역이 0으로 있으면 적용하지 않은 것)
```
sudo free -m
sudo swapon -s
```
- 생성/수정/삭제 하기는 아래 글 참조
스왑 파일 생성
스왑 파일 및 파티션이 존재하지 않는 것을 확인한 뒤 아래 명령어로 스왑 용도로 사용할 파일을 생성합니다.
아래 명령어는 루트 디렉터리에 4GB의 파일을 생성한다는 뜻입니다.
sudo fallocate -l 4G /swapfile
아래와 같이 4GB의 swapfile이 생성된 것을 확인할 수 있습니다.
NY@RPI:~$ ls -al /
total 4194532
...
drwxr-xr-x 9 root root 4096 Jul 3 20:24 snap
drwxr-xr-x 2 root root 4096 Feb 1 20:02 srv
-rw------- 1 root root 4294967296 Jun 2 17:55 swapfile
dr-xr-xr-x 12 root root 0 Jan 1 1970 sys
...
스왑 활성화
이제 생성한 파일을 스왑으로 동작하도록 설정해 줘야 합니다.
생성된 파일의 권한을 수정합니다.
sudo chmod 600 /swapfile
해당 파일이 스왑으로 동작하도록 설정합니다.
sudo mkswap /swapfile
마지막으로 아래 명령어를 입력해서 스왑을 활성화 해줍니다.
sudo swapon /swapfile
라즈베리파이를 재부팅 해도 계속 사용하기 위해서 /etc/fstab를 수정해 줍시다.
sudo nano /etc/fstab
그리고 제일 하단에 아래와 같이 한 줄을 추가합니다.
/swapfile swap swap defaults 0 0
- Ctrl + O → 저장할 파일 이름 확인 후 Enter
- Ctrl + X → nano 종료
스왑 파일 삭제
스왑 파일은 삭제하려면, 아래 명령어로 먼저 스왑을 비활성화 합니다.
sudo swapoff -v /swapfile
스왑 파일을 생성할때 /etc/fstab에 추가한 내용을 삭제합니다.
sudo nano /etc/fstab
아래의 라인을 삭제해줍니다.
/swapfile swap swap defaults 0 0
마지막으로 생성했던 swapfile을 삭제해주면 됩니다.
sudo rm /swapfile
6. Nginx 웹서버 설치하기
- 아래 명령어로, nginx 설치
```
sudo apt-get update
sudo apt-get install nginx -y
```
- 서비스 확인 명령어를 통해 nginx 정상 동작 여부 확인
```
systemctl status nginx
```
- 자동시작 안되었을 경우, 아래 명령어를 통해 nginx 서비스 기동
```
sudo systemctl enable nginx
sudo systemctl start nginx
```
7. 방화벽 설정
- Oracle VM은 기본적으로 80번 포트가 열려있지 않으므로, 웹서버에 접속 불가
- 오라클 클라우드에 접속 후, 컴퓨트 > 인스턴트 > 자신의 인스턴트 상세페이지로 이동한 다음 서브넷을 클릭합니다.

- 보안 목록을 클릭

- 수신규칙 추가
80번 포트에 대한 수신 규칙을 추가합니다.
소스 유형: CIDR
소스 CIDR: 0.0.0.0/0
IP 프로토콜: TCP
소스 포트 범위: 빈값(ALL)
대상 포트 범위: 80, 443

- SSH 접속 터미널에서, 아래 명령어로 80번 포트(Http)를 열어줍니다.
```
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
```
- SSH 접속 터미널에서, 아래 명령어로 443번 포트(Https)를 열어줍니다.
```
sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
```
- 방화벽 설정 업데이트
```
sudo netfilter-persistent save
```
- 정상적으로 reject 목록에서 80과 443이 제거되었는지 확인
```
sudo iptables -L --line
```
- VM 퍼블릭 IP 주소로 웹사이트에서 접근 시, 표시되면 성공
안된다면 밑의 고정IP를 연결해주어야 한다.
고정 Public IP가 아닌 경우, 임시로 publicIP가 부여되지만, 80,443 연결은 되지 않고 재부팅시 아이피가 바뀔 수 있다고 한다.
8. fail2ban으로 SSH 보안 강화하기
- 서버가 외부와 연결되어 있기 때문에, 아래 명령어로 누가 SSH 접속하는지 파악 가능
```
journalctl -f
```
Failed password for XXX from X.X.X.X port XXX 이러한 식으로 무차별 대입 공격 시도가 수없이 들어오는 것을 확인할 수 있습니다.
Fail2ban이 이러한 SSH 로그인 시도를 필터를 통해 걸러주고, 자동으로 차단 해주는 역할을 합니다.
- 설치
```
# 패키지 목록 업데이트
sudo apt-get update
# fail2ban 설치
sudo apt-get install fail2ban
```
- 자동 시작된 fail2ban 프로세스 실행 중인지 확인
```
sudo service fail2ban status
```
- fail2ban 세부 설정
아래 명령어를 통해 새로운 파일을 생성합니다
sudo nano /etc/fail2ban/jail.local
아래 내용을 보고 원하는 데로 수정한 후 저장합니다.
만약 SSH에서 22번이 아닌 다른 포트로 변경하였다면 마지막 부분에 port도 변경해 줘야 합니다.
[DEFAULT]
# findtime동안 maxretry의 로그인 시도가 있는 IP를 bantime만큼 차단
findtime = 1d
# 로그인 시도 허용 횟수
maxretry = 5
# 차단 기간 (-1은 영구차단)
bantime = 1w
loglevel = INFO
logtarget = /var/log/fail2ban.log
syslogsocket = auto
# 데비안/우분투 기본 백엔드
backend = systemd
# 이메일 알림 설정
destemail =
sendername =
mta = sendmail
# IP 화이트리스트 (이 IP 대역은 절대 차단당하지 않음)
ignoreip = 127.0.0.1/8 192.168.0.0/24 10.0.0.0/8
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/fail2ban-ssh.log
적용 (또는 재부팅)
라즈베리파이를 재부팅 하거나,
sudo service fail2ban restart 명령어를 통해 변경 사항을 적용해 줍니다.
사용법
이 포스트에서는 간단한 사용법만 소개하니, 더 자세한 사용법을 알고 싶으신 분들은 여기를 참고해 주시길 바랍니다.
차단된 IP 목록 보기
아래 명령어를 통해 sshd 필터에 차단된 IP들을 확인할 수 있습니다.
sudo fail2ban-client status sshd
IP 차단 해제
아래 명령어로 차단된 IP를 수동으로 차단 해제할 수 있습니다.
sudo fail2ban-client set sshd unbanip <IP>
IP 차단
아래 명령어를 통해 수동으로 IP를 차단할 수 있습니다.
sudo fail2ban-client set sshd banip <IP>
이렇게 SSH 보안을 강화하는 fail2ban을 설치해 보았습니다.
이제 공격에 완벽히 안전한 것은 아니지만 전세계에서 들어오는 브루투포스 공격을 어느 정도 막아낼 수 있게 되었습니다.
- couchdb(db), nginx(웹서버)를 위한 추가 fail2ban 설정
웹서버 보안을 위한 추가 구문
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
[nginx-botsearch]
enabled = true
filter = nginx-botsearch
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2
findtime = 300
bantime = 1w
[nginx-badbots]
enabled = true
filter = nginx-badbots
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 2
Couchdb를 위한 추가 보안
[couchdb]
enabled = true
port = 5984
filter = couchdb
logpath = /var/log/couchdb/couch.log
maxretry = 3
findtime = 600
bantime = 1w
Couchdb 사용자 정의 필터
nano /etc/fail2ban/filter.d/couchdb.conf
아래 텍스트 추가
[Definition]
failregex = ^\[.+\] \[error\] \[<HOST>\] unauthorized request$
^\[.+\] \[error\] \[<HOST>\] authentication failed for user
ignoreregex =
참고 자료
- https://blog.ny64.kr/posts/create-your-own-lifetime-free-server-using-oracle-cloud/
나만의 '평생' 무료 서버 만들기
오라클 클라우드 무료티어를 사용해 나만의 ‘평생’ 무료 VPS를 만들어보자 [1]
blog.ny64.kr
- https://blog.ny64.kr/posts/oracle-cloud-swap-setup-and-nginx-installation/
Swap 설정 및 Nginx서버 설치
오라클 클라우드 무료티어를 사용해 나만의 ‘평생’ 무료 VPS를 만들어보자 [2]
blog.ny64.kr
- https://2vup.com/install-nginx-oracle-cloud/
[Oracle Cloud] 오라클 클라우드에 평생 무료 서버 만들기(프리티어 기간 종료 이후 가능)
☁️ 오라클 클라우드 (Oracle Cloud) 아마존 라이트세일(AWS), 구글 클라우드 플랫폼(GCP), 오라클 클라우드(OC) 중 가장 나은 사양의 인스턴스를 평생 무료로 대여해주는 오라클 클라우드에 인스턴스
2vup.com
- https://velog.io/@dm911/Oracle-%EA%B3%A0%EC%A0%95IP-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
Oracle 고정IP 설정하기
Oracle 고정IP 설정하기 !!
velog.io
- https://blog.ny64.kr/posts/setting-up-fail2ban-on-raspberry-pi/
Fail2ban으로 SSH 보안 강화하기
자동 IP 차단으로 SSH 보안을 강화하자 / 리눅스 서버 보안설정 [1]
blog.ny64.kr
- https://blog.ny64.kr/posts/setting-up-swap-on-raspberry-pi/
Swap 설정하기
메모리가 부족하다면 디스크를 메모리처럼 사용하자
blog.ny64.kr
최근댓글