#!/bin/bash # ks-on.sh — включить/восстановить kill switch UFW # Перед этим подключи Amnezia через её GUI, иначе интернет будет полностью заблокирован. if [ "$(id -u)" != "0" ]; then echo "Запускай от root: sudo bash $0" exit 1 fi echo "Проверяем что Amnezia поднята..." if ! ip link show amn0 &>/dev/null && ! ip link show amnezia0 &>/dev/null; then echo "" echo "ВНИМАНИЕ: интерфейс amn0/amnezia0 не найден!" echo "Похоже Amnezia не подключена." echo "Если включить UFW сейчас — интернет полностью заблокируется." echo "" read -p "Всё равно включить kill switch? [y/N] " CONFIRM if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then echo "Отменено." exit 0 fi fi # Отключаем IPv6 (утечка мимо UFW kill switch, UFW работает только с IPv4) ipv6_cnt=$(ip -6 addr show scope global 2>/dev/null | grep -c 'inet6' || true) if [ "$ipv6_cnt" -gt 0 ]; then sysctl -w net.ipv6.conf.all.disable_ipv6=1 >/dev/null sysctl -w net.ipv6.conf.default.disable_ipv6=1 >/dev/null cat > /etc/sysctl.d/99-disable-ipv6.conf << 'SYSCTEOF' # Отключение IPv6 — требуется для защиты kill switch (UFW работает только с IPv4) net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1 SYSCTEOF systemctl restart systemd-resolved 2>/dev/null || true echo "IPv6 отключён ($ipv6_cnt адресов)." fi echo "Включаем UFW kill switch..." ufw default deny outgoing >/dev/null 2>&1 || true ufw allow out on amn0 >/dev/null 2>&1 || true ufw enable echo "" echo "Готово. Kill switch активен." echo "" ufw status | head -3 _log_file="${USER_HOME:-$HOME}/.config/ai-setup/setup.log" printf '%s [ks-on] Kill switch включён на %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$(hostname)" >> "$_log_file" 2>/dev/null || true