자동화 된 바이너리

마지막 업데이트: 2022년 1월 25일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
쿤텍이 멀티 플랫폼 바이너리 분석 도구인 ‘사이벨리움’의 국내 공급에 나섰다.

이진 마스크 2022-2028년 시장 수요 및 가치 예측

이 연구는 시장이 모멘텀을 유지하는 데 도움이 될 주요 성장 요인 및 개발에 중점을 둡니다. 이 연구에는 성장 추세에 대한 자세한 개요와 주요 상품, 애플리케이션/최종 사용 산업 및 여러 지역의 기술 부문 전반에 걸친 판매 기회에 대한 포괄적인 평가가 포함됩니다. 매년 시장 성장의 다양한 세그먼트 점유율 또는 크기에 대한 자세한 그림을 제공합니다. 이진 마스크의 성장 추세 평가에는 주요 지역의 전년 대비 성장과 여러 주요 국가의 점진적인 전망이 포함됩니다.

액세스 샘플 보고서 –

이진 마스크에서 최고의 플레이어가 최근 인수한 내용을 철저히 검토하면 주요 지역 시장에서 주요 R&D 이니셔티브를 식별하는 데 도움이 됩니다. 비즈니스 환경의 여러 분석은 경쟁력 수준, 진입 장애물, PESTLE 검토 및 핵심 승리 요건을 반영합니다. 독자들은 또한 기업 매각, 다양한 시장의 플레이어 도착, 라이센싱 계약, 상위 플레이어의 주식 병합을 위한 장기 제휴와 같은 최근 산업 동향에 대해서도 배울 것입니다.

이진 마스크 시장에 포함된 주요 핵심 플레이어는 다음과 같습니다. Photronics

유형별 세그먼트
4 "x4"

24 "x30"
애플리케이션별 세그먼트
193 nm

이 연구는 또한 글로벌 산업 패턴과 상업화 혁신에 대해 논의합니다.

  • 최종 사용 분야의 큰 제조 동향
  • 다양한 애플리케이션의 새로운 혁신
  • 최근 COVID-19 전염병을 포함한 상당한 경제적 충격
  • 기회의 온상으로 부상할 시장 부문
  • 이진 마스크의 주요 지역에서 핵심 플레이어의 전략을 형성할 정책 입안자

종합사업예측에는 다음과 같은 항목이 포함됩니다.

  • 다양한 부문의 전년 대비 성장률
  • 가장 중요한 지역 시장의 시장 점유율과 중요성
  • 다양한 주요 지역 시장의 CAGR 및 해외 시장 점유율

리얼리티에서는 어떤 식으로 인사이트와 시장 전망을 내놓을 것인가. 다음은 차이를 만드는 이진 마스크에 대한 Market Reports 기사입니다.

  • 주요 성장 동향 분석은 신흥 자동화 개발의 매력을 보여주고 독자들에게 예측 기간 동안의 전망에 대한 가시성을 제공합니다.
  • 이 보고서는 최신 COVID-19 전염병 교란에 중점을 두어 주요 경제 불안정성을 자세히 살펴봅니다.
  • 최근 정부 정책을 지배한 비즈니스 역학 조사
  • 성숙하고 저개발된 시장의 전망에 대해 균형 잡힌 시각을 제공하기 위해 노력합니다.

시장의 궤적을 크게 바꿀 수 있는 잠재력이 있는 모든 시장의 글로벌 혁신에 대한 설명을 제공합니다.

  • 주요 비즈니스가 작동하는 사회 정치적 환경과 이것이 전체 이진 마스크의 수익성에 어떤 영향을 미칠 것인지에 대한 철저한 조사를 제공합니다.
  • 주요 지역 시장의 새로운 성장 경로에 대한 다양한 자금 조달 단계의 위치를 평가합니다.
  • 다양한 부문의 플레이어 간의 제휴 및 파트너십이 향후 몇 년 동안 주요 성장 트렌드를 형성하는 방법을 분석합니다.

지역 전망:

지역적으로 글로벌 이진 마스크 시장은 북미, 유럽, 아시아 태평양, 라틴 아메리카 및 중동 및 아프리카로 분류됩니다. 또한 시장 데이터 분류 및 국가별 지역 분석은 시장 조사 보고서에서 다룹니다. 또한 지역은 국가 및 지역 그룹으로 분리됩니다.

– 유럽(독일, 영국, 프랑스, 이탈리아, 스페인, 러시아 및 기타 유럽 국가)

– 아시아 태평양(중국, 인도, 일본, 한국, 인도네시아, 대만, 호주, 뉴질랜드 및 기타 아시아 태평양 지역)

– 라틴 아메리카(브라질, 멕시코 및 기타 라틴 아메리카)

– 중동 및 아프리카(GCC(사우디아라비아, UAE, 바레인, 쿠웨이트, 카타르, 오만), 북아프리카, 남아프리카, 기타 중동 및 아프리카 지역)자동화 된 바이너리

