카테고리 보관물:  IT

IMDG Overview

IMDG(In-Memory Data Grid)란?

IMDG(In-Memory Data Grid)는 데이터를 메인 메모리에 분산·복제하여 고속 읽기/쓰기를 제공하는 분산 인메모리 스토리지 기술입니다. 일반적인 Legacy 구조는 WEB-WAS-RDBMS 계층의 구조이며 RDBMS는 데이터를 하드디스크에 적재하였습니다. 하지만 나날이 늘어가는 데이터의 양과 사용자의 폭발적인 증가로 인해 기존의 Legacy 구조에서는 WAS 또는 AP를 병렬적으로 확장하더라도 RDBMS의 병목으로 인해 처리량 향상의 한계에 다다르게 되었습니다.

그로 인해 메모리 캐시를 활용하는 것을 뛰어넘어 메인 메모리에 데이터를 보관하는 IMDG와 IMDB가 등장하게 되었습니다.

전통적인 하드디스크에 데이터를 적재하는 구조에서 벗어나 메인 메모리에 데이터를 적재하는 점은 IMDB(In-Memory Database), MMDB(Main Memory Database)와 유사하지만 아래의 차이점이 있습니다.

  • 다수의 서버를 클러스터링하여 데이터를 분산, 복제 보관
  • Active/Standby 관계가 아닌 모든 서버가 활성화 되어 고가용성(High Availability) 및 확정성(Scalability) 보장
  • 비 관계형, 객체지향의 NoSQL기반(Key, Value) 데이터 구조
  • 메모리 기반 연산(Computing)

IMDG가 각광 받기 시작한 것은 최근 수년동안이지만 메모리 저장소 개념이 등장한 것은 꽤 오래된 개념입니다. 과거에는 고가의 메모리를 저장소로 사용하는 부분에 가격적인 부담이 크고 메모리에 데이터를 보관하면서 발생할 수 있는 데이터 정합성, 지속성 문제로 인해 단순히 Buffer 개념의 캐시 서버(Cache Server)로 사용 하였지만 근래 들어 메모리 가격의 인하, 컴퓨팅 파워의 획기적인 증가, 분산Lock등의 데이터 정합성 유지를 위한 기능들로 인해 다시 주목을 받게 되었습니다.

IMDG(In-Memory Data Grid)의 종류

다양한 제품군이 존재하며 대부분 오픈소스와 상용제품군 투트랙으로 서비스 하고 있습니다. 제품 종류는 아래와 같습니다.

  • Hazelcast
  • Ignite / GridGain
  • infinispan / Red Hat JBoss Data Grid
  • Terracotta
  • Oracle Coherence
  • VMware Gemfire
  • IBM eXtreme Scale

IMDG 적용 분야

IMDG는 IMDB와 달리 IMDG 내부에 처리 로직(Processing Logic)을 적재하여 저장 또는 수정되는 데이터를 통해 해당 작업을 수행 하며 기존의 3 Tier 구조의 한계를 뛰어넘는 초고속의 비즈니스 로직 구현이 가능합니다. 적용 가능한 대표적인 분야는 아래와 같습니다.

  • 빅데이터 분석 플랫폼(Hadoop)
  • AI / ML
  • 이상 거래 탐지(Fraud Detection)
  • Session Clustering
  • 기타 복잡한 데이터 전처리가 필요한 모든 분야

※ 각 밴더별 IMDG 제품 자료는 정리될 때마다 올리도록 하겠습니다…

참고

참고 문서: Hazelcast IMDG 개요 · Hazelcast 공식 문서

MikroTik wireless Config

개요

MikroTik RouterOS의 Wireless 인터페이스를 설정하는 방법을 정리합니다. AP(Access Point) 모드와 Station(Client) 모드 구성을 포함하며, WPA2 보안 설정, SSID 설정, Bridge 연동까지 다룹니다. MikroTik 소형 라우터를 무선 AP 또는 클라이언트 브리지로 활용할 때 참고하세요.

  • 미크로틱 RB2011 기준으로 작성하였습니다.
  • 한국 환경에 맞도록 설정 하였습니다.
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
add authentication-types=wpa2-psk eap-methods="" management-protection=\
    allowed mode=dynamic-keys name=profile1 supplicant-identity="" \
    wpa-pre-shared-key=password wpa2-pre-shared-key=password
/interface wireless
set [ find default-name=wlan1 ] antenna-gain=0 band=2ghz-onlyn country=\
    "korea republic" disabled=no frequency=auto mode=ap-bridge \
    mtu=1600 security-profile=profile1 ssid=MySSID wps-mode=disabled
  • password와 MySSID는 원하는 값으로 변경 하시면 됩니다.
  • 설정 이후 frequency는 auto로 사용하여도 큰 지장이 없지만 사용하지 않는 대역을 확인하여 Winbox에서 변경해주시는 것이 좋습니다.

AP 모드 vs Station 모드 비교

MikroTik 무선 인터페이스는 AP(Access Point) 모드Station 모드로 동작할 수 있습니다. AP 모드는 클라이언트 장비(노트북, 스마트폰 등)가 접속하는 무선 기지국 역할을 하며, Station 모드는 MikroTik이 다른 AP에 클라이언트로 접속하는 방식입니다. 이 글의 구성은 RB2011에서 무선 인터페이스를 AP 모드로 설정하여 유선 LAN 브리지에 통합하는 방식입니다.

AP 모드에서는 SSID, 보안 프로파일, 채널, 주파수 대역을 직접 지정합니다. 브리지에 무선 인터페이스를 포함시키면 유선 포트와 무선 클라이언트가 동일한 L2 네트워크를 공유하여 별도의 라우팅 없이 통신할 수 있습니다.

WPA2 보안 프로파일 설정

MikroTik에서 무선 보안은 Security Profile로 분리 관리합니다. 프로파일에 인증 방식(WPA2 PSK), 암호화 알고리즘(aes ccm), 사전 공유 키(WPA2 Pre-Shared Key)를 정의한 후 무선 인터페이스에 적용합니다. 이를 통해 여러 SSID에서 동일한 보안 프로파일을 재사용하거나, SSID별 다른 보안 정책을 독립적으로 관리할 수 있습니다.

# 보안 프로파일 생성 (WPA2-PSK, AES 암호화)
/interface wireless security-profiles
add authentication-types=wpa2-psk mode=dynamic-keys     name=wpa2-home wpa2-pre-shared-key=<REDACTED>

# 무선 인터페이스에 보안 프로파일 적용
/interface wireless
set wlan1 mode=ap-bridge ssid=HomeWiFi     security-profile=wpa2-home band=2ghz-b/g/n

# 무선 인터페이스를 브리지에 추가
/interface bridge port
add bridge=bridge-lan interface=wlan1

WPA2-PSK 키는 보안상 설정 파일이나 백업 파일에 평문으로 노출되지 않도록 주의합니다. RB2011 등 구형 장비에서 WPA3 지원 여부는 RouterOS 버전 및 하드웨어에 따라 다르므로, 최신 RouterOS로 업그레이드한 후 지원 여부를 확인하는 것이 좋습니다.

채널 설정과 간섭 최소화

무선 네트워크 성능을 최적화하려면 인접 AP와 채널이 겹치지 않도록 설정해야 합니다. 2.4GHz 대역에서 서로 간섭을 주지 않는 채널 조합은 1, 6, 11입니다. MikroTik에서는 /interface wireless 설정에서 channel-widthfrequency 또는 band를 지정합니다.

5GHz 대역은 채널 수가 많아 간섭이 적고 최대 속도도 높지만, 장애물 투과력이 2.4GHz보다 낮아 좁은 범위에서 더 적합합니다. RB2011 시리즈의 무선 카드 사양에 따라 지원하는 주파수 대역과 최대 속도가 다르므로, /interface wireless info 명령으로 지원 사양을 먼저 확인한 후 채널을 설정합니다.

참고

참고 문서: MikroTik Wireless AP Client 가이드 · MikroTik Bridge 인터페이스 설정

아파치 웹서버 정보 숨기기

개요

