Захист з’єднань SSH допомагає захистити систему та дані Linux. Системним адміністраторам і домашнім користувачам також необхідно захищати комп’ютери, які підключені до Інтернету. Ось 10 простих способів, які допоможуть вам захистити ваш сервер SSH .
Деякі основи безпеки SSH
SSH означає Secure Shell. Протокол SSH або програмне забезпечення дозволяє системним адміністраторам і користувачам створювати безпечні з’єднання з віддаленими комп’ютерами за допомогою цього протоколу.
Протокол SSH — це зашифрований протокол, розроблений для забезпечення безпечного з’єднання через незахищену мережу, таку як Інтернет. SSH в Linux побудовано на портативній версії проекту OpenSSH. Він реалізований у класичній клієнт-серверній моделі з сервером SSH, який приймає підключення від клієнтів SSH. Клієнт використовується для підключення до сервера та надання сеансу віддаленим користувачам. Сервер приймає з'єднання та починає сеанс.
У конфігурації за замовчуванням сервер SSH «прослуховуватиме» вхідні з’єднання за протоколом керування передачею (TCP), порт 22. Оскільки це стандартизований і популярний порт, він є мішенню для загроз і зловмисних ботів.
Зловмисники запускають ботів, які сканують діапазони IP-адрес у пошуках відкритих портів. Потім він перевіряє ці порти на наявність вразливостей, які можна використовувати. Думати про те, що я в безпеці, є багато більших і кращих цілей, ніж я, для поганих хлопців, абсолютно неправильно. Ці боти не обирають свої цілі за будь-якими критеріями, вони просто шукають спосіб проникнути в систему.
Ви станете жертвою, якщо не захистите свою систему.
Тертя безпеки
Точка протидії безпеки – це будь-яка ситуація, коли виконання основного завдання запобігає або відкладається через вимоги безпеки.
Проблеми безпеки викликають дискомфорт (на будь-якому рівні) у користувачів та інших, коли ви застосовуєте заходи безпеки. Люди, які новачки не знайомляться з комп’ютерними системами, можуть хвилюватися, чи їм справді доведеться вводити пароль кожного разу, коли вони входять до мейнфрейму. Для них це також форма тертя безпеки.
Запровадження заходів безпеки часто включатиме певну форму тертя для деяких людей. Власники бізнесу повинні платити за ці заходи. Користувачам комп’ютерів, можливо, доведеться змінити звички або запам’ятати іншу інформацію автентифікації, додавши кроки для успішного підключення. Системним адміністраторам доведеться виконувати додаткову роботу щодо впровадження та підтримки нових заходів безпеки.
Підтягнути та заблокувати операційну систему Linux або Unix можна швидко. Заходи безпеки тут — це набір простих для виконання кроків, які покращать безпеку комп’ютера без необхідності сторонніх програм і глибокого втручання брандмауера .
Використовуйте протокол SSH версії 2
У 2006 році протокол SSH було оновлено з версії 1 до версії 2. Це значне оновлення. Є багато змін і вдосконалень, особливо в шифруванні та безпеці, а версія 2 не сумісна з версією 1. Щоб запобігти з’єднанням із клієнтами версії 1, ви можете вказати комп’ютерам приймати з’єднання лише з версії 2.
Для цього відредагуйте файл /etc/ssh/sshd_config за допомогою такої команди:
sudo gedit /etc/ssh/sshd_config

Додайте такий рядок:
Protocol 2

Збережіть файл, а потім перезапустіть процес демона SSH за допомогою такої команди:
sudo systemctl restart sshd

Перевірте нове налаштування в дії, переключившись на іншу машину та спробувавши підключитися до тестової машини через SSH. Ми використаємо параметр -1 (протокол 1), щоб змусити команду ssh використовувати протокол версії 1.
ssh -1 [email protected]

Запит на підключення відхилено. Переконайтеся, що ви все ще можете підключитися до протоколу 2. Ми будемо використовувати -2 (протокол 2) для перевірки.
ssh -2 [email protected]

Той факт, що сервер SSH запитує пароль, є позитивною ознакою того, що з’єднання встановлено і ви взаємодієте з сервером. Сучасні клієнти SSH за замовчуванням використовують протокол 2, нам не потрібно вказувати протокол 2, якщо клієнт оновлений.
ssh [email protected]

