7 заходів захисту сервера


Минулого разу ми розповідали про те, як вибрати сервери і як встановити їх в офісі своїми руками.

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

На цей раз поговоримо про основні заходи захисту, які варто зробити перед тим, як ви почнете користуватися вашими серверами.

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



Щоб налаштувати автентифікацію через SSH-ключі, ви повинні помістити відкритий ключ користувача в спеціальній директорії на сервері. Коли користувач підключається до сервера, SHH побачить запит з'єднання. Далі він використовує відкритий ключ, щоб створити і відправити виклик. Виклик — зашифроване повідомлення, на яке потрібен відповідний відповідь, щоб отримати доступ до сервера. Коректно відповісти на повідомлення зможе тільки власник закритого ключа. Тобто тільки він може прийняти виклик і створити відповідний відповідь. Відкритий ключ використовується для зашифровування повідомлень, але це ж саме повідомлення розшифрувати не може.

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

SSH-ключ підвищує безпеку?

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

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

Наскільки складно реалізувати SSH?

SSH-ключі досить легко налаштувати. Часто їх застосовують як спосіб віддаленого входу в серверні середовища Linux і Unix. Пара ключів генерується на вашому комп'ютері, потім ви можете передати відкритий ключ на сервери протягом декількох хвилин.

Ось основні кроки налаштування ключів:

1. Щоб згенерувати пару ключів на вашому комп'ютері, потрібно ввести команду:

ssh-keygen -t rsa

2. Як тільки ви введи команду генерації ключів, вам належить відповісти на пару питань, наприклад, де зберегти файл і яку ключову фразу вибрати. В цілому результат буде виглядати так:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+----------------------------+

3. Як тільки у вас будуть ключі, додайте відкритий ключ на віртуальний сервер, який збираєтеся використовувати. Вийде щось схоже на це:

The authenticity of host '12.34.56.78 (12.34.56.78) can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password: 
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
~/.ssh/authorized_keys

Якщо відчуваєте, що вам все ще потрібен пароль аутентифікації на ваших серверах, придивіться до рішень типу Fail2ban, які обмежують кількість спроб введення пароля.

Фаєрволи
Брандмауер — частина програмного або програмно-апаратного забезпечення, яка фільтрує мережевий трафік і контролює доступ до мережі. Це означає блокування або обмеження доступу до кожного відкритого порту, крім винятків.



На типовому сервері ряд компонентів фаєрволу запущений за замовчуванням. Їх можна розділити на групи:

— Відкриті служби, до яких може долучитися кожен в інтернеті, часто анонімно. Хороший приклад — веб-сервер, який дозволяє доступ до вашого сайту.

— Закриті служби, які доступні тільки з певних місць або авторизованим користувачам. Приклад — панель управління сайтом або базою даних.

— Внутрішні служби, доступні всередині самого сервера, без доступу до зовнішніх джерел. Наприклад, база даних, яка приймає тільки локальні з'єднання.

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

Як фаєрвол підвищує безпеку?

Брандмауери — невід'ємна частина будь-якої конфігурації сервера. Навіть якщо ваше програмне забезпечення має внутрішній захисний функціонал, фаєрвол забезпечить додатковий рівень захисту.

Ретельно налаштований брандмауер буде блокувати доступ до всього, для чого ви самі не призначите виняток. Уразливі для атаки компоненти, прикриті фаєрволом, зменшать поверхню атаки на сервер.

Наскільки складно реалізувати фаєрвол?

Є багато брандмауерів, доступних на LAMP-серверах. В цілому установка фаєрвола займе всього кілька хвилин і потрібна в двох випадках: при первинній настройці сервера і при зміні конкретних служб вже працюючого сервера.

У цій статті ми не будемо рекомендувати конкретні фаєрволи, це тема окремої розмови.

VPN і Private networking
VPN (віртуальна приватна мережа) — спосіб створити захищене з'єднання між віддаленими комп'ютерами і поточним з'єднанням. Дає можливість налаштувати свою роботу з сервером таким чином, ніби ви використовуєте локальну захищену мережу.



VPN підвищує безпеку?

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

Використання VPN, по суті, спосіб створити приватну мережу, яку можуть бачити тільки ваші сервери. Зв'язок буде повністю приватною і безпечною. Крім цього, VPN можна налаштувати для окремих додатків і служб, щоб їх трафік проходив через віртуальний інтерфейс. Таким чином, можна убезпечити процеси всередині компанії, відкривши громадський доступ тільки для клієнтської сторони, а внутрішню частину роботи сервера приховати VPN.

Наскільки складно реалізувати VPN?

Приватні мережі дата-центрів як послуга — це просто. Складність обмежена тільки параметрами вашого сервера, його інтерфейсом, фаєрволом і додатками, з якими ви працюєте. Майте на увазі, що в дата-центрах використовуються великі приватні мережі, які об'єднують безліч серверів, не тільки ваших.

Що стосується VPN, початкова установка трохи складніше, але підвищена безпека коштує витрачених коштів в більшості випадків. Кожен сервер VPN необхідно встановити і налаштувати, використовуючи загальні дані та конфігурації безпеки, необхідні для захищеного з'єднання. Після того, як ви запустите VPN, потрібно налаштувати програмне забезпечення на використання VPN-тунелю.

PKI і SSL/TLS шифрування
Інфраструктура відкритих ключів (PKI) — сукупність систем, які призначені для створення, управління і перевірки сертифікатів для ідентифікації осіб та шифрування переданих даних. Після аутентифікації, вони також можуть бути використані для шифрованого зв'язку.