[특집]악성코드의 진화속도와 대등한 대응기술 마련해야 악성코드는 DDoS 공격, 대규모 스팸 발송 등 대부분의 사이버 공격에 사용되고 있다. 최근 인터넷을 통해 악성코드 전문 제작 툴(Malware Construction Kit)이 보급됨에 따라 누구나 지능화된 탐지 회피 기술이 적용된 악성코드를 제작할 수 있게 되었고 그로 인해 신종 악성코드의 수가 급격히 증가하고 있다. 특히 최근의 악성코드가 진화속도는 매우 빠른 반면, 그에 대응하는 기술의 발전은 그 속도에 뒤처지고 있는 것이 사실이다. 앞으로의 악성코드가 어떻게 진화할지 예의주시하여 진화속도와 나란히 하는 대응기술을 마련함으로써 악성코드로 인한 피해를 줄여야 할 것이다.

악성코드는 DDoS 공격, 대규모 스팸 발송 등 대부분의 사이버 공격에 사용되고 있다. 최근 인터넷을 통해 악성코드 전문 제작 툴(Malware Construction Kit)이 보급됨에 따라 누구나 지능화된 탐지 회피 기술이 적용된 악성코드를 제작할 수 있게 되었고 그로 인해 신종 악성코드의 수가 급격히 증가하고 있다. 본고에서는 신종/변종 악성코드의 증가, 악성코드들의 역할분담 등 최근의 두드러진 특징을 살펴보고 악성코드들이 주로 사용하는 지능형 분석/회피 기술에 대해서 설명한다. 분석/회피 기술로써 루트킷, Anti-VM/디버거, 실행 압축 등 다양한 기술들이 사용되어 왔으나 최근 이슈가 되고 있는 정상 프로세스에 바이너리 코드 삽입, 가짜 gif 헤더를 이용한 원격 명령/제어 등에 대해 중점적으로 다룬다.

신종/변종 악성코드의 급격한 증가 : 악성코드 제작 툴의 보급
최근 유명 해킹 포럼, 비공개 뉴스그룹 등을 통해 악성코드 전문 제작 툴이 널리 유포되고 있다. 이들 툴을 이용할 경우, 전문적인 지식이 없는 초급 해커들도 실행압축, Anti-VM등 최신 분석 방해 기술이 적용된 악성코드를 쉽게 제작할 수 있어 그 심각성이 점차 증대하고 있다.

그림 1은 2008년부터 인터넷을 통해 쉽게 다운로드 받을 수 있는 대표적인 악성코드 제작 툴이며 해당 툴은 단순한 버튼 클릭을 통해서 실행압축, 커널 루트킷 등 최신 분석 회피/지연 기능을 쉽게 추가할 수 있다. 그림 2는 2009년 7월 미국에서 3백만대 이상의 PC를 감염시킨 Zeus 악성코드 관리 툴로서 악성코드 생성, 감염 호스트 정보 확인, 원격 명령 제어가 가능하다.
이러한 악성코드 제작 툴의 보급은 최근 신종/변종 악성코드 수의 급격한 증가의 원인으로 분석되고 있으며 2007년 1월부터 악성코드의 수가 급격히 증가하여 2008년 12월 한달 평균 75만개의 샘플(이 중 약 50만개가 중복 또는 변종으로 분류)이 수집되는 추이를 확인할 수 있다.

악성코드들의 역할 분담 : 다운로더, 루트킷, 스팸발송 등으로 구성된 악성코드 패밀리의 등장
과거 대부분의 악성코드는 하나의 실행 파일에 확산, 실행 정보 은닉, 코드 난독화 등의 기술들을 모두 포함하기 때문에 파일 사이즈가 컸었다. 이러한 악성코드는 바이너리 코드내에 다수의 악성기능 패턴을 보유하고 있어 안티 바이러스 제품이 비정상 파일로 쉽게 분류가 가능했다. 그러나 최근 악성코드는 바이너리 업데이트, 스팸 발송, DDoS 등 각각의 기능을 전담하는 모듈들로 나뉘고 각 모듈들이 유기적으로 협력하는 하나의 악성코드 패밀리 형태를 보이고 있다.

또한 90% 이상의 악성코드가 바이너리 내의 악성기능 패턴 정보를 숨기기 위한 실행압축(packing)기술이 적용되어 있다. 2009년 FaceBook, Twitter 등 유명 커뮤니티사이트를 통해 전파된 Koobface의 경우, 그림 3에서 보는 것과 같이 다운로더, 감염 확산 등의 역할을 담당하는 파일들로 나누어져 있는 것을 확인할 수 있다. 또한 그림 4의 Cutwail 역시 5개 이상의 악성 파일들이 역할을 분담하는 것을 확인할 수 있다.

고도화된 분석 회피 기술의 사용 : 실행 정보를 남기지 않기, 가짜 gif 헤더를 이용한 원격 명령/제어
악성코드는 안티바이러스 제품 등에 의한 탐지를 방해하기 위한 목적으로 루트킷(실행 정보를 은닉) 기능을 지속적으로 사용해 왔다. 루트킷의 대표적인 예로 악성코드 프로세스 정보를 조회하기 위한 Win 32 API 호출을 가로 챈 다음(Hooking), 호출 결과 값에서 악성 프로세스 정보를 삭제하는 기법과 커널레벨에서 직접 EPROCESS 구조체 값을 변경하여 프로세스 정보를 은닉하는 기법이 있다.