Підключ��ння прийнято.
Уникайте воріт 22
Порт 22 є стандартним портом для підключень SSH. Якщо використовується інший порт, це додає вашій системі певну безпеку (STO). Безпека через двозначність ніколи не повинна розглядатися як справжній захід безпеки. Фактично, деякі розумніші атакуючі боти перевіряють усі відкриті порти та вирішують, яку службу вони виконують, замість того, щоб покладатися на простий список пошуку портів і припускати, що вони надають послугу. Але використання нестандартного порту може допомогти зменшити поганий трафік на порту 22.
Щоб налаштувати нестандартний порт, відредагуйте файл конфігурації SSH, як зазначено вище.

Видаліть # на початку рядка порту та замініть 22 номером на свій вибір. Збережіть файл конфігурації та перезапустіть демон SSH.
На іншому комп’ютері ми використаємо команду ssh для підключення до сервера. Типова команда ssh використовує порт 22:
ssh [email protected]

З'єднання відхилено. Спробуйте ще раз і вкажіть порт 470 за допомогою параметра –p (порт):
ssh -p 479 [email protected]

Підключення підтверджено.
Підключіть фільтр за допомогою TCP Wrappers
TCP Wrappers — це простий для розуміння список контролю доступу. Це дозволяє забороняти та дозволяти підключення на основі характеристик запиту на підключення, таких як IP-адреса або ім’я хоста. TCP Wrappers слід використовувати з належним чином налаштованим брандмауером, а не замість нього.
TCP Wrappers попередньо встановлено на машинах Ubuntu 18.04 LTS . Його потрібно встановити на Manjaro 18.10 і Fedora 30.
Щоб встановити на Fedora, скористайтеся такою командою:
sudo yum install tcp_wrappers

Щоб встановити на Manjaro, скористайтеся цією командою:
sudo pacman -Syu tcp-wrappers

Включено два файли, один файл містить список дозволених, а інший файл містить список заборонених. Відредагуйте список заборонених за допомогою такої команди:
sudo gedit /etc/hosts.deny

Наведена вище команда відкриє редактор gedit із відмовою завантаження файлу.

Потрібно додати рядок:
ALL : ALL
І збережіть файл. Цей рядок блокуватиме будь-який несанкціонований доступ. Тепер нам потрібно надати дозволи для підключень, які ви хочете прийняти. Для цього вам потрібно відредагувати файл дозволів:
sudo gedit /etc/hosts.allow

Наведена вище команда відкриє редактор gedit із файлом, який можна завантажити.

Ми додали назву демона SSH, SSHD та IP-адресу комп’ютера, який дозволяє встановити з’єднання. Збережіть файл і перевірте, чи діють обмеження та дозволи.
Спочатку ви спробуєте підключитися з комп’ютера, якого немає у файлі hosts.allow:

З'єднання відхилено. Ми спробуємо підключитися з машини з IP-адресою 192.168.4.23:

Підключення прийнято.
Наведений тут приклад дозволяє підключитися лише одній машині. Обгортки TCP є досить гнучкими, вони підтримують імена хостів, символи узагальнення та маски підмережі для прийняття з’єднань із діапазонів IP-адрес.
Відхиляти запити на підключення без пароля
Хоча це не дуже добре, системні адміністратори Linux можуть створювати облікові записи користувачів без паролів. Це означає, що для віддаленого підключення з цього облікового запису не потрібен пароль. Ці підключення будуть прийняті, але не автентифіковані.
Налаштування за замовчуванням для SSH приймає запити на підключення без пароля. Ми можемо легко змінити його та переконатися, що всі ці з’єднання автентифіковані.
Вам потрібно відредагувати файл конфігурації SSH.

Прокрутіть файл униз, доки не побачите рядок #PermitEmptyPasswords no . Видаліть # на початку рядка та збережіть файл. Перезапустіть демон SSH.
Використовуйте ключі SSH замість паролів
Ключі SSH забезпечують безпечний спосіб входу на сервер SSH. Паролі можна зламати, вгадати або застосувати грубим методом . Ключі SSH не вразливі до таких типів атак.
Під час генерації ключа SSH ви створюєте пару ключів. Один — це відкритий ключ, а інший — закритий. Відкритий ключ встановлено на серверах, до яких ви хочете підключитися. Приватний ключ надійно зберігається на вашому комп’ютері.
Ключі SSH дозволяють створювати з’єднання без пароля, що є більш безпечним, ніж з’єднання з використанням автентифікації за паролем.
Під час надсилання запиту на підключення віддалений комп’ютер використовує копію відкритого ключа для створення зашифрованого повідомлення, яке надсилається назад на комп’ютер. Оскільки він зашифрований відкритим ключем, комп’ютер може розшифрувати його за допомогою закритого ключа.
Потім комп’ютер витягує деяку інформацію з повідомлення, шифрує її та надсилає назад на сервер. Якщо сервер може розшифрувати його за допомогою копії відкритого ключа. Якщо інформація в повідомленні збігається з надісланою вам сервером, підключення буде підтверджено.
Тут підключення до сервера за адресою 192.168.4.11 здійснюється користувачем за допомогою ключа SSH. Зауважте, що їм не буде запропоновано ввести пароль.
ssh [email protected]

