Как защитить 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.
Тоесть по этой записи мы видим что была неудачная попытка проникновения на сервер с указанного адреса.
Спасибо за внимание, на этом всё.