Логотип

20 основных настроек SSH и советы по безопасности для Linux

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 sshd

 

Важно: не забудьте обновить правила брандмауэра, чтобы разрешить трафик через новый порт.

------------------ На FirewallD ------------------ 
sudo firewall-cmd --permanent --zone=public --add-port=2200/tcp
sudo firewall-cmd --reload

------------------ На UFW ------------------
sudo ufw allow 2200/tcp

 

2. Как отключить вход в систему через SSH

Прямой вход в систему с правами 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@удаленный-сервер

 

После установки ключа вы сможете войти на сервер без пароля.

ssh user@удаленный-сервер

 

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

 

Читать  Устранение неполадок аутентификации Kerberos в Linux

Затем настройте 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 user@192.168.1.100

 

Кроме того, вы можете настроить ограничения по 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 → Отправляет сообщение «keep-alive» каждые 300 секунд (5 минут).
  • ClientAliveCountMax 0 → Завершает сеанс, если не получен ответ.

 

При таких настройках любой неактивный сеанс SSH будет автоматически завершаться через 5 минут, что снижает риск оставления открытых сеансов без присмотра.

 

9. Как включить двухфакторную аутентификацию (2FA) для входа по SSH

Добавление двухфакторной аутентификации (2FA) в SSH значительно повышает уровень безопасности, поскольку помимо пароля требуется пройти второй этап проверки.

В системах Debian/Ubuntu можно использовать Google Authenticator.

sudo apt install libpam-google-authenticator

 

Затем настройте двухфакторную аутентификацию для своей учётной записи, выполнив команду:

google-authenticator

 

Затем включите модуль PAM для SSH, выполнив следующие действия:

sudo nano /etc/pam.d/sshd

 

Добавьте следующую строку:

auth required pam_google_authenticator.so

 

Наконец, разрешите аутентификацию по протоколу Challenge-Response в файле конфигурации 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 без использования паролей. Она основана на паре криптографических ключей, что делает атаки методом перебора практически невозможными.

Читать  VPN сервис для безопасного подключения к интернету

Сначала рекомендуется сгенерировать пару ключей на локальном компьютере с использованием современного и безопасного алгоритма 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

 

При такой настройке только IP-адрес 192.168.1.100 может подключаться по SSH, а все остальные попытки подключения блокируются.

 

13. Как проверять и отслеживать активные сеансы SSH в Linux

Мониторинг активных SSH-сессий позволяет отслеживать, кто вошёл в систему, и выявлять случаи несанкционированного доступа. Чтобы просмотреть список пользователей, вошедших в систему в данный момент, можно использовать простые команды, например:

who

или
w

 

Если вам нужно завершить сеанс конкретного пользователя, вы можете использовать pkill с его именем пользователя:

sudo pkill -u имя_пользователя

 

Регулярная проверка активных сеансов позволяет контролировать, кто подключен к вашему серверу, и помогает обеспечивать безопасность.

 

14. Как настроить SSH-туннелирование (переадресацию портов) в Linux

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

Для локальной переадресации портов можно перенаправить порт на локальном компьютере на порт на удалённом сервере.

ssh -L 8080:localhost:80 user@удаленный-сервер

 

  • 8080 → Локальный порт на вашем компьютере.
  • localhost:80 → Пункт назначения на удалённом сервере.
  • user@remote-server → Ваши учётные данные для входа в SSH.

 

После выполнения этой команды весь трафик, отправляемый на localhost:8080 с вашего локального компьютера, будет безопасно перенаправляться на порт 80 на удалённом сервере.

 

15. Как включить подробный журнал для устранения неполадок SSH

При устранении неполадок, связанных с подключением по SSH, подробные журналы могут помочь выявить основную причину, например проблемы с аутентификацией или задержки в сети. В SSH есть встроенный подробный режим, который пошагово отображает информацию о процессе подключения.

Чтобы включить подробное ведение журнала, просто запустите:

ssh -vvv пользователь@сервер

 

  • Флаг -vvv повышает уровень детализации, предоставляя подробную информацию о каждом этапе SSH-подключения.
  • Для получения менее подробного вывода можно также использовать меньшее количество скобок (-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 curve25519-sha256@libssh.org

 

  • Протокол 2 → Обеспечивает использование только безопасного протокола SSHv2.
  • Шифрование → Указывает на надёжные алгоритмы шифрования для передачи данных.
  • MAC-адреса → Устанавливает защищённые коды аутентификации сообщений для проверки целостности данных.
  • KexAlgorithms → выбирает безопасные алгоритмы обмена ключами.

 

После внесения этих изменений перезапустите SSH, чтобы они вступили в силу:

sudo systemctl restart sshd

 

Читать  Установка OAuth в Linux

17. Как ограничить доступ по SSH определённым диапазоном портов

Ограничение доступа по протоколу SSH определённым диапазоном портов обеспечивает дополнительный уровень безопасности за счёт контроля разрешённых портов для подключений. Это может помочь снизить риск автоматических атак на неиспользуемые порты.

В системах, использующих UFW (Uncomplicated Firewall), можно разрешить доступ через ряд портов с помощью следующей команды:

sudo ufw allow 1024:1040/tcp

 

Для пользователей FirewallD это будет выглядеть так:

sudo firewall-cmd --permanent --add-port=1024-1040/tcp
sudo firewall-cmd --reload

 

Эта конфигурация разрешает SSH-подключения только через порты 10241040, блокируя доступ через все остальные порты.

 

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, что позволяет запускать графические приложения на сервере так, как если бы они запускались локально.

Чтобы включить переадресацию X11, подключитесь с помощью параметра -X:

ssh -X user@server

 

После подключения вы сможете запускать приложения с графическим интерфейсом, например:

gedit

 

Окно приложения будет отображаться на вашем локальном компьютере, а вся обработка данных будет происходить на удалённом сервере.

Совет: убедитесь, что в файле конфигурации SSH-сервера разрешена переадресация X11.

X11Forwarding yes

 

Выводы

SSH — важный инструмент для всех, кто управляет серверами Linux. Правильное его использование может сделать вашу работу проще и безопаснее.

Следуя советам из этой статьи, вы сможете защитить свои серверы от несанкционированного доступа, упростить вход в систему с помощью аутентификации на основе ключей и псевдонимов, а также отслеживать активность с помощью таких инструментов, как fail2ban и таймауты сеансов.

Начните с основ, таких как изменение порта по умолчанию, отключение входа в систему с правами root и настройка входа в систему с помощью ключа, а затем постепенно переходите к более сложным функциям, таким как двухфакторная аутентификация, SSH-туннелирование и подробное ведение журнала.

Овладение этими навыками поможет вам эффективно управлять серверами, защищаться от атак и уверенно работать администратором Linux.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала