Смена стандартного порта SSH для снижения шума в логах
Хочу себе такие же кнопкиСмена стандартного порта SSH: как избавиться от ботов и шума в логах
Вы когда-нибудь заглядывали в логи своего сервера и видели сотни попыток подбора пароля по SSH? Это не параноидальные фантазии — каждый день автоматизированные боты сканируют интернет в поисках открытых портов 22 (стандартный порт SSH), чтобы атаковать слабые пароли или устаревшие версии протокола.
Проблема: Эти атаки забивают логи, нагружают сервер и отвлекают от реальных угроз. Решение: сменить порт SSH на нестандартный. Это не панацея (опытный хакер найдёт любой открытый порт), но 90% автоматизированного шума исчезнет уже через час после изменения.
В этом уроке вы научитесь: ✅ Почему боты атакуют именно порт 22 и как это работает. ✅ Как безопасно сменить порт SSH без потери доступа к серверу. ✅ Как настроить fail2ban и firewall, чтобы усилить защиту. ✅ Какие ошибки приводят к блокировке самого себя и как их избежать.
1. Почему боты любят порт 22: анатомия атаки
Представьте, что вы живёте в доме с красной дверью (порт 22). Воры знают, что в 99% случаев вход именно здесь, поэтому они стучат только в красные двери. Если вы перекрасите дверь в фиолетовый цвет (например, порт 2222), большинство воров пройдёт мимо — они ищут стандартные цели.
Как работают сканеры портов
- Массовое сканирование: Боты (например, Shodan, Masscan) просматривают диапазоны IP-адресов на наличие открытых портов.
- Целевой порт 22: Поскольку SSH по умолчанию работает на 22/TCP, сканеры сразу атакуют его.
- Атака по словарю: После обнаружения открытого порта боты пробуют популярные логины (
root,admin) и пароли (123456,password).
Пример из жизни: На новом сервере с порт 22 за сутки может быть 5000+ попыток входа. После смены порта на 2222 их количество падает до 5-10 в день (это уже целевые атаки, а не массовый спам).
Минусы смены порта
- Не защищает от целевых атак: Если хакер знает ваш IP, он просканирует все порты.
- Не заменяет другие меры безопасности: Всегда используйте ключи SSH вместо паролей и fail2ban.
⚠️ Важно: Смена порта — это первый шаг, а не финальная защита.
2. Подготовка: что сделать до смены порта
Прежде чем менять настройки, убедитесь, что:
- У вас есть резервный доступ (например, через VNC или панель хостинга).
- Вы знаете текущие настройки SSH (файл
/etc/ssh/sshd_config). - Firewall разрешает новый порт (иначе вы потеряете доступ).
Шаг 1: Проверьте текущие подключения
ss -tulnp | grep sshd
или
netstat -tulnp | grep sshd
Вы должны увидеть что-то вроде:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
Это значит, что SSH слушает все интерфейсы на порту 22.
Шаг 2: Выберите новый порт
- Рекомендуемые порты: 2222, 2022, 22222 (легко запомнить).
- Избегайте портов ниже 1024 (они требуют прав root).
- Не используйте популярные порты (80, 443, 8080) — их тоже сканируют.
Совет: Выберите порт, который легко набрать на клавиатуре (например, 2222), чтобы не путаться при подключении.
3. Меняем порт SSH: пошаговая инструкция
Шаг 1: Редактируем конфиг SSH
Откройте файл /etc/ssh/sshd_config в любом редакторе (например, nano):
sudo nano /etc/ssh/sshd_config
Найдите строку:
#Port 22
Раскомментируйте её и измените на выбранный порт (например, 2222):
Port 2222
Внимание:
- Если строки
#Port 22нет, добавьте её вручную.- Не удаляйте старую строку
Port 22, а закомментируйте её (#Port 22), чтобы при ошибке можно было откатиться.
Шаг 2: Сохраняем и перезапускаем SSH
Сохраните файл (Ctrl+O → Enter → Ctrl+X в nano) и перезапустите службу:
sudo systemctl restart sshd
или (для старых систем):
sudo service ssh restart
Шаг 3: Проверяем, что новый порт работает
Не закрывайте текущую сессию! Откройте новый терминал и попробуйте подключиться:
ssh пользователь@ваш_сервер -p 2222
Если подключение прошло — отлично. Если нет, проверьте:
- Firewall (разрешает ли он новый порт?).
- Опечатки в
/etc/ssh/sshd_config. - Логи SSH (
sudo tail -f /var/log/auth.log).
Шаг 4: Закрываем старый порт (опционально)
Если новый порт работает, можно заблокировать порт 22 в firewall. Например, для UFW:
sudo ufw deny 22/tcp
sudo ufw allow 2222/tcp
sudo ufw reload
Для iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo service iptables save # (для CentOS)
Предупреждение: Если вы используете панель управления (например, ISPmanager), убедитесь, что она не зависит от порта 22.
4. Дополнительная защита: fail2ban + firewall
Смена порта уменьшает шум, но не останавливает целевые атаки. Усилим защиту:
Настройка fail2ban
- Установите fail2ban (если ещё не установлен):
sudo apt install fail2ban # Debian/Ubuntu sudo yum install fail2ban # CentOS - Создайте локальный конфиг:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local - Откройте
/etc/fail2ban/jail.localи найдите секцию[sshd]. Измените:[sshd] enabled = true port = 2222 # ваш новый порт filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 1h - Перезапустите fail2ban:
sudo systemctl restart fail2ban
Настройка firewall (UFW)
Если вы ещё не настроили firewall, сделайте это сейчас:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp # ваш новый порт SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
5. Типичные ошибки и как их избежать
| Ошибка | Последствия | Как исправить |
|---|---|---|
| Не проверили новый порт перед блокировкой старого | Потеря доступа к серверу | Используйте screen или tmux, чтобы не потерять сессию |
Опечатка в /etc/ssh/sshd_config |
SSH не стартует | Проверьте логи: sudo journalctl -u sshd |
| Firewall блокирует новый порт | Нельзя подключиться | Разрешите порт: sudo ufw allow 2222/tcp |
| Забыли обновить клиентские конфиги | Приходится каждый раз указывать -p 2222 |
Добавьте в ~/.ssh/config: Host ваш_сервер Port 2222 |
| Использовали порт ниже 1024 | SSH не запускается без прав root | Выберите порт выше 1024 |
Совет для арбитражников: Если вы используете много серверов, стандартизируйте порт (например, 2222 везде). Так проще управлять подключениями.
6. Проверка результата: анализ логов
Через 24 часа после смены порта проверьте логи:
sudo grep "Failed password" /var/log/auth.log | wc -l
Сравните с количеством атак до изменения. Вы увидите, что 90-95% шума исчезло.
Пример:
- До: 4872 попытки входа за день.
- После: 12 попыток (и то, скорее всего, целевые сканы).
Практика для закрепления
Упражнение 1: Проверка текущих подключений
- Зайдите на свой сервер по SSH.
- Выполните команду:
ss -tulnp | grep sshd - Вопрос: Какой порт слушает SSH? Сколько активных подключений сейчас?
Упражнение 2: Смена порта (симуляция)
- Откройте
/etc/ssh/sshd_configв редакторе. - Найдите строку
Port 22и замените наPort 2222. - Вопрос: Какую команду нужно выполнить, чтобы изменения вступили в силу?
Упражнение 3: Настройка fail2ban
- Откройте
/etc/fail2ban/jail.local. - Найдите секцию
[sshd]и изменитеportна ваш новый порт. - Вопрос: Что сделает директива
maxretry = 3?
Упражнение 4: Блокировка старого порта
- Проверьте, что новый порт работает (
ssh -p 2222 user@server). - Заблокируйте порт 22 в UFW.
- Вопрос: Какую команду вы использовали для блокировки?
Упражнение 5: Анализ логов
- Посмотрите логи аутентификации:
sudo tail -n 50 /var/log/auth.log - Вопрос: Сколько попыток входа было за последние 50 строк? Видны ли атаки на новый порт?
Итоги и дальнейшие шаги
✅ Вы научились:
- Меняться стандартный порт SSH для снижения шума в логах.
- Настраивать fail2ban и firewall для дополнительной защиты.
- Избегать типичных ошибок при смене порта.
🚀 Следующий шаг:
- Отключите вход по паролю (используйте только ключи SSH).
- Настройте двухфакторную аутентификацию (2FA) для SSH.
- Изучите SSH-туннелирование для безопасного доступа к внутренним сервисам.
Помните: Безопасность — это процесс, а не одноразовая настройка. Регулярно обновляйте SSH и следите за логами!
Введение: чем VDS отличается от шаред-хостинга и зачем это веб-мастеру
Как правильно выбрать тариф: CPU, RAM, NVMe или SSD, канал
Выбор операционной системы: почему Ubuntu 22.04/24.04 — стандарт индустрии
Регистрация домена и первичная настройка DNS-записей (A, AAAA, CNAME)
Генерация SSH-ключей на локальном компьютере (Windows/Mac/Linux)
Добавление публичного ключа на сервер и первый вход по SSH
Отключение входа по паролю и запрет авторизации для root
Смена стандартного порта SSH для снижения шума в логах
Создание основного рабочего пользователя с правами sudo
Базовое обновление системы и установка необходимых утилит (curl, wget, git, htop)
Настройка часового пояса и синхронизация времени (NTP)
Установка и базовая настройка фаервола UFW
Разрешение только необходимых портов (SSH, HTTP, HTTPS)
Установка Fail2Ban для защиты от перебора паролей
Настройка правил Fail2Ban для SSH и веб-сервера
Знакомство с Docker: установка движка и CLI
Установка Docker Compose для управления мульти-контейнерными приложениями
Основы изоляции: почему каждый проект должен быть в своем контейнере
Подготовка файловой структуры сервера для удобного хранения проектов
Развертывание Nginx как обратного прокси-сервера через Docker
Настройка конфигурации Nginx для статических сайтов
Установка PHP-FPM в отдельном контейнере
Связка Nginx и PHP-FPM через внутреннюю Docker-сеть
Оптимизация настроек PHP-FPM (pm.max_children, memory_limit) под нагрузку
Установка MariaDB/MySQL в изолированном контейнере
Безопасное хранение паролей от БД через переменные окружения (.env)
Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Установка Redis для кэширования запросов и сессий
Интеграция Redis с PHP-приложением для ускорения работы
Автоматическая выдача SSL-сертификатов через Certbot (Let's Encrypt)
Настройка автопродления SSL-сертификатов по крону
Принудительный редирект с HTTP на HTTPS в Nginx
Включение gzip и brotli сжатия для ускорения загрузки страниц
Настройка кэширования статики (browser caching) в заголовках Nginx
Защита от простых DDoS и ботов: модуль limit_req в Nginx
Настройка резервного копирования баз данных (mysqldump) по расписанию
Настройка резервного копирования файлов проектов (tar)
Отправка бэкапов на удаленное хранилище (S3-compatible storage или другой сервер)
Ротация и очистка старых логов, чтобы не забить диск
Мониторинг нагрузки: установка и настройка htop и iotop
Просмотр логов в реальном времени: tail, grep и journalctl
Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Изоляция арбитражных инструментов: запуск ботов в отдельных контейнерах
Установка SOCKS5/HTTP прокси (3proxy) внутри Docker для мультиаккаунтинга
Настройка аутентификации и ограничения доступа к прокси по IP
Проверка анонимности и работы прокси-сервера
Оптимизация ядра Linux (sysctl.conf) для высоких нагрузок и сетевых соединений
Настройка swap-файла: когда он нужен, а когда вредит
Чек-лист финальной проверки безопасности перед запуском проекта
План действий при взломе или падении сервера: восстановление из бэкапа
АПТЕЧКА ДЛЯ ЖИВОТНЫХ
Автомобили Германии — FORD, MERSEDES, VW, IVECO
Чат рулетка 2026: чаты, где каждый момент — шанс
Чат рулетка онлайн
Чат с Аней: психологический разговор
Чатрулетка: новый способ общения
Чай и кофе: сила вкуса
Детские игрушки из безопасных материалов
Эксплуатация шин: Рекомендации по использованию
Фототехника для пейзажей
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать Vdsina вечный хостинг для своего проекта
Компоненты безопасности IP
Конкуренция на российском автомобильном рынке
Онлайн генератор паролей для Windows
Оптимизация обработки форм GEO проекта
Сервер для социальных сетей: Безопасность, Скорость, Изоляция
Смешные моменты
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
Весь экран под циферблат