20 необходимых настроек безопасности SSH для системных администраторов Linux
SSH (Secure Shell) является одним из самых важных инструментов для системных администраторов и разработчиков Linux, так как позволяет безопасно подключаться к удалённым машинам, запускать программы из командной строки, управлять файлами, передавать данные, перенаправлять порты и даже удалённо запускать графические приложения.
Но вот уловка → использование SSH с настройками по умолчанию не всегда безопасно, потому что хакеры постоянно сканируют интернет в поисках открытых SSH-портов и слабых логинов. Поэтому изучение того, как правильно настраивать и защищать SSH, обязательно.
В этом руководстве мы рассмотрим основные настройки SSH и советы по безопасности, которые должен знать каждый начинающий пользователь Linux, чтобы его серверы оставались безопасными, эффективными и работали без сбоев.
1. Как изменить номер порта SSH по умолчанию
По умолчанию SSH прослушивает порт 22, что делает его частой целью для автоматических атак ботов. Один простой способ уменьшить количество таких атак — изменить SSH на нестандартный порт.
Для этого откройте файл конфигурации SSH с помощью текстового редактора:
sudo nano /etc/ssh/sshd_config
Ищите строку, которая говорит:
#Port 22
Раскомментируйте его (удалите #) и измените на номер порта по вашему выбору, например:
Port 2200
После сохранения файла перезапустите службу SSH, чтобы применить изменения:
sudo systemctl restart ssh # Debian/Ubuntu sudo systemctl restart sshd # RHEL/CentOS
Важно: В Debian/Ubuntu служба SSH называется ssh, а в RHEL/CentOS она называется sshd. Всегда используйте правильное имя при перезапуске или проверке службы.
Затем обновите правила брандмауэра, чтобы разрешить трафик на новом порту.
------------------ On FirewallD ------------------ sudo firewall-cmd --permanent --zone=public --add-port=2200/tcp sudo firewall-cmd --reload ------------------ On UFW ------------------ sudo ufw allow 2200/tcp
В новых версиях OpenSSH изменение порта в sshd_config может не работать, так как SSH управляется через сокеты systemd.
Создайте переопределение сокета systemd (замените ListenStream на нужный вам порт):
sudo mkdir -p /etc/systemd/system/ssh.socket.d sudo bash -c 'cat > /etc/systemd/system/ssh.socket.d/listen.conf <<EOF [Socket] ListenStream= ListenStream=2200 EOF'
Перезагрузите systemd и перезапустите службу SSH:
sudo systemctl daemon-reload sudo systemctl restart ssh # Debian/Ubuntu sudo systemctl restart sshd # RHEL/CentOS
Обновите правила вашего файрвола (так же, как указано выше).
2. Как отключить вход по SSH для root
Разрешение прямого входа под root через SSH рискованно, так как это предоставляет злоумышленникам единственную цель для атак методом грубой силы. Более безопасный подход — входить как обычный пользователь и затем использовать sudo для выполнения административных задач.
Чтобы отключить вход под root, найдите следующую строку в файле конфигурации SSH.
PermitRootLogin yes
и изменить это на:
PermitRootLogin no
Сохраните файл и перезапустите службу SSH, чтобы применить изменения:
sudo systemctl restart sshd
3. Как войти на сервер Linux без пароля SSH
Вход по SSH с использованием пароля может быть удобным, но он менее безопасен и может быть неудобным при повторном доступе.
Более безопасный и эффективный способ — аутентификация на основе SSH-ключей, которая позволяет входить в систему без ввода пароля.
Сначала создайте пару SSH-ключей на вашем локальном компьютере:
ssh-keygen -t rsa -b 4096
Далее скопируйте ваш открытый ключ на удалённый сервер:
ssh-copy-id user@remote-server
После установки ключа вы сможете войти на сервер без пароля:
ssh user@remote-server
4. Как разрешить SSH только определённым пользователям в Linux
Чтобы повысить безопасность SSH, вы можете ограничить доступ так, чтобы вход был возможен только для определённых пользователей или групп, что полезно для предотвращения попыток подключения по SSH с несанкционированных учётных записей.
Чтобы разрешить доступ определённым пользователям, добавьте следующую строку в файл конфигурации SSH.
AllowUsers alice bob
Или, чтобы разрешить целые группы, используйте:
AllowGroups admins devops
После внесения этих изменений перезапустите службу SSH:
sudo systemctl restart sshd
С этого момента только указанные пользователи (alice и bob) или группы (admins и devops) смогут входить через SSH, что поможет усилить безопасность сервера.
5. Как показать приветственное или предупреждающее сообщение при входе по SSH
Отображение сообщения при входе пользователей через SSH может быть полезным для приветствия пользователей или отображения юридических/безопасностных предупреждений.
Один простой способ — отредактировать файл Сообщение дня (MOTD):
sudo nano /etc/motd
Для более официального или юридического предупреждения вы можете создать баннер в /etc/issue.net:
sudo nano /etc/issue.net
Затем укажите SSH отображать этот баннер, добавив или отредактировав следующую строку в файле конфигурации SSH:
Banner /etc/issue.net
Наконец, перезапустите службу SSH, чтобы применить изменения:
sudo systemctl restart sshd
Теперь каждый раз, когда кто-либо будет входить через SSH, он будет видеть ваше пользовательское приветственное или предупреждающее сообщение.
6. Как отслеживать неудачные попытки входа по SSH
Мониторинг неудачных попыток входа по SSH необходим для выявления несанкционированных попыток доступа и повышения безопасности сервера.
В дистрибутивах на базе Debian вы можете проверить журналы с помощью:
sudo grep "Failed password" /var/log/auth.log
В дистрибутивах на основе RHEL используйте:
sudo grep "Failed password" /var/log/secure
Для мониторинга активности входа в SSH в режиме реального времени вы можете использовать команду journalctl:
sudo journalctl -u sshd -f
7. Как ограничить доступ по SSH по IP-адресу в Linux
Ограничение доступа по SSH для конкретных IP-адресов добавляет дополнительный уровень безопасности, позволяя подключаться только доверенным устройствам.
Вы можете настроить это напрямую в файле конфигурации SSH, указав пользователя и разрешённый ему IP-адрес:
AllowUsers [email
В качестве альтернативы вы можете применять ограничения по IP на уровне брандмауэра. Например, с помощью UFW разрешите доступ только с определённого IP-адреса к порту 22:
------------------ On FirewallD ------------------ sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' sudo firewall-cmd --reload ------------------ On UFW ------------------ sudo ufw allow from 192.168.1.100 to any port 22
8. Как установить тайм-аут простоя для SSH-сессий
Неактивные SSH-сеансы могут представлять угрозу безопасности, если пользователь забудет выйти из системы, оставив соединение открытым для потенциального злоупотребления.
Вы можете автоматически отключать неактивные сеансы, установив время ожидания бездействия в файле конфигурации SSH.
ClientAliveInterval 300 ClientAliveCountMax 0
ClientAliveInterval 300→ Отправляет сообщение «поддержание активности» каждые 300 секунд (5 минут).ClientAliveCountMax 0→ Отключает сеанс, если не получен ответ.
С этими настройками любая неактивная SSH-сессия будет автоматически завершаться через 5 минут, снижая риск оставленных открытых сессий.
9. Как включить двухфакторную аутентификацию (2FA) для входа по SSH
Добавление двухфакторной аутентификации (2FA) к SSH значительно повышает безопасность, требуя второго этапа проверки помимо вашего пароля.
На системах Debian/Ubuntu вы можете использовать Google Authenticator.
sudo apt install libpam-google-authenticator
Затем настройте двухфакторную аутентификацию (2FA) для вашей учетной записи, выполнив следующую команду:
google-authenticator
Далее включите модуль PAM для SSH, отредактировав:
sudo nano /etc/pam.d/sshd
Добавьте следующую строку:
auth required pam_google_authenticator.so
Наконец, разрешите аутентификацию с вызовом-ответом в файле конфигурации SSH:
ChallengeResponseAuthentication yes
Перезапустите службу SSH, чтобы применить изменения:
sudo systemctl restart sshd
Теперь для входа по SSH потребуется не только ваш пароль, но и временный код подтверждения, что значительно повышает безопасность вашего сервера.
10. Как ограничить SSH-подключения с помощью Fail2ban
Fail2ban — это мощный инструмент, который помогает защитить ваш сервер от атак методом подбора пароля, временно блокируя IP-адреса, с которых многократно не удаётся выполнить вход.
Чтобы настроить это, сначала установите Fail2ban на системах Debian/Ubuntu:
sudo apt install fail2ban
Затем включите SSH-тюрьму, создав или отредактировав локальный конфигурационный файл:
sudo nano /etc/fail2ban/jail.local
Добавьте следующие строки для настройки защиты SSH:
[sshd] enabled = true port = ssh maxretry = 3
Наконец, перезапустите Fail2ban, чтобы применить изменения:
sudo systemctl restart fail2ban
С включённым Fail2ban повторные неудачные попытки входа автоматически вызывают временные блокировки, что значительно снижает риск атак методом подбора пароля.
11. Как настроить аутентификацию SSH на основе ключей в Linux
Аутентификация на основе ключей — это безопасный метод входа в SSH без использования паролей. Она основывается на криптографической паре ключей, что делает атаки методом подбора практически невозможными.
Во-первых, рекомендуется сгенерировать пару ключей на вашем локальном компьютере с использованием современного и безопасного алгоритма Ed25519:
ssh-keygen -t ed25519
Далее скопируйте ваш открытый ключ на удалённый сервер:
ssh-copy-id user@server
Когда аутентификация с использованием ключей будет работать, вы можете дополнительно повысить безопасность, отключив вход по паролю в файле конфигурации SSH.
PasswordAuthentication no
Перезапустите службу SSH, чтобы применить изменение:
sudo systemctl restart sshd
После этого вход могут осуществлять только пользователи с правильным приватным ключом, что обеспечивает надежный уровень защиты от несанкционированного доступа.
12. Как разрешить или запретить доступ по SSH с помощью hosts.allow и hosts.deny
Linux предоставляет простой способ контроля доступа к сервисам с помощью TCP-оберток, которые используют файлы /etc/hosts.allow и /etc/hosts.deny.
Сначала разрешите доверенные IP-адреса в /etc/hosts.allow:
sshd: 192.168.1.100
Затем запретите все остальные IP-адреса, отредактировав /etc/hosts.deny:
sshd: ALL
С такой настройкой подключение по SSH возможно только с IP-адреса 192.168.1.100, а все остальные попытки блокируются.
13. Как проверять и контролировать активные SSH-сессии в Linux
Мониторинг активных SSH-сессий помогает отслеживать, кто вошел в систему, и выявлять любое неавторизованное подключение. Чтобы увидеть список текущих пользователей, можно использовать простые команды, такие как:
who OR w
Если вам нужно завершить сеанс конкретного пользователя, вы можете использовать pkill с их именем пользователя:
sudo pkill -u username
Регулярная проверка активных сеансов позволяет контролировать, кто подключен к вашему серверу, и помогает поддерживать безопасность.
14. Как настроить SSH-туннелирование (перенаправление портов) в Linux
SSH-туннелирование, или переадресация портов, позволяет безопасно направлять сетевой трафик с вашего локального компьютера на удалённый сервер, что полезно для доступа к сервисам за брандмауэром или шифрования небезопасных соединений.
Для локального перенаправления портов вы можете перенаправить порт на вашем локальном компьютере на порт на удалённом сервере.
ssh -L 8080:localhost:80 user@remote-server
8080→ Локальный порт на вашем компьютере.localhost:80→ Пункт назначения на удалённом сервере.user@remote-server→ Ваши учетные данные для входа по SSH.
После выполнения этой команды весь трафик, отправляемый на localhost:8080 на вашем локальном компьютере, будет безопасно перенаправлен на порт 80 на удалённом сервере.
15. Как включить подробное логирование для устранения неполадок SSH
При устранении неполадок с подключением по SSH подробные журналы могут помочь определить основную причину, такую как проблемы с аутентификацией или задержки в сети. SSH предоставляет встроенный режим подробного вывода, который показывает пошаговую информацию о процессе подключения.
Чтобы включить подробное ведение журнала, просто выполните:
ssh -vvv user@server
- Флаг
-vvvувеличивает уровень подробностей, предоставляя исчерпывающую информацию о каждом этапе установления SSH-соединения. - Вы также можете использовать меньшее количество параметров vs (
-vили-vv) для менее подробного вывода.
Подробный режим незаменим для диагностики проблем с SSH, помогая быстро выявлять ошибки конфигурации, сетевые проблемы или сбои аутентификации.
16. Как защитить SSH с помощью надежных шифров и протоколов
Обеспечение безопасности SSH-соединений включает в себя использование только надежных алгоритмов шифрования и протоколов. По умолчанию SSH поддерживает несколько протоколов и шифров, некоторые из которых устарели и уязвимы.
Вы можете усилить безопасность вашего SSH-сервера, явным образом указав безопасные параметры в файле конфигурации:
Protocol 2 Ciphers aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512,hmac-sha2-256 KexAlgorithms [email
- Протокол 2 → Обеспечивает использование только безопасного протокола SSHv2.
- Шифры → Определяет сильные алгоритмы шифрования для передачи данных.
- MAC → Устанавливает защищённые коды аутентификации сообщений для проверки целостности данных.
- KexAlgorithms → Выбирает безопасные алгоритмы обмена ключами.
После внесения этих изменений перезапустите SSH, чтобы применить их:
sudo systemctl restart sshd
17. Как ограничить доступ по SSH определённым диапазоном портов
Ограничение доступа по SSH определенным диапазоном портов добавляет дополнительный уровень безопасности, контролируя, какие порты разрешены для подключения, что может помочь уменьшить риск автоматических атак на неиспользуемые порты.
На системах, использующих UFW (Простой файрвол), вы можете разрешить диапазон портов с помощью следующей команды:
sudo ufw allow 1024:1040/tcp
Для пользователей FirewallD эквивалент будет следующим:
sudo firewall-cmd --permanent --add-port=1024-1040/tcp sudo firewall-cmd --reload
Эта конфигурация разрешает SSH-подключения только на портах 1024 — 1040, блокируя доступ на всех остальных портах.
18. Как изменить тайм-аут подключения SSH в Linux
Ограничение времени, в течение которого SSH ожидает входа пользователя, помогает предотвратить атаки методом перебора и сокращает окно для несанкционированных попыток доступа, что можно настроить с помощью параметра LoginGraceTime в файле конфигурации сервера SSH.
Добавьте или измените следующую строку, которая задаст максимальное время (в секундах), которое SSH будет ожидать успешного входа перед отключением.
LoginGraceTime 30
После сохранения файла перезапустите службу SSH, чтобы изменения вступили в силу:
sudo systemctl restart sshd
19. Как включить компрессию SSH для более быстрых соединений
Включение сжатия в SSH может улучшить скорость соединения, особенно при передаче больших объемов данных по медленным сетям. SSH может сжимать данные перед отправкой, уменьшая объем трафика, передаваемого по сети.
Чтобы использовать сжатие для каждого соединения, просто добавьте флаг -C при подключении:
ssh -C user@server
Для постоянного решения вы можете включить сжатие в файле конфигурации клиента SSH.
Compression yes
После включения SSH будет автоматически сжимать данные для всех подключений, ускоряя передачу и при этом поддерживая шифрование и безопасность.
20. Как настроить SSH-псевдонимы для более простого доступа
Управлять несколькими SSH-подключениями может быть неудобно, если нужно запоминать IP-адреса, порты и имена пользователей для каждого сервера. Использование SSH-псевдонимов упрощает этот процесс, позволяя создавать ярлыки для часто используемых серверов.
Чтобы настроить псевдоним, отредактируйте файл конфигурации вашего SSH-клиента и добавьте запись следующего вида:
Host myserver HostName 192.168.1.50 User alice Port 2200
После сохранения файла вы можете подключиться просто, выполнив:
ssh myserver
21. Как пересылать графические приложения через SSH (X11 переадресация)
SSH может делать больше, чем просто обеспечивать доступ через командную строку; он также может перенаправлять графические приложения с удалённого сервера на ваш локальный компьютер с помощью перенаправления X11, что позволяет запускать GUI-приложения на сервере так, как если бы они выполнялись локально.
Чтобы включить пересылку X11, подключитесь с опцией -X:
ssh -X user@server
После подключения вы можете запускать графические приложения, такие как:
gedit
Окно приложения будет отображаться на вашем локальном компьютере, в то время как все обработки происходят на удаленном сервере.
Совет: Убедитесь, что пересылка X11 разрешена в файле конфигурации SSH-сервера.
X11Forwarding yes
Заключительные мысли
SSH является важным инструментом для любого, кто управляет серверами Linux, и правильное его использование может сделать вашу работу проще и безопаснее.
Следуя советам из этого руководства, вы сможете защитить свои серверы от несанкционированного доступа, упростить вход с помощью аутентификации на основе ключей и псевдонимов, а также контролировать активность с помощью таких инструментов, как fail2ban и автоматические тайм-ауты сеансов.
Начните с основ, таких как изменение порта по умолчанию, отключение входа под root и настройка входа по ключу, а затем постепенно изучайте расширенные функции, такие как двухфакторная аутентификация, SSH-туннелирование и подробное ведение журналов.
Освоение этих практик поможет вам эффективно управлять серверами, оставаться защищённым от атак и работать как уверенный администратор Linux.

Добавить комментарий