Правки различные
This commit is contained in:
@@ -2,43 +2,70 @@
|
||||
set -Eeuo pipefail
|
||||
|
||||
PRIVATE_IP="${PRIVATE_IP:-192.168.0.5}"
|
||||
ADMIN_CIDR="${ADMIN_CIDR:-192.168.0.0/24}"
|
||||
OTLP_SOURCE="${OTLP_SOURCE:-}"
|
||||
PRIVATE_CIDR="${PRIVATE_CIDR:-192.168.0.0/24}"
|
||||
|
||||
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
|
||||
[[ "$PRIVATE_CIDR" =~ ^[0-9.]+/[0-9]+$ ]] || {
|
||||
echo "Некорректный PRIVATE_CIDR: ${PRIVATE_CIDR}" >&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-сессию через приватную сеть."
|
||||
cat <<EOF
|
||||
Будут применены правила UFW:
|
||||
|
||||
входящий по умолчанию: deny
|
||||
исходящий по умолчанию: allow
|
||||
TCP 22 с любого источника (ограничение IP — в SG провайдера)
|
||||
TCP 4317/4318 только из ${PRIVATE_CIDR} на ${PRIVATE_IP} (ВМ1 и ВМ2)
|
||||
TCP 8080 не открывается: UI только через SSH-туннель на 127.0.0.1:8080
|
||||
|
||||
Пример туннеля с рабочей станции:
|
||||
|
||||
ssh -i ~/.ssh/hansel -L 8080:127.0.0.1:8080 root@<IP_ВМ3> -N
|
||||
|
||||
До продолжения откройте вторую SSH-сессию, чтобы не потерять доступ.
|
||||
EOF
|
||||
read -r -p "Введите APPLY для применения правил: " answer
|
||||
[[ "$answer" == APPLY ]] || { echo "Отменено."; exit 1; }
|
||||
|
||||
apt-get update
|
||||
apt-get install -y ufw
|
||||
if ! command -v ufw >/dev/null; then
|
||||
apt-get update
|
||||
apt-get install -y ufw
|
||||
fi
|
||||
|
||||
ufw --force reset
|
||||
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"
|
||||
|
||||
# Источник SSH на хосте не фильтруем: allow-list делает файрвол приватной
|
||||
# сети / SG провайдера. Проброс UI идёт внутри этой сессии и не требует 8080.
|
||||
ufw allow 22/tcp comment "SSH (source limited by provider SG)"
|
||||
|
||||
ufw allow from "$PRIVATE_CIDR" to "$PRIVATE_IP" port 4317 proto tcp \
|
||||
comment "HAN OTLP gRPC from private net"
|
||||
ufw allow from "$PRIVATE_CIDR" to "$PRIVATE_IP" port 4318 proto tcp \
|
||||
comment "HAN OTLP HTTP from private net"
|
||||
|
||||
ufw --force enable
|
||||
ufw status verbose
|
||||
|
||||
cat <<'EOF'
|
||||
cat <<EOF
|
||||
|
||||
Важно: Docker-публикации могут обходить цепочку UFW INPUT. Основная фильтрация
|
||||
источника OTLP должна оставаться в облачной группе безопасности. casting.yaml
|
||||
дополнительно привязывает OTLP только к приватному IP, а UI — к loopback.
|
||||
UI не публикуется. Туннель:
|
||||
|
||||
ssh -i ~/.ssh/hansel -L 8080:127.0.0.1:8080 root@<IP_ВМ3> -N
|
||||
|
||||
затем http://127.0.0.1:8080 на рабочей станции.
|
||||
|
||||
Docker-публикации могут обходить UFW INPUT. Если 4317 доступен вне
|
||||
${PRIVATE_CIDR}, ограничьте источник в SG провайдера. casting.yaml биндит
|
||||
OTLP на ${PRIVATE_IP}, UI — на loopback.
|
||||
EOF
|
||||
|
||||
Reference in New Issue
Block a user