mirror of
https://github.com/telekom-security/tpotce.git
synced 2025-05-10 18:31:56 +00:00
fix some compile errors, tweaking
This commit is contained in:
parent
3e4985da8c
commit
b151397d85
5 changed files with 24 additions and 128 deletions
|
@ -4,8 +4,8 @@ FROM alpine
|
||||||
ADD dist/ /root/dist/
|
ADD dist/ /root/dist/
|
||||||
|
|
||||||
# Install packages
|
# Install packages
|
||||||
RUN apk -U --no-cache add autoconf \
|
RUN apk -U --no-cache add \
|
||||||
bash \
|
autoconf \
|
||||||
bind-tools \
|
bind-tools \
|
||||||
build-base \
|
build-base \
|
||||||
cython \
|
cython \
|
||||||
|
@ -61,9 +61,7 @@ RUN apk -U --no-cache add autoconf \
|
||||||
# Install glastopf from git
|
# Install glastopf from git
|
||||||
git clone https://github.com/mushorg/glastopf.git /opt/glastopf && \
|
git clone https://github.com/mushorg/glastopf.git /opt/glastopf && \
|
||||||
cd /opt/glastopf && \
|
cd /opt/glastopf && \
|
||||||
git checkout c4932d9cb513d284142e2c0d66284221201d7477 && \
|
git checkout 67c2a3fce7419f0c6b418b2b91da3c45b399f2b8 && \
|
||||||
cp /root/dist/base_logger.py /opt/glastopf/glastopf/modules/reporting/auxiliary/ && \
|
|
||||||
cp /root/dist/log_s3.py /opt/glastopf/glastopf/modules/reporting/auxiliary/ && \
|
|
||||||
cp /root/dist/requirements.txt /opt/glastopf/ && \
|
cp /root/dist/requirements.txt /opt/glastopf/ && \
|
||||||
pip install --no-cache-dir . && \
|
pip install --no-cache-dir . && \
|
||||||
cd / && \
|
cd / && \
|
||||||
|
@ -73,21 +71,23 @@ RUN apk -U --no-cache add autoconf \
|
||||||
# Setup user, groups and configs
|
# Setup user, groups and configs
|
||||||
addgroup -g 2000 glastopf && \
|
addgroup -g 2000 glastopf && \
|
||||||
adduser -S -H -u 2000 -D -g 2000 glastopf && \
|
adduser -S -H -u 2000 -D -g 2000 glastopf && \
|
||||||
mkdir -p /opt/glastopf && \
|
mkdir -p /etc/glastopf && \
|
||||||
mv /root/dist/glastopf.cfg /opt/glastopf/ && \
|
mv /root/dist/glastopf.cfg /etc/glastopf/ && \
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
apk del autoconf \
|
apk del --purge autoconf \
|
||||||
build-base \
|
build-base \
|
||||||
git \
|
file \
|
||||||
libffi-dev \
|
git \
|
||||||
php7-dev \
|
libffi-dev \
|
||||||
python-dev \
|
php7-dev \
|
||||||
py-pip && \
|
python-dev \
|
||||||
|
py-pip \
|
||||||
|
re2c && \
|
||||||
rm -rf /root/* && \
|
rm -rf /root/* && \
|
||||||
rm -rf /var/cache/apk/*
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# Set workdir and start glastopf
|
# Set workdir and start glastopf
|
||||||
USER glastopf:glastopf
|
USER glastopf:glastopf
|
||||||
WORKDIR /tmp/glastopf/
|
WORKDIR /tmp/glastopf/
|
||||||
CMD cp /opt/glastopf/glastopf.cfg /tmp/glastopf && exec glastopf-runner
|
CMD cp /etc/glastopf/glastopf.cfg /tmp/glastopf && exec glastopf-runner
|
||||||
|
|
31
docker/glastopf/dist/base_logger.py
vendored
31
docker/glastopf/dist/base_logger.py
vendored
|
@ -1,31 +0,0 @@
|
||||||
# Copyright (C) 2015 Lukas Rist
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc.,
|
|
||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
from ConfigParser import SafeConfigParser
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
class BaseLogger(object):
|
|
||||||
def __init__(self, config='glastopf.cfg'):
|
|
||||||
if not isinstance(config, SafeConfigParser):
|
|
||||||
self.config = SafeConfigParser(os.environ)
|
|
||||||
self.config.read(config)
|
|
||||||
else:
|
|
||||||
self.config = config
|
|
||||||
|
|
||||||
def insert(self, event):
|
|
||||||
pass
|
|
13
docker/glastopf/dist/glastopf.cfg
vendored
13
docker/glastopf/dist/glastopf.cfg
vendored
|
@ -107,10 +107,9 @@ enabled = False
|
||||||
|
|
||||||
[s3storage]
|
[s3storage]
|
||||||
enabled = False
|
enabled = False
|
||||||
endpoint = %(GLASTOPF_S3_ENDPOINT)s
|
endpoint = http://localhost:8080/
|
||||||
aws_access_key_id = %(GLASTOPF_S3_ACCESS_KEY_ID)s
|
aws_access_key_id = YOUR_aws_access_key_id
|
||||||
aws_secret_access_key = %(GLASTOPF_S3_SECRET_ACCESS_KEY)s
|
aws_secret_access_key = YOUR_aws_access_key_id
|
||||||
bucket = %(GLASTOPF_S3_BUCKET)s
|
bucket = glastopf
|
||||||
region = %(GLASTOPF_S3_REGION)s
|
region = eu-west-1
|
||||||
signature_version = %(GLASTOPF_S3_SIGNATURE_VERSION)s
|
signature_version = s3
|
||||||
|
|
||||||
|
|
72
docker/glastopf/dist/log_s3.py
vendored
72
docker/glastopf/dist/log_s3.py
vendored
|
@ -1,72 +0,0 @@
|
||||||
# Copyright (C) 2018 Andre Vorbach @vorband
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import gevent
|
|
||||||
|
|
||||||
import botocore.session, botocore.client
|
|
||||||
from botocore.exceptions import ClientError
|
|
||||||
|
|
||||||
from glastopf.modules.reporting.auxiliary.base_logger import BaseLogger
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class S3Logger(BaseLogger):
|
|
||||||
|
|
||||||
def __init__(self, data_dir, work_dir, config="glastopf.cfg", reconnect=True):
|
|
||||||
config = os.path.join(work_dir, config)
|
|
||||||
BaseLogger.__init__(self, config)
|
|
||||||
self.files_dir = os.path.join(data_dir, 'files/')
|
|
||||||
self.enabled = False
|
|
||||||
self._initial_connection_happend = False
|
|
||||||
self.options = {'enabled': self.enabled}
|
|
||||||
if self.config.getboolean("s3storage", "enabled"):
|
|
||||||
self.endpoint = self.config.get("s3storage", "endpoint")
|
|
||||||
self.accesskey = self.config.get("s3storage", "aws_access_key_id")
|
|
||||||
self.secretkey = self.config.get("s3storage", "aws_secret_access_key")
|
|
||||||
self.version = self.config.get("s3storage", "signature_version")
|
|
||||||
self.region = self.config.get("s3storage", "region")
|
|
||||||
self.bucket = self.config.get("s3storage", "bucket")
|
|
||||||
self.enabled = True
|
|
||||||
self.options = {'enabled': self.enabled}
|
|
||||||
self.s3client = None
|
|
||||||
self.s3session = None
|
|
||||||
gevent.spawn(self._start_connection, self.endpoint, self.accesskey, self.secretkey, self.version, self.region, self.bucket)
|
|
||||||
|
|
||||||
def _start_connection(self, endpoint, accesskey, secretkey, version, region, bucket):
|
|
||||||
self.s3session = botocore.session.get_session()
|
|
||||||
self.s3session.set_credentials(accesskey, secretkey)
|
|
||||||
self.s3client = self.s3session.create_client(
|
|
||||||
's3',
|
|
||||||
endpoint_url=self.endpoint,
|
|
||||||
region_name=self.region,
|
|
||||||
config=botocore.config.Config(signature_version=self.version)
|
|
||||||
)
|
|
||||||
self._initial_connection_happend = True
|
|
||||||
|
|
||||||
def insert(self, attack_event):
|
|
||||||
if self._initial_connection_happend:
|
|
||||||
if attack_event.file_name is not None:
|
|
||||||
with file(os.path.join(self.files_dir, attack_event.file_name), 'r') as file_handler:
|
|
||||||
try:
|
|
||||||
self.s3client.put_object(Bucket=self.bucket, Body=file_handler, Key=attack_event.sensorid+"/"+attack_event.file_name)
|
|
||||||
logger.debug('Sending file ({0}) using s3 bucket "{1}" on {2}'.format(attack_event.file_name, self.bucket, self.endpoint))
|
|
||||||
except ClientError as e:
|
|
||||||
logger.warning("Received error: %s", e.response['Error']['Message'])
|
|
||||||
else:
|
|
||||||
logger.warning('Not storing attack file because initial s3 connect has not succeeded')
|
|
|
@ -1,4 +1,4 @@
|
||||||
version: '2.2'
|
version: '2.3'
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
glastopf_local:
|
glastopf_local:
|
||||||
|
@ -20,5 +20,5 @@ services:
|
||||||
image: "dtagdevsec/glastopf:1804"
|
image: "dtagdevsec/glastopf:1804"
|
||||||
read_only: true
|
read_only: true
|
||||||
volumes:
|
volumes:
|
||||||
- /data/glastopf/db:/opt/glastopf/db
|
- /data/glastopf/db:/tmp/glastopf/db
|
||||||
- /data/glastopf/log:/opt/glastopf/log
|
- /data/glastopf/log:/tmp/glastopf/log
|
||||||
|
|
Loading…
Reference in a new issue