그러나 이와 같은 기법은 커널에서의 실행 프로세스 정보 저장 테이블(SSDT) 가상화, 커널 구조체 재생성 등의 기법을 이용하여 탐지가 가능하다. 그래서 최근에는 svchost.exe, winlogon.exe등의 윈도우 OS의 정상 프로세스에 악성 바이너리 코드를 삽입하여 동작하는 악성코드가 증가하고 있다. 대표적인 예로, 2009년 5월 전체 스팸 메일의 45.8%를 발송하고 있는 Cutwail은 윈도우 OS의 svchost.exe 프로세스에 실행 가능한 바이너리 코드(Executable Code)를 삽입하고 이를 통해 명령/제어 메시지 수신, 스팸 발송 등의 기능을 수행하였다.

또한 기존의 악성코드는 감염 호스트를 원격에서 제어하고 명령을 전달하기 위해 텍스트 기반의 명령어(Command) 전달 방식을 사용하였으나 최근 보안솔루션들이 응용 레벨의 프로토콜 파싱, 패턴 매칭 등의 기능을 제공함에 따라 명령 메시지들이 쉽게 차단 될 수 있다. 2009년 3월 Secureworks에 의해 보고된 Cimbot은 이러한 단점을 극복하기 위해 gif파일로 위장한 명령 메시지 사용한다.

그림 5와 같이 HTTP 응답 메시지의 Content-Type을 Image/gif로 설정하였기 때문에 대부분의 보안 장비에서 정상적인 메시지로 처리하게 되지만 실제로 HTTP Body의 16 바이트부터 복호화하기 위한 키와 암호화된 명령/제어 메시지, 스팸 발송을 위한 템플릿이 내장되어 있는 것을 확인할 수 있다.

그럼 어떻게 분석하고 대응해야 하는가?
최근의 추세에 따른 대응 방법으로는 크게 두 가지 요소가 선결되어야 할 것으로 판단된다. 첫째로 급속히 증가하는 악성코드를 적시에 분석하기 위한 자동화, 두 번째로 악성코드 패밀리의 정확한 파악 및 각 역할 분석을 위한 행위분석 기술이 적용되어야 할 것이다.

-자동화된 악성코드 분석 시스템
급격히 증가하고 있는 신종/변종 악성코드에 대응하기 위해 다양한 경로로 전파되는 악성코드의 수집, 분석, 시그니처 생성, 분류 등 일련의 과정을 자동화하여 대량의 악성코드를 적시에 분석/대응할 수 있는 시스템이 필요하다. 일부 전문가의 수동 분석이 필요한 부분에 있어서는 자동화 시스템과 연계하여 운용할 수 있을 것이다.

-지능형 악성코드 행위 분석 시스템
패밀리 형태로 역할이 분담되거나 정상 프로세스에 바이너리 코드를 삽입하는 등 지능형 악성코드 분석은 초기 수집된 악성코드의 정적분석으로는 전체적인 파악이 어려울 수 있다. 따라서 악성코드가 어떠한 행위를 하는지 분석하는 행위 분석 기술이 적용되어야 한다. 예를 들어 악성코드를 실행하여 다운받는 실행파일을 추출하고 분석을 요청하고 메모리 쓰기 행위를 추적해서 정상 프로세스 영역에 메모리 쓰기 이벤트가 발생할 경우 정상 프로세스를 분석 대상으로 추가해서 행위를 분석할 수 있다.

최근의 악성코드가 진화속도는 매우 빠른 반면, 그에 대응하는 기술의 발전은 그 속도에 뒤처지고 있는 것이 사실이다. 앞으로의 악성코드가 어떻게 진화할지 예의주시하여 진화속도와 나란히 하는 대응기술을 마련함으로써 악성코드로 인한 피해를 줄여야 할 것이다.

ESTsoft

1600만의 국내 사용자 수 1위 백신 알약과 10억 개 이상의 데이터를 기반으로 자동화된 AI 플랫폼에서 악성코드 분석 전문가와 AI 전문가의 협업을 통해 최상의 신/변종 악성코드를 분류하는 모델을 제공합니다.

특히 1개의 단일 모델이 아닌 최신 AIOps를 기반으로 다양한 학습 알고리즘을 사용자의 요구사항에 맞게 반영하여 다양한 사용자의 니즈를 만족시킬 수 있습니다.

Deep Core 주요 특징

실시간 탐지 악성코드의 자가학습을 통한 AI 성능 고도화

수년간 백신을 운영한 노하우를 바탕으로 오탐 검증 시스템의 더블 체크를 통해 오탐지 가능성 최소화

정/동적 분석 대비 월등히 빠른 분석 속도로 실시간 대응

국내외 주요 기관 및 기업들과의 긴밀한 네트워크를 통해 국내 보안 환경에 최적화된 서비스 제공

Deep Core 엔진 학습 방법

Deep Core는 악성코드의 내부를 들여다보고 고유의 특징들을 다양한 방법으로 학습합니다.

Deep Core 플랫폼 운영 구조

각 플랫폼 요소들은 각각의 단계를 플러그인 형태로 구성하여 맞춤형으로 악성코드를 분류할 수 있는
모델의 학습 및 배포가 가능하며 이와 같은 방식을 통해 짧은 프로젝트 기간에도 충실하게 고객의 니즈를 맞출 수 있습니다.

