Настройка и усиление защиты OpenSSH на Debian/Ubuntu

Салют! В этой обзорной статье мы настроим (сконфигурируем) наш OpenSSH для безопасного соединения и использования.

Напомню, что серверы Linux часто управляются удаленно с использованием протокола SSH путем подключения к серверу OpenSSH, который является программным обеспечением сервера SSH по умолчанию, используемым в Ubuntu, Debian, CentOS, FreeBSD и большинстве других систем на базе Linux/BSD.

Сервер OpenSSH — это серверная сторона SSH, также известная как демон SSH или sshd. Вы можете подключаться к серверу OpenSSH, используя клиент OpenSSH, а именно команду ssh.

ssh $remote_user@$remote_host

Файлы конфигурации

Основные файлы конфигурации находятся в каталоге /etc /ssh:

  • ssh_config: файл конфигурации клиента
  • sshd_config: файл конфигурации сервера

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

https://help.ubuntu.ru/wiki/

Скопируйте файл /etc/ssh/sshd_config и защитите его от записи с помощью следующих команд в терминале:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original

Теперь, даже, если вы «набедокурите», то у вас будет возможность, благодаря файлу sshd_config.original, все исправить и вернуться к начальной конфигурации.

Многие из пользователей Linux имеют привычку присваивать копии исходного файла пост-фикс .bak Тогда ваша команда будет выглядеть следующим образом:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Тут уже на ваше усмотрение, но рекомендуется придерживаться единого стиля.

Изменение конфигурации

Все изменения производятся в файле /etc/ssh/sshd_config следовательно нам необходимо его открыть с помощью текстового редактора, например nano:

sudo nano /etc/ssh/sshd_config

Внимание! Учтите, что если единственный способ доступа к серверу — это ssh и вы допустили ошибку конфигурации sshd в /etc/ssh/sshd_config, вы можете найти свой сервер заблокированным, пока его не перезагрузите. В дополнение, если неправильная директива настройки воспринялась, сервер sshd может отказаться загружаться, поэтому будьте очень осторожны, когда редактируете этот файл на удаленном сервере.

После ввода этой команды вы увидите примерно следующее:

Настройка конфигурационного файла SSH
Настройка конфигурации SSH

Если строка начинается со знака «решетки», то это означает, что так сказать, обработчиком данного файла эта строка будет проигнорирована — это просто комментарий.

Начнем наши изменения в файле конфигурации с директивы которая отвечает за порт по которому осуществляется соединение.

По умолчанию это 22-ой порт. Чтобы установить TCP порт прослушивания для вашего OpenSSH 2222 вместо стандартного 22, измените директиву Port:

Port 2222

Если вы используете для соединения публичные ключи, о их настройке я упоминал в этой статье, то чтобы sshd допускал вход с использованием открытых ключей, нужно добавить или изменить следующую строку:

PubkeyAuthentication yes

Если вы создали ключи SSH, вы можете повысить уровень безопасности вашего сервера, отключив аутентификацию по паролю изменением следующей директивы:

PasswordAuthentication no

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

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

Теперь все в порядке! Базовая настройка выполнена.

После внесения изменений в /etc/ssh/sshd_config сохраните и закройте файл, введя CTRL+XY, а затем нажмите <strong>ENTER</strong>.

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

sudo sshd -t

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

sudo systemctl reload ssh
sudo /etc/init.d/ssh restart
sudo service ssh restart

Дополнительные настройки безопасности

Теперь поговорим о дополнительных настройках, которые усиливают ваш сервер. И сперва отключим возможность входа через SSH в качестве пользователя с правами root, установив следующее значение для директивы:

PermitRootLogin no

Очень полезная опция, которая не дает потенциальным злоумышленникам возможности входа непосредственно в качестве пользователя с правами root. 

Если вам нужно будет выполнить команду от root (с наивысшими привилегиями), то просто используйте вначале команды sudo.

Затем, не будет лишним, ограничить максимальное количество попыток аутентификации для конкретного сеанса входа:

MaxAuthTries 5

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

PermitEmptyPasswords no

Перенаправление X11 редко используется на практике, поэтому отключим его и ряд других маловостребованных опций:

X11Forwarding no
PermitUserEnvironment no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

Можно также отключить баннер, в котором представлена информация о версии нашей системы:

DebianBanner no

Не забудьте проверить синтаксис новой конфигурации, запустив <strong>sshd</strong> в тестовом режиме:

sudo sshd -t

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