728x90

Bastion이란?

 

성형 요새에서 돌출 지점마다 건설된 포루를 의미한다. 이때에는 능보, 치성이라고도 흔히 번역된다. 요새나 보루로 잘못아는 경우가 많은데 그렇게 큰 전체를 의미하지는 않는다. 딱 돌출부만 칭하는 단어다.

 

Bastion 서버는 보안 강화를 위해 설계된 특별한 서버로, 외부 네트워크(예: 인터넷)와 내부 네트워크(예: 사설망) 사이에 위치하여 내부 네트워크로의 접근을 제어하고 보호하는 역할을 한다. 마치 중세 시대 성곽의 '보루'와 같은 역할을 수행하기 때문에 Bastion이라는 이름이 붙었다.

 

 

주요 목적과 기능

 

 

  • 단일 접근 지점 제공: 외부 네트워크에서 내부 네트워크의 여러 서버에 직접 접근하는 것을 차단하고, Bastion 서버를 통해서만 접근을 허용. 이는 내부 네트워크의 보안을 크게 강화한다.
  • 접근 제어 및 인증: 누가 언제 내부 네트워크에 접근하려고 하는지 Bastion 서버에서 관리하고 인증한다. 이를 통해 허가된 사용자만 내부 자원에 접근할 수 있도록 통제한다.
  • 보안 감사 및 로깅: Bastion 서버를 통한 모든 접근 시도 및 활동을 기록하고 감사할 수 있습니다. 이는 보안 사고 발생 시 원인을 분석하고 추적하는 데 중요한 정보를 제공합니다.
  • 보안 강화: Bastion 서버 자체에 강력한 보안 설정을 적용하여 외부 공격으로부터 보호합니다. 불필요한 서비스 제거, 최신 보안 패치 적용, 다단계 인증(MFA) 적용 등이 일반적인 보안 강화 방법입니다.
  • 프록시 역할: Bastion 서버는 내부 네트워크로 연결을 중계하는 프록시 서버 역할을 수행하여, 내부 서버의 실제 IP 주소를 외부에 노출시키지 않아 추가적인 보안 이점을 제공합니다.

 

 

활용 및 사용 

  • 클라우드 환경: AWS, Azure, GCP 등의 클라우드 환경에서 외부에서 가상 네트워크(VPC) 내부의 인스턴스에 안전하게 접근하기 위해 사용된다.
  • 기업 내부 네트워크: 외부 협력업체나 재택근무자가 사내 네트워크의 특정 서버에 접근해야 할 경우, Bastion 서버를 통해 보안을 유지하면서 접근 권한을 부여할 수 있다.
  • 원격 관리: 시스템 관리자가 외부에서 서버를 관리해야 할 때, Bastion 서버를 통해 안전하게 접속하여 작업을 수행할 수 있다.

요약하자면, Bastion 서버는 외부의 잠재적인 위협으로부터 내부 네트워크와 중요한 자산을 보호하기 위한 핵심적인 보안 구성 요소이다.

728x90

'코드 > dev' 카테고리의 다른 글

도커(Docker) 명령어  (0) 2025.04.22
도커(Docker) 컨테이너(Container)  (1) 2025.04.21
처리율 제한 알고리즘  (0) 2025.04.04
Nginx  (0) 2025.04.04
네트워크 연결 확인 방법: ping, telnet, curl 활용  (0) 2025.04.04
728x90

Internet Gateway

목적

인터넷 게이트 웨이는 가상 프라아빗 클라우드(VPC)와 인터넷 간의 통신을 가능하게 합니다. VPC 내의 인스턴스 인터넷으로부터 트래픽을 보내고 받을 수 있도록 한다.

기본적으로 VPC가 공용 인터넷에 연결되는 경로를 제공

 

VPC 내의 EC2 인스턴스 또는 기타 리소스가 인터넷에 직접 액세스해야 하는 경우에 사용

 