뿐만 아니라 형상 관리 및 배포까지 일괄 관리를 제공하기 때문에 온프레미스 환경부터 클라우드 환경까지 고객사의 환경 호환성을 최대한 지원합니다.

Contact Us

궁금하신 사항이 있으시면 문의하기를 이용해주세요. 담당자가 자세하게 안내해드리겠습니다.

(주)이스트소프트
서울시 서초구 반포대로 3 이스트빌딩 (우) 06711
대표이사 : 정상원 사업자등록번호 : 229-81-03214
통신판매업신고번호 : 2011-서울서초-1962 02. 583. 4620

자동화 된 바이너리

쿤텍이 멀티 플랫폼 바이너리 분석 도구인 ‘사이벨리움’의 국내 공급에 나섰다.

쿤텍이 멀티 플랫폼 바이너리 분석 도구인 ‘사이벨리움’의 국내 공급에 나섰다.

[디지털경제뉴스 박시현 기자] 쿤텍은 이스라엘 보안 전문기업 사이벨리움(Cybellum)이 개발한 멀티 플랫폼 바이너리 분석 도구 ‘사이벨리움(Cybellum)’을 국내에 공급한다고 밝혔다.

최근 스마트 카, 자율주행 등 자동차와 관련된 신기술의 급격한 발전으로 인해 다양한 유형의 보안 위협이 날로 증가하고 있다. 사이버 위협에 대응하려면 소프트웨어 실행 파일 자체를 분석하는 바이너리 파일 분석(Binary file Analysis)이 필수적이지만 알려지지 않은 취약점과 IoT 산업의 발전으로 소프트웨어가 구동되는 CPU나 OS가 매우 다양해지고 있어 완전한 검증에 어려움이 있다.

이에 따라 멀티 플랫폼 바이너리 분석 도구 ‘사이벨리움’이 소프트웨어 안전성 확보를 위한 대안으로 떠오르고 있다.

사이벨리움은 다양한 플랫폼에서 정적·동적 바이너리 분석을 모두 수행하며, 탐지된 취약점 유형을 분석하고 머신러닝으로 데이터베이스를 구축해 독점적 알고리즘으로 취약점과 실제 보안 위협을 탐지하고 검증한다.

자동화된 취약점 탐지 기술로 소프트웨어의 전체 컴포넌트에 대한 가시성 및 위험 평가를 빠르고 정확하게 분석할 수 있어 기존 기술에 비해 시간과 비용을 줄이면서도 검증의 정확도를 높인다.

사이벨리움은 폐쇄형 컴포넌트에 대한 위협을 파악할 수 있는 자동 취약점 탐지 엔진인 ‘사이벨리움 V-레이’와 배포된 컴포넌트에 대한 정확한 위협 인텔리전스를 제공하고 실시간으로 위협을 모니터링할 수 있는 ‘사이벨리움 V-모니터’로 구성돼 있다.

사이벨리움은 CVE(정보 보안 취약점 표준 코드)와 보안 정책 등에 대한 능동적인 위험 모니터링 수행이 가능하며, 통합 단계에서 소프트웨어의 오류나 취약점을 평가 및 수정할 수 있어 소프트웨어의 안전성을 효율적으로 확보할 수 있도록 한다.

또한 소스코드에 접근할 수 없는 소프트웨어의 취약점 및 자산 관리 등에 대한 지속적인 모니터링으로 공급망 전체에 걸친 보안 개선 방안을 제공하고 고객이 국제표준을 준수할 수 있도록 지원한다.

특히 자동차 분야의 보안을 강화하고 사이버 보안 위협으로 인한 피해를 줄이기 위해, 차량의 전체 라이프사이클과 자동화 된 바이너리 관련된 사이버 보안 프로세스를 정의하는 국제표준인 ISA/SAE 21434 및 UNECE WP29를 효과적으로 준수할 수 있도록 한다.

쿤텍 방혁준 대표는 “기업이나 기관이 소프트웨어와 관련된 취약점을 제대로 관리하지 않을 경우 막대한 금전적 손실로 이어질 수 있다. 사이벨리움 솔루션은 소스코드와 바이너리 검증은 물론 취약점까지도 모두 점검할 수 있도록 해준다”라며, “쿤텍은 앞으로 사이벨리움과 협력해 소프트웨어 안정성을 위한 기술 지원을 지속적으로 진행할 것”이라고 밝혔다.

리눅스 시스템 로그 2편 – 상황에 맞게 관리해보자

아직 못 보신 분들은 아래 페이지 먼저 참조하시면 시스템 로그 기본을 이해하시는데 많은 도움이 되실 겁니다.

로그 서버 구축 및 연동, 템플릿을 적용한 로그 파일 관리, 데이터베이스 연동, 이벤트 발생 시 모니터링을 통해 사용자에게 알릴 수 있는 알람 기능 등 시스템 로그를 다양하게 활용하는 방법에 대해 알아보도록 하겠습니다.

!. 인터넷에 나와있는 예제들을 그대로 사용하는 경우 성공 확률은 높지만 다양한 환경에 그대로 적용하기 어려운 경우가 많습니다.

