Защита SSH. Необходимые меры

Защита SSH. Необходимые меры

OpenSSH – позволяет выполнять удаленное подключение к серверу по протоколу SSH, производить манипуляции с файлами, управлять и настраивать систему. В этой статье мы расскажем про защиту SSH. А также о минимальных подходах для защиты вашего оборудования и увеличения безопасности от несанкционированного доступа. Пример использования на ОС Debian 9.

Файлы конфигурации 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. Все настройки производятся в файле /etc/ssh/sshd_config:

Если не требуется удаленное подключение по протоколу SSH, обязательно отключайте его. Более безопасно просто удалить пакет:

service ssh stop
apt-get –-purge remove openssh-server

Содержание

Методы защиты SSH

Используйте SSH второй версии. Протокол SSH первой версии имеет проблемы с безопасностью, которые устранены во второй версии:

Protocol 2

Меняем стандартный порт:

Port 2299

При необходимости разрешаем подключение только с IP адреса 192.168.50.100:

ListenAddress 192.168.50.100

Использование ограниченного доступа. По-умолчанию все пользователи в системе могут подключаться по SSH. Рекомендуется ограничить доступ пользователям в целях безопасности. Разрешим доступ для пользователей admin, voipblog:

AllowUsers admin, voipblog

Для запрета доступа всем пользователям, кроме указанных:

DenyUsers admin, voipblog

Отключение по неактивности:

ClientAliveInterval 300
ClientAliveCountMax 0

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

Использование .RHOSTS:

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

IgnoreRhosts yes

Отключение аутентификации на базе хоста:

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

HostbasedAuthentication no

Использование root-доступа:

Закрываем подключение с использованием учетной записи root отовсюду:

PermitRootLogin no

При необходимости открывает доступ из локальной сети:

PermitRootLogin no
Match Host 192.168.50.*,127.0.0.1
PermitRootLogin yes

Вывод баннера:

Banner /etc/issue.net

Закрываем 22 порт.

Ограничение доступа к серверу по 22 порту.
Рекомендация! Открывать доступ на 22 порт только из локальной сети.

Сделать это можно с помощью IPtables. Предоставим доступ к серверу только для сети 192.168.50.0/24:

iptables -A INPUT -s 192.168.50.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

Использование криптостойких паролей. Используйте криптостойкие пароли.

Запрещаем использование пустых паролей:

PermitEmptyPasswords no

Анализ использования логов:

LogLevel INFO

Использование Fail2Ban:

apt-get install fail2ban

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