목표
엔터프라이즈 보안 건물 오픈 소스 씨엠립 플랫폼, SIEM (보안 정보 및 이벤트 관리), 건설은 이름에서 알 수 있듯이 안전 정보 이며 대부분의 기업에 대 한 이벤트 관리 시스템은 저렴 한 보안 시스템, 이 문서는 오픈 소스 소프트웨어를 사용 하 여 엔터프라이즈의 시 엠 시스템, 다음 장에서 데이터 깊이 분석을 구축 하는 방법을 소개 하는 저자의 경험을 결합 합니다.
시 엠의 개발
Gartner2009 년 및 2016 글로벌 심 제조업체 순위 비교, 수 강한 전통적인 4 지도자 사분면 차지할 여전히 완벽 한 보안 제품 라인 및 성숙 시장 채널을 명확 하 게 볼, 큰 데이터 아키텍처 제조업체 Splunk 급속 한 증가에 따라, 다른 작은 제조 업체는 점차 리더 쿼드런트를 두고. 인클로저 (옵션)에서 가장 중요 한 스토리지 아키텍처 변경 + 상용 데이터베이스 가로로 확장할 수 있는 큰 데이터 아키텍처에 클라우드 환경을 지 원하는 추세 이기도 합니다.
오픈 소스 씨엠립 도메인, 더 일반적인 Ossim 및 Opensoc, ossim 저장소 아키텍처는 다양 한 유명한 흡입을 포함 한 로그 포맷을 지 원하는 MySQL, Nmap, 네, ntop, 데이터의 크기에 대 한 좋은 선택이 아니다. 새로운 인터페이스가 멋지다.
완전 한 시 엠 적어도 다음과 같은 기능이 포함 됩니다.
취약점 관리
자산 검색
침입 탐지
행동 분석
로그 저장, 검색
알람 관리
멋진 보고서
내가 생각 하는 핵심 침입 감지, 동작 분석 이며 로그 저장 검색,이 문서는 기술 프레임 워크의 위의 세 가지 기능 지원에 초점을 맞추고.
OPENSOC 소개
OPENSOC 오픈 소스 프로젝트를 시스 코는 2014 년, Brocon 컨퍼런스에서 발표 했지만 그것은 정말 소스 코드를 오픈 하지 않았다 단지 그것의 기술적인 프레임 워크를 발표 했다. 우리는 실제로 계획의 세트를 착륙 하는 회사와 함께 프레임 워크의 OPENSOC 릴리스를 참조 하십시오. OPENSOC 완전히 오픈 소스 데이터 프레임 카프카, 폭풍, 불꽃 및 Es, 강한 측면 확장 기능,이 문서와 함께 태어난 씨엠립 빌드에 따라 OPENSOC에 초점을 맞추고 큰 기반으로 합니다.
위의 다이어그램은 OPENSOC에 의해 주어진 프레임 워크, 먼저 매우 기괴 하 고, 우리는 데이터 저장 및 수정 하기 위해, 일반적인 리눅스 서버 SSH 로그 수집 예를 들어 두 개의 위도 처리.
데이터 수집 위도
원시 데이터를 수집, 저장, 사용자 대화형 검색 UI 인터페이스를 제공 하는 데이터 컬렉션의 위도, 일반적인 시나리오는 공격 동작, 고정 손실 되돌아 검색 로그를 통해 보안 이벤트의 발생 이다.
실제로 Logtash는 ES, 하지만 데이터의 분할 후에 Logstash, 데이터 분할 전송 카프카, 폭풍 처리 및 Logstash 제공 데이터 처리, 하도 폭풍을 고려 작성에 직접 데이터를 쓸 수 있습니다. 데이터 검색 될 수 있습니다 직접 사용 하는 Kibana, 매우 편리. 데이터 세분화 폭풍에서 수행할 수 있습니다. 이것은 유명한 엘크 아키텍처 이다. ES 핫 데이터 실시간 검색, 필요 장기 저장용 쿼리하고 Hadoop를 사용 하려면 짧은 시간을 저장 하기 위한 적합 한 또는 큰 시간에 대 한 스파크 범위 오프 라인 분석, 또한 그래서 일반적인 데이터 흐름 차트, HDFs에 저장할 필요가:
데이터 처리 위도
이 경우에, 데이터 실시간 처리, 분할 SSH 로그인 로그, 일치 탐지 규칙에 카프카 구독에서 폭풍 스트리밍 테스트 결과 MySQL 또는 es로 작성.
이 경우에, 절연, 스프링 비 로그인의 최대 수를 식별 하 고 일반적인 로그인 IP에 대 한 참조를 실제로 실행 시간, 기술 자료 및 최근 성공 및 실패 상태를 처리 하는 임시 저장소의 주립 도서관에 IP의 IP 정보에에서는 보안 문제를 식별 하기 어렵습니다. 실제 작업에 가까이 있는 프로세스는 다음과 같습니다.
특정 판단 논리 예는 다음과 같습니다, 동일한 시간 짐승에 프록시 IP의 많은 수의 실제 사용 강제로 균열을 커버 수 없는 장소를 변경 하려면 한 번, 여기에 그냥 예입니다.
데이터 원본 확장
침입 행동을 분석 하는 보안 문제를 처리 하는 프로덕션 환경에서 SSH 로그인 로그만 확실히 충분 하지 않습니다, 우리는 가능한 많은 데이터 소스, 대 한 참조로 다음으로 필요:
리눅스/윈도우 시스템 보안 로그/작업 로그
웹 서버 액세스 로그
데이터베이스 SQL 로그
네트워크 트래픽 로그
ES 저장 또한 알람 다음과 같이 단순화 된 시스템 아키텍처는 주로 경보를 볼 수는 Kibana를 통해, 휴먼 인터페이스의 부족은 개발 되지:
스톰 토폴로지
스톰 토폴로지 예를 들어 SQL 로그를 처리 하기 위해 파이썬 개발을 지원 합니다.
SQL 로그 형식 가정
"2 월 06시 32분: 50" "127.0.0.1" "Root@localhost" "선택 *에서 사용자가 id = 1"
일반적인 폭풍의 토폴로지 구조
단순화 된 주 둥이 범용에서 읽어 카프카, 볼트 처리 SQL 로그, 규칙, 일치 정책 출력 "경고"는: "원래 SQL 로그"
코어 볼트 코드 Dosqlcheckbolt 의사 코드
가져오기 폭풍 클래스 Dosqlcheckbolt (폭풍. Basicbolt): 데 프 프로세스 (자기, 교 미): 단어 = Tup.values[0].split ("") sql 단어 [3] = 경우 Re.match (규칙, SQL): Storm.emit (["Sqli" Tup.values[0]]) Dosqlcheckbolt (). () Topologybuilder 작성기 실행 = 새로운 Topologybuilder (); Builder.setspout ("Sqllog", 새로운 Kafkaspout (), 10); Builder.setbolt ("Sqlialert", 새로운 Dosqlcheckbolt (), 3). shufflegrouping ("Sqllog");
제출 샘플 토폴로지
구성 conf = 새로운 구성 (); Conf.setdebug (TRUE); Conf.setnumworkers (2); Localcluster 클러스터 = 새로운 Localcluster (); Cluster.submittopology ("Dosql", 회의 Builder.createtopology ()); Utils.sleep (10000); Cluster.killtopology ("Dosql"); Cluster.shutdown (); Logstash
이 문서, 심지어 Logstash의 구성 보다는 더 많은 초점, 몇 포인트 아래 토폴로지 스크립트 개발의 폭풍 절단 로그 및 검색 요구 사항 관계를가지고, 아주 맞춤, 여기 하지에 펼칠 것 이다.
파일에서 읽기
입력 파일 {경로 = > ["/ var/log/*.log", "/ var/로그/메시지"] 유형 = > "시스템" start_position = > "시작" 입력 구독할 {카프카 {zk_connect = > 'localhost:2181' group_id = > 'logstash' topic_id = > '테스트' 카프카에서 Reset_begi Nning = > # False 부울 (옵션), 기본값: false consumer_threads = > 5 # 번호 (선택 사항) 기본: 1 decorate_e 통풍구 = > # 부울 (옵션), 기본값: false true}} 카프카 출력을 작성 {카프카 {broker_list = > 'localhost:9092' 주제 _id = > Compression_codec "테스트" = > "성급한" # 문자열 (옵션), ["없음", "gzip", "스마트"], 중 기본: "없음" } }
HDFs를 쓰기
출력 {hadoop_webhdfs {노동자 = > 2 서버 = > localhost:14000 "사용자 = >" flume "경로 = >" / 사용자/수조/logsta Sh/dt=%{+y}-%{+m}-%{+d}/logstash-%{+h}.log "flush_size = > 압축 = >" 따위 "Idle_flush_time = >는 Retry_ 간격 = > 0.5}}에 출력을 작성 {elasticsearch {호스트 = > "localhost" 프로토콜 = > "http" 인덱스 = > "logstash-% {t 형식}-% {+ yyyy. MM.DD} "Index_type = >" % {형식} 노동자 > 5 template_overwrite = = > 사실}
포스트 스크립트
행동 분석을 통해 오프 라인 데이터에 깊이 침입 행동을 식별 하 고 모델링을 공격 하는 방법? 다음 문서를 참조 하십시오.