mirror of
https://github.com/Lanakod-Networks/snort-docker.git
synced 2025-07-04 13:26:38 +03:00
Initial commit
This commit is contained in:
commit
c3e12eb154
146
Dockerfile
Normal file
146
Dockerfile
Normal file
@ -0,0 +1,146 @@
|
||||
#
|
||||
# BUILD CONTAINER
|
||||
# (Note that this is a multi-phase Dockerfile)
|
||||
# To build run `docker build --rm -t tebedwel/snort3-alpine:latest`
|
||||
#
|
||||
FROM ubuntu:22.04 AS builder
|
||||
|
||||
ENV PREFIX_DIR=/usr/local
|
||||
ENV HOME=/root
|
||||
|
||||
# Update apt-get adding the @testing repo for hwloc (as of Alpine v3.7)
|
||||
# RUN apt-get add -X https://dl-cdn.alpinelinux.org/alpine/v3.16/main -u alpine-keys
|
||||
# RUN echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apt-get/repositories
|
||||
|
||||
# Prep apt-get for installing packages
|
||||
RUN apt-get update -y && apt-get upgrade -y
|
||||
|
||||
# BUILD DEPENDENCIES:
|
||||
RUN apt-get install -y \
|
||||
wget \
|
||||
git \
|
||||
cmake \
|
||||
make \
|
||||
g++ \
|
||||
bison \
|
||||
flex \
|
||||
cppcheck \
|
||||
cpputest \
|
||||
autoconf \
|
||||
automake \
|
||||
libtool \
|
||||
# Libraries
|
||||
libdumbnet-dev \
|
||||
libdnet-dev \
|
||||
libpcap-dev \
|
||||
libtirpc-dev \
|
||||
libmnl-dev \
|
||||
libunwind-dev \
|
||||
# Install the Snort developer requirements
|
||||
curl \
|
||||
gdb \
|
||||
vim \
|
||||
build-essential \
|
||||
libpcre3-dev \
|
||||
libnet1-dev \
|
||||
zlib1g-dev \
|
||||
luajit \
|
||||
hwloc \
|
||||
liblzma-dev \
|
||||
openssl \
|
||||
libssl-dev \
|
||||
pkg-config \
|
||||
libhwloc-dev \
|
||||
libsqlite3-dev \
|
||||
uuid-dev \
|
||||
libcmocka-dev \
|
||||
libnetfilter-queue-dev \
|
||||
autotools-dev \
|
||||
libluajit-5.1-dev \
|
||||
libfl-dev
|
||||
|
||||
# One of the quirks of alpine is that unistd.h is in /usr/include. Lots of
|
||||
# software looks for it in /usr/include/linux or /usr/include/sys.
|
||||
# So, we'll make symlinks
|
||||
# RUN mkdir /usr/include/linux && \
|
||||
# ln -s /usr/include/unistd.h /usr/include/linux/unistd.h && \
|
||||
# ln -s /usr/include/unistd.h /usr/include/sys/unistd.h
|
||||
|
||||
# The Alpine hwloc on testing is not reliable from a build perspective.
|
||||
# So, lets just build it ourselves.
|
||||
#
|
||||
#WORKDIR $HOME
|
||||
#RUN wget https://download.open-mpi.org/release/hwloc/v2.0/hwloc-2.0.3.tar.gz &&\
|
||||
# tar zxvf hwloc-2.0.3.tar.gz
|
||||
#WORKDIR $HOME/hwloc-2.0.3
|
||||
#RUN ./configure --prefix=${PREFIX_DIR} && \
|
||||
# make && \
|
||||
# make install
|
||||
|
||||
# BUILD Daq on alpine:
|
||||
|
||||
WORKDIR $HOME
|
||||
RUN git clone https://github.com/snort3/libdaq.git
|
||||
WORKDIR $HOME/libdaq
|
||||
RUN ./bootstrap && \
|
||||
./configure --prefix=${PREFIX_DIR} && make && \
|
||||
make install
|
||||
|
||||
# BUILD gperftools
|
||||
|
||||
WORKDIR $HOME
|
||||
RUN wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz &&\
|
||||
tar xzf gperftools-2.9.1.tar.gz
|
||||
|
||||
WORKDIR $HOME/gperftools-2.9.1
|
||||
RUN ./configure && make && make install
|
||||
|
||||
|
||||
# BUILD Snort on alpine
|
||||
WORKDIR $HOME
|
||||
# RUN git clone https://github.com/snort3/snort3.git
|
||||
RUN wget https://github.com/snort3/snort3/archive/refs/tags/3.3.2.0.tar.gz &&\
|
||||
tar xzf 3.3.2.0.tar.gz
|
||||
|
||||
WORKDIR $HOME/snort3-3.3.2.0
|
||||
RUN ./configure_cmake.sh \
|
||||
--prefix=${PREFIX_DIR} \
|
||||
--enable-tcmalloc \
|
||||
--disable-docs
|
||||
|
||||
WORKDIR $HOME/snort3-3.3.2.0/build
|
||||
RUN make && make install
|
||||
RUN ln -s /usr/local/lib/libtcmalloc.so.4 /lib/ && \
|
||||
ln -s /usr/local/lib/libdaq.so.3 /lib/ && \
|
||||
ldconfig
|
||||
|
||||
|
||||
#
|
||||
# RUNTIME CONTAINER
|
||||
#
|
||||
#FROM ubuntu:22.04
|
||||
|
||||
#ENV PREFIX_DIR=/usr/local
|
||||
#WORKDIR ${PREFIX_DIR}
|
||||
|
||||
# Prep apt-get for installing packages
|
||||
#RUN apt-get update -y
|
||||
#RUN apt-get upgrade -y
|
||||
|
||||
# RUNTIME DEPENDENCIES:
|
||||
#RUN apt-get install \
|
||||
# libdnet \
|
||||
# luajit \
|
||||
# musl \
|
||||
# libstdc++
|
||||
|
||||
# Copy the build artifacts from the build container to the runtime file system
|
||||
#COPY --from=builder ${PREFIX_DIR}/etc/ /etc/
|
||||
#COPY --from=builder ${PREFIX_DIR}/lib/ /lib/
|
||||
#COPY --from=builder ${PREFIX_DIR}/lib64/ ${PREFIX_DIR}/lib64/
|
||||
#COPY --from=builder ${PREFIX_DIR}/bin/ /bin/
|
||||
|
||||
WORKDIR /
|
||||
RUN snort --version
|
||||
|
||||
ENTRYPOINT ["tail", "-f", "/dev/null"]
|
11
docker-compose.yml
Normal file
11
docker-compose.yml
Normal file
@ -0,0 +1,11 @@
|
||||
name: snort
|
||||
services:
|
||||
snort:
|
||||
restart: always
|
||||
build:
|
||||
dockerfile: Dockerfile
|
||||
context: ./
|
||||
volumes:
|
||||
- snort:/usr/local/etc/snort
|
||||
volumes:
|
||||
snort:
|
Loading…
Reference in New Issue
Block a user