unified: Phantom Protocol 2025 complete archive integration
This commit is contained in:
172
release/Dockerfile.exit-node
Normal file
172
release/Dockerfile.exit-node
Normal file
@@ -0,0 +1,172 @@
|
||||
# Phantom Exit Node - Специализированный контейнер для доступа к интернету
|
||||
FROM ubuntu:22.04
|
||||
|
||||
LABEL maintainer="Phantom Protocol Team 2025"
|
||||
LABEL description="Phantom Exit Node - Шлюз для доступа к обычному интернету"
|
||||
LABEL version="2.0.0"
|
||||
|
||||
# Установка зависимостей
|
||||
RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
libprotobuf-c-dev \
|
||||
protobuf-c-compiler \
|
||||
squid \
|
||||
privoxy \
|
||||
tor \
|
||||
iproute2 \
|
||||
iptables \
|
||||
net-tools \
|
||||
dnsutils \
|
||||
curl \
|
||||
wget \
|
||||
vim \
|
||||
htop \
|
||||
tcpdump \
|
||||
nmap \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Создание пользователя phantom
|
||||
RUN useradd -r -s /bin/false -d /var/lib/phantom phantom && \
|
||||
mkdir -p /var/lib/phantom /var/log/phantom /etc/phantom && \
|
||||
chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom
|
||||
|
||||
# Копирование исходного кода
|
||||
COPY src/ /usr/src/phantom/
|
||||
COPY protos/ /usr/src/phantom/protos/
|
||||
|
||||
# Компиляция Phantom Exit Node
|
||||
WORKDIR /usr/src/phantom
|
||||
RUN make clean && \
|
||||
make phantom-exit-node && \
|
||||
cp phantom-exit-node /usr/local/bin/ && \
|
||||
chmod +x /usr/local/bin/phantom-exit-node
|
||||
|
||||
# Копирование конфигурационных файлов
|
||||
COPY docker/configs/exit-node/ /etc/phantom/
|
||||
COPY docker/scripts/exit-node/ /usr/local/bin/
|
||||
|
||||
# Настройка Squid для HTTP прокси
|
||||
COPY docker/squid/exit-node.conf /etc/squid/squid.conf
|
||||
|
||||
# Настройка Privoxy для дополнительной фильтрации
|
||||
COPY docker/privoxy/exit-node.conf /etc/privoxy/config
|
||||
|
||||
# Создание директорий для данных
|
||||
RUN mkdir -p /var/lib/phantom/exit-node/policies \
|
||||
/var/lib/phantom/exit-node/logs \
|
||||
/var/lib/phantom/exit-node/cache \
|
||||
/var/lib/phantom/exit-node/stats \
|
||||
/var/log/phantom/exit-node
|
||||
|
||||
# Создание файлов политик по умолчанию
|
||||
RUN cat > /var/lib/phantom/exit-node/policies/default.policy << 'EOF'
|
||||
# Phantom Exit Node Default Policy
|
||||
# Разрешить HTTP и HTTPS
|
||||
allow tcp 0.0.0.0/0:80
|
||||
allow tcp 0.0.0.0/0:443
|
||||
allow tcp 0.0.0.0/0:8080
|
||||
allow tcp 0.0.0.0/0:8443
|
||||
|
||||
# Разрешить DNS
|
||||
allow udp 0.0.0.0/0:53
|
||||
|
||||
# Разрешить популярные сервисы
|
||||
allow tcp 0.0.0.0/0:22 # SSH
|
||||
allow tcp 0.0.0.0/0:25 # SMTP
|
||||
allow tcp 0.0.0.0/0:110 # POP3
|
||||
allow tcp 0.0.0.0/0:143 # IMAP
|
||||
allow tcp 0.0.0.0/0:993 # IMAPS
|
||||
allow tcp 0.0.0.0/0:995 # POP3S
|
||||
|
||||
# Запретить опасные порты
|
||||
reject tcp 0.0.0.0/0:1-1023
|
||||
reject tcp 0.0.0.0/0:6660-6669 # IRC
|
||||
reject tcp 0.0.0.0/0:6697 # IRC SSL
|
||||
|
||||
# Запретить локальные сети
|
||||
reject tcp 10.0.0.0/8:*
|
||||
reject tcp 172.16.0.0/12:*
|
||||
reject tcp 192.168.0.0/16:*
|
||||
reject tcp 127.0.0.0/8:*
|
||||
EOF
|
||||
|
||||
# Создание списка заблокированных доменов
|
||||
RUN cat > /var/lib/phantom/exit-node/policies/blocked-domains.txt << 'EOF'
|
||||
# Заблокированные домены (примеры)
|
||||
malware.example.com
|
||||
phishing.example.com
|
||||
spam.example.com
|
||||
EOF
|
||||
|
||||
# Настройка прав доступа
|
||||
RUN chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom && \
|
||||
chmod +x /usr/local/bin/phantom-exit-start.sh && \
|
||||
chmod +x /usr/local/bin/phantom-exit-healthcheck.sh && \
|
||||
chmod +x /usr/local/bin/phantom-exit-policy-update.sh
|
||||
|
||||
# Открытие портов
|
||||
EXPOSE 1080/tcp # SOCKS5 прокси
|
||||
EXPOSE 3128/tcp # HTTP прокси
|
||||
EXPOSE 8118/tcp # Privoxy
|
||||
EXPOSE 5353/udp # DNS resolver
|
||||
EXPOSE 8081/tcp # Управление
|
||||
EXPOSE 9081/tcp # Мониторинг
|
||||
|
||||
# Переменные окружения
|
||||
ENV PHANTOM_EXIT_NAME=phantom-exit
|
||||
ENV PHANTOM_EXIT_CONTACT=admin@phantom.local
|
||||
ENV PHANTOM_EXIT_BANDWIDTH_LIMIT=10485760 # 10 MB/s
|
||||
ENV PHANTOM_EXIT_MAX_CONNECTIONS=1000
|
||||
ENV PHANTOM_EXIT_LOG_LEVEL=INFO
|
||||
ENV PHANTOM_EXIT_ENABLE_SOCKS5=true
|
||||
ENV PHANTOM_EXIT_ENABLE_HTTP=true
|
||||
ENV PHANTOM_EXIT_ENABLE_DNS=true
|
||||
ENV PHANTOM_KADEMLIA_PORT=6881
|
||||
|
||||
# Health check
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
||||
CMD /usr/local/bin/phantom-exit-healthcheck.sh
|
||||
|
||||
# Создание скрипта запуска
|
||||
RUN cat > /usr/local/bin/start-exit-node.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Запуск Phantom Exit Node..."
|
||||
|
||||
# Настройка iptables для безопасности
|
||||
iptables -A OUTPUT -d 10.0.0.0/8 -j REJECT
|
||||
iptables -A OUTPUT -d 172.16.0.0/12 -j REJECT
|
||||
iptables -A OUTPUT -d 192.168.0.0/16 -j REJECT
|
||||
iptables -A OUTPUT -d 127.0.0.0/8 -j REJECT
|
||||
|
||||
# Запуск Squid (HTTP прокси)
|
||||
if [ "$PHANTOM_EXIT_ENABLE_HTTP" = "true" ]; then
|
||||
echo "Запуск HTTP прокси (Squid)..."
|
||||
squid -N &
|
||||
fi
|
||||
|
||||
# Запуск Privoxy (фильтрация)
|
||||
if [ "$PHANTOM_EXIT_ENABLE_FILTERING" = "true" ]; then
|
||||
echo "Запуск фильтра контента (Privoxy)..."
|
||||
privoxy --no-daemon /etc/privoxy/config &
|
||||
fi
|
||||
|
||||
# Запуск Phantom Exit Node
|
||||
exec /usr/local/bin/phantom-exit-start.sh "$@"
|
||||
EOF
|
||||
|
||||
RUN chmod +x /usr/local/bin/start-exit-node.sh
|
||||
|
||||
# Переключение на пользователя phantom
|
||||
USER phantom
|
||||
|
||||
# Рабочая директория
|
||||
WORKDIR /var/lib/phantom
|
||||
|
||||
# Точка входа
|
||||
ENTRYPOINT ["/usr/local/bin/start-exit-node.sh"]
|
||||
CMD ["--config", "/etc/phantom/exit-node.conf"]
|
||||
|
||||
Reference in New Issue
Block a user