1. 용어 및 개념 정리

[1] Bastion Server ??

 Bastion 용어는 성 외곽을 보호하기 위해 돌출된 부분을 말하며, 적으로부터 효과적으로 방어하기 위한 수단이다. Network 에서 Bastion 는 Public, Private Network 에 대한 엑세스를 제공하기 위한 보안 엑세스를 제공하는 주체를 말한다. 쉽게 말하면 관리자가 server terminal 에 접근하기 위한 진입점이다. 

 Bastion Server 를 별도로 구성하는 이유는 서버 터미널 접근에 대한 대응, 서비스 영향 최소화, 서비스 정상 트래픽 구분, 서비스 영향 최소화 3가지 이다. Basiton Server 는 아래와 같은 문제에 대해 대응할 수 있다.

  1. 높은 트래픽이나 디도스 공격으로 인한 대역폭 점유로 인해 관리자가 서버 터미널에 접근할 수 없는 문제
  2. 악성 루트킷, 랜섬웨어 등으로 인해 서비스하는 서버에 영향을 미치는 이슈
  3. 서비스 트래픽과 관리자 트래픽 구분하지 못하는 문제 

 AWS 에서 Bastion Host 를 구성하는 방법으로는 EC2 instance 를 통한 방법과 Session Management 가 있다. 이번 내용은 EC2 를 이용해 bastion server 구성한 내용이다.

 

 

2. 서버 구성하기

  1. bastion server 구성
    1. management ec2 생성
      1. management subnet 생성
      2. management routing table 생성
      3. bastion security group 생성
      4. public security group, private security group SSH 접근 권한 재설정
    2. bastion EC2 instance 생성
    3. bastion 서버 설정
      1. session timeout 환경 변수 적용
      2. logger 사용하여 감사로그 남기기

 

[1] management ec2 생성

(1) management subnet 구성

 

(2) management routing table 생성

(3) bastion security group 생성

  • destination : 0.0.0.0/0 target : internet-gateway 추가
  • public security group, private security group : inbound rule SSH 접근 권한 management-security-group 으로 설정

 

(4) bastion EC2 instance 생성

  • OS : Ubuntu 설정
  • 아키텍처 : x86 선택
  • 인스턴스 유형 : t2.micro
  • 키 페어 : pem 을 통한 생성
  • network 설정 (아래 그림 참고)
    • VPC 설정
    • management subnet 설정
  • security group 설정 (위 그림 참고)
    • SSH : 내 public ip 설정

 

 

[2] bastion 서버 설정

(1) session timeout 환경 변수 적용

$ sudo vi ~/.profile

## 1. history 명령 결과에 시간값 추가
HISTTIMEFORMAT="%F %T -- "    
export HISTTIMEFORMAT
  
## 2. 세션 타임아웃 설정 (초 단위)
export TMOUT=600              

$ source ~/.profile
$ env

(2) logger 사용하여 감사로그 남기기

$ sudo vi ~/.bashrc
  tty=`tty | awk -F"/dev/" '{print $2}'`
  IP=`w | grep "$tty" | awk '{print $3}'`
  export PROMPT_COMMAND='logger -p local0.debug "[USER]$(whoami) [IP]$IP [PID]$$ [PWD]`pwd` [COMMAND] $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" )"'

$ source  ~/.bashrc
$ sudo vi /etc/rsyslog.d/50-default.conf
local0.*                        /var/log/command.log
    
$ sudo service rsyslog restart
$ tail -f /var/log/command.log

 

 

Reference