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

ИнTRОДУКЦИЯ

Большую часть времени вы будете работать над тем, чтобы развернуть свои приложения в облаке. Как часть вашего установления и развертывания процесса, важно включитьrobust иthoroughsecuritymeasures для ваших систем и приложений перед тем, как они станут доступными для общественности. ИмPLEMENTINGthe security measures in this tutorial before deploying your applications will ensure that any software that you run on your infrastructure has a secure base configuration, as opposed to ad-hoc measures that may be implemented post-deploy.

Этот руководство подчеркивает несколько практических методов, которые можно использовать при конфигурировании и настройке вашей инфраструктуры серверов. Этот список не является полным списком всех действий, которые можно предпринимать для безопасности ваших серверов, но это представляет вам начальную точку, которую вы можете развить. Примерно через год вы можете разработать более настраиваемый подход к безопасности, который соответствуетspecificneeds of your environments and applications.

Серверные ключи SSH

Протокол SSH, или безопасная оболочка, используется для администрации и коммуникации с серверами. При работе с сервером вы почти все время будете работать в сеансе терминала, который подключен к вашему серверу через SSH. Как альтерnative к авторизации по паролю, ключи SSH используют энCRYPTИЦЯ для безопасного получения доступности к вашему серверу и рекомендуются всем пользователям.

Система SSH ключей работает на основе пара ключей: частного и публичного. Частный ключ сохранен владельцем в тайне, а публичный ключ может быть размещен другим лицам. Это часто называется асимметрической энCRУПТИЦЫ, которую вы можете видеть также и в других местах.

Для конфигурации аутентификации по ключам SSH необходимо разместить свой публичный ключ на сервере в предполагаемый размер (обычно ~/.ssh/authorized_keys). Для получения более детальной информы о том, как работает аутентификация по базе ключей SSH, читайте Работая с протоколом SSH: расшифровка и прохождение процесса.

Как улучшают безопасность ключи SSH?

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

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

Как реализовать SSH-ключи

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

Настройка SSH ключей на вашем сервере может быть выполнена по принципам безопасности и упрощения аудита. Вы можете использовать описание как настроить SSH ключи для Ubuntu, Debian или CentOS.

Для любых случаев, которые требуют доступ по паролю или которые подвержены атаке «brute force», можно использовать решение, такое как fail2ban.

Использование правила «least privilege» является лучшим способом ограничить доступ. Это значит, что не стоит разрешать пользователю root входить директно через SSH. Предпочтительнее всего, воспользуйтесь инструментом, как sudo. Таким образом, применяется принцип «least privilege». После того, как вы установили и проверкнули работу аккаунта без privileгий, вы можете отключить доступ пользователей root к SSH, изменив директиву PermitRootLogin no в файле /etc/ssh/sshd_config на вашем сервере и затем перезапустить процесс SSH с командой, такой как sudo systemctl restart sshd.

Формирование фирменных правил

Приложение брандхоктов также является важным элементом безопасности.

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

На обычном сервере могут работать несколько служб по умолчанию, которые можно классифицировать в следующие групы:

  • Службы, которые могут быть доступны людям на всей интернете, часто анонимно. Пример этого — веб-сервер, который выдаёт ваш сайт.
  • Приватные службы, которые должны быть доступны только выбранной групой авторизированных акcountов или из определенных мест. Например, панель управления базами данных phpMyAdmin.
  • Внутренние службы, которые должны быть доступны только из самого самого сервера, без expose его к публичному интернету. Пример этого — база данных, которая должна принимать только подключения изнутри.

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

Как брандмауэры повышают безопасность?

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

Правильно настроенный брандмауэр будет ограничивать доступ ко всему, кроме конкретных сервисов, которые вам нужно оставить открытыми, обычно открывая только порты, связанные с этими сервисами. Например, SSH обычно работает на порту 22, а доступ через веб-браузер по HTTP/HTTPS обычно работает на портах 80 и 443 соответственно. Экспонирование только нескольких программных компонентов снижает уязвимую поверхность вашего сервера, ограничивая компоненты, которые могут быть подвержены эксплуатации.

Как реализовать брандмауэры

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

  • UFW, или Uncomplicated Firewall, устанавливается по умолчанию в некоторых дистрибутивах Linux, таких как Ubuntu. Вы можете узнать больше о нем в Как настроить межсетевой экран с помощью UFW на Ubuntu 20.04

  • Если вы используете Red Hat, Rocky или Fedora Linux, вы можете прочитать Как настроить межсетевой экран с использованием firewalld, чтобы воспользоваться их стандартными инструментами.

  • Многие программные брандмауэры, такие как UFW и firewalld, будут писать свои настроенные правила непосредственно в файл, называемый iptables. Чтобы leaned, как работать с настройками iptables напрямую, можете изучить Iptables Essentials: Common Firewall Rules and Commands
    . Заметите, что некоторые другие программы, реализующие правила портов самостоятельно, например Docker, также будут писать непосредственно в iptables, и могут конфликтовать с правилами, созданными с помощью UFW, поэтому умение читать настройки iptables в таких случаях может быть полезно.

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

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

Сети VPC

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

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

Некоторые провайдеры хостинга приassign будут, по умолчанию, назначить вам облачные серверы одну публичную сетевую интерфейсу и одну частную сетевую интерфейсу. Отключение вашей публичной сетевой интерфейсы части вашей инfrastructure будет разрешить этими системами соединяться друг с другом через свои частные сетевые интерфейсы внутри сети, что значит, что трафик между вашими системами не будет перенаправлен через общественный интернет, где мог бы быть открытым или intercepted.

Состояние временно выхода только нескольких определенных входных брандовок, также известных как ingress брандовок, будет служить единственным пунктом доступа между ресурсами вашей VPC сети и общественным интернетом, что даст вам более контроля и видимость над публичным трафиком, который подключается к вашим ресурсам. Современные системы orchestration, такие как Kubernetes, имеют чётко определённую концепцию входящих брандовок, поскольку они создают много частных сетевых интерфейсов по умолчанию, которые должны быть выбрасываемымиselectively.

Как ИмPLEMENTИровать ВПС Сети

Многие провайдеры инфраSTRUCTURE облака позволяют вам создать и добавить ресурсы в VPC сеть внутри их datacenters.

Примечание: Если вы используете DigitalOcean и желаете настроить свой собственный VPC gateway, вы можете последовать Guide on How to Configure a Droplet as a VPC Gateway для Debian, Ubuntu, and CentOS-based servers.

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

ВПС и частная сеть

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

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

Как ВПС улучшают безопасность?

Использование VPN является способом разбирать частную сеть, которую только ваши серверы могут видеть. Соединение будет полностью приватным и безопасным. Другие приложения могу быть настроены для пропускания своейtraffic черезvirtualinterface, который expose VPNsoftware. Таким образом, все услуги, которые должны быть использованыclient-side на общественной сети, должны быть открыты на общественной сети.

Как реализовать VPN-сети

Использование частных сетей, как правило, требует, чтобы Вы при первом развертывании серверов принимали решения о ваших сетевых интерфейсах и настраивали ваши приложения и брандмауэр для использования этих интерфейсов. By comparison, deploying VPNs requires installing additional tools and creating additional network routes, but can typically be deployed on top of existing architecture.

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

Если Вы используете Ubuntu или CentOS, Вы можете следовать руководству How To Set Up and Configure an OpenVPN Server on Ubuntu 20.04
.Wireguard
является другим популярным решением для VPN. В основном, VPN со схемой, схожей с ограничением входящих соединений серверов облака, используя ряд частных сетевых интерфейсов за несколькими входными точками, но в отличие от VPC-конфигураций, которые обычно являются основным сопротивлением инфраструктуры, VPN могут быть развернуты на более неофициальной основе.

Сервисный аудит

good security involves analyzing your systems, understanding the available attack surfaces, and locking down the components as best as you can.

Service auditing is a way of knowing what services are running on a given system, which ports they are using for communication, and which protocols those services are speaking. This information can help you configure which services should be publicly accessible, firewall settings, monitoring, and alerting.

Как Сервисный Аудит Усиливает Безопасность?

Each running service, whether it is intended to be internal or public, represents an expanded attack surface for malicious users. The more services that you have running, the greater the chance of a vulnerability affecting your software.

Once you have a good idea of what network services are running on your machine, you can begin to analyze these services. When you perform a service audit, ask yourself the following questions about each running service:

  • Should this service be running?
  • Is the service running on network interfaces that it shouldn’t be running on?
  • Проверять ли службы должны быть привязаны к интерфейсу сетевого подключения публичного или частного?
  • Мои правила бранча расстроены так, чтобы пропускать legitemate трафик этой службе?
  • Мои правила бранча запрещают трафик, который неlegitemate?
  • Имею ли я метод получения уведомлений о безопасности относительно ваnerabilities для каждого из этих служб?

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

Как импlementровать аудит служб

Чтобы аудитировать службы, которые работают на вашем системе, используйте команду ss. Пример команды, которая показывает название программы, PID и адресы, которые используются для слушания для ТСР и УСР трафика:

  1. sudo ss -plunt

Параметры p, l, u, n, и t работают как follows:

  • p показывает процессы, которые используют данный сокет.
  • l показывает только сокеты, которые активно слушают соединения.
  • u включает UDP сокеты (помимо TCP сокетов).
  • n показывает численные значения трафика.
  • Программы, которые работают на устройствах с сетевыми подключениями, используют разные типы сокетов для передачи данных. Сокеты TCP помимо UDP также применяются.

В выходе вы получите данные, подобные этому:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3)) tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=69226,fd=6),("nginx",pid=69225,fd=6)) tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=812,fd=4)) tcp LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=69226,fd=7),("nginx",pid=69225,fd=7))

Основными столбцами, которые важно рассматривать, являются столбцы Netid, Local Address:Port и имена процессов. Если адрес Local Address:Port равен 0.0.0.0, то служба принимает подключения на все интерфейсы сети IPv4. Если адрес равен [:], то служба принимает подключения на все интерфейсы сети IPv6. В примерном выходе выше SSH и Nginx также слушают все общественные интерфейсы, как в IPv4 так и в IPv6 сетевомstack.

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

Автоматические обновления

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

Как улучшают безопасность неотврженные обновления?

Имплементирование автоматических обновлений, то есть обновлений без внимания администратора, снижает уровень работы, который требуется для сохранности ваших серверов и укорочивает время, которое ваши серверы могут быть подверженными известным багом. В случае, когда возникает vulnerabilidad, котораяaffects software on your servers, your servers will be vulnerable for as long as it takes for you to run updates. Daily unattended upgrades will ensure that you don’t miss any packages, and that any vulnerable software is patched as soon as fixes are available.

Как ИмPLEMENTИРАть Неотврженные Обновления

Вы можете обратиться к Как сохранять обновления на серверах Ubuntu для ознакомления с основой применения неотврженных обновлений на Ubuntu.

Публичная ключевая инфраSTRУКЦИЯ и SSL/TLS ЭКСПЕДИЦИЯ

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

Как Развивается Безопасность?

Создание авторитета сертификаций (CA) и управление сертификатами для вашего сетевого инfrastructure позволяет каждому элементу внутри вашей инфраструктуры приvalidate других членов своих идентификаций и защитить свою транспортную доступность. Это может предоventivть случай, когда атакер имитирует сервер в вашей инфраструктуре, чтобы перехватить трафик.Man-in-the-Middle

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

Как ИмPLEMENTИровать РКИ

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

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

Если вы хотя бы раз в жизнь хотели бы создать свою собственную аудиторию, вы можете обратиться к руководству Как установить и настроить аудиторию сертификатов.

Итоги

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

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

Source:
https://www.digitalocean.com/community/tutorials/7-security-measures-to-protect-your-servers