SSH brute-force — #1 атака на Linux-серверах. Базовый hardening за 30 мин блокирует 99% атак: отключить password auth (только keys), сменить порт с 22, AllowUsers whitelist, fail2ban для brute-force, MFA через TOTP опционально. Всегда держите 2 терминал открытым при правках sshd_config на случай errors.
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
Бесплатный онлайн-инструмент — сканер безопасности сайта: результат мгновенно, без регистрации.
ssh-keygen -t ed25519 -a 100ssh-copy-id user@hostPasswordAuthentication no, PubkeyAuthentication yes, PermitRootLogin prohibit-passwordAllowUsers admin deploy (whitelist users)Port 2222) — security-through-obscurity, 90% атак на порт 22sshd -t проверить config, systemctl reload sshdapt install fail2ban (дефолтный sshd jail уже настроен)| Сценарий | Конфиг |
|---|---|
| Базовый /etc/ssh/sshd_config | Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers admin
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3 |
| Генерация ed25519 key | ssh-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-limit | ufw limit 2222/tcp # 6 connections per 30 sec |
Чтобы эффективно защитить SSH сервер, необходимо выполнить несколько ключевых действий: изменить стандартный порт SSH на нестандартный (например, 2222), отключить вход с паролем, используя ключи SSH, и ограничить доступ по IP-адресам. Также рекомендуется настроить двухфакторную аутентификацию и регулярно обновлять программное обеспечение. Эти меры значительно снизят вероятность несанкционированного доступа к серверу.
Первым шагом в процессе защиты SSH сервера является изменение стандартного порта, который по умолчанию равен 22. Это затруднит работу автоматизированных атак. Для изменения порта откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_configНайдите строку Port 22 и измените её на, например, Port 2222. После этого сохраните изменения и перезапустите SSH-сервис:
sudo systemctl restart sshdСледующим шагом является отключение входа по паролю. Найдите строку PasswordAuthentication yes и измените её на:
PasswordAuthentication noЭто позволит использовать только ключи SSH для аутентификации, что значительно повышает безопасность. Не забудьте предварительно настроить ключи SSH для вашего пользователя.
Для дальнейшего повышения безопасности SSH сервера рекомендуется ограничить доступ к нему только с определённых IP-адресов. Это можно сделать с помощью правила в файле конфигурации /etc/hosts.allow. Например, чтобы разрешить доступ только с IP-адреса 192.168.1.100, добавьте следующую строку:
sshd: 192.168.1.100Или используйте /etc/hosts.deny для блокировки всех остальных:
sshd: ALLТакже стоит рассмотреть возможность настройки двухфакторной аутентификации (2FA) для SSH. Это можно сделать с помощью пакета Google Authenticator. Установите его:
sudo apt-get install libpam-google-authenticatorЗатем откройте файл конфигурации PAM:
sudo nano /etc/pam.d/sshdИ добавьте следующую строку в начало файла:
auth required pam_google_authenticator.soПосле этого настройте Google Authenticator для вашего пользователя, выполнив команду:
google-authenticatorСледуйте инструкциям на экране, чтобы завершить настройку. После этого необходимо перезапустить SSH-сервис:
sudo systemctl restart sshdТаким образом, даже если злоумышленник получит доступ к вашему паролю, ему потребуется второй фактор для входа.
Чтобы защитить SSH сервер, необходимо выполнить несколько ключевых шагов: измените стандартный порт (22) на нестандартный, отключите вход по паролю, разрешите доступ только для определённых пользователей, используйте ключи SSH, активируйте двухфакторную аутентификацию и настройте Fail2Ban для защиты от brute-force атак. Эти меры значительно повысят безопасность вашего сервера.
Первым шагом к защите вашего SSH сервера является изменение стандартного порта, который по умолчанию равен 22. Это поможет сократить количество автоматических атак, так как многие злоумышленники нацеливаются именно на этот порт.
Чтобы изменить порт, откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_configНайдите строку, содержащую Port 22, и измените её на, например, Port 2222. После этого сохраните изменения и перезапустите SSH-сервис:
sudo systemctl restart sshdТеперь ваш SSH сервер будет доступен по новому порту 2222. Не забудьте внести изменения в файлы конфигурации вашего брандмауэра, чтобы разрешить доступ к этому порту.
Использование ключей SSH вместо паролей значительно повышает уровень безопасности. Ключи SSH представляют собой пару криптографических ключей: открытый ключ, который вы размещаете на сервере, и закрытый ключ, который хранится на вашем локальном компьютере.
Для создания пары ключей используйте команду:
ssh-keygen -t rsa -b 4096После создания ключей скопируйте открытый ключ на сервер с помощью:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_hostЗамените user на ваше имя пользователя и remote_host на IP-адрес или доменное имя вашего сервера.
После успешного копирования ключа, отключите возможность входа по паролю, изменив файл конфигурации SSH:
sudo nano /etc/ssh/sshd_configНайдите строку PasswordAuthentication yes и измените её на PasswordAuthentication no. Сохраните изменения и перезапустите SSH-сервис:
sudo systemctl restart sshdТеперь доступ к вашему серверу возможен только с использованием ключей SSH, что значительно затрудняет несанкционированный доступ.
Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.
Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.
Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.
Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.
Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.
аудит HTTP-заголовков
проверка конфигурации
CSP и HSTS настройка
соответствие стандартам
Strict-Transport-Security.Server: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.DENY или SAMEORIGIN.nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.Server, X-Powered-By, X-AspNet-Version из ответов.История security-проверок и мониторинг HTTP-заголовков безопасности.
Зарегистрироваться (FREE)ed25519 быстрее, более современный, короче (32 байта vs 2048+ бит). RSA нужен только для legacy clients (до 2014).
Security-through-obscurity. Блокирует массовые boт scanners (90% сканируют только :22). Не защищает от targeted attack на ваш server.
Лучше <code>PermitRootLogin prohibit-password</code> (разрешить только по ключу) + sudo user. Полный no — требует console access для emergency.
<a href="/security">Enterno Security Scanner</a> + <code>ssh-audit</code> open-source tool. Plus audit auth.log для failed attempts.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.