APPENDIX: Architecture + Maintenance
Web Servicesβ
The following web UI services are exposed on all interfaces of the MIP RHEL host for analyst use:
- KIBANA:
https://localhost:5601NOTE: Username:
assessor| Password:elastic - ARKIME-VIEWER:
https://localhost:8005NOTE: Username:
assessor| Password:elastic
Network Servicesβ
The following non-web UI network services are exposed on all interfaces of the MIP RHEL host:
- ELASTICSEARCH:
https://localhost:9200NOTE: Username:
assessor| Password:elastic - LOGSTASH:
localhost:5045NOTE: TCP over TLS - feeds Auditbeat, Winlogbeat, and Filebeat logs through the pipeline
SystemD Services / Docker Containersβ
The following SystemD services and correspinging Docker containers are installed:
elastic.target services: (enabled to auto-start on boot)
- KIBANA: The
kibanaDocker container is running via thekibanaserviceTIP: Use
systemctl status kibanaordocker logs -f kibanato track status
NOTE:kibanacannot run withoutelasticsearchactive - ELASTICSEARCH: The
elasticsearchDocker container is running via theelasticsearchserviceTIP: Use
systemctl status elasticsearchordocker logs -f elasticsearchto track status - LOGSTASH: The
logstashDocker container is running via thelogstashserviceTIP: Use
systemctl status logstashordocker logs -f logstashto track status - ARKIME-VIEWER: The
arkime-viewerDocker container is running via thearkime-viewerserviceTIP: Use
systemctl status arkime-viewerordocker logs -f arkime-viewerto track status
NOTE:arkime-viewercannot run withoutelasticsearchactive
sensor.target services:
- FILEBEAT: The
filebeatDocker container is running via thefilebeatserviceTIP: Use
systemctl status filebeatordocker logs -f filebeatto track status
NOTE:filebeatis required to be active in order to shipzeekandsuricatalogs tologstash - ZEEK: The
zeekDocker container is running via thezeekserviceTIP: Use
docker exec zeek /opt/zeek/bin/zeekctl statusto check status - SURICATA: The
suricataDocker container is running via thesuricataserviceTIP: Use
systemctl status suricataordocker logs -f suricatato track status - ARKIME-CAPTURE: The
arkime-captureDocker container is running via thearkime-captureserviceTIP: Use
systemctl status arkime-captureordocker logs -f arkime-captureto track status
NOTE:arkime-capturecannot run withoutelasticsearchactive
Support services:
sensor-interfaces.service: Configures interfaces set in/cvah/dmip/sensor.cfgto promiscuous mode, disable ARP, and block outbound connections while the service is running, and reverts the configuration when stopped
SystemD Targets / Service Groupsβ
SystemD "targets" can be used to group services that are meant to run together so that you don't have to manage them individually.
elastic.targetis used to control the status of all Elastic and support services (kibana,elasticsearch,logstash,arkime-viewer)NOTE:
elastic.targetis enabled to start on boot (all corresponding services will start on boot)
STARTING: Usesystemctl start elastic.targetto start all corresponding services
STOPPING: Usesystemctl stop elastic.targetto stop all corresponding services
RESTARTING: Usesystemctl restart elastic.targetto restart all corresponding servicessensor.targetis used to control the status of all Sensor services (zeek,suricata,arkime-capture,filebeat)NOTE:
sensor.targetis NOT enabled to start on boot (no corresponding services will start on boot)
STARTING: Usesystemctl start sensor.targetto start all corresponding services
STOPPING: Usesystemctl stop sensor.targetto stop all corresponding services
RESTARTING: Usesystemctl restart sensor.targetto restart all corresponding services
Logging Locationsβ
Zeek and Suricata logs are automatcally shipped by filebeat.service to localhost:5045 (by way of logstash.service), but if you want to view the raw logs, they are mounted here:
- ZEEK:
/cvah/dmip/zeek/logs/ - SURICATA:
/cvah/dmip/suricata/logs/
Arkime PCAP collected by arkime-capture.service are stored here as compressed .tgz files:
- ARKIME:
/cvah/dmip/arkime/pcap/
Config Locationsβ
Unless otherwise directed by this SOP, it is highly recommended to not modify any of these configurations:
- SENSOR CONFIG:
/cvah/dmip/sensor.cfg- Config file that sets the sniffing interface(s),HOME_NET, andEXTERNAL_NETthat propogates tozeek.service,suricata.service, andarkime-capture.serviceNOTE: This file exists so that you don't have to mess with any of the other config files
- ELASTICSEARCH:
/cvah/dmip/elasticsearch/- Data and config files are stored hereTIP: To wipe all Elasticsearch data (including Arkime), delete the contents of
/cvah/dmip/elasticsearch/data/*and restartelastic.target - LOGSTASH:
/cvah/dmip/logstash/- Pipelines and config files are stored hereTIP: Custom pipeline
.confare placed in/cvah/dmip/logstash/pipeline/- you can place your own here too - KIBANA:
/cvah/dmip/kibana/- Config files are stored hereWARNING: Do not touch unless you really know what you are doing
- FILEBEAT:
/cvah/dmip/filebeat/filebeat.yml- If you really want to redirect Zeek and Suricata logs to somewhere other thanlocalhost:5045, you can modify this fileWARNING: Do not touch unless you really know what you are doing
- ZEEK:
/cvah/dmip/zeek/- Zeek has multiple configuration files stored hereWARNING: Do not touch unless you really know what you are doing
- SURICATA:
/cvah/dmip/suricata/suricata.yaml- Suricata's configuration fileWARNING: Do not touch unless you really know what you are doing
- ARKIME:
/cvah/dmip/arkime/config.ini- Arkime's configuration fileWARNING: Do not touch unless you really know what you are doing
Elastic Licenseβ
The Elastic license used by Elasticsearch is copied from the DIP Controller (if it exists) to /cvah/dmip/license.json.
To update the license, replace /cvah/dmip/license.json and restart the elasticsearch.service