diff --git a/Dockerfile b/Dockerfile
index 0601f74..9de9cc5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,7 +4,11 @@ ARG NET_NAME=kek
ARG CONTAINER_NAME=lol
ARG STATIC_FILE=/usr/share/nginx/html/index.html
+COPY ./scripts/knocking_setup.sh /root/scripts/knocking_setup.sh
RUN sed -i '13,21d' $STATIC_FILE && \
- sed -i "13i
$NET_NAME
$CONTAINER_NAME
" $STATIC_FILE
+ sed -i "13i \
+ | NETWORK | CONTAINER |
\
+ | $NET_NAME | $CONTAINER_NAME |
\
+
" $STATIC_FILE
diff --git a/docker-compose.yml b/docker-compose.yml
index 8c50630..b2379ac 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,17 +3,25 @@ version: "3"
services:
# ----------------------------------------------
ngx1-net1:
+ container_name: ngx1_net1
build:
context: .
args:
NET_NAME: net_1
CONTAINER_NAME: container_1
ports:
- - "8080:80"
+ - "8081:80"
+ command: >
+ bash -c "apt update
+ && apt install knockd iptables iproute2 vim curl -y
+ && /root/scripts/knocking_setup.sh && nginx && knockd -d && sleep infinity"
networks:
- net_1
- net_3
+ cap_add:
+ - NET_ADMIN
ngx2-net1:
+ container_name: ngx2_net1
build:
context: .
args:
@@ -23,31 +31,40 @@ services:
- net_1
# ----------------------------------------------
ngx1-net2:
+ container_name: ngx1_net2
build:
context: .
args:
NET_NAME: net_2
CONTAINER_NAME: container_1
ports:
- - "8081:80"
+ - "8082:80"
+ command: >
+ bash -c "apt update
+ && apt install knockd iptables iproute2 vim curl -y
+ && /root/scripts/knocking_setup.sh && nginx && knockd -d && sleep infinity"
networks:
- net_2
- net_3
+ cap_add:
+ - NET_ADMIN
ngx2-net2:
+ container_name: ngx2_net2
build:
context: .
args:
NET_NAME: net_2
CONTAINER_NAME: container_2
+ restart: on-failure
networks:
- net_2
# ----------------------------------------------
visor:
+ container_name: visor
image: ubuntu:latest
- restart: on-failure
command: >
bash -c "apt update
- && apt install iproute2 vim curl nmap -y
+ && apt install iproute2 vim curl nmap knockd -y
&& sleep infinity"
networks:
- net_3
@@ -56,3 +73,9 @@ networks:
net_1:
net_2:
net_3:
+ driver: bridge
+ ipam:
+ driver: default
+ config:
+ - subnet: "172.28.0.0/16"
+ gateway: "172.28.0.1"
diff --git a/scripts/knocking_setup.sh b/scripts/knocking_setup.sh
new file mode 100755
index 0000000..ef37499
--- /dev/null
+++ b/scripts/knocking_setup.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+
+echo -E "
+[options]
+Interface = eth1
+
+[openNGINX]
+sequence = 8100, 7200, 13000
+seq_timeout = 5
+command = /sbin/iptables -D INPUT -p tcp --dport 80 -j REJECT
+tcpflags = syn
+
+[closeNGINX]
+sequence = 6300, 5200, 12001
+seq_timeout = 5
+command = /sbin/iptables -A INPUT -p tcp --dport 80 -j REJECT
+tcpflags = syn
+" > /etc/knockd.conf
+
+/sbin/iptables -A INPUT -p tcp --dport 80 -j REJECT