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

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

OpenSSH – позволяет выполнять удаленное подключение к серверу по протоколу 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:
    1. Если не требуется удаленное подключение по протоколу SSH, обязательно отключайте его. Более безопасно просто удалить пакет:
service ssh stop
apt-get –purge remove openssh-server
    1. Используйте SSH второй версии. Протокол SSH первой версии имеет проблемы с безопасностью, которые устранены во второй версии:
Protocol 2
    1. Меняем стандартный порт:
Port 2299
    1. При необходимости разрешаем подключение только с IP адреса 192.168.50.100:
ListenAddress 192.168.50.100
    1. Использование ограниченного доступа. По-умолчанию все пользователи в системе могут подключаться по SSH. Рекомендуется ограничить доступ пользователям в целях безопасности. Разрешим доступ для пользователей admin, voipblog:
AllowUsers admin, voipblog

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

DenyUsers admin, voipblog
    1. Отключение по неактивности:
ClientAliveInterval 300
ClientAliveCountMax 0

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

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

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

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

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

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

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

PermitRootLogin no

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

PermitRootLogin no
Match Host 192.168.50.*,127.0.0.1
PermitRootLogin yes
    1. Вывод баннера:
Banner /etc/issue.net
    1. Закрываем 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
    1. Использование криптостойких паролей

Используйте криптостойкие пароли

    1. Запрещаем использование пустых паролей
PermitEmptyPasswords no
    1. Анализ использования логов
LogLevel INFO
    1. Использование Fail2Ban
apt-get install fail2ban

Более подробное использование Fail2Ban описано в статье