기능 

 

  • IPv4 및 IPv6 트래픽을 모두 지원합니다.
  • 수평적으로 확장되고, 중복되며, 고가용성을 제공합니다.
  • 양방향 통신을 허용합니다.
  • 인터넷 게이트웨이 사용에는 비용이 발생하지 않습니다.

 

 

NAT Gateway(Network Address Translation Gateway)

목적

NAT 게이트웨이는 프라이빗 서브넷(공용 IP주소가 없는 서브넷)의 인스턴스가 인터넷 또는 다른 AWS 서비스에 연결 할 수 있도록 함.

중요한 점은 아웃바운드 인터넷 엑세스만 허용하고, 인바운드 인터넷 트래픽은 차단한다는 것.

 

프라이빗 인스턴스가 소프트웨어 업데이트를 다운로드하거나, 외부 API에 엑세스 하거나, 다른 인터넷 리소스와 통신해야 하지만, 요청하지 않은 인바운드 연결로부터 보호해야하는 경우에 사용.

 

기능

 

  • IPv4 트래픽을 지원합니다.
  • AWS가 기본 인프라를 관리하는 관리형 서비스입니다.
  • 아웃바운드 통신만 허용합니다.
  • NAT 게이트웨이 사용에는 사용량에 따라 비용이 발생합니다.

 

 

차이점

 

IG 는 양방향(인바운드 ,아웃바운드) 이지만 NAT는 아웃바운드 전용이다.

IG는 공용 IP가 있는 인스턴스가 통신할 수 있도록 하지만, NAT는 프라이빗 IP가 있는 인스턴스가 통신 할 수 있도록 한다.

IG 는 무료이지만 NAT 는 사용량에 따라 비용 발생.

NAT는 프라이빗 인스턴스로의 인바운드 트래픽을 차단하여 보안을 강화

즉, 인터넷 게이트웨이는 인터넷으로 가는 경로를 제공하고, NAT 게이트웨이는 프라이빗 인스턴스가 안전하게 인터넷에 액세스할 수 있는 방법을 제공

 

728x90

'코드 > dev' 카테고리의 다른 글

네트워크 연결 확인 방법: ping, telnet, curl 활용  (0) 2025.04.04
subnet mask 서브넷팅 계산법  (0) 2025.04.03
OSI 7계층  (0) 2025.04.02
네트워크 기초  (4) 2024.07.23
jenkins memory error  (0) 2024.07.17
728x90

Cloudfront ALB 연동

테스트용 이라 도메인을 따로 사지 않아 연동하는 방법만 알아보는걸로

 

 

 

1. CloudFront 란

클라우드 프론트(CloudFront)**는 아마존 웹 서비스(AWS)에서 
제공하는 콘텐츠 전송 네트워크(CDN) 서비스입니다. 쉽게 말해
, 웹 사이트나 웹 애플리케이션의 콘텐츠를 전 세계에 분산된 서버에 미리 저장해두고, 사용자에게 가장 가까운 서버에서 
콘텐츠를 제공하는 기술입니다.

 

1-1. 장점

빠른 콘텐츠 전송: 사용자와 물리적으로 가까운 서버에서 콘텐츠를 제공하기 때문에 웹 페이지 로딩 속도가 빨라집니다.
높은 가용성: 전 세계에 분산된 서버를 사용하기 때문에 특정 지역의 서버에 문제가 발생하더라도 서비스가 중단되지 않고 계속 제공됩니다.
낮은 지연 시간: 콘텐츠를 사용자에게 빠르게 전달하여 사용자 경험을 향상시킵니다.
비용 절감: 자체적으로 CDN 인프라를 구축하는 것보다 비용 효율적입니다.

 

1-2. 주요 기능

캐싱: 자주 요청되는 콘텐츠를 서버에 미리 저장하여 빠른 응답을 제공합니다.
원본 서버 오프로드: 사용자의 요청을 원본 서버로 전달하지 않고 캐시된 콘텐츠로 응답하여 원본 서버의 부하를 줄입니다.
SSL/TLS 지원: 안전한 데이터 전송을 위한 SSL/TLS 프로토콜을 지원합니다.
웹 보안: DDoS 공격 방어, 웹 애플리케이션 방화벽 등 다양한 보안 기능을 제공합니다.
실시간 모니터링: 서비스 상태를 실시간으로 모니터링하고 문제 발생 시 빠르게 대응할 수 있습니다.

 

