Try send data to OpenCTI

Viewed 67

I am trying to send data to my server (Opencti). This data is a migration from one internal database to Opencti.

Apparently, the OpenCTI is working well, and the portal web is working.

This is my docker-compose.yml:

            enter version: '3'
            services:
              redis:
                image: redis:7.0.0
                restart: always
                volumes:
                  - redisdata:/data
              elasticsearch:
                image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4
                volumes:
                  - esdata:/usr/share/elasticsearch/data
                environment:
                  # Comment out the line below for single-node
                  - discovery.type=single-node
                  - xpack.security.enabled=false
                  # Uncomment line below below for a cluster of multiple nodes
                  #- cluster.name=docker-cluster
                  - xpack.ml.enabled=false
                  - "ES_JAVA_OPTS=-Xms${ELASTIC_MEMORY_SIZE} -Xmx${ELASTIC_MEMORY_SIZE}"
                restart: always
                ulimits:
                  memlock:
                    soft: -1
                    hard: -1
                  nofile:
                    soft: 65536
                    hard: 65536
              minio:
                image: minio/minio:RELEASE.2022-05-19T18-20-59Z
                volumes:
                  - s3data:/data
                ports:
                  - "9000:9000"
                environment:
                  MINIO_ROOT_USER: ${MINIO_ROOT_USER}
                  MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
                command: server /data
                healthcheck:
                  test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
                  interval: 30s
                  timeout: 20s
                  retries: 3
                restart: always
              rabbitmq:
                image: rabbitmq:3.10-management
                environment:
                  - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
                  - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
                volumes:
                  - amqpdata:/var/lib/rabbitmq
                restart: always
              opencti:
                image: opencti/platform:5.3.7
                environment:
         environment:
              - NODE_OPTIONS=--max-old-space-size=8096
              - APP__PORT=80
              - APP__BASE_URL=${OPENCTI_BASE_URL}
              - APP__ADMIN__EMAIL=${OPENCTI_ADMIN_EMAIL}
              - APP__ADMIN__PASSWORD=${OPENCTI_ADMIN_PASSWORD}
              - APP__ADMIN__TOKEN=${OPENCTI_ADMIN_TOKEN}
              - APP__APP_LOGS__LOGS_LEVEL=error
              - REDIS__HOSTNAME=redis
              - REDIS__PORT=6379
              - ELASTICSEARCH__URL=http://elasticsearch:9200
              - MINIO__ENDPOINT=minio
              - MINIO__PORT=9000
              - MINIO__USE_SSL=false
              - MINIO__ACCESS_KEY=${MINIO_ROOT_USER}
              - MINIO__SECRET_KEY=${MINIO_ROOT_PASSWORD}
              - RABBITMQ__HOSTNAME=rabbitmq
              - RABBITMQ__PORT=5672
              - RABBITMQ__PORT_MANAGEMENT=15672
              - RABBITMQ__MANAGEMENT_SSL=false
              - RABBITMQ__USERNAME=${RABBITMQ_DEFAULT_USER}
              - RABBITMQ__PASSWORD=${RABBITMQ_DEFAULT_PASS}
              - SMTP__HOSTNAME=${SMTP_HOSTNAME}
              - SMTP__PORT=25
              - PROVIDERS__LOCAL__STRATEGY=LocalStrategy
            ports:
              - "80:80"
            depends_on:
              - redis
              - elasticsearch
              - minio
              - rabbitmq
            restart: always
          worker:
            image: opencti/worker:5.3.7
            environment:
              - OPENCTI_URL=http://opencti:80
              - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
              - WORKER_LOG_LEVEL=info
            depends_on:
              - opencti
            deploy:
              mode: replicated
              replicas: 3
            restart: always
          connector-export-file-stix:
            image: opencti/connector-export-file-stix:5.3.7
            environment:
              - OPENCTI_URL=http://opencti:80
          - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
          - CONNECTOR_ID=${CONNECTOR_EXPORT_FILE_STIX_ID} # Valid UUIDv4
          - CONNECTOR_TYPE=INTERNAL_EXPORT_FILE
          - CONNECTOR_NAME=ExportFileStix2
          - CONNECTOR_SCOPE=application/json
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_LOG_LEVEL=info
        restart: always
        depends_on:
          - opencti
      connector-export-file-csv:
        image: opencti/connector-export-file-csv:5.3.7
        environment:
          - OPENCTI_URL=http://opencti:80
          - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
          - CONNECTOR_ID=${CONNECTOR_EXPORT_FILE_CSV_ID} # Valid UUIDv4
          - CONNECTOR_TYPE=INTERNAL_EXPORT_FILE
          - CONNECTOR_NAME=ExportFileCsv
          - CONNECTOR_SCOPE=text/csv
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_LOG_LEVEL=info
        restart: always
        depends_on:
          - opencti
      connector-export-file-txt:
        image: opencti/connector-export-file-txt:5.3.7
        environment:
          - OPENCTI_URL=http://opencti:80
          - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
          - CONNECTOR_ID=${CONNECTOR_EXPORT_FILE_TXT_ID} # Valid UUIDv4
          - CONNECTOR_TYPE=INTERNAL_EXPORT_FILE
          - CONNECTOR_NAME=ExportFileTxt
          - CONNECTOR_SCOPE=text/plain
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_LOG_LEVEL=info
        restart: always
        depends_on:
          - opencti
      connector-import-file-stix:
        image: opencti/connector-import-file-stix:5.3.7
        environment:
          - OPENCTI_URL=http://opencti:80
          - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
          - CONNECTOR_ID=${CONNECTOR_IMPORT_FILE_STIX_ID} # Valid UUIDv4
          - CONNECTOR_TYPE=INTERNAL_IMPORT_FILE
          - CONNECTOR_NAME=ImportFileStix
          - CONNECTOR_VALIDATE_BEFORE_IMPORT=true # Validate any bundle before import
          - CONNECTOR_SCOPE=application/json,text/xml
          - CONNECTOR_AUTO=true # Enable/disable auto-import of file
          - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
          - CONNECTOR_LOG_LEVEL=info
    restart: always
    depends_on:
      - opencti
  connector-import-document:
    image: opencti/connector-import-document:5.3.7
    environment:
      - OPENCTI_URL=http://opencti:80
      - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
      - CONNECTOR_ID=${CONNECTOR_IMPORT_DOCUMENT_ID} # Valid UUIDv4
      - CONNECTOR_TYPE=INTERNAL_IMPORT_FILE
      - CONNECTOR_NAME=ImportDocument
      - CONNECTOR_VALIDATE_BEFORE_IMPORT=true # Validate any bundle before import
      - CONNECTOR_SCOPE=application/pdf,text/plain,text/html
      - CONNECTOR_AUTO=true # Enable/disable auto-import of file
      - CONNECTOR_ONLY_CONTEXTUAL=false # Only extract data related to an entity (a report, a threat actor, etc.)
      - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
      - CONNECTOR_LOG_LEVEL=info
      - IMPORT_DOCUMENT_CREATE_INDICATOR=true
    restart: always
    depends_on:
      - opencti
  connector-taxii2:
    image: opencti/connector-taxii2:5.3.10
    environment:
      - OPENCTI_URL=http://opencti:80
      - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
      - CONNECTOR_ID=e32fbdbe-5a84-4da3-956b-b72522b6c2bf
      - CONNECTOR_TYPE=EXTERNAL_IMPORT
      - CONNECTOR_NAME=TAXII2
      - CONNECTOR_SCOPE=ipv4-addr,ipv6-addr,vulnerability,domain,url,file-sha256,file-md5,file-sha1
      - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
      - CONNECTOR_UPDATE_EXISTING_DATA=false
      - CONNECTOR_LOG_LEVEL=info
      - TAXII2_DISCOVERY_URL=http://opencti:80 # Required
        #- TAXII2_CERT_PATH=ChangeMe # Optional (.pem)
      - TAXII2_USERNAME=prueba # Required
      - TAXII2_PASSWORD=prueba
      - TAXII2_V21=true # Is TAXII v2.1
      - TAXII2_COLLECTIONS=*.* # Required
      - TAXII2_INITIAL_HISTORY= 24 # Required, in hours
      - TAXII2_INTERVAL=100 # Required, in hours
      - TAXII2_VERIFY_SSL=true
      - TAXII2_CREATE_INDICATORS=true # Generate indicators for ingested observables
      - TAXII2_CREATE_OBSERVABLES=true # Generate observables for ingested indicators
    restart: always
    depends_on:
      - opencti
volumes:
  esdata:
  s3data:
  redisdata:
  amqpdata:

I have a Python script to send data to my Opencti Server.

from pycti import OpenCTIApiClient
      

# -----MAIN------
if __name__ == "__main__":
  
  # Variables
  api_url = "<http://<IP WHERE IS MY OPENCTI>:80>"
  api_token = "TOKEN" # /opencti-docker/.env --> CONNECTOR_IMPORT_FILE_STIX_ID

  # OpenCTI initialization
  opencti_api_client = OpenCTIApiClient(api_url, api_token) 

When I run this code, I received that error:

INFO:root:Listing Threat-Actors with filters null.
Traceback (most recent call last):
  File "Main.py", line 14, in <module>
    opencti_api_client = OpenCTIApiClient(api_url, api_token)
  File "/usr/local/lib/python3.8/dist-packages/pycti/api/opencti_api_client.py", line 187, in __init__
    raise ValueError(
ValueError: OpenCTI API is not reachable. Waiting for OpenCTI API to start or check your configuration...
Killed

Can somebody help me?

I want to send JSON (Stix format) to the Opencti server by a script.

Thanks!

0 Answers
Related