웹 취약점 스캐너(Nikto, Nessus 등)나 공격자가 서버를 탐지할 때 가장 먼저 확인하는 것이 HTTP 응답 헤더의 서버 정보입니다. 노출된 버전 정보는 해당 버전에 존재하는 CVE 취약점을 직접 타겟팅하는 데 활용됩니다.

기본 설정된 Apache로 웹서비스를 운영하면 HTTP 응답 헤더와 에러 페이지에 웹서버 정보(버전, OS, PHP 버전)가 노출됩니다. 이 정보는 공격자에게 취약점 탐색 시 활용될 수 있으므로 ServerTokensServerSignature 지시자로 불필요한 정보를 숨기는 것이 보안 운영의 기본입니다.

증상 — 기본 상태에서의 서버 정보 노출

curl로 HTTP 응답 헤더를 확인하면 Apache 버전, OS 정보, PHP 버전까지 노출되는 것을 확인할 수 있습니다.

<admin-user>@localhost:~$ curl --head <domain>
HTTP/1.1 302 Found
Date: Fri, 05 Mar 2021 02:21:54 GMT
Server: Apache/2.4.x (CentOS) OpenSSL/1.0.x PHP/7.2.x
// 웹서버/OS 버전 외에도 PHP 버전까지 노출되고 있습니다.

httpd.conf 설정

httpd.conf 또는 httpd-default.conf에 아래 두 지시자를 추가하고 Apache를 재시작합니다.

# httpd.conf 또는 httpd-default.conf에 추가
ServerTokens Prod
ServerSignature Off

# 아파치 재기동
# systemctl restart httpd

ServerTokens 옵션 상세

ServerTokens 지시자의 각 옵션별로 HTTP 응답 헤더에 포함되는 정보 범위가 다릅니다. 보안을 위해 가장 최소한의 정보만 노출하는 Prod 옵션 사용을 권장합니다.

키워드 제공 정보 예문
Prod 웹 서버 종류 Apache
Min 웹 서버 버전 Apache/2.2.3
OS 웹 서버 버전 + 운영체제 Apache/2.2.3 (CentOS)
Full 웹 서버의 모든 정보 Apache/2.2.3 (CentOS) DAV/2 PHP/5.16
ServerTokens 지시자 옵션

추가 보안 설정 — 에러 페이지 커스터마이징

ServerSignature Off로도 Apache 기본 에러 페이지에서 버전 정보가 노출될 수 있습니다. 404, 403, 500 등 에러 발생 시 기본 Apache 에러 페이지에는 서버 서명이 포함되므로, 커스텀 에러 페이지를 사용하는 것이 보안에 유리합니다.

# httpd.conf에 커스텀 에러 페이지 지정
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

또한 Apache의 Header 지시자(mod_headers)로 보안 관련 HTTP 응답 헤더를 추가하면 XSS, 클릭재킹 등의 공격에 대한 방어가 강화됩니다. X-Content-Type-Options: nosniff는 MIME 타입 스니핑을 차단하고, X-Frame-Options: SAMEORIGIN은 iframe을 이용한 클릭재킹을 방지합니다. Strict-Transport-Security(HSTS)는 HTTPS 강제 적용을 브라우저에 알립니다.

# mod_headers 활성화 후 적용 (httpd.conf 또는 .htaccess)
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
# HTTPS 환경에서만 HSTS 적용
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

이러한 보안 헤더 설정은 securityheaders.com 등의 도구로 점수를 측정하고 누락된 헤더를 파악하는 방법으로 체계적으로 관리할 수 있습니다.

결과 확인

Apache 재시작 후 동일하게 curl로 헤더를 확인하면 Server: Apache만 표시되어 버전 및 OS 정보가 제거된 것을 확인할 수 있습니다.

<admin-user>@localhost:~$ curl --head <domain>
HTTP/1.1 302 Found
Date: Fri, 05 Mar 2021 02:26:10 GMT
Server: Apache
// 웹서버 종류만 표시

참고

참고 문서: Apache ServerTokens 지시자 공식 문서 · Apache ServerSignature 지시자 공식 문서