1-3. 활용

정적 콘텐츠 전송: 이미지, CSS, JavaScript 파일 등 정적 콘텐츠를 빠르게 전송합니다.
동적 콘텐츠 전송: 웹 애플리케이션의 동적 콘텐츠도 캐싱하여 빠르게 전송합니다.
비디오 스트리밍: 고품질의 비디오 스트리밍 서비스를 제공합니다.
API 게이트웨이: API 요청을 처리하고 결과를 캐싱하여 응답 시간을 단축합니다.

 

 

2. 인증서 요청

ACM 도메인 및 서브 도메인  추가 하여 요청

 

 

3. ALB  수정

80 -> 443  리다이렉트 해제 후 

 

 

생성이후 

규칙추가(만든 도메인 )

 

 

4. cloud front 설정 

alb 선택 이후 http -> https redirect 변경

 

 

이후 설정에 

대체 도메인 설정 

 

인정서도 추가

 

 

이후 route 53 에 내 도메인 레코드 편집으로 cloud fornt 설정 

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

Jenkins CI/ CD 자동배포  (0) 2024.11.03
소규모시스템 구축(4)  (1) 2024.10.19
소규모시스템 구축(3)  (2) 2024.10.18
소규모시스템구축(2)  (1) 2024.08.01
소규모시스템 구축(1)  (1) 2024.08.01
728x90

backEnd 배포 테스트 

 

1. DB 생성 

- 특별한것 없이   aws rds 프리티이 mysql 생성 

 