SSL підвищує безпеку?

Створення центру сертифікації та управління сертифікатами для серверів дозволяє кожному в межах серверної інфраструктури шифрувати свій трафік і використовувати перевірки ідентичності інших користувачів. PKI допоможе запобігти атаки посередника (man-in-the-middle), коли зловмисник імітує поведінку сервера у вашій інфраструктурі, щоб перехопити трафік або підмінити повідомлення.

Кожен сервер можна налаштувати таким чином, щоб усі учасники проходили аутентифікацію через засвідчує центр, який створює пару ключів: відкритий і закритий. УЦ може роздавати відкриті ключі всім учасникам, у яких низький рівень довіри один до одного, але високий до УЦ. Тільки останній може підтвердити належність відкритого ключа власнику.

Якщо ви використовуєте програми і протоколи, які підтримують TLS/SSL шифрування, то це спосіб знизити витрати на VPN (які часто використовують SSL).

Наскільки складно реалізувати SSL?

Налаштування центру сертифікації і решти інфраструктури може зажадати від вас багато початкових зусиль. Крім того, керування сертифікатами — додаткове навантаження на адміністрування: нові сертифікати треба створювати, підписувати і анулювати при необхідності.

Для багатьох користувачів впровадження повноцінної інфраструктури відкритих ключів має більше сенсу тільки при значному зростанні інфраструктури. Зв'язок через VPN може бути хорошої заходом захисту серверів, поки компанія не досягне точки, де без PKI і додаткових вкладень в адміністрування не обійтися.

Послуги аудиту
Досі ми говорили про технології, які підвищують захист серверів. Проте, велика частина безпеки лежить на аналізі вашої системи. Розуміння доступних поверхонь атак і того, які компоненти системи потрібно блокувати, дадуть вам кращий результат захисту.

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

Аудит допоможе вам проаналізувати які порти використовує система, які приймаються протоколи. Ця інформація може допомогти налаштувати ваш брандмауер.

аудит підвищує безпеку?

Сервери запускають багато процесів для внутрішніх цілей і для обробки зовнішніх даних. Кожен процес — потенційна загроза атаки на сервер.

Після того, як ви отримаєте уявлення про те, як саме працює ваша інфраструктура, приступайте до аналізу. Для кожного процесу є декілька перевірочних питань:

— Чи повинен сервіс запускатися без дозволу?
— Запущений сервіс в інтерфейсі, в якому немає необхідності? Чи повинен він бути прив'язаний до одного IP?
— Правильно структурована робота файрвола, якщо пропускає трафік цього процесу?
— Не пропускає ваша файрвол небажаний трафік, що виходить від конкретного процесу?
— Чи є у вас спосіб отримувати повідомлення безпеки у разі вразливості для кожної із служб?

Аудит такого типу — обов'язкова практика налаштування будь-якого нового сервера.

Наскільки складно реалізувати аудит?

Базовий аудит дуже простий. Ви можете дізнатися яка служба прослуховується на кожному інтерфейсі використовуючи команду netstat. Простий приклад, який показує ім'я програми, ідентифікатор процесу (PID), адреси для прослуховування TCP і UDP трафіку:

sudo netstat -plunt

Ви побачите приблизно наступний результат:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 919/nginx 
tcp6 0 0 :::22 :::* LISTEN 887/sshd 
tcp6 0 0 :::80 :::* LISTEN 919/nginx

Зверніть увагу на стовпці Proto, Local Address і PID/Program name. Якщо там значиться 0.0.0.0, тоді служба приймає з'єднання на всіх інтерфейсах.

Аудит файлів і система виявлення вторгнень
Аудит файлів — процес порівняння стану поточної системи з записами файлів і характеристиками вашої системи, коли вона знаходиться в справному стані. Метод застосовується для виявлення змін при яких потрібна авторизація.



Система виявлення вторгнень (IDS) — частина програмного забезпечення, яка контролює систему або мережу на несанкціоновані дії. Багато хостингові IDS використовують аудит файлів як метод перевірки на зміни в системі.

аудит файлів підвищує безпеку?

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

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

Наскільки складно реалізувати аудит файлів?

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

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

З одного боку аудит — це навантаження на адміністрування, з іншого — це надійний спосіб захистити ваші дані від зміни.

Ізольована середа виконання
Спосіб запуску компонентів системи в їх власному виділеному просторі.



З допомогою пісочниці можна відокремити ваші дискретні компоненти додатків на окремі сервери. Рівень ізоляції значною мірою залежить від системних вимог додатків та їх місця у вашій інфраструктурі.

Як ізольована середа виконання підвищує безпеку?

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

Наскільки складно реалізувати ізольоване середовище?

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

Налаштування середовища chroot для кожної частини дає певний рівень ізоляції, але не повний. Кращий варіант — переміщення компонентів на виділені машини, це значно простіше, але більш затратно.

висновок

Технології та заходи, описані вище — лише деякі удосконалення, які ви можете зробити, щоб захистити ваші сервери. Важливо відзначити, що впровадження подібних способів захисту дуже важливо і чим раніше тим краще, тому що чим довше ви чекаєте, тим менш ефективні засоби безпеки.

У даній статті ми розглядаємо питання захисту сервера з теоретичної точки зору. Будемо раді доповненнями від практиків. Давайте складемо корисний мануал разом!

Розкажіть, які заходи захисту використовуєте ви у своїй практиці і чому вважаєте їх ефективними?
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.