img

Лучшие практики по защите SSH подключения

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

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


Конфигурационные файлы

  • /etc/ssh/sshd_config - файл конфигурации сервера OpenSSH;
  • /etc/ssh/ssh_config - файл конфигурации клиентской части OpenSSH;
  • ~/.ssh/ - директория, в которой хранятся пользовательские SSH настройки;
  • ~/.ssh/authorized_keys или ~/.ssh/authorized_keys - список ключей (RSA или DSA), которые используются для подключения к пользовательским аккаунтам;
  • /etc/nologin - если данный файл существует в системе, то sshd запретит подключаться всем пользователям кроме root в систему;
  • /etc/hosts.allow и /etc/hosts.deny - система запрета (часть безопасности). Работает по аналогии с ACL;
  • SSH порт по умолчанию - 22
 Защита SSH подключения

Не нужен - выключай

Если вашему серверу не требуется удаленное подключение по SSH, то обязательно отключите его. В таких системах как CentOS/RHEL делается это так:

chkconfig sshd off
yum erase openssh-server

Используйте SSH второй версии

Протокол SSH первой версии имеет проблемы с безопасностью, которые закрыты во второй версии. Поэтому, используйте вторую версию. Убедитесь, что в файле /etc/ssh/sshd_config указана опция Protocol 2.


Ограничивайте SSH доступ

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

AllowUsers root merion networks

С другой стороны, вы можете разрешить доступ всем пользователям, кроме указанных:

DenyUsers root merion networks

Время неактивности

Важно указывать время, в течение которого, неактивная сессия будет терминирована (завершена). Это можно сделать следующими опциями:

ClientAliveInterval 300
ClientAliveCountMax 0

В данной настройке мы указали время бездействия равным 300 секунд (5 минут).


Про файлы .rhosts

Дело в том, что данный файл содержит список хостов и пользователей. Если в данном файле содержится комбинация хоста и юзера, то данный пользователь сможет подключиться к системе по SSH без запроса пароля. Рекомендуем отключить эту «замечательную» фичу:

IgnoreRhosts yes

Никакой аутентификации на базе хоста!

Так называемая Host-Based Authentication позволяет пользователю с определенного хоста подключаться к серверу. Отключаем:

HostbasedAuthentication no

Прямое подключение через root

Не нужно открывать root. Максимум, советуем использовать прямое root подключение на время проведения работ. Затем отключать. Лучше давать su (sudo) доступ для некоторых категория пользователей. Закрыть можно вот так:

PermitRootLogin no

Сделайте баннер

Для каждого подключающегося сделайте баннер, в котором можно угрожать злоумышленникам, которые пытаются совершить несанкционированный доступ. За настройку баннера отвечает параметр Banner.


22 порт только изнутри!

Сделайте доступ к 22 порту системы только через цепочку фаервол правил. Лучше всего, оставить доступ только изнутри LAN. Например, в Iptables можно дать доступ для 192.168.11.0/24:

-A RH-Firewall-1-INPUT -s 192.168.11.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

Где слушать

По умолчанию SSH слушает подключения на всех доступных интерфейсах. Мы рекомендуем сменить порт по умолчанию и указать IP – адрес, на котором необходимо ожидать подключения. Например, мы укажем порт 962 и IP – адрес 192.168.11.24

Port 962
ListenAddress 192.168.11.24

Криптостойкие пароли

Используйте устойчивые к защите пароли. В сети множество инструментов, которые сгенерируют криптостойкий пароль онлайн, бесплатно и без смс :)


Запретить пустые пароли

Бывают пользователи без паролей. Их доступ к SSH так же необходимо запретить с помощью опции:

Port 962
PermitEmptyPasswords no

Анализируйте логи

Установите логирование событий в режим INFO или DEBUG – это позволит иметь расширенный контроль над системой:

LogLevel INFO
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker