logo

한국어
■ docker 프로세스 분석

▣ consul
클라우드 환경에서 서비스를 연결(Connect), 보안(Secure) 및 구성(Cofigure)하는 분산 Service Mesh, Web-UI 기능 존재
http://teddykwon.com/2017/01/18/consul-install.html
http://longbe00.blogspot.com/2017/08/consul.html
https://www.consul.io/

▣ haproxy
HAProxy는 기존의 하드웨어 스위치를 대체하는 소프트웨어 로드 밸런서로, 네트워크 스위치에서 제공하는 L4, L7 기능 및 로드 밸런서 기능을 제공한다.
https://findstar.pe.kr/2018/07/27/install-haproxy/
https://d2.naver.com/helloworld/284659
http://www.haproxy.org/

▣ registrator
Registrator는 Gliderlabs에서 MIT 라이센스로 만든 Docker container를 자동으로 Consul, etcd, SkyDNS2에 등록해주고 제거해주는 어플리케이션.
http://teddykwon.com/2017/01/20/consul-registrator.html
http://gliderlabs.github.io/registrator/

▣ apache-zookeeper
"분산 처리 환경에서 사용 가능한 데이터 저장소", 기능은 매우 단순하지만 분산 서버 환경에서는 활용 분야가 넓다. 예를 들어 분산 서버 간의 정보 공유, 서버 투입/제거 시 이벤트 처리, 서버 모니터링, 시스템 관리, 분산 락 처리, 장애 상황 판단 등 다양한 분야에서 활용할 수 있다.
https://d2.naver.com/helloworld/294797
http://bcho.tistory.com/1016
https://zookeeper.apache.org/

▣ apache-kafka
시스템 또는 응용 프로그램간에 데이터를 안정적으로 얻는 실시간 스트리밍 데이터 파이프 라인 구축
※설치를 위해서는 apache-zookeeper가 필요하다.
http://junil-hwang.com/blog/apache-kafka/
https://medium.com/@mazdah70/apache-kafka-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-2c0c3e7195cd
https://kafka.apache.org/

▣ apache-storm
실시간 분석 분산 시스템
Storm의 아키텍처는 Hadoop과 매우 유사하다. Hadoop에서는 MR(Map-Reduce) 작업을 실행하는 반면 Storm에서는 토폴로지 작업을 수행하는 것이 다르다. MR 작업과 토폴로지의 차이는, MR 작업은 정해진 데이터 세트를 처리한 후 완료되지만 토폴로지는 계속해서 메시지를 처리한다는 점이다. Storm에도 Hadoop의 JobTracker 역할을 하는 Nimbus 데몬과 Hadoop의 TaskTracker 역할을 하는 Supervisor 데몬이 있다. Nimbus는 수행할 코드를 배포하고 Supervisor 노드에 작업을 할당하며 장애 조치(failover) 등을 담당한다. Supervisor 노드는 할당된 토폴로지의 일부를 처리할 작업 프로세스(worker process)의 구동을 담당한다. Nimbus와 Supervisor는 Zookeeper를 이용해서 장애 상황에 대응한다.
※설치를 위해서는 apache-zookeeper가 필요하다.
https://d2.naver.com/helloworld/484148
http://bcho.tistory.com/993
http://storm.apache.org/

▣ apache-cassandra
분산형 NoSQL 데이터베이스 관리 시스템
https://meetup.toast.com/posts/58
https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%EC%82%B0%EB%93%9C%EB%9D%BC
https://nicewoong.github.io/development/2018/02/11/cassandra-feature/
http://cassandra.apache.org/


■ docker ps --format "table {{.Names}}\t{{.Ports}}"

appdefender_backend_jobs_1       8080/tcp
haproxy                          0.0.0.0:1936->1936/tcp, 0.0.0.0:4321->4321/tcp, 0.0.0.0:8443-8444->8443-8444/tcp
rsyslog_defender                 0.0.0.0:514->514/tcp, 0.0.0.0:1999->1999/tcp
appdefender_command_channel_1    0.0.0.0:32768->8080/tcp
appdefender_edge_1               0.0.0.0:32770->4321/tcp
appdefender_registrator_1
consul                           53/tcp, 0.0.0.0:8300->8300/tcp, 0.0.0.0:8400->8400/tcp, 8301-8302/tcp, 0.0.0.0:8500->8500/tcp, 8301-8302/udp, 0.0.0.0:8600->53/udp
appdefender_kafka_1              0.0.0.0:9092->9092/tcp
appdefender_storm_supervisor_1   22/tcp, 6700-6703/tcp, 8000/tcp
storm_nimbus                     22/tcp, 0.0.0.0:6627->6627/tcp
appdefender_zookeeper_1          0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp
appdefender_ui_customer_1        0.0.0.0:32769->8080/tcp
appdefender_cassandra_1          7001/tcp, 0.0.0.0:7000->7000/tcp, 7199/tcp, 0.0.0.0:9042->9042/tcp, 9160/tcp
postgres                         0.0.0.0:5432->5432/tcp

■ docker ps | wc -l
15

■ 로그 확인 (최근 한달)

docker logs --since 44640m --details appdefender_backend_jobs_1     2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details haproxy                        2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details rsyslog_defender               2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_command_channel_1  2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_edge_1             2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_registrator_1      2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details consul                         2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details topologies                     2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_kafka_1            2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_storm_supervisor_1 2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details storm_nimbus                   2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_zookeeper_1        2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_ui_customer_1      2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details db_migrations                  2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details appdefender_cassandra_1        2>&1 | grep -E "ERR|FATAL"
docker logs --since 44640m --details postgres                       2>&1 | grep -E "ERR|FATAL"

■ docker 컨테이너 쉘 진입

docker exec -it appdefender_backend_jobs_1     /bin/bash
docker exec -it haproxy                        /bin/bash
docker exec -it rsyslog_defender               /bin/bash
docker exec -it appdefender_command_channel_1  /bin/bash
docker exec -it appdefender_edge_1             /bin/bash
docker exec -it appdefender_registrator_1      /bin/bash
docker exec -it consul                         /bin/bash
docker exec -it topologies                     /bin/bash
docker exec -it appdefender_kafka_1            /bin/bash
docker exec -it appdefender_storm_supervisor_1 /bin/bash
docker exec -it storm_nimbus                   /bin/bash
docker exec -it appdefender_zookeeper_1        /bin/bash
docker exec -it appdefender_ui_customer_1      /bin/bash
docker exec -it db_migrations                  /bin/bash
docker exec -it appdefender_cassandra_1        /bin/bash
docker exec -it postgres                       /bin/bash

■ docker 컨테이너 IP주소 알아내기

docker inspect appdefender_backend_jobs_1     | grep "IPAddress"
docker inspect haproxy                        | grep "IPAddress"
docker inspect rsyslog_defender               | grep "IPAddress"
docker inspect appdefender_command_channel_1  | grep "IPAddress"
docker inspect appdefender_edge_1             | grep "IPAddress"
docker inspect appdefender_registrator_1      | grep "IPAddress"
docker inspect consul                         | grep "IPAddress"
docker inspect topologies                     | grep "IPAddress"
docker inspect appdefender_kafka_1            | grep "IPAddress"
docker inspect appdefender_storm_supervisor_1 | grep "IPAddress"
docker inspect storm_nimbus                   | grep "IPAddress"
docker inspect appdefender_zookeeper_1        | grep "IPAddress"
docker inspect appdefender_ui_customer_1      | grep "IPAddress"
docker inspect db_migrations                  | grep "IPAddress"
docker inspect appdefender_cassandra_1        | grep "IPAddress"
docker inspect postgres                       | grep "IPAddress"

■ postgreSQL

# docker ps | grep postgres
# docker exec -it postgres /bin/bash

###########################################################
#
# 여기부터 postgres의 docker 내부...
#
###########################################################
# su - postgres
$ psql db_appdefender -U postgres

-- Database 조회
\list

-- 현재 DB의 전체 스키마 조회
SELECT NSPNAME FROM PG_CATALOG.PG_NAMESPACE;

-- 전체 테이블 조회
SELECT TABLENAME FROM PG_TABLES;

-- 모든 스키마와 테이블 보기
SELECT TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_SCHEMA,TABLE_NAME;

-- 끝내기
\q

-- Application Defender 테이블 조회
SELECT * FROM auth_data.hp_sso_license;
SELECT * FROM auth_data.integration;
SELECT * FROM auth_data.invalid_cat_door_token;
SELECT * FROM auth_data.nonce;
SELECT * FROM auth_data.role;
SELECT * FROM auth_data.tenant;
SELECT * FROM auth_data.tenant_metrics;
SELECT * FROM auth_data.user_account;
SELECT * FROM auth_data.user_role;
SELECT * FROM global_metadata.agent_binary_version;
SELECT * FROM global_metadata.blacklisted_domain;
SELECT * FROM global_metadata.category_snapshot;
SELECT * FROM global_metadata.certificate_config;
SELECT * FROM global_metadata.defender_version;
SELECT * FROM global_metadata.global_blobs;
SELECT * FROM global_metadata.language_snapshot;
SELECT * FROM global_metadata.rulepack_category;
SELECT * FROM global_metadata.rulepack_parameter;
SELECT * FROM global_metadata.rulepack_version;
SELECT * FROM global_metadata.schema_version;
SELECT * FROM global_metadata.snapshot_instance;
SELECT * FROM global_metadata.system_config;
SELECT * FROM global_metadata.tenant_snapshot;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.tenant_config;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.security_log_setting;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.ping_record;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.notification_aud;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.notification;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.licensed_agent_delta;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.alert_definition_aud;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.alert_condition_aud;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.agent_system_environment;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.agent_states;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.agent_log_file;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.agent_group_custom_rulepack_version;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.agent_config;
SELECT * FROM td3f1a94d8560493cb65250f2358c0c3b.active_agent_count;


■ Vertica Database

▣ 테이블 목록 출력

SELECT SCHEMA_NAME, TABLE_NAME FROM ALL_TABLES WHERE TABLE_TYPE='TABLE';

schema_version
security_events
security_events_map
security_events_flownode
security_events_fn_trace
monitor_events_count
security_events_unexpected
monitor_events_unexpected
vulnerability

▣ 테이블 내용 조회

-- SCHEMA_VERSION.TABLE_NAME으로 테이블을 명시하여 SELECT
SELECT EVENT_TIMESTAMP, INSERT_TIMESTAMP, CATEGORY, SEVERITY, REQUEST_IP, REQUEST_PATH FROM TD3F1A94D8560493CB65250F2358C0C3B.SECURITY_EVENTS;

-- 기간을 설정하여 검색
SELECT COUNT(*)
FROM TD3F1A94D8560493CB65250F2358C0C3B.SECURITY_EVENTS
WHERE EVENT_TIMESTAMP >= '2018-01-01 00:00:00' AND
      EVENT_TIMESTAMP < '2050-12-31 23:59:59';