Содержание

Как защитить SSH подключение на Linux сервере

Описание

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

Установите сложный пароль

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

  • Как минимум 8 символов
  • Используйте верхний и нижний регистр символов (AaBb)
  • Используйте буквы - цифры и знаки (!BasDf345$@)

Сильный пароль не только защитит от взлома по SSH протоколу, но и в целом улучшит защиту сервера.

Используйсте SSH ключи

Дополнительной защитой Вашего сервера будет использование ключа для подключения к серверу по SSH, генерировать ключ нужно на компьютере/сервере с которого будете подключаться:

Как создать SSH ключ на Windows ОС: Инструкция - как создать SSH ключ на Windows OS

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

ssh-keygen -t rsa

Чтобы установить этот ключ на сервер к которому Вы будете подключаться наберите команду:

ssh-copy-id -p 22 admin@192.168.1.1
  •  -p 22 - порт сервера по которому работает SSH протокол (может быть изменён, подробней информация ниже)
  • admin - Логин от Вашего сервера
  • 192.168.1.1 - IP адрес Вашего сервера

Если всё сделали правильно то теперь Вы можете подключаться к серверу по ключу, при этом Вам не придется каждый раз вводить пароль.

Используйте нестандартный порт

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

Для этого откроем конфигурационный файл SSH на сервере:

sudo nano /etc/ssh/sshd_config

Найдем в нём закомментированную строку такого вида:

# Port 22

Удалим символ # - чтобы убрать опцию комментария и изменим 22 на любые цифры начиная с 11060 и по нарастанию, для примера будем использовать 11060, теперь строка должна выглядеть так:

Port 11060

Сохраните конфигурацию "Ctrl+O" и выходите из редактора "Ctrl+X".

Нужно перезагрузить SSH службу - чтобы принялись новые настройки, выполним команду:

sudo service sshd restart

Таким образом мы поменяли порт для подключения, с этих пор - чтобы подключиться к серверу нужно указывать нестандартный порт опцией -p 11060, например:

ssh -p 11060 admin@192.168.1.1

Готово.

Оставить доступ только части пользователей

SSH подключение можно лимитировать для отдельных учетных записей, например если на сервере имеется три учетных записи: admin , sergey , alex - у Вас есть возможность разрешить удаленное подключение только для некоторых из них. Для этого откройте конфигурационный файл SSH:

sudo nano /etc/ssh/ssh_config

В этом файле спуститесь стрелочками до последней строки и добавьте новую с таким содержанием:

AllowUsers admin alex

Сохраните конфигурацию "Ctrl+O" и выходите из редактора "Ctrl+X".

Перезагрузите службу SSH:

sudo service sshd restart

Этим самым Вы разрешили удалённый доступ для пользователей admin и alex, в то время как пользователь sergey удаленно подключиться уже не сможет.

Включите SSH protocol 2

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

sudo nano /etc/ssh/ssh_config

Найдите строку:

# Protocol 2

Удалите символ # - чтобы убрать опцию комментария и задействовать эту строку, дожно получиться так:

Protocol 2

Сохраните конфигурацию "Ctrl+O" и выходите из редактора "Ctrl+X".

Перезагрузите службу SSH:

sudo service sshd restart

Готово.

Отключить пустые пароли

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

sudo nano /etc/ssh/ssh_config

Найдите строку PermitEmptyPasswords и убедитесь что стоит значение "no".

PermitEmptyPasswords no

Включите подробный журнал

Чтобы служба SSH вела журнал неудачных подключений с указанием IP - адресов, откройте конфигурационный файл SSH:

sudo nano /etc/ssh/ssh_config

Найдите строку LogLevel и вместо INFO укажите VERBOSE, строка должна получится так:

LogLevel VERBOSE

Сохраните файл "Ctrl+O" и выйдите из редактора "Ctrl+X".

Перезагрузите службу SSH:

sudo service sshd restart

Можно проверить, вводим команду:

cat /var/log/secure

Система выведит нам информацию, примерно такую:

Jun 21 13:06:28 centos sshd[24851]: Failed password for root from 118.212.143.47 port 48263 ssh2

В начале дата и время, далее ОС и служба sshd - Неверный пароль для пользователя root  с адреса 118.212.143.47.

Тоесть по этой записи мы видим что была неудачная попытка проникновения на сервер с указанного адреса.

Спасибо за внимание, на этом всё.