45 lines
1.8 KiB
Bash
45 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
PRIVATE_IP="${PRIVATE_IP:-192.168.0.5}"
|
|
ADMIN_CIDR="${ADMIN_CIDR:-192.168.0.0/24}"
|
|
OTLP_SOURCE="${OTLP_SOURCE:-}"
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "Запустите через sudo." >&2
|
|
exit 1
|
|
fi
|
|
if [[ -z "$OTLP_SOURCE" ]]; then
|
|
echo "Укажите приватный IP backend, например:" >&2
|
|
echo " sudo OTLP_SOURCE=192.168.0.1 $0" >&2
|
|
exit 1
|
|
fi
|
|
ip -4 addr show | grep -Fq "inet ${PRIVATE_IP}/" || {
|
|
echo "Приватный адрес ${PRIVATE_IP} не найден." >&2
|
|
exit 1
|
|
}
|
|
|
|
echo "SSH будет разрешён только из ${ADMIN_CIDR}."
|
|
echo "OTLP будет разрешён только от ${OTLP_SOURCE}."
|
|
echo "До продолжения проверьте отдельную SSH-сессию через приватную сеть."
|
|
read -r -p "Введите APPLY для применения правил: " answer
|
|
[[ "$answer" == APPLY ]] || { echo "Отменено."; exit 1; }
|
|
|
|
apt-get update
|
|
apt-get install -y ufw
|
|
ufw default deny incoming
|
|
ufw default allow outgoing
|
|
ufw logging medium
|
|
ufw allow from "$ADMIN_CIDR" to "$PRIVATE_IP" port 22 proto tcp comment "SigNoz admin SSH"
|
|
ufw allow from "$OTLP_SOURCE" to "$PRIVATE_IP" port 4317 proto tcp comment "HAN OTLP gRPC"
|
|
ufw allow from "$OTLP_SOURCE" to "$PRIVATE_IP" port 4318 proto tcp comment "HAN OTLP HTTP"
|
|
ufw --force enable
|
|
ufw status verbose
|
|
|
|
cat <<'EOF'
|
|
|
|
Важно: Docker-публикации могут обходить цепочку UFW INPUT. Основная фильтрация
|
|
источника OTLP должна оставаться в облачной группе безопасности. casting.yaml
|
|
дополнительно привязывает OTLP только к приватному IP, а UI — к loopback.
|
|
EOF
|