backend 배포용 ec2 들어가(앞전에 생성한 front test 에 같이 작업 

DB 해당 엔드포인트로접속 

mysql -u admin -p -h {endPoit}

 

*mysql client 필수 설치 

 

 

2. db  생성 및 권한 설정 등 

mysql> create database DB이름;

mysql> show databases;

권한 설정
mysql> GRANT ALL PRIVILEGES ON employee.* TO admin@'%';

설정적용


mysql> flush privileges;

현재 사용중인 MySQL의 캐시를 지우고 새로운 설정을 적용하기 위해 사용합니다. 이 명령어를 사용하려는 사용자는 reload권한을 가지고 있어야 합니다.

 

3. 메이븐 프로젝트 설정 작업(앞전 작업 참조)

mvn clean

 

mvn pacakage 명령

 

 

4. 생성된 jar 파일 확인 

 

 

 

5.실행 

nohup java -jar employee-management-backend-0.0.1-SNAPSHOT.jar &

 

 

6. 최종 결과 확인

아래에서 port 8080

테스트 코드 호출을 확인 할 수 있다.

 

 

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

Jenkins CI/ CD 자동배포  (0) 2024.11.03
소규모시스템 구축(5)  (0) 2024.10.21
소규모시스템 구축(3)  (2) 2024.10.18
소규모시스템구축(2)  (1) 2024.08.01
소규모시스템 구축(1)  (1) 2024.08.01
728x90

매일 꾸준히 작업을 하고싶지만 못하는 관계로  개인 프리티어로 사용하기에 비용문제도 있기에 중간은 샐력하고  소스 수동 배포 부분만 따라서 작업해보기로 한다.

 

FrontEnd/ BackEnd  소스 수동 배포

 

1. ec2를 생성 및 key pair 는 이전 생성한 my ec2 key pair  를 활용하여 ec2 생성

 

 

 

2. yum 업데이트 후 nginx 설치

(실습 강의 에서는  nginx 설치를 amazon-linux-extras 하라고 되어 있지만 이는 이제 사용 불가)

sudo yum update -y
sudo yum install nginx -y

 

nginx 설치 확인

rmp -qa | grep nginx

 

 

3.aws 공식문서 참조하여 node js 설치 

https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 

자습서: Amazon EC2 인스턴스에서 Node.js 설정 - AWS SDK for JavaScript

노드 설치는 현재 Amazon EC2 세션에만 적용됩니다. CLI 세션을 다시 시작하는 경우 nvm을 사용하여 설치된 노드 버전을 활성화해야 합니다. 인스턴스가 종료되면 노드를 다시 설치해야 합니다. 다음

docs.aws.amazon.com

4. 메이븐 설치(메이븐 프로젝트의 경우)

 

yum install java java-devel maven

 

mvn 명령어 로 설치 확인

mvn --version

 

5. mysql 설치 

sudo yum update

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

sudo yum localinstall mysql57-community-release-el7-8.noarch.rpm

sudo yum install mysql-community-server

sudo yum install mysql

 aws lunx 단순 설치시 안됨

 

 

진행 하는 부분과 다르게  mysql --version 대신 아래 명령어로 확인

rpm -qa | grep mysql

 

6. git 설치 이후 testCode 가져오기

 

git clone https://github.com/janghomoon/frontend-test

 

7. 소스 경로 npm 설치 및 build

npm install
-- 설치 완료 후
npm run build

 

*현재 소스코드 node 버전 문제로 설치된 20 버전이 아닌 16버전으로 다운그레이드 

 

아래 커맨드 참조 

nvm 가져오기 (노드 버전 매니저)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

nvm 설치 확인
command -v nvm
nvm 로드 
source ~/.bashrc

nvm 설치
nvm install <버전>  
 
나는 16 버전

nvm install 16



설치된 버전 확인 및 기존 버전 제거 

# 설치된 버전 목록 확인
nvm list  
# 사용할 버전 선택
nvm use <버전>  
node -v  


nvm uninstall

 

위 버전 다운그레이드 이후 다시 재빌드 

 

 

 

 

8.  실행 

* nohuhb으로 백그라운드에서 실행
nohub npm start &


실행 확인 
netstat -ntlp

이후 curl 연결 확인

curl -v localhost:3000

 

만약 nohup 설치되어 있지만 실행 안될경우

설치여부 확인
which nohup

echo $PATH

export PATH=$PATH:/usr/local/bin  # nohup이 설치된 경로로 변경



영구 저장 필요 시

echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

 

아래는 curl 결과

 

 

 

 

9. nginx conf 설정

미리 작성한 conf 파일 이동

cp default.conf /etc/nginx/conf.d/

빌드 파일 복사 이동 
cp -r buid/* /usr/share/nginx/html/

실행
sudo  systemctl start nginx

확인
 systemctl start nginx

 

 

front 접속 결과

 

 

 

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템 구축(5)  (0) 2024.10.21
소규모시스템 구축(4)  (1) 2024.10.19
소규모시스템구축(2)  (1) 2024.08.01
소규모시스템 구축(1)  (1) 2024.08.01
VPC Peering  (0) 2024.07.30
728x90

EC2/RDS/ ELB 생성

 

1. 사용할 ec2 생성

 

2. RDS 서브넷 그룹 생성

 

RDS DB 생성

 

 

단일 DB

기존에 생성해둔 VPC 와 서브넷 그룹  보안그룹을 선택

 

아래와 같이 생성 완료

 

 

ELB 생성

 

ELB 대상그룹  설정

 

http 80 대상그룹 생성

아래와 같이 고급 상태 검사  재정의로 변경 

 

이후 8080 대상그룹 추가 생성 하여 할당 (spring boot 테스트용)

 

ELB 생성

Application LoadBalancer 생성

아래 요약과 같이  보안그룹과 매핑  및 리스너 정보 추가

 

 

생성 완료

인증서 문제로 https 설정 하지 않는걸로

728x90

'인강 정리 > DevOps & MSA' 카테고리의 다른 글

소규모시스템 구축(4)  (1) 2024.10.19
소규모시스템 구축(3)  (2) 2024.10.18
소규모시스템 구축(1)  (1) 2024.08.01
VPC Peering  (0) 2024.07.30
OpenVPN  (0) 2024.07.30

+ Recent posts