- Главная
- Блог
- Администрирование
- Защита SSH сервера на Astra Linux | Настройка SSH | Подключение по SSH
Защита SSH сервера на Astra Linux | Настройка SSH | Подключение по SSH
В одном из прошлых уроков, мы рассматривали вопрос поднятия SSH сервера на Astra Linux и подключение к нему через терминал и программу PuTTY. Однако, поднять только роль SSH сервера недостаточно, так как он открывает потенциальную уязвимость безопасности, а если учитывать, что через него можно полностью управлять сервером, то к данному вопросу стоит отнестись крайне ответственно.
Курс охватывает все ключевые аспекты работы Windows серверами: от установки и настройки до обеспечения безопасности и автоматизации.
Так же в курс входят такие темы как: Active Directory, групповые политики (GPO), администрирование 1С, настройка файлового сервера, удаленное администрирование, WSUS, основы Linux и т.д.
Поэтому сейчас мы на практике рассмотрим такие средства защиты SSH сервера как:
1) Смена стандартного порта для подключения
2) Запрет на прямое подключение из-под пользователя root
3) Подключение к серверу SSH используя приватный ключ
Смена стандартного порта подключения
Откроем конфигурационный файл SSH сервера (корень \ etc \ ssh \ sshd_config)
Тут нас интересуют следующие параметры:
#Port 22 - данная строка отвечает за порт по умолчанию для SSH сервера. Как вы видите, в начале данной строки стоит значок #, это говорит о том, что данная запись закомментирована, т.е. не учитывается в конфигурации.
Давайте еще раз проверим, что мы можем подключиться к данному серверу по SSH протоколу, сделаю я это с другой машины, так же под управлением Astra Linux.
Пуск \ Системные \ Терминал fly \ Проверим какой у сервера IP-адрес \ Мониторчики \ ПКМ \ Сведения о соединении \ 192.168.2.5
ssh it-skills@192.168.2.5
Так как мы еще не подключались к данной машине, то выдается сообщение:
The authenticity of host '192.168.2.5 (192.168.2.5)' can't be established.
ECDSA key fingerprint is SHA256:zM5bNYDYg5Y30svnn4J77xXIgLqMRneJX9ZXeKxzAFI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Которое говорит о том, что данная машина не известна, вы действительно хотите к ней подключиться? Пишем yes!
Warning: Permanently added '192.168.2.5' (ECDSA) to the list of known hosts.
Внимание: В список известных хостов была добавлена данная машина и больше подобных сообщений появляться не будет.
Вводим пароль и получаем строку it-skills@astra, что говорит о том, что мы подключились к машине с именем astra под пользователем it-skills
Рас уж мы собираемся использовать SSH для дальнейшего удаленного подключения и настройки сервера, то предлагаю именно сейчас с этого и начать. Т.е. выполнить настройку SSH сервера так же, удаленно.
Перейдем в директорию с нашим конфигурационным файлом:
cd /etc/ssh/
ls
sudo nano sshd_config - т.е. открыть через текстовый редактор nano конфигурационный файл sshd_config с повышением прав, так как вносить изменения в него может только супер пользовать
Port 22345 - раскомментируем строку и введем не стандартный порт. Не стоит использовать порт 2222, да, он не стандартный, однако, какие бы инструкции по смене порта я не видел, везде указывают 2222, так что, его уже тоже можно считать стандартным.
Ctrl+o - сохранить изменения
Crtl+z - выход из редактора
sudo service sshd reload - перезапустим службу, чтобы применить изменения
logout - отключимся от удаленного сервера
ssh it-skills@192.168.2.5 - попробуем вновь подключиться
ssh: connect to host 192.168.2.5 port 22: Connection refused
Отказано в подключении
ssh -p 22345 it-skills@192.168.2.5 - через ключ -p указываем конкретный порт, к которому нужно подключиться.
Настройка подключения к серверу SSH через учетку root
Идем далее, одним важным нюансом является возможность подключения к серверу через учетную запись суперпользователя root.
В чем тут опасность?
Во-первых, подключившись под root-ом вы можете выполнять абсолютно все настройки в системе, а значит, если его пароль узнает злоумышленник, то он тоже сможет полностью контролировать сервер.
Во-вторых, если у нас будет доступна возможность авторизоваться на SSH сервере непосредственно под root-ом, то злоумышленник может начать процесс подбора пароля. Поэтому, такая возможность должны быть обязательно отключена.
Давайте попробуем подключиться к SSH серверу под root-ом
ssh -p 22345 root@192.168.2.5
Permission denied, please try again.
Доступ запрещен, попробуйте еще раз.
Отлично, на этом сервере это запрещено. Но, давайте посмотрим, где эта настройка хранится и как его запретить, если у вас она разрешена.
ssh -p 22345 it-skills@192.168.2.5
sudo nano /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
изменяем на
PermitRootLogin yes
sudo service sshd reload
logout
ssh -p 22345 root@192.168.2.5
Permission denied, please try again.
Все равно, доступ запрещен. Но, тут уже проблема в другом. При установке Astra Linux и создании первого пользователя мы указываем для него пароль, однако, для учетной записи суперпользователя root пароль вообще не назначается.
И в данном случае, какой-бы мы пароль не вводили, будет выдаваться ошибка.
Поэтому, давайте зададим пароль для root-а
ssh -p 22345 it-skills@192.168.2.5
sudo passwd root
[sudo] пароль для it-skills:
Новый пароль :
Повторите ввод нового пароля :
passwd: пароль успешно обновлён
А вот теперь, пробуем подключиться под root-ом к нашему серверу через ssh
logout
ssh -p 22345 root@192.168.2.5
Успешно подключились.
Теперь изменим настройку, чтобы запретить подключения от пользователя root
nano /etc/ssh/sshd_config
PermitRootLogin yes
изменяем на
PermitRootLogin no
service sshd reload
logout
ssh -p 22345 root@192.168.2.5
Permission denied, please try again.
Доступ запрещен, а значит именно эта настройка отвечает за подключение из-под root-а к серверу SSH.
Подключение к серверу SSH используя приватный ключ
Чтобы исключить возможность взлома пароля пользователя, мы можем воспользоваться авторизацией на SSH сервере через сертификат. В данном случае мы не будем вводить пароль, а подключение будет выполнено если у нашего текущего пользователя имеется сертификат, через который можно получить доступ к серверу.
Запускаем терминал на машине, с которой будем подключаться к серверу (Пуск \ Системные \ Терминал Fly)
ssh-keygen -t rsa - ssh-keygen (генерация ssh ключа) -t (type - тип ключа) rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/it-skills2/.ssh/id_rsa):
Куда будет сохранен ключ
Enter passphrase (empty for no passphrase):
Пароль, пустой Enter
Enter same passphrase again:
Еще раз вводим пароль Enter
Your identification has been saved in /home/it-skills2/.ssh/id_rsa
Your public key has been saved in /home/it-skills2/.ssh/id_rsa.pub
Путь, куда были сохранены приватный и публичный ключи.
Давайте проверим, что они появились в домашнем каталоге текущего пользователя (Astra2 \ Менеджер файлов \ Домашняя \ Вид \ Отображать скрытые \ .ssh \ И вот у нас два файла id_rsa и id_rsa.pub)
Теперь, нам нужно скопировать публичный ключа на сервер, к которому мы будем подключаться
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22345 it-skills@192.168.2.5 - указываем путь к публичному ключу, порт пользователя и сервер, на который нужно установить этот ключ.
Только имейте ввиду, что подключаться, используя этот ключ, мы сможем только под пользователем it-skills, как и указали в данной команде.
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/it-skills2/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
it-skills@192.168.2.6's password:
Вводим пароль для подключения через SSH к серверу Astra
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22345' 'it-skills@192.168.2.6'"
and check to make sure that only the key(s) you wanted were added.
Все, ключ добавлен
Давайте проверим и подключимся еще раз к серверу SSH
ssh -p 22345 it-skills@192.168.2.5
Мы успешно подключились и система не запросила у нас пароль.
Теперь, давайте полностью отключим возможность подключаться к серверу используя пароль, а только через приватный ключ
nano /etc/ssh/sshd_config
#PasswordAuthentication no
изменяем на
PasswordAuthentication no
service sshd reload
На этому у меня все, спасибо за внимание и до новых встреч! ПОКА!