운영할 때는 설정 값을 1도 안 바꾸지만, 테스트 할 땐 모든 설정 값을 바꾸는 싶어하는 저의 이상한 성격이 반영되어 -> 실무에서 원하시는 대로 사용하실 수 있도록 대부분의 설정을 customizing하여 다루었으며 그에 따라 발생한 TroubleShooting 내용도 쏠쏠하니 참고하시면서 보시면 좋을 것 같습니다.

테스트 환경 정보

테스트 환경은 아래와 같습니다. 다양하게 구성한 이유는 이기종 OS간에도 로그 수집이 가능하다는 것을 보여주려는 것이 목적입니다.

용도OShostnameIP
Log ServerCentOS 7.9log-server172.20.10.21
Client01CentOS 7.9centos7172.20.10.22
Client02CentOS 8.5centos8172.20.10.23
Client03Rocky 8.5rocky8172.20.10.24
Client04Ubuntu20.04ubuntu20172.20.10.25

각각의 이기종 OS에서 발생되는 시스템 로그를 한 대의 로그 서버에서 취합하여 용도에 맞도록 저장하고 자동화 된 바이너리 모니터링을 통해서 사용자에게 이벤트 메시지를 발송하는 내용까지 본문을 작성하는데 사용된 테스트 환경을 아래 구성도에 담아 봤습니다.

1. 로그 서버 구축 및 클라이언트 연동

  • 로그 서버 구축

먼저 로그 서버를 구축하기 위해서는 rsyslog 패키지가 설치되어 있어야 합니다.

로그 서버를 구축하기 위한 설정 방법은 간단합니다.

설정 파일에서 로그를 받고자 하는 프로토콜에 해당되는 설정 값의 주석 체크를 해제한 다음 rsyslog 데몬을 재 기동하면 됩니다.

프로토콜은 TCP와 UDP 두 가지로 구성되어 있고, 설정 파일에서 UDP 프로토콜은 15~16 라인, TCP 프로토콜은 19,20 라인의 주석을 해제한 후 데몬 재 기동을 하면 로그 서버로서의 기본적인 역할을 수행합니다.

저는 데이터 전송의 정확성을 고려하여 TCP 프로토콜을 사용하도록 설정해 보았습니다. 포트 넘버는 정체성의 혼돈이 생길 수 있어 변경하지 않았습니다.

방화벽을 사용하고 있는 경우 TCP 514 포트에 대해 방화벽 정책을 열어준 후 다시 로드해 줍니다.

클라이언트에서 로그 서버로 데이터를 전송하는 방법은 Action 값에 로그 서버의 IP주소를 넣어주면 됩니다.

테스트에 사용된 OS 환경은 제각각이지만 클라이언트의 설정 값은 아래와 같이 동일합니다.

설정 값을 풀어보면 서버에서 발생되는 모든 로그 정보를 로그 서버의 514 포트로 TCP 프로토콜을 사용하여 보내는 것을 의미합니다. @ 두개는 TCP, 한개는 UDP 송신을 뜻하며, 콜론(:) 뒤의 값은 전송 포트를 의미합니다. 로그 서버에서 포트를 변경하여 사용하는 경우 이 부분을 수정해 주면 됩니다.

또한 일부 정보만 보내고 싶은 경우 * 대신 원하는 facility, priority를 넣어주면 됩니다.

2. 로그 파일 템플릿 적용

로그 서버를 구성한다는 것은 다양한 서버의 로그 데이터를 받는 다는 것이고, 서버 수가 많아질수록 복잡해 지기 때문에 이를 구별하는 것이 필요합니다.

서버의 hostname을 기준으로 로그 파일을 저장할 수 있도록 템플릿 적용하는 방법을 알아 보도록 하겠습니다.

템플릿 형태는 다음과 같이 변수와 디렉토리 풀 경로를 지정해 주고 해당 변수에 설정할 facility, priority값을 적용해주면 됩니다.

템플릿에 적용되어 실제로 저장될 로그 파일명은 구별이 잘 될 수 있도록 커스터마이징 해서 사용하면 됩니다.

아래 설정 값은 제가 원하는 방식으로 구성하였으며, 각 서버의 시스템 로그를 hostname으로 분류하여 1일 단위로 특정 디렉토리에 저장되도록 설정 하였습니다.

  • 경로 변경 (Tip! & TroubleShooting)

기존 /var/log/ 디렉토리에 신규로 로그 파일이 생성되도록 테스트 했을 때에는 잘 생성 되었는데 위 템플릿 처럼 특정 디렉토리를 지정하니 해당 디렉토리에 로그 파일이 생성되지 않았습니다.

이 글을 보시는 대다수의 운영자 분들은 특정 디렉토리에 마운트 된 공유 스토리지에 저장하는 것을 원하실 것이므로 디렉토리 변경이 가능하도록 트러블 슈팅을 좀 해보겠습니다.

먼저 살펴볼 내용은 디렉토리 권한인데 문제는 없었습니다. 방화벽을 살펴보아도 문제가 없고, 해당 포트도 떠있는데 생성이 되지 않았습니다.

로그 서버의 시스템 로그를 살펴 보겠습니다.

권한 문제로 open error가 발생하였는데, 폴더 권한은 기존 /var/log/ 디렉토리와 동일하므로 추가로 selinux를 건드려 보겠습니다.

