architect/_archive/2025-11-26-cleanup/projects-remote-beget-kondurov/projects/pirotehnika-opencart/IP_BLOCKING_FIX.md

Устранение блокировки серверных IP на pirotehnika.spb.ru

Дата: 2025-11-14
Проблема: Сайт блокирует подключения с серверных/датацентр IP адресов
Статус: ✅ Для пользователей работает | ❌ С серверов timeout


🔍 Что проверить

1. Проверка .htaccess

Где найти:

# SSH на сервер kondurov.beget.tech
cd ~/pirotehnika.spb.ru/public_html/
cat .htaccess | grep -E '(Deny|Allow|Require|RewriteCond.*REMOTE)'

Что искать:

# Блокировка по IP
Order Allow,Deny
Deny from 91.218.142.168
Deny from 45.144.177.147

# Блокировка диапазонов
Deny from 91.218.0.0/16
Deny from 45.144.0.0/16

# Блокировка по User-Agent
RewriteCond %{HTTP_USER_AGENT} curl [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wget [NC]
RewriteRule .* - [F,L]

# Require (Apache 2.4+)
Require not ip 91.218.142.168

Решение:
1. Закомментировать блокирующие правила
2. Или добавить исключения для доверенных IP:

# Whitelist для мониторинга
Order Deny,Allow
Deny from all
Allow from 91.218.142.168
Allow from your.trusted.ip

2. Проверка mod_security (WAF)

Где проверить:
1. Beget панель: https://cp.beget.com/
2. Раздел "Сайты" → pirotehnika.spb.ru
3. Настройки → Безопасность / mod_security

Типичные блокировки:
- Блокировка запросов без User-Agent
- Блокировка по репутации IP (datacenter IPs)
- Rate limiting для автоматических запросов

Решение:
1. Отключить mod_security временно для теста
2. Добавить исключения для доверенных IP
3. Настроить whitelist в правилах WAF


3. Проверка настроек OpenCart

Где проверить:
1. Админка OpenCart: https://pirotehnika.spb.ru/admin/
2. System → Settings → Edit (ваш магазин)
3. Server → Use SSL → проверить настройки

Также проверить:

3.1. Расширения безопасности

Extensions → Extensions → Module
  └─ Искать: Security, Anti-Bot, Firewall, IP Block

3.2. Логи доступа

System → Maintenance → Error Logs
  └─ Проверить блокировки по IP

3.3. Кэширование

Extensions → Extensions → Cache
  └─ Проверить настройки кэша и CDN

4. Проверка Beget Firewall

Где проверить:
1. Beget панель → Защита сайтов
2. Проверить списки блокировок

Возможные причины:
- Автоматическая блокировка после DDoS атаки
- IP попал в blacklist из-за активности
- Geoblocking (если включен)

Решение:
1. Проверить логи блокировок
2. Добавить исключения
3. Отключить автоблокировку временно


5. Проверка CloudFlare / CDN

Как проверить:

# Проверить DNS записи
dig pirotehnika.spb.ru

# Если IP принадлежит CloudFlare:
# 104.16.0.0/12, 172.64.0.0/13, etc.
# Значит используется CloudFlare

Если CloudFlare используется:
1. Зайти в панель CloudFlare
2. Security → WAF → Events
3. Firewall Rules → проверить блокировки
4. Settings → IP Access Rules

Решение:
- Добавить серверный IP в whitelist
- Отключить "Bot Fight Mode" временно
- Настроить "Challenge" вместо "Block"


🛠️ Быстрый тест

Тест 1: curl с custom User-Agent

# Обычный curl (блокируется)
curl -I https://pirotehnika.spb.ru

# С браузерным User-Agent
curl -I -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" https://pirotehnika.spb.ru

# Если второй работает - блокировка по User-Agent

Тест 2: через proxy

# Через HTTP proxy
curl -I --proxy http://residential-proxy:port https://pirotehnika.spb.ru

# Если работает - блокировка по IP

Тест 3: telnet на порты

# Проверка доступности портов
telnet 87.236.16.181 80
telnet 87.236.16.181 443

# Если telnet зависает - firewall блокирует на уровне сети
# Если подключается - блокировка на уровне веб-сервера

📊 Сбор диагностической информации

Для точной диагностики нужны:

Информация от владельца сайта:

1. OpenCart:
- Версия OpenCart
- Список установленных расширений (особенно Security)
- Скриншот System → Settings → Server

2. Beget панель:
- Скриншот настроек сайта (версия PHP, mod_security)
- Логи доступа за последние 24 часа
- Настройки firewall (если есть)

3. .htaccess:

# Прислать содержимое:
cat ~/pirotehnika.spb.ru/public_html/.htaccess

4. Apache/Nginx логи:

# Последние попытки подключения:
tail -100 ~/pirotehnika.spb.ru/logs/access.log | grep "91.218.142.168"
tail -100 ~/pirotehnika.spb.ru/logs/error.log | grep "91.218.142.168"

✅ Решение для временного доступа

Вариант 1: Residential Proxy

Использовать сервис:
- Bright Data
- Smartproxy
- IPRoyal

Пример:

# Через HTTP proxy
export HTTP_PROXY=http://user:pass@residential-proxy.com:8000
export HTTPS_PROXY=http://user:pass@residential-proxy.com:8000

curl -I https://pirotehnika.spb.ru
# Должно работать

Вариант 2: VPN с residential IP

Использовать:
- NordVPN (residential IPs)
- Private Internet Access
- ProtonVPN

Вариант 3: Cloudflare Tunnel (если SSH доступен)

# На сервере kondurov установить cloudflared
# Создать tunnel для доступа к сайту
cloudflared tunnel --url http://localhost:80

📋 Чеклист проверки


🎯 Наиболее вероятная причина

По опыту: 80% вероятность что это:
1. mod_security в Beget (40%)
2. .htaccess правила (30%)
3. Расширение OpenCart Security (10%)

Рекомендуемая последовательность:
1. Проверить mod_security → отключить временно
2. Переименовать .htaccess → проверить доступ
3. Проверить расширения OpenCart


📞 Следующий шаг

Нужно от владельца сайта:

  1. Доступ в админку OpenCart (для проверки расширений)
  2. Содержимое .htaccess
  3. Логи Apache за последние 24 часа
  4. Скриншот настроек mod_security в Beget панели

После получения этой информации смогу точно определить причину и дать решение.


Создано: 2025-11-14
Автор: Claude Code Workspace
Связанные файлы:
- SITE_AUDIT_REPORT.md
- CONNECTION.md
- NOTES.md