Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web Protector

Made with Python Badge

Web Protector — это проект для защиты сайта с помощью DDoS-защиты и WAF, который можно быстро развернуть через Docker. Приложение использует FastAPI, Redis для ограничения запросов, и Nginx как обратный прокси-сервер с поддержкой SSL.

Описание

Проект предоставляет базовую защиту от распространённых веб-угроз, включая DDoS-атаки и уязвимости веб-приложений (SQL-инъекции, XSS и другие). Включает следующие компоненты:

  • DDoS-защита: ограничивает количество запросов от одного IP за определённый период.
  • WAF (Web Application Firewall): фильтрует вредоносные запросы на основе регулярных выражений.
  • CORS и HTTPS: предоставляет защиту от CSRF и обеспечивает безопасное подключение.

Структура проекта

project-root/
├── config/
│   └── config.yaml               # Файл конфигурации с настройками пользователя
├── app/
│   ├── main.py                   # Основной файл приложения FastAPI
│   ├── middlewares.py            # Модуль для WAF и защиты от DDoS
│   ├── security.py               # Вспомогательные функции для безопасности
│   └── logger.py                 # Логирование заблокированных запросов
├── nginx/
│   └── nginx.conf                # Конфигурация Nginx для SSL и проксирования
├── Dockerfile                    # Dockerfile для сборки FastAPI приложения
├── docker-compose.yml            # Docker Compose для настройки контейнеров
├── requirements.txt              # Зависимости Python для FastAPI приложения
└── README.md                     # Документация по установке и настройке

Требования

  • Docker и Docker Compose

Установка и запуск

1. Клонируйте репозиторий

Сначала клонируйте репозиторий на свой сервер:

git clone <URL>
cd <project-name>

2. Настройте конфигурацию

Настройте параметры защиты в файле config/config.yaml:

  • rate_limit: Максимальное количество запросов от одного IP за указанный период (в секундах).
  • time_window: Период времени (в секундах) для ограничения запросов.
  • allowed_origins: Разрешённые домены для CORS.
  • log_file: Путь к файлу, где будут храниться логи заблокированных запросов.

Пример:

rate_limit: 100
time_window: 60
allowed_origins:
  - "https://example.com"
log_file: "/var/log/app/blocked_requests.log"

3. Добавьте SSL-сертификаты

  • Создайте папку ssl внутри nginx и добавьте свои файлы сертификатов example.com.crt и example.com.key для домена.
  • Обновите пути к сертификатам в файле nginx/nginx.conf:
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;

4. Запустите проект

Используйте Docker Compose для сборки и запуска контейнеров:

docker-compose up -d

5. Проверьте работу

После запуска приложения откройте браузер и перейдите по адресу https://example.com (замените example.com на ваш домен). Ваше приложение теперь защищено.

Компоненты защиты

  • DDoS-защита: Ограничивает количество запросов от одного IP за указанный период. Если лимит превышен, IP временно блокируется.
  • WAF: Фильтрует вредоносные запросы, включая SQL-инъекции, XSS и попытки командной инъекции.
  • CORS: Ограничивает доступ к API только с разрешённых доменов, чтобы защитить приложение от CSRF-атак.

Логирование

Все заблокированные запросы будут логироваться в файл, указанный в config/config.yaml. По умолчанию файл логов располагается по пути /var/log/app/blocked_requests.log.

Остановка

Для остановки проекта выполните:

docker-compose down

Дополнительные настройки

  • Параметры безопасности можно изменить в config/config.yaml.
  • Конфигурацию прокси и SSL можно настроить в файле nginx/nginx.conf.

Пример конфигурации config.yaml

rate_limit: 100                    # Лимит запросов от одного IP за указанный период
time_window: 60                    # Период в секундах для ограничения запросов
allowed_origins:                   # Разрешенные домены для CORS
  - "https://example.com"
log_file: "/var/log/app/blocked_requests.log"  # Путь к файлу логирования заблокированных запросов

Пример использования и тестирование

Для тестирования защиты можно воспользоваться инструментами типа curl или утилитами для нагрузочного тестирования, чтобы проверить, как приложение реагирует на запросы с превышением лимита или вредоносные данные.

# Пример вредоносного запроса
curl -X GET "https://example.com/?query=SELECT+*+FROM+users" -k
# Пример превышения лимита запросов
for i in {1..110}; do curl -X GET "https://example.com" -k; done

С помощью этих шагов и примеров пользователь может быстро развернуть защитное приложение для своего веб-сайта или API с минимальными настройками.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages