Забезпечення безпеки на VPS та орендованих серверах. Аутентифікація протоколу SSH 3

 

   Шерман Євгеній, директор компанії Freehost.ua ділиться з нами своїм досвітом з питань безпеки VPS та       арендованих серверів:

Зазвичай робота з VPS або виділеним сервером здійснюється віддалено. Найбільш надійним методом приєднання до віддаленого серверу вважається аутентифікація на основі SSH. Саме тому, часто можна фіксувати в логах SSH демона спроби підбору паролів сторонніми особами. У цій статті ми постаралися зібрати основні принципи захисту SSH.

Як правило авторизація по SSH відбувається за допомогою логіна та паролю. Однак більш безпечним є створення криптографічних відкритого та закритого ключів. Вони завжди працюють виключно в зв'язці. Приватний або закритий зберігається в даних комп'ютера і застосовується при необхідності приєднання. Публічний або відкритий може вільно поширюватися, не розкриваючи перший. Він знаходиться в директорії .ssh/authorized_keys. Така система широко застосовується в різних мережевих протоколах.

ПРОВЕДЕННЯ АУТЕНТИФІКАЦІЇ SSH ПО ВІДКРИТОМУ КЛЮЧУ

• На віддаленій системі, яка налаштовується для управління, встановлюється SSH (OpenSSH). Відповідна версія встановлюється також на пристрої, що використовується для під'єднання.

• Після входу в віддалену систему як адміністратор, відкритий ключ слід перенести в файл ~/.ssh/authorized_keys.

Це дає можливість поліпшити систему безпеки і дозволяє виконувати автоматизовані завдання на інших пристроях.

ВИКОНАННЯ АУТЕНТИФІКАЦІЇ ДЛЯ LINUX І OS X

Мережевий протокол SSH шифрує весь трафік, включаючи передані паролі. Слід враховувати, що кожен користувач повинен генерувати власні ключі.

1. З пристрою, що використовується для віддаленого доступу, провести генерацію пари ключів. Це здійснюється в рядку команд SSH із застосуванням команд:

• алгоритм DSA: ssh-keygen -t dsa

• алгоритм RSA: ssh-keygen -t rsa

2. Далі задається назва файлу для зберігання пари ключів і пароль для захисту закритого ключа. Для того щоб залишити назву файлу за замовчуванням можна натиснути клавіші Enter або Return. Часто саме такий тип приватних ключів використовується при доступі на віддалений хост. Пароль повинен містити не менше 7 символів, після яких також необхідно натиснути Enter або Return. Ключі будуть знаходитися в папці .ssh, наприклад ~/.ssh/id_rsa 

3. Щоб перенести публічний ключ на віддалений сервер server.com :, з якого буде проводитися авторизація можна скористатися SFTP або SCP.

scp ~/.ssh/id_rsa myuser@server.com:

Система запросить ввести пароль користувача myuser на сервері server.com. Після того як Ви це зробите, файл буде скопійований в домашній каталог користувача myuser під тим же ім'ям.

4. Зайдіть на сервер server.com використовуючи Ваші облікові дані. Якщо обліковий запис не містить файл ~/.ssh/authorized_keys, його необхідно створити, ввівши в командному рядку:

• mkdir -p ~/.ssh

• touch ~/.ssh/authorized_keys

Якщо файл на сервері вже існує, нічого страшного, ці команди йому не зашкодять.

5. На віддалену систему, в файл /.ssh/authorized_keys, додаємо вміст публічного ключа

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys.

6. Видаляємо відкритий ключ з облікового запису віддаленого хоста 

rm ~/id_rsa.pub.

7. Тепер можна підключитися з аутентифікацією SSH до віддаленого хосту. Якщо виходить заходити до свого облікового запису за допомогою SSH-ключів, не використовуючи пароль, аутентифікація успішно налаштована.

У разі, якщо Ваш приватний ключ захищений паролем, система попросить Вас ввести пароль. Будьте уважні це не пароль системного користувача, під яким Ви авторізуетесь, це пароль, яким захищений закритий ключ.

АУТЕНТИФІКАЦІЯ ЗА ДОПОМОГОЮ PUTTY ДЛЯ WINDOWS

Після проведення всіх зазначених дій при підключенні до сервера не потрібно буде вводити паролі.

1. Увійти в безкоштовну сервісну програму PuTTYgen (генерація ключів) і в параметрах вибрати SSA-2 RSA або SSH-2 DSA зі значеннями за замовчуванням.

2. Далі в пункті «Actions» слід натиснути на «Generate» і вибрати розділ «Key». Після генерації необхідно створити пароль для закритого ключа і зберегти його.

3. Через утиліту ключ зберігається на пристрої, а потім вставляється в віддаленій системі в новий рядок файлу і також зберігається.

4. Після необхідно увійти в агент Pageant SSH, знайти розділ Add Key і, вибравши приватний ключ, натиснути «Open». При наявності пароля, який захищає ключ, його потрібно ввести в поле.

5. Далі знову повернутися в клієнт PuTTY SSH і в розділі «Host Name» (або IP address), розташованому у полі «Session», ввести назву хоста віддаленого серверу з відкритим ключем, а також ім'я користувача.

6. У переліку «Category» переходимо до екрану Auth (Connection> SSH> Auth) і в розділі «Authentication methods» обрємо «Attempt authentication using Pageant».

7. Повернутися до «Session» і ввести ім'я в розділі «Saved Sessions», після чого натиснути «Open». Далі в віддаленій системі відбувається підключення облікового запису. Цей етап вважається заключним в налаштуванні.

Віддалений доступ слід також максимально убезпечити від можливості підключення зловмисників.

НАЛАШТУВАННЯ ПАРАМЕТРІВ ПІДКЛЮЧЕННЯ ДО SSH

Якщо Ви купуєте послугу VPS, часто сервер створюється за шаблоном який вже містить потрібні налаштування, або за запитом служба підтримки хостингу може їх зробити. Але якщо це не так, Ви можете зробити це самостійно.

Для забезпечення безпеки віддаленого серверу від атак потрібно змінити налаштування підключення. Існує ряд основних параметрів, здатних убезпечити експлуатацію ssh-з'єднання. Перш за все, створюється резервна копія файлу конфігурації з настройками: cp /etc/ssh/sshd_config{,.bak}. Далі відкривається файл /etc/ssh/sshd_config, в який вносяться необхідні зміни.

• PermitRootLogin - вхід в систему в якості root-користувача необхідно обмежити.

• AllowUsers, AllowGroups - дозвіл доступу виключно заданому колу осіб.

• DenyUsers, DenyGroups - віддалений доступ через файл sshd_config надається конкретним користувачам і групам.

• Port - заміна порту SSH на нестандартний. Стандартний порт підключення 22 краще змінити на будь-який інший, наприклад 2210.

Після цього авторизація буде відбуватися таким чином:

ssh -p 2210 myuser@server.com

• ListenAddress - список в файлі конфігурації певних адрес інтерфейсів для входу на сервер.

• Login GraceTime - обмеження за часом на введення логіна та паролю (наприклад, до 30-60 секунд).

• ClientAliveInterval - зазначення часу відсутності активності користувача, після якого з'єднання розривається.

• HostbasedAuthentication - відключення авторизації на основі хоста за допомогою директиви.

Крім цього слід використовувати ефективний пароль, який не буде пов'язаний з особистими даними. Він повинен містити цифри, а також великі та малі літери.

31.07.2018
Рейтинг: 5 / 5 (1)