Повністю вимкнути автентифікацію паролем
Ви можете повністю вимкнути автентифікацію за паролем, якщо використовуєте ключі SSH. Нам потрібно відредагувати файл конфігурації SSH.

Прокрутіть файл униз, доки не побачите рядок, який починається з #PasswordAuthentication yes . Видаліть # на початку рядка, змініть так на ні та збережіть файл. Перезапустіть демон SSH.
Вимкнути переадресацію X11
Переадресація X11 дозволяє віддаленим користувачам запускати графічні програми з вашого сервера через сеанс SSH, але цим легко можуть скористатися зловмисники. Його краще вимкнути, відредагувавши файл конфігурації SSH.

Прокрутіть файл вниз, доки не побачите рядок #X11Forwarding no , видаліть # на початку рядка та збережіть файл. Перезапустіть демон SSH.
Установіть значення тайм-ауту простою
Якщо з комп’ютером встановлено з’єднання SSH і протягом певного часу на ньому не відбувається жодної активності, це може становити загрозу безпеці.
Тому вам слід встановити ліміт часу очікування. Підключення SSH буде розірвано, якщо не буде активності протягом ліміту часу. Знову потрібно відредагувати файл конфігурації SSH.

Прокрутіть файл вниз, доки не побачите рядок, який починається з #ClientAliveInterval 0 . Видаліть # на початку рядка, змініть число 0 на потрібне значення. Зазвичай люди встановлюють його на 300 секунд, тобто 5 хвилин. Збережіть файл і перезапустіть демон SSH.
Встановіть обмеження на кількість введення пароля
Встановлення обмеження на кількість підтверджень може допомогти запобігти підбору пароля та атакам підбору. Після вказаної кількості запитів автентифікації користувач буде відключений від SSH-сервера. За замовчуванням кількість спроб пароля не обмежена, але ви можете змінити це у файлі конфігурації SSH.

Прокрутіть файл вниз, доки не побачите рядок, який починається з #MaxAuthTries 0 . Видалення # на початку рядка змінює число на потрібне значення. Ви можете встановити значення 3. Збережіть файл під час внесення змін і перезапустіть демон SSH.
Ви можете перевірити це, спробувавши підключитися та ввівши неправильний пароль.

Зауважте, що число MaxAuthTries перевищує кількість спроб, дозволених користувачеві. Після двох невдалих спроб ви від’єднуєтеся, що означає, що MaxAuthTries має значення 3.
Вимкнути вхід root
Радимо не входити в систему як root, просто використовувати як звичайний користувач у Linux і використовувати sudo для виконання дій, які вимагають прав root. Ви також не повинні дозволяти root входити на сервер SSH. Тільки звичайні користувачі можуть підключатися. Якщо їм потрібно виконати завдання адміністративного рівня, вони також можуть використовувати sudo. Якщо ви повинні дозволити користувачеві root увійти, ви можете змусити його використовувати ключ SSH.
Відредагуйте файл конфігурації, щоб вимкнути вхід root.

Прокрутіть файл вниз, доки не побачите рядок, який починається з #PermitRootLogin prohibit-password , видаліть # на початку рядка.
- Якщо ви хочете запобігти входу root, замініть prohibit-password на no.
- Якщо ви дозволяєте root входити, але примусово використовуєте ключ SSH, залиште заборонений пароль без змін.
Збережіть зміни та перезапустіть демон SSH.
Останній крок
Звичайно, якщо вам не потрібен SSH, запущений на вашому комп’ютері, вимкніть його за допомогою такої команди:
sudo systemctl stop sshd
sudo systemctl disable sshd
Бажаю успіхів!