- Replace hardcoded ALL_SERVICE_NAMES=[5 services] in cli.py with
_all_service_names() pulling dynamically from the plugin registry;
randomize-services now draws from all 25 registered honeypots
- Add build_base field to DistroProfile: apt-compatible image for service
Dockerfiles (ubuntu22/ubuntu20/kali get their own; others fall back to
debian:bookworm-slim since Dockerfiles use apt-get)
- Add build_base to DeckyConfig; propagate from distro in _build_deckies
and _build_deckies_from_ini
- Inject BASE_IMAGE build arg in composer.py for every build-based service
so each decky's containers reflect its assigned distro
- Update all 21 service Dockerfiles: FROM debian:bookworm-slim →
ARG BASE_IMAGE=debian:bookworm-slim / FROM ${BASE_IMAGE}
- Add tests/test_cli_service_pool.py and tests/test_composer.py (306 total)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.0 KiB
Docker
34 lines
1.0 KiB
Docker
ARG BASE_IMAGE=debian:bookworm-slim
|
|
FROM ${BASE_IMAGE}
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
python3 python3-pip python3-venv \
|
|
libssl-dev libffi-dev \
|
|
git authbind \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN useradd -m -s /bin/bash cowrie
|
|
|
|
WORKDIR /home/cowrie
|
|
RUN python3 -m venv cowrie-env \
|
|
&& cowrie-env/bin/pip install --no-cache-dir cowrie jinja2
|
|
|
|
# Authbind to bind port 22 as non-root
|
|
RUN touch /etc/authbind/byport/22 /etc/authbind/byport/2222 \
|
|
&& chmod 500 /etc/authbind/byport/22 /etc/authbind/byport/2222 \
|
|
&& chown cowrie /etc/authbind/byport/22 /etc/authbind/byport/2222
|
|
|
|
RUN mkdir -p /home/cowrie/cowrie-env/etc \
|
|
/home/cowrie/cowrie-env/var/log/cowrie \
|
|
/home/cowrie/cowrie-env/var/run \
|
|
&& chown -R cowrie /home/cowrie/cowrie-env/etc \
|
|
/home/cowrie/cowrie-env/var
|
|
|
|
COPY cowrie.cfg.j2 /home/cowrie/cowrie.cfg.j2
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
USER cowrie
|
|
EXPOSE 22 2222
|
|
ENTRYPOINT ["/entrypoint.sh"]
|