보안 업무 중 Snort 패턴 작업 업무에서 Security Onion 어플리케이션을 사용함.
모의해킹 환경에서 Security Onion 어플리케이션의 IDS 기능을 활용하여 Snort 패턴 생성 및 테스트를 수행함.
현재 Security Onion 최신 버전인 16.04.7.1 기준으로 VMware 이미지 설치, Snort 패턴 작성 및 Squil 접속 확인, 서비스 명령어, 업데이트, 로그 위치 및 기타 정보를 기재함.
그 외에 보다 자세한 정보는 아래 사이트에서 확인하길 바람.
https://docs.securityonion.net/
( 1 ) Security Onion 소개
보안 모니티링 및 로그 관리를 위한 무료 오픈소스 Linux 배포판임.
Doug Burks 님께서 2008 년에 Security Onion 을 무료 오픈 소스 프로젝트로 시작했으며 2014 년에는 Security Onion Solutions, LLC 를 설립함.
Elasticsearch, Logstash, Kibana, Snort, Suricata, Zeek(이전의 Bro), Wazuh, Sguil, Squert, CyberChef, NetworkMiner 및 기타 많은 보안 도구가 포함됨.
홈페이지 : https://securityonion.net/
( 2 ) VMware 이미지 설치
VMware 이미지 설치하는 방법은 아래와 같음.
VMware WorkStation 15.5 버전으로 VMware 이미지를 설치하였으며 Security Onion 설치 파일은 아래 주소에서 다운받을 것!
Security Onion 설치 파일 링크 :
https://github.com/Security-Onion-Solutions/security-onion/blob/master/Verify_ISO.md
설치하는 동안 재부팅이 3번 있으며 각각 가상 이미지 설정, 기본 설정, 네트워크 설정, 보안 도구 설정 순으로 작업함.
추가적으로 Security Onion VMware 이미지 설치 관련하여 아래 링크를 참고 바람.
https://docs.securityonion.net/en/16.04/vmware.html#creating-vm
1. 가상 이미지 설정
VMware WorkStation GUI > File > New Virtual Machine 클릭함.
Custom (advanced) 선택 후 Next 버튼을 클릭함.
가상 이미지 하드웨어 적합성은 VMware Workstation 최신 버전으로 선택한 후 Next 버튼을 클릭함.
Security Onion 설치 파일 경로를 설정한 후 Next 버튼을 클릭함.
운영 체제 선택은 Security Onion 제품이 우분투 64 비트를 기반으로 만들어졌으므로 Ubuntu 64-bit 를 선택한 후 Next 버튼을 클릭함.
가상 이미지명은 사용자가 원하는 이름으로 기재한 후 Next 버튼을 클릭함.
프로세서 코어는 보통 4 코어를 사용하므로 적정 수준을 참고하여 기재한 후 Next 버튼을 클릭함.
(아래 화면은 테스트 목적으로 최소 사양을 기재하였으므로 참고 바람)
메모리는 보통 8 GB 를 사용하므로 적정 수준을 참고하여 기재한 후 Next 버튼을 클릭함.
(아래 화면은 테스트 목적으로 최소 사양을 기재하였으므로 참고 바람)
네트워크 유형은 테스트 환경을 어떤 식으로 운영할 지 확인한 후 Next 버튼을 클릭함.
(아래 화면은 테스트 목적으로 NAT 환경으로 설정하였으므로 참고 바람)
Bridge 유형 : 호스트 PC와 동일한 네트워크 대역 IP 를 갖음.
NAT 유형 : 가상머신 프로그램의 자체 DHCP 서비스를 이용한 내부 네트워크 대역 IP 를 할당 받음.
Host-Only 유형 : 외부와 단절된 내부 네트워크를 구축하는 것으로 구성된 가상머신들끼리만 통신이 가능함.
I/O 컨트롤러 유형은 기본값(LSI Logic)으로 선택한 후 Next 버튼을 클릭함.
각각의 차이는 성능상 차이가 있으므로 해당 설정값에 대한 정보는 구글링 후 설정하길 바람.
(아래 화면은 테스트 목적으로 기본값으로 설정하였으므로 참고 바람)
디스크 유형은 기본값(SCSI)으로 선택한 후 Next 버튼을 클릭함.
각각의 차이는 성능상 차이가 있으므로 해당 설정값에 대한 정보는 구글링 후 설정하길 바람.
(아래 화면은 테스트 목적으로 기본값으로 설정하였으므로 참고 바람)
디스크는 가상 이미지 디스크를 생성해야 하므로 Create a new virtual disk 를 선택한 후 Next 버튼을 클릭함.
디스크 사이즈는 보통 40 GB 를 사용하므로 적정 수준을 참고하여 기재하고 Store virtual disk as a single file 를 선택한 후 Next 버튼을 클릭함.
(아래 화면은 테스트 목적으로 60 GB 를 기재하였으므로 참고 바람)
디스크 파일명은 자동으로 기재가 되므로 Next 버튼을 클릭함.
(다른 이름을 원할 경우 파일명을 수정하면 됨)
위 항목을 다 설정하면 모든 설정한 항목값들이 출력되며 혹, 수정할 부분이 있다면 Back 버튼을 눌러 해당 항목을 수정하거나 Customzie Hardware 버튼을 클릭하여 수정하면 됨.
수정할 항목이 없다면 Finish 버튼을 클릭함.
2. 기본 설정
VMware WorkStation 프로그램에서 Power on this virtual machine 을 클릭함.
Boot 종류 중 Boot SecurityOnion 16.04.7.1 을 선택한 후 엔터키를 누름.
바탕화면에 Install SecurityOnion 16.04 아이콘을 클릭한 후 기본 설정을 시작함.
English 언어를 선택한 후 Continue 버튼을 클릭함.
설치 중 업데이트 파일이나 멀티미디어 어플리케이션 파일을 추가로 설치할 지를 선택한 후 Continue 버튼을 클릭함.
업데이트 파일 설치는 시간이 더 걸리며 리눅스에서 멀티미디어 사용은 비추이므로 굳이 선택하지 않아도 됨.
(아래 화면은 테스트 목적으로 둘다 설정하지 않았으므로 참고 바람)
설치 유형은 "Erase disk and install SecurityOnion", "Use LVM with the new SecurityOnion installation" 항목을 선택한 후 Continue 버튼을 클릭함.
"Erase disk and install SecurityOnion" 항목은 디스크를 포맷한 후 SecurityOnion 을 설치하는 항목임.
"Use LVM with the new SecurityOnion installation" 항목은 논리 볼륨 관리를 설정하는 것으로 스냅샵 기능과 파티션 크기 조절 기능을 할 수 있음.
디스크 유형 확인창이 나오면 수정할 게 없을 경우 Continue 버튼을 클릭함.
한국 기준으로 설치한다면 Seoul 을 선택 한 후 Contine 버튼을 클릭함.
키보드 레이아웃은 영문으로 선택한 후 Contine 버튼을 클릭함.
리눅스 계열에서는 한글 지원은 보통 안하므로 영문으로 선택함.
아래 화면에서는 설정 과정에서 전체 화면으로 나오지 않으므로 참고 바람.
사용자가 원하는 호스트명, 계정 정보를 입력한 후 Contine 버튼을 클릭함.
개인 홈 폴더를 암호화로 보호할 거면 "Encrypt my home folder" 를 선택하면 됨.
그리고 설치 과정이 거친 후 완료창이 나오면 Restart Now 버튼을 클릭함.
3. 네트워크 설정
부팅 중간에 아래 화면과 같이 나오면 엔터키를 누름.
참고로 설치 미디어를 제거한 다음 엔터키를 누름.
Boot 종류 중 SecurityOnion 16.04.7.1 GNU/Linux 을 선택한 후 엔터키를 누름.
로그인 창이 나오면 전에 입력한 사용자 로그인 정보를 입력함.
바탕화면에 Setup 아이콘을 클릭한 후 네트워크 설정을 시작함.
전에 입력한 사용자 계정 암호를 입력한 후 OK 버튼을 클릭함.
설치 시작화면으로 Yes, Continue! 버튼을 클릭함.
네트워크 인터페이스를 설정해야 하므로 Yes, configure /etc/network/interfaces! 버튼을 클릭함.
확인창이 나오면 OK 버튼을 클릭함.
전에 가상 이미지 설정에서 네트워크 유형을 설정한 값에 맞게 선택한 후 OK 버튼을 클릭함.
Bridge 유형이라면 static 선택, NAT 유형이라면 DHCP 선택하면 됨.
(아래 화면은 테스트 목적으로 NAT 환경으로 설정하였으므로 DHCP 로 선택함)
네트워크 설정 확인창이 나오면 수정할 게 없을 경우 Yes, make changes! 버튼을 클릭함.
네트워크 설정 완료창이 나오면 Yes, reboot! 버튼을 클릭함.
4. 보안 도구 설정
Boot 종류 중 SecurityOnion 16.04.7.1 GNU/Linux 을 선택한 후 엔터키를 누름.
로그인 창이 나오면 전에 입력한 사용자 로그인 정보를 입력함.
바탕화면에 Setup 아이콘을 클릭한 후 보안 도구 설정을 시작함.
전에 입력한 사용자 계정 암호를 입력한 후 OK 버튼을 클릭함.
설치 시작화면으로 Yes, Continue! 버튼을 클릭함.
네트워크 설정은 끝났으므로 Yes, skip network configuration! 버튼을 클릭함.
설치 시작화면으로 Yes, Continue! 버튼을 클릭함.
Evaluation 모드와 Production 모드 선택은 사용자가 원하는 모드를 선택한 후 OK 버튼을 클릭함.
Evaluation 모드는 처음 사용하는 사용자 또는 독립 실행형 VM 에 권장하는 모드임.
Production 모드는 시스템 세부 정보를 더 잘 제어하고 분산 배포를 구축 할 수 있는 모드임.
(아래 화면은 테스트 목적으로 Evaluation 모드 설정하였으므로 참고바람)
Kibana, Squert, Sguil 보안 도구에 대한 사용자 계정명을 사용자가 원하는 계정명으로 입력함.
Kibana, Squert, Sguil 보안 도구에 대한 사용자 계정 암호를 사용자가 원하는 계정 암호로 입력함.
Kibana, Squert, Sguil 보안 도구에 대한 사용자 계정 암호를 재입력함.
보안 도구 설정 확인창이 나오면 수정할 게 없을 경우 Yes, proceed with the changes! 버튼을 클릭함.
보안 도구 설정 완료창이 나오면 OK 버튼을 클릭함.
( 3 ) Snort 패턴 작성 및 Squil 접속 확인
Snort 패턴 작성한 다음 패턴 테스트 후 Squil 접속하여 확인하는 방법을 기재함.
사용자 정의 Snort 패턴을 만들려면 /etc/nsm/rules/local.rules 에 사용자 정의 Snort 패턴을 입력한 후 룰 업데이트를 해야 함.
그리고 패턴 테스트한 다음 Squil 프로그램에 접속하여 탐지가 되는지 확인함.
오른쪽 마우스 클릭 후 Open Terminal 을 클릭하여 터미널 창을 실행시킴.
사용자 계정 권한으로는 local.rules 파일이 수정되지 않으므로 아래와 같은 명령어를 입력하여 root 권한으로 gedit 실행시킴.
gksu gedit &
gedit 프로그램의 상단 Open 버튼을 클릭하여 local.rules 파일 위치(/etc/nsm/rules/local.rules)를 기재한 후 엔터키를 누름.
local.rules 파일에 Snort 패턴을 작성한 후 Save 버튼을 눌러 저장시킴.
Snort 패턴에 sid 옵션은 반드시 기재해야 하며 1000001 번부터 시작할 것!
(아래 화면은 Ping 테스트를 위한 패턴을 기재한 화면임.)
터미널 창에 sudo rule-update 명령어를 입력하여 룰 업데이트시킴.
sguil 프로그램에 접속함.
ids-ens33 센서와 ids-ossec 센서는 각각 NIDS, HIDS 센서로 네트워크 트래픽에서 패턴 검색을 해야 하므로 ids-ens 33 센서만 선택해도 됨. 둘다 선택해도 무관함.
테스트한 패턴이 탐지되는 지 확인함.
참고로 SGUIL 사용법은 기능상 어려움이 없는 관계로 사용하기 쉬움.
( 4 ) 서비스 명령어
Security Onion 스크립트를 사용하여 서비스 제어가 가능하며 아래 명령어를 사용하여 모든 스크립트 목록이 있음.
ls /usr/sbin/so-*
1. 모든 서비스(서버, 센서, Elastic) 제어
서비스 상태 : sudo so-status
서비스 시작 : sudo so-start
서비스 중지 : sudo so-stop
서비스 재시작 : sudo so-restart
2. 서버(Sguil 서버) 서비스
서비스 상태 : sudo so-sguild-status
서비스 시작 : sudo so-sguild-start
서비스 중지 : sudo so-sguild-stop
서비스 재시작 : sudo so-sguild-restart
3. 센서 서비스
(zeek, nids, pcap 등 서비스에 대해서 개별적으로 명령어 제어할 수 있음. ex. so-zeek-status)
서비스 상태 : sudo so-sensor-status
서비스 시작 : sudo so-sensor-start
서비스 중지 : sudo so-sensor-stop
서비스 재시작 : sudo so-sensor-restart
4. Elastic 서비스
서비스 상태 : sudo so-elastic-status
서비스 시작 : sudo so-elastic-start
서비스 중지 : sudo so-elastic-stop
서비스 재시작 : sudo so-elastic-restart
( 5 ) 업데이트
1. 모든 패키시 업데이트
스크립트를 사용하여 업데이트하는 것이 좋음.
사용 가능한 모든 패키지 업데이트 명령어는 아래와 같으며 업데이트 완료 후 장비 재기동됨.
sodo soup
2. Snort/Suricata
Snort 패키지 업그레이드는 기존 snort.conf 파일을 snort.conf.bak 에 백업하고 HOME_NET 및 XTERNAL_NET 변수를 마이그레이션함.
Suricata 패키지 업그레이드는 기존 suricata.yaml 파일 suricata.yaml.bak 에 백업하고 HOME_NET 및 XTERNAL_NET 변수를 마이그레이션함.
그런 다음에 아래를 수행해야 함.
- snort.conf/suricata.yaml 파일을 로컬 사용자 정의가 있는지 확인하고 적용시킴.
- 룰셋을 업데이트하고 Snort/Suricata 를 재시작함.
sudo rule-update
3. Zeek
만약에 Bro 에서 Zeek 로 업그레이드하면 Zeek 가 설치되기 전에 Bro 가 자동으로 중지되므로 업그레이드가 완료된 후 Zeek 를 다시 시작해야 함.
그냥 Zeek 에서 최신 버전 Zeek 로 업그레이드하면 Zeek 가 자동으로 중지되지 않음.
Zeek 패키지 업그레이드는 Zeek 구성 마이그레이션을 시도함.
구성을 다시 확인하고 수동으로 다시 적용해야 하는 로컬 사용자 지정이 있는지 확인해야 함.
그런 다음에 아래와 같이 Zeek 를 다시 시작함.
sudo so-zeek-restart
4. Elastic
만약에 soup 가 Elastic 스택을 업그레이드하는 경우 Kibana 대시보드를 자동으로 다시 로드해야 함.
어떤 이유로 이것이 실패하고 Kibana 가 대시보드를 표시하지 않는 경우 아래와 같이 입력하면 됨.
sudo so-elastic-configure-kibana
만약 이전에 외부 Elasic 구성 요소(ex. filebeat, winlogbeat 등)를 추가한 경우 업그레이드된 Elastic 구성 요소의 버전과 일치하도록 업그레이드해야 함.
5. Wazuh
Wazuh 패키지 업그레이드는 /var/ossec/etc/ossec.conf 를 백업하고 새 ossec.conf 로 대체됨.
그런 다음에 아래와 같이 수행해야 함.
- 로컬 사용자 정의가 있을 경우 /var/ossec/etc/ossec.conf 에 적용함.
- Wazuh 서비스를 재시작함.
sudo so-ossec-restart
- 기존 OSSEC/Wazuh 에이전트를 Wazuh 서버 버전과 일치하는 Wazuh 에이전트 버전으로 업데이트함.
6. MySQL
우분투 리눅스는 필요에 따라 주기적으로 새로운 MySQL 패키지를 릴리스함.
soup 명령어를 통해 새로운 MySQL 패키지를 설치할 경우 아래와 같이 몇 가지 오류 메시지가 표시될 수 있음.
- MySQL 업그레이드 프로세스에 관한 오류 메시지
설치 시 MySQL 이 비활성화된 경우 다음과 같은 오류 메시지가 표시될 수도 있음.
dpkg:
dependency problems prevent configuration of mysql-server: mysql-server depends on mysql-server-5.7;
however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package
mysql-server (--configure): dependency problems - leaving unconfigured
Errors were encountered while
processing: mysql-server-5.7 mysql-server E: Sub-process /usr/bin/dpkg returned an error code (1) |
그럼 아래와 같이 한 줄짜리 명령어를 사용하여 문제를 해결할 수 있음.
sudo systemctl enable mysql.service && sudo apt -f install && sudo systemctl stop mysql.service && sudo systemctl disable mysql.service
- MySQL 5.5 에 관한 오류 메시지
이전 버전의 soup 는 MySQL 5.5 와 관련된 오류 메시지를 표시할 수 있으며 Security Onion 16.04 가 MySQL 5.7 를 사용하므로 무시할 수 있음.
이 문제를 해결하기 위해 최신 버전의 soup 가 업데이트하면 됨.
Package mysql-server-5.5 is not
available, but is referred to by another package. This may mean that the package is
missing, has been obsoleted, or is only available from another source However the following packages replace
it:
mysql-server-5.7 mysql-common percona-xtradb-cluster-server-5.6:i386
percona-server-server-5.6:i386 mysql-testsuite-5.7:i386
mariadb-server-10.0:i386 percona-xtradb-cluster-server-5.6
percona-server-server-5.6 mysql-testsuite-5.7 mariadb-server-10.0
mysql-server-5.7:i386
Package mysql-server-core-5.5 is not
available, but is referred to by another package. This may mean that the package is
missing, has been obsoleted, or is only available from another source However the following packages replace
it:
mysql-server-core-5.7 percona-server-server-5.6:i386
mariadb-server-core-10.0:i386 percona-server-server-5.6
mariadb-server-core-10.0 mysql-server-core-5.7:i386
E: Package 'mysql-server-core-5.5' has
no installation candidate E: Package 'mysql-server-5.5' has no installation candidate |
7. SSH 를 통해 업데이트 수행 시 주의사항
SSH 연결을 통해 Security Onion 장비를 업데이트하고 연결이 끊어지면 업데이트 프로세스가 일관되지 않은 상태(inconsistent state)로 남을 수 있음.
따라서 연결이 끊어져도 세션이 Security Onion 장비에서 계속 실행되로고 Byobu 를 실행하는 것이 좋음.
Byobu 는 매우 편리하므로 업데이트 전에 항상 실행하는 것이 좋음.
Byobu 에 대한 자세한 정보는 아래를 참조 바람.
https://help.ubuntu.com/community/Byobu
# byobu 설치
sudo apt-get install byobu
# byobu 활성화
byobu-enable
# 지금 업데이트 시작
( 6 ) 로그 위치
Setup - /var/log/nsm/sosetup.log
Daily Log / PCAPs - /nsm/sensor_data/{ HOSTNAME-INTERFACE }/dailylogs
sguil - /var/log/nsm/securityonion/sguild.log
Suricata - /var/log/nsm/{ HOSTNAME-INTERFACE }/suricata.log
barnyard2 - /var/log/nsm/ { HOSTNAME-INTERFACE }/barnyard2.log
netsniff-ng - /var/log/nsm/{ HOSTNAME-INTERFACE }/netsniff-ng.log
Zeek - /nsm/bro/logs/current
snort_agent - /var/log/nsm/{ HOSTNAME-INTERFACE }/snort_agent.log
Elasticsearch - /var/log/elasticsearch/<hostname>.log
Kibana - /var/log/kibana/kibana.log
Logstash - /var/log/logstash/logstash.log
Elastalert - /var/log/elastalert/elastalert_stderr.log
( 7 ) 기타 정보
NSM 프로세스 재시작
sudo sevice nsm restart
모든 MySQL 데이터베이스 문제 여부 확인
sudo mysqlcheck -A
특정 MySQL 데이터베이스 문제 여부 확인
sudo mysqlcheck -c securityonion_db
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기