selinux가 Enforcing 상태라 Permissive로 변경 하여 테스트 해 보았더니 로그 파일이 정상적으로 생성 되었습니다. fcontext 와 관련이 있을 것으로 예상됩니다.

일단 지금은 selinux 시간이 아니기 때문에 selinux를 사용하는 환경에서도 특정 디렉토리에 파일이 생성될 수 있는 방법만 알아 자동화 된 바이너리 보도록 하겠습니다.

설정 파일에 파일이나 폴더 생성과 연관된 권한 부분을 추가해 줍니다.
(저의 경우 /var/log/ 디렉토리에 저장된 로그 파일과 동일하게 0600 권한으로 파일이 생성되도록 작업하였습니다)

이제 로그가 잘 쌓이는 것을 볼 수 있습니다.

  • 호스트 파일 수정(Tip! & TroubleShooting)

여기서 특이한 점이 또 보입니다. log-server는 hostname을 정상적으로 받아오는데 다른 서버들의 정보는 IP 정보로 표현이 됩니다.

아마도 로그 서버에서 클라이언트의 hostname 정보를 알고 있지 않기 때문에 발생한 것으로 보입니다.

이런 경우 당황하지 말고 로그 서버의 호스트 파일에 클라이언트 리스트를 추가해 주면 됩니다.

  • 서버별 디렉토리 단위 로그 파일 분류

생각해보니 서버를 디렉토리 단위로 구분 지어 놓으면 관리하기 용이할 것 같습니다. 로그 파일이 디렉토리별로 저장될 수 있도록 설정 내용을 변경해 줍니다.

데몬을 재 시작 한 후 확인해 보니 서버의 hostname별로 잘 구분되어 저장되는 것을 확인할 수 있었습니다.

3. 데이터베이스 연동

  • 데이터베이스 구축방법

로그 파일 보관을 위한 목적이라면 지금까지 알아본 것처럼 파일 단위로 보관하는 것이 직관적이고 관리하기 용이합니다.

하지만 장기간 쌓인 로그에서 문자열이나 특이 패턴 등을 검색해 볼 일이 많아질 경우 얘기가 좀 달라질 수 있습니다.

이러한 경우에는 DB에 데이터를 저장하여 검색하는 것이 원하는 값을 추출하기 수월하고 작업 시간도 많이 줄일 수 있습니다. 그래서 이번에는 시스템 로그를 DB에 저장하는 방법에 대해 알아보겠습니다.

DBMS(Database Management 자동화 된 바이너리 System)로는 MariaDB를 사용합니다.

설치 방법은 소스 파일을 가져와서 컴파일하는 방법, 컴파일 된 바이너리 파일을 사용하는 방법, rpm 패키지를 사용하는 방법 등 다양한 방법으로 설치할 수 있습니다. 결국 MariaDB만 설치되어 있다면 된다는 얘기 입니다.

본문에서는 로그 서버 구축이 목적이니 만큼 가장 손이 덜 가고 가장 쉬운 방법인 rpm 패키지를 사용하는 방법으로 진행하겠습니다.

mariadb-server 패키지를 설치합니다. 저의 경우 36개의 Dependency 패키지가 추가로 설치 되었습니다.

MariaDB 기동 및 자동 시작을 한번에 설정해 줍니다.

이제 데이터를 MariaDB에 저장하기 위해 필요한 syslog-mysql 패키지를 설치합니다.

  • syslog-mysql 패키지 설치 이슈(Tip! & TroubleShooting)

syslog-mysql 설치 시 rsyslog도 의존성 영향을 받아 업데이트 될 수 있는데요. 이때 동작 중이던 rsyslog 데몬은 자동으로 재 기동 되니 이점 유의하시기 바랍니다.

아래 상태 체크 결과 중 ’17s ago’ 부분을 보면 재 기동 된 사실을 확인할 수 있습니다.

먼저 MariaDB초기 설치 후 root 계정에 대해 패스워드 설정을 해줍니다.

저는 test로 패스워드를 설정 하였으며, 접속이 잘 되는 것을 아래와 같이 확인 할 수 있습니다.

  • database 및 table 생성(Tip! & TroubleShooting)

syslog-mysql 패키지를 설치하면 /usr/share/doc/rsyslog-8.24.0 디렉토리 하위에 mysql-createDB.sql 라는 파일이 생성됩니다. 해당 파일을 사용하여 syslog가 저장될 database와 table을 쉽게 만들 수 있습니다.

원본파일의 경우 database명은 Syslog이고 , tables명은 SystemEvents과 SystemEventsProperties입니다.

저는 원본 그대로 적용 하는 것을 좋아하지 않는 이상한 성격을 가지고 있기 때문에 파일명을 test-createDB.sql 로 변경해보고 database명과 table명도 아래와 같이 변경해서 생성해 보겠습니다.

이제 database와 table을 만들어 보겠습니다. 1049에러가 났습니다. MariaDB도 트러블슈팅을 한번 해보겠습니다.

이럴 땐 웹사이트에서 해당 에러 넘버를 검색해보면 답을 찾을 수 있지만 사전 테스트에서는 정상적으로 생성되었기 때문에 제가 변경한 내용을 다시 한번 보겠습니다.

