Настройка безопасности VDS сервера для парсинга и защиты от брутфорса

Безопасность VDS: как закрыться от сканеров, брутфорса и логов антифрода

Мы проделали огромную работу: настроили на VDS незаметный парсинг, подняли собственную прокси-ферму и даже научили сервер бесплатно анализировать данные через локальный ИИ. Но у этой медали есть обратная сторона. Когда вы активно и в промышленных масштабах собираете данные с маркетплейсов, ваш IP-адрес неизбежно «светится» в их логах.

Современные защитные WAF-системы (вроде Cloudflare, DDoS-Guard или Яндекса) умеют вычислять подозрительную активность. Поняв, что с вашего сервера идёт автоматический скрейпинг, они могут отправить ответные бот-запросы для сканирования ваших сетевых портов. Кроме того, в сети круглосуточно работают тысячи хакерских ботов, которые ищут открытые серверы и пытаются подобрать к ним пароли (брутфорс).

Если не защитить свой сервер вовремя, вы рискуете потерять и базу данных, и саму прокси-ферму. Давайте наглухо забаррикадируем наш VDS от любых внешних угроз.

1. Скрываем SSH-порт от хакерских сканеров

По умолчанию для управления Linux-сервером используется порт 22. Именно на него приходится 99% всех автоматических атак методом перебора паролей. Первое, что мы сделаем — сменим этот порт на случайный пятизначный номер (например, 22055). Хакерские боты просто пройдут мимо вашего сервера, посчитав его закрытым.

Откройте конфигурационный файл службы SSH:

sudo nano /etc/ssh/sshd_config

Найдите строку #Port 22, раскомментируйте её (уберите знак #) и замените число на своё:

Port 22055

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

Важно: Не перезапускайте службу SSH прямо сейчас! Сначала нужно разрешить этот новый порт в брандмауэре, иначе сервер заблокирует вас самих при следующей попытке входа.

2. Настраиваем встроенный брандмауэр UFW

По умолчанию в Ubuntu все порты открыты «наружу». Мы включим встроенный сетевой экран UFW (Uncomplicated Firewall), который закроет все лазейки в системе, оставив доступными только те порты, которые нужны для работы наших прокси и управления сервером. При включении брандмауэра на слабом сервере есть скрытая опасность: если маркетплейс начнет в ответ бомбардировать ваш IP тысячами запросов, слабый процессор VDS просто зависнет, обрабатывая эти правила фильтрации. Именно поэтому для парсинг-ноды важна аппаратная защита на уровне самого дата-центра. Например, на хостинге Aéza (по ссылке) во все тарифы VDS по умолчанию включена бесплатная и очень мощная геораспределенная DDoS-защита. Она перехватывает любые вредоносные сетевые штормы еще на подлете к серверу, вообще не нагружая процессор вашей машины

Разрешим вход по нашему новому SSH-порту и рабочему порту нашей прокси-фермы 3proxy (например, 3128):

sudo ufw allow 22055/tcp
sudo ufw allow 3128/tcp

Теперь активируем брандмауэр. Система выдаст предупреждение, что текущая сессия SSH может оборваться — соглашаемся, введя y:

sudo ufw enable

Проверить статус и список разрешенных портов можно командой sudo ufw status. Теперь ваш VDS стал невидимым для случайных сканеров сети.

3. Защита от брутфорса: настраиваем Fail2ban

Если защитные системы маркетплейсов или хакеры всё же вычислят ваши изменённые порты и попытаются подобрать к ним пароли, их нужно жестко блокировать на системном уровне. Для этого установим утилиту Fail2ban. Она в реальном времени читает логи сервера и, если видит несколько неудачных попыток входа с одного IP, мгновенно отправляет этот адрес в бан через брандмауэр.

Шаг 1. Установка утилиты

sudo apt update
sudo apt install fail2ban -y

Шаг 2. Настройка правил защиты

Создадим собственный локальный конфигурационный файл, который переопределит стандартные настройки защиты:

sudo nano /etc/fail2ban/jail.local

Вставьте в него следующий чистый рабочий код (обратите внимание, в блоке [sshd] мы указываем наш изменённый порт 22055):

[DEFAULT]
# Время бана нарушителя (в секундах) — ставим на 24 часа
bantime  = 86400

# Окно времени, в течение которого считаются ошибки входа (10 минут)
findtime = 600

# Количество разрешенных неудачных попыток перед баном
maxretry = 3

[sshd]
enabled = true
port    = 22055
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

Шаг 3. Запуск защиты

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Теперь у любого злоумышленника или WAF-бота будет всего 3 попытки, чтобы постучаться к вам в SSH. На 4-й раз его IP улетит в глухую блокировку на сутки. Наш ИИ-сервер и парсинг-инфраструктура находятся в полной безопасности.

Что делать, если я сам трижды ввёл неверный пароль и Fail2ban забанил мой IP?

Если у вас динамический интернет-провайдер, достаточно просто перезагрузить ваш домашний роутер — ваш IP изменится, и вы снова сможете зайти на сервер. Если IP статический, подключитесь к VDS через веб-консоль в личном кабинете вашего хостинга и разблокируйте свой рабочий адрес командой: fail2ban-client set sshd unbanip ВАШ_ДОМАШНИЙ_IP.

Безопасно ли использовать бесплатные подсети IPv6 от хостинга для парсинга?

С точки зрения взлома — абсолютно безопасно, так как входящие соединения на них закрыты нашим брандмауэром UFW. С точки зрения банов маркетплейсов — это самое выгодное решение, так как вы получаете миллионы чистых адресов, которые ещё не успели попасть в черные списки антифрод-систем.

Нужно ли закрывать порты локальной нейросети Ollama?

Движок Ollama по умолчанию запускается на локальном интерфейсе (127.0.0.1:11434) и физически не виден из внешнего интернета. Дополнительно закрывать его не нужно, так как наш брандмауэр UFW и так заблокирует любые внешние запросы на этот порт.

Прокрутить вверх