7 мер безопасности для защиты ваших серверов

Вступление

При настройке инфраструктуры запуск ваших приложений часто будет вашей главной задачей. Однако обеспечение правильной работы ваших приложений без учета потребностей безопасности вашей инфраструктуры может иметь разрушительные последствия в будущем.

В этом руководстве мы поговорим о некоторых базовых методах безопасности, которые лучше всего настраивать до или во время настройки приложений.

SSH ключи

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

SSH Keys diagram

Чтобы настроить аутентификацию по ключу SSH, вы должны разместить открытый ключ пользователя на сервере в специальном каталоге. Когда пользователь подключается к серверу, сервер запросит подтверждение наличия у клиента связанного секретного ключа. Клиент SSH будет использовать закрытый ключ для ответа таким образом, чтобы подтвердить владение закрытым ключом. Затем сервер позволит клиенту подключиться без пароля. Чтобы узнать больше о том, как работают ключи SSH, ознакомьтесь с нашей статьейhere.

Как они повышают безопасность?

С SSH любой вид аутентификации, включая аутентификацию по паролю, полностью зашифрован. Однако, когда разрешены входы на основе пароля, злоумышленники могут неоднократно пытаться получить доступ к серверу. Благодаря современным вычислительным возможностям можно получить доступ к серверу, автоматизируя эти попытки и пробуя комбинацию за комбинацией, пока не будет найден правильный пароль.

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

Насколько сложно это реализовать?

Ключи SSH очень просты в настройке и являются рекомендуемым способом удаленного входа в любую серверную среду Linux или Unix. На вашем компьютере может быть сгенерирована пара ключей SSH, и вы можете передать открытый ключ на ваши серверы в течение нескольких минут.

Чтобы узнать, как настроить ключи, следуйтеthis guide. Если вы все еще чувствуете, что вам нужна аутентификация по паролю, рассмотрите возможность внедрения на своих серверах такого решения, какfail2ban, чтобы ограничить возможность подбора пароля.

Брандмауэры

Брандмауэр - это часть программного обеспечения (или аппаратного обеспечения), которая контролирует, какие службы доступны в сети. Это означает блокирование или ограничение доступа ко всем портам, за исключением тех, которые должны быть общедоступными.

Firewall diagram

На типичном сервере по умолчанию могут работать несколько служб. Их можно разделить на следующие группы:

  • Государственные услуги, к которым может получить доступ любой человек в Интернете, часто анонимно. Хорошим примером этого является веб-сервер, который может разрешить доступ к вашему сайту.

  • Частные сервисы, к которым должен обращаться только выбранная группа авторизованных учетных записей или из определенных мест. Примером этого может быть панель управления базой данных.

  • Внутренние службы, которые должны быть доступны только изнутри самого сервера, не подвергая службу внешнему миру. Например, это может быть база данных, которая принимает только локальные соединения.

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

Как они повышают безопасность?

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

Правильно настроенный брандмауэр ограничит доступ ко всему, кроме определенных сервисов, которые вам необходимо оставить открытыми. Разоблачение всего лишь нескольких частей программного обеспечения уменьшает поверхность атаки вашего сервера, ограничивая компоненты, уязвимые для эксплуатации.

Насколько сложно это реализовать?

Есть много брандмауэров, доступных для систем Linux, некоторые из которых имеют более крутой кривой обучения, чем другие. В целом, однако, настройка брандмауэра должна занять всего несколько минут и должна произойти только во время первоначальной настройки вашего сервера или при внесении изменений в то, какие услуги предлагаются на вашем компьютере.

Простой выбор -UFW firewall. Другие варианты - использоватьiptables илиCSF firewall.

VPN и частные сети

Частные сети - это сети, которые доступны только определенным серверам или пользователям. Например, частные сети DigitalOcean включаютisolated communication between servers in the same account or team within the same region.
. VPN или виртуальная частная сеть - это способ создания безопасных соединений между удаленными компьютерами и представления соединения, как если бы оно было локальной частной сетью. Это позволяет настроить ваши службы так, как если бы они находились в частной сети, и подключать удаленные серверы через безопасные соединения.

VPN diagram

Как они повышают безопасность?

Использование частных сетей вместо общедоступных для внутренней коммуникации почти всегда предпочтительнее, учитывая выбор между ними. Однако, поскольку другие пользователи в центре обработки данных имеют доступ к той же сети, вы все равно должны принять дополнительные меры для защиты связи между вашими серверами.

По сути, использование VPN - это способ наметить частную сеть, которую могут видеть только ваши серверы. Общение будет полностью приватным и безопасным. Другие приложения могут быть настроены на передачу своего трафика через виртуальный интерфейс, который предоставляет программное обеспечение VPN. Таким образом, в общедоступной сети должны быть доступны только те услуги, которые предназначены для использования клиентами в общедоступном Интернете.

Насколько сложно это реализовать?

Использовать частные сети в центре обработки данных, который имеет такую ​​возможность, так же просто, как включить интерфейс во время создания вашего сервера и настроить ваши приложения и брандмауэр на использование частной сети. Имейте в виду, что частные сети всего центра обработки данных совместно используют пространство с другими серверами, которые используют ту же сеть.

Что касается VPN, начальная настройка немного сложнее, но повышенная безопасность того стоит для большинства случаев использования. Каждый сервер в VPN должен иметь общие данные безопасности и конфигурации, необходимые для установки и настройки безопасного соединения. После запуска VPN приложения должны быть настроены на использование VPN-туннеля. Чтобы узнать о настройке VPN для безопасного подключения вашей инфраструктуры, ознакомьтесь с нашимиOpenVPN tutorial.

Инфраструктура открытых ключей и шифрование SSL / TLS

Инфраструктура открытых ключей, или PKI, относится к системе, которая предназначена для создания, управления и проверки сертификатов для идентификации людей и шифрования связи. Сертификаты SSL или TLS могут использоваться для аутентификации различных объектов друг с другом. После аутентификации их также можно использовать для установления зашифрованной связи.

SSL diagram

Как они повышают безопасность?

Создание центра сертификации и управление сертификатами для ваших серверов позволяет каждому объекту в вашей инфраструктуре проверять личность других участников и шифровать их трафик. Это может предотвратить атаки «человек посередине», когда злоумышленник имитирует сервер в вашей инфраструктуре для перехвата трафика.

Каждый сервер может быть настроен на доверие централизованному центру сертификации. После этого любому сертификату, который подписывает орган, можно неявно доверять. Если приложения и протоколы, которые вы используете для связи, поддерживают шифрование TLS / SSL, это способ шифрования вашей системы без использования VPN-туннеля (который также часто использует SSL для внутреннего использования).

Насколько сложно это реализовать?

Конфигурирование центра сертификации и настройка остальной инфраструктуры открытого ключа может потребовать довольно много первоначальных усилий. Кроме того, управление сертификатами может создать дополнительную нагрузку на администрацию, когда новые сертификаты должны быть созданы, подписаны или отозваны.

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

Сервис Аудит

До сих пор мы обсуждали некоторые технологии, которые вы можете использовать для повышения вашей безопасности. Тем не менее, большая часть безопасности анализирует ваши системы, понимает доступные поверхности атаки и блокирует компоненты как можно лучше.

Аудит служб - это процесс обнаружения служб, которые работают на серверах в вашей инфраструктуре. Часто операционная система по умолчанию настроена на запуск определенных служб при загрузке. Установка дополнительного программного обеспечения может иногда вызывать зависимости, которые также запускаются автоматически.

Service auditing diagram

Аудит служб - это способ узнать, какие службы работают в вашей системе, какие порты они используют для связи и какие протоколы принимаются. Эта информация может помочь вам настроить параметры брандмауэра.

Как это повышает безопасность?

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

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

  • Эта служба должна работать?

  • Служба работает на интерфейсах, которые ей не нужны? Должен ли он быть привязан к одному 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, то служба принимает соединения на всех интерфейсах.

Файловый аудит и системы обнаружения вторжений

Аудит файлов - это процесс сравнения текущей системы с записью файлов и файловых характеристик вашей системы, когда она находится в исправном состоянии. Это используется для обнаружения изменений в системе, которые могут быть авторизованы.

File audit diagram

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

Как они повышают безопасность?

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

Эти стратегии являются одними из единственных способов быть абсолютно уверенными в том, что ваша файловая система не была изменена каким-либо пользователем или процессом. По многим причинам злоумышленники часто хотят оставаться скрытыми, чтобы они могли продолжать использовать сервер в течение длительного периода времени. Они могут заменить двоичные файлы скомпрометированными версиями. Проведение аудита файловой системы покажет вам, были ли какие-либо файлы изменены, что позволит вам быть уверенным в целостности вашей серверной среды.

Насколько сложно это реализовать?

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

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

Хотя это может увеличить нагрузку на администрацию, возможность проверить вашу систему на наличие заведомо исправной копии - это единственный способ убедиться, что файлы не были изменены без вашего ведома. Некоторые популярные системы аудита / обнаружения вторжений:Tripwire иAide.

Изолированные среды исполнения

Изоляция сред выполнения относится к любому методу, в котором отдельные компоненты выполняются в своем собственном выделенном пространстве.

Isolated environments diagram

Это может означать разделение ваших дискретных компонентов приложения на их собственные серверы или может относиться к настройке ваших служб для работы в средах или контейнерахchroot. Уровень изоляции сильно зависит от требований вашего приложения и реалий вашей инфраструктуры.

Как они повышают безопасность?

Изоляция ваших процессов в отдельных средах выполнения повышает вашу способность изолировать любые проблемы с безопасностью, которые могут возникнуть. Подобно тому, какbulkheads и отсеки могут помочь сдерживать пробоины в корпусе судов, разделение ваших отдельных компонентов может ограничить доступ злоумышленника к другим частям вашей инфраструктуры.

Насколько сложно это реализовать?

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

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

Заключение

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

Related