Syslog라는 database를 찾을 수 없다는 부분을 보면 table을 만들기 전에 생성할 database를 선택하는 부분인 USE Syslog; → USE osci_logserver; 이 부분을 수정하지 못해 일어난 결과인 것 같습니다. 이 부분도 변경된 database로 수정해 보겠습니다.

다시 시도해 보겠습니다. 이번에는 1007에러가 발생하였고 database가 이미 존재한다는 내용입니다.

방금 전에 database를 만든 이후 에러가 발생하였기 때문에 database는 그 명령어 수행으로 생성되었던 것 같습니다.

MariaDB에 접속하여 해당 database를 삭제해 보겠습니다.

삭제는 잘 되었고 다시 시도해 보겠습니다. 이번에는 원하던 database와 table이 잘 생성 되었습니다.

rsyslog와 연동할 osci 라는 계정을 생성하고 로그를 저장할 database에서 사용할 수 있도록 권한을 줍니다. 마지막에 flush privileges 해주지 않으면 설정된 내용이 적용되지 않아 로그가 저장되지 않을 수 있으니 주의해야 합니다. (저도 빼 먹어서 로그가 쌓이지 않았습니다)

  • rsyslog MariaDB 연동 설정(Tip! & TroubleShooting)

이제 rsyslog 설정 파일에서 database와 연동될 수 있도록 설정 값을 추가해 보겠습니다.
아래와 같은 양식으로 작성하면 됩니다.

제가 구성한 정보들을 참조하여 아래와 같이 작성해 보았습니다.

해당 설정 값 적용 후 데몬 재 기동하였으나 시간이 지나도 database에 값이 들어오지 않아 트러블 슈팅을 해보겠습니다.

시스템 로그를 보니 osci_logserver라는 database에 SystemEvents라는 table이 존재하지 않아 1146에러가 발생한 것으로 보입니다.

변경된 database는 인식이 된 것으로 보이는데 table명은 SystemEvents라는 기본값으로 어딘가에 명시되어 있나 봅니다. 찾아보고 변경을 하여 사용할 수도 있겠지만 시간이 오래 걸릴 것 같아 우회해 보겠습니다.

일단 변경된 database명과 table명을 사용할 수 있기만 한다면 문제는 없을 것 같으니 자동화 된 바이너리 table명도 명시할 수 있는 템플릿 형태로 적용해 보겠습니다. 아래와 같이 적용 시켜주니 로그가 잘 들어왔습니다.

저는 커널 로그만 따로 관리하고 싶어 커널 정보만 저장할 수 있는 osci_kern_log라는 이름의 database를 추가로 생성해 보았습니다. 두 개 이상의 database를 구성할 수도 있다는 것을 확인해 보고 싶기도 했습니다.

그리고 커널 정보만 MariaDB에 전달할 수 있도록 설정 파일에 템플릿을 적용하여 아래 두 줄을 추가해 주었습니다.

MariaDB에서는 osci계정이 커널을 저장할 database에 접근할 수 있도록 권한도 주었습니다.

  • MariaDB 로그 확인(SQL 쿼리문)

일정 시간이 지난 후 구성한 두 개의 database에 로그가 잘 들어오고 있다는 것을 쿼리문으로 확인 할 수 있었습니다.

저런 내용을 확인하기 위해 MariaDB 접속하는 방법이 귀찮으신 분들은 아래와 같이 접속하지 않아도 쉽게 확인할 수 있는 방법이 있으니 편의에 맞게 사용하시면 됩니다.

이제 저는 원하는 내용의 로그만 뽑을 수가 있습니다. 천군만마를 얻은 것 같네요.

and 연산자를 통해 특정 호스트에서 원하는 이슈만 뽑아낼 수도 있습니다.

여기서 중요한 점은 MariaDB에 저장도 하면서도 서버에 로컬 파일로도 로그를 보관할 수도 있다는 점입니다.

이렇게 설정만 잘 되어 있다면 양방향 로그 보관이 가능하니 상황에 맞게 설정하여 관리하면 업무에 많은 도움이 될 것입니다.

4. 모니터링 방법

이제 마지막으로 발생한 이벤트에 대해 어떻게 모니터링을 할 것이며 알람은 또 어떻게 보낼 것인지 알아볼 시간입니다.

로그 서버의 시스템 로그 설정에서 기본 설정 값을 건드리지 않는다면 로그 서버의 시스템 로그에는 클라이언트의 모든 로그가 같이 적용되어 기록이 됩니다.

다시 말해서 템플릿을 통해 생성한 파일은 /data 디렉토리에 로그 파일로 저장되고 기본 시스템 로그가 저장되는 /var/log 디렉토리에도 모든 서버의 로그가 통합으로 쌓이게 됩니다.

통합으로 쌓이는 로그 파일만 스크립트로 체크해 준다면 단일 파일을 모니터링하여 모든 서버의 이슈를 확인할 수 있기 때문에 간단하게 구성해 볼 수 있을 것 같습니다.

저는 1분 단위로 /var/log/messages 파일을 체크하여 1분 전에 이슈가 발생하였는지 파악하여 발생한 메시지를 E-Mail과 슬랙(slack)으로 전달 할 수 있도록 스크립트를 작성해 보았습니다.

업계에서 사용하는 모니터링 툴 처럼 10초나 30초 단위로 쪼개서 확인하고자 한다면 cron의 최소 단위가 1분이니 스크립트를 하나 더 생성하여 해당 스크립트에서 모니터링 스크립트를 10초 간격으로 수행할 수 자동화 된 바이너리 있도록 하면 될 것 같습니다.

스크립트를 1개로 사용하고자 한다면 for문과 sleep 타임을 주어서 적용 시켜도 되겠네요.

모니터링 결과 전송은 E-mail과 슬랙으로 보내도록 하겠습니다.

슬랙을 선정한 이유로는 최근 많은 기업에서 사용하고 있고 저희 회사에서도 사용 중인 도구여서 접근이 쉬울 것 같았습니다.

경험상 사무실에서는 물론이고 이동 중에도 접근성이 용이하기 때문에 모니터링 알람 서비스로 적절해 보였으며, 메시지를 전달하는 API를 제공하기 때문에 이러한 작업이 가능하기도 했습니다.

  • 모니터링 사전 준비(슬랙 메시지 API 연동 방법)

슬랙에서 메시지를 전달 받기 위해서는 먼저 자동화 된 바이너리 슬랙 홈페이지에 접속한 후 메뉴에서 리소스 > 개발자 항목으로 들어가면 slack api 사이트가 나옵니다. 링크 —> https://api.slack.com/apps

여기서 slack API 중에 Webhook(웹훅)이라는 녀석을 사용할 겁니다.

웹훅이란 특정 행동으로 인해 발생한 이벤트들을 커스텀 callback으로 변환해주는 방법입니다. 쉽게 말해 역방향 API 라고도 하며 서버에서 클라이언트로 호출하는 방식입니다.

미리 메시지를 받을 주소인 Callback URL을 정해 놓고 서버에서 이벤트가 발생하면 Callback URL에 메시지를 보내 웹훅 핸들러가 엔드 포인트로 메시지를 전달하는 방식입니다. 이때 Callback URL로 정보를 보내는 방식은 HTTP POST 방식을 사용하게 됩니다.

아래 절차를 진행 해보고 다시 얘기 나눠보도록 하겠습니다.

2.1 Create New App 선택

2.2 From scratch 선택

2.3 App Name 작성 / workspace 선택

3. Incoming Webhooks 선택

4. Activate Incoming Webhooks oiff → on으로 변경

5. Add New Webhook to Workspace 선택

6.2 채널이나 다이렉트 메시지 선택(개인 다이렉트 메시지로 선택하였습니다)

7. Sample curl request to post to a channel의 curl 예제를 복사하여 사용

  • 모니터링 사전 준비(로그 서버에서 슬랙 다이렉트 메시지에 원하는 문자열 발송 테스트)

슬랙을 기준으로 보았을 때 서버에서 curl 명령어를 수행하여 Callback URL에 메시지를 보내면 Callback URL을 가진 App(핸들러)이 지정한 엔드 포인트(DM 또는 채널)로 메시지를 전달하는 방식으로 진행된다고 해석할 수 있을 것 같습니다.

copy한 Callback URL에 텍스트 내용을 바꿔서 메시지를 보내도록 해보겠습니다. 커맨드 라인에는 ok가 떨어졌고, 슬랙에도 메시지가 잘 도착 했습니다. 생각 보다 어렵지는 않네요.

  • 모니터링 사전 준비(E-Mail 전송 테스트)

이제 이메일을 보내볼 차례입니다.

먼저 mailx가 설치되어 있는지 확인 후 없으면 yum으로 설치해 줍니다.

바이너리 파일이 설치 되었는지 확인해 봅니다. 잘 설치 되었네요.

회사 메일 계정으로 테스트 메일을 보내 보겠습니다.

이벤트 메일은 잘 도착했습니다. 이제 슬랙과 메일에 메시지를 보내기 위한 사전 준비는 끝났습니다.

  • 모니터링 스크립트 작성 및 알람 발송 테스트

스크립트를 작성하여 cron으로 1분마다 동작하도록 설정하였습니다.

클라이언트인 centos7 서버를 리부팅 한 뒤 1분 후에 알람이 오는지 확인해 보도록 하겠습니다.

슬랙과 메일로 알람이 계속 오고 있습니다. 설정은 잘 된 것 같습니다.

마치며…

이렇게 로그 서버 구축 / 연동 / 템플릿 적용 / DB 연동 / 슬랙 및 E-Mail을 통한 이벤트 알람 전송 등 다양하게 활용하는 방법에 대해 알아보았습니다.

본문에서는 로그를 통합 관리하는 방법에 대해 다루었지만 더불어 각각의 클라이언트 서버에서도 logrotate와 같은 작업을 수행하여 체계적으로 로그 파일 슬라이싱과 압축을 해주면 더 탄탄한 로그 파일 관리 체계가 이루어 질 것입니다.

시스템 로그를 변경하고 로그 서버를 구성하는 작업을 진행하면서 한번에 동작하지 않은 부분은 여럿 있었지만 구성하기에 난이도가 높은 편은 아니었습니다.


0 개 댓글

답장을 남겨주세요