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