Skip to content

Как защитить SSH сервер (hardening)

Коротко:

SSH brute-force — #1 атака на Linux-серверах. Базовый hardening за 30 мин блокирует 99% атак: отключить password auth (только keys), сменить порт с 22, AllowUsers whitelist, fail2ban для brute-force, MFA через TOTP опционально. Всегда держите 2 терминал открытым при правках sshd_config на случай errors.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Пошаговая настройка

  1. Сгенерируйте SSH-ключ на клиенте: ssh-keygen -t ed25519 -a 100
  2. Скопируйте pubkey на сервер: ssh-copy-id user@host
  3. Проверьте вход по ключу ДО выключения password auth
  4. В /etc/ssh/sshd_config: PasswordAuthentication no, PubkeyAuthentication yes, PermitRootLogin prohibit-password
  5. Добавьте AllowUsers admin deploy (whitelist users)
  6. Опционально: смените порт (Port 2222) — security-through-obscurity, 90% атак на порт 22
  7. sshd -t проверить config, systemctl reload sshd
  8. Установите fail2ban: apt install fail2ban (дефолтный sshd jail уже настроен)

Рабочие примеры

СценарийКонфиг
Базовый /etc/ssh/sshd_configPort 2222 PermitRootLogin prohibit-password PasswordAuthentication no PubkeyAuthentication yes AllowUsers admin ClientAliveInterval 300 ClientAliveCountMax 2 MaxAuthTries 3
Генерация ed25519 keyssh-keygen -t ed25519 -a 100 -C "admin@example.com"
Fail2ban sshd jail[sshd] enabled = true maxretry = 3 bantime = 3600 findtime = 600
TOTP MFA (pam_google_authenticator)apt install libpam-google-authenticator\ngoogle-authenticator # run as user\n# Then edit /etc/pam.d/sshd + sshd_config: ChallengeResponseAuthentication yes
UFW + SSH rate-limitufw limit 2222/tcp # 6 connections per 30 sec

Типичные ошибки

  • Закрыли password auth без проверки ключей сначала — locked out
  • Сменили порт но не обновили firewall/UFW — connection refused
  • PermitRootLogin yes в 2026 — anti-pattern. Используйте sudo user
  • AllowUsers с typo в username — ничего не работает
  • MaxAuthTries слишком высокий (6+) — облегчает bruteforce
ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

ed25519 vs RSA?

ed25519 быстрее, более современный, короче (32 байта vs 2048+ бит). RSA нужен только для legacy clients (до 2014).

Смена порта — реальная защита?

Security-through-obscurity. Блокирует массовые boт scanners (90% сканируют только :22). Не защищает от targeted attack на ваш server.

Надо ли отключить root полностью?

Лучше <code>PermitRootLogin prohibit-password</code> (разрешить только по ключу) + sudo user. Полный no — требует console access для emergency.

Как проверить security?

<a href="/security">Enterno Security Scanner</a> + <code>ssh-audit</code> open-source tool. Plus audit auth.log для failed attempts.