Category: Uncategorized

  • Безопасный доступ к 100 аккаунтам AWS

    Безопасный доступ к 100 аккаунтам AWS

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

    Сегмент начался с единственного аккаунта AWS, а в прошлом году завершился наш переход к dev, stage, prod и ops аккаунтам. В течение последние нескольких месяцев мы увеличивались в среднем на один новый аккаунт AWS в неделю или два и планируем расширяться на командные и системные аккаунты. Наличие многих “микроаккаунтов” обеспечивает превосходную изоляцию безопасности между системами и преимущества надежности, ограничивая радиус уничтожения ограничений скорости AWS.авторизация AWS

    Когда в Сегменте было всего несколько учетных записей, работники входили в учетную запись ops AWS, используя собственные e-mail, пароль и 2FA символ. Потом работники присоединились к роли ops-admin в учетных записях dev, stage и prod, используя AssumeRole api.использование AWS

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

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

    Разработка масштабируемой архитектуры IAM

    В Сегменте используется Okta как провайдер удостоверений (identity), который обращался за справкой к их справочнику по интеграции по управлению аккаунтами AWS, но улучшился с небольшими изменениями для достижения лучшего UX работников. Интеграционное руководство рекомендует связывать провайдера удостоверений с каждой учетной записью AWS, но таким образом нарушается встроенность AWS в поддержку переключения учетных записей и это усложнило контроль того, к какой роли команда имеет доступ.

    Вместо этого работники используют нашего провайдера удостоверений для связи с нашими ops аккаунтами, а затем используют простой базовый элемент assume-role API службы, чтобы связаться с каждой учетной записью, к которой у них есть доступ. При использовании нашего провайдера идентификационных данных, каждая команда имеет разную роль в нашей учетной записи хаба, кроме этого, роль каждой команды имеет доступ к разным ролям в каждой учетной записи. Это классическая осевая (англ. hub-and-spoke) архитектура.архитектура с AWS

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

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

    resource "aws_iam_role" "okta-role" {
      name               = "${var.name}"
      assume_role_policy = <<EOF
    {
      "Version": "2012-10-17",
      "Statement": [
        {   
          "Effect": "Allow",
          "Principal": {
            "Federated": "${var.idp_arn}"
          },  
          "Action": "sts:AssumeRoleWithSAML",
          "Condition": {
            "StringEquals": {
              "SAML:aud": "https://signin.aws.amazon.com/saml"
            }   
          }   
        }   
      ]
    }
    EOF
    }
    resource "aws_iam_role_policy_attachment" "okta-attach" {
      policy_arn = "${var.policy_arn}"
      role       = "${aws_iam_role.okta-role.name}"
    }

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

    Одним конкретным и простым примером детализированной политики является роли нашей команды о финансовом планировании и анализе, при этом команда пристально следит за нашими расходами AWS. Наша FP&A команда имеет доступ к информации о счете и информации о нашем зарезервированном объеме.

    module "fpa" {
      source = "git@github.com:segmentio/terracode-access//modules/okta-role"
      name       = "fpa"
      idp_arn    = "${module.idp.idp_arn}"
      policy_arn = "arn:aws:iam::aws:policy/job-function/Billing"
    }
    resource "aws_iam_policy" "fpa_reserved_policy" {
      name        = "fpa_reserved_policy"
      description = "FP&A team needs ability to describe our reserved instances."
      policy = <<EOF
    {
      "Version": "2012-10-17",
      "Statement": [
        {   
          "Action": [
            "ec2:GetHostReservationPurchasePreview",
            "ec2:DescribeReservedInstancesModifications",
            "ec2:DescribeReservedInstances",
            "ec2:DescribeHostReservations",
            "ec2:DescribeReservedInstancesListings",
            "ec2:GetReservedInstancesExchangeQuote",
            "ec2:DescribeReservedInstancesOfferings",
            "ec2:DescribeHostReservationOfferings",
            "ec2:CreateReservedInstancesListing"
          ],  
          "Effect": "Allow",
          "Resource": "*" 
        }   
      ]
    }
    EOF
    }
    resource "aws_iam_role_policy_attachment" "fpa_reserved_attach" {
      role       = "fpa"
      policy_arn = "${aws_iam_policy.fpa_reserved_policy.arn}"
    }

    Однако, у команды FP&A нет доступа к нашим разговорным учетным записям. Единственная команда, которой нужен полный доступ к большей части нашей архитектуры и всем нашим учетным записям, – это команда основы и надежности, которая принимает участие в развертыванию по необходимости. Мы предоставляем нашей базовой команде как ReadOnly роль, так и роль администратора во всех наших учетных записях.

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

    Okta позволяет каждой группе получить разные роли IAM в учетной записи хаба и при использовании их UI мы можем дать приложение “Amazon Web Services” команде FP&A и ограничить их доступ к роли fpa, которую мы для них создали в учетной записи хаба.

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

    Поддержание удобства пользования с aws-okta

    Единственное,  что было замечательно в нашей старой установке IAM это то, что каждый работник с доступом к AWS мог пользоваться AWS API с их локальных компьютеров при наличии хранилища. У каждого работника имя пользователя и пароль IAM, надежно хранимый в компьютерной связке ключей. Однако, доступ к AWS полностью через Okta – это значительная перемена в нашем старом направлении работы.

    Наша команда оснащения приняла вызов и создала (близкое) понижение замены для aws-хранилища, которое наша команда инженеров использовала экстенсивно, названный aws-okta. aws-okta сейчас является открытым ресурсом и доступным на github.

    Качество aws-okta является основной причиной того, что инженеры сегментов смогли беспрепятственно удалить свои учетные данные AWS. Работники могут выполнять команды при помощи полученных разрешений и ролей точно так же, как когда они использовали aws-хранилище.

    $ aws-okta exec hub -- aws s3 ls s3://<some-bucket>
    
    2018/02/08 15:40:22 Opening keychain /Users/ejcx/Library/Keychains/aws-okta.keychain
    INFO[0004] Sending push notification...

    Для аутентификации с Okta, aws-okta нужно знать “id приложения” вашего Okta. Мы взяли на себя смелость на расширение файла ~/.aws/config ini, чтобы добавить необходимый id.

    [okta]
    aws_saml_url = home/amazon_aws/uE2R4ro0Gat9VHg8xM5Y/111

    Когда в сегменте было только несколько аккаунтов AWS и роль ops админа, все инженеры сегмента делили ~/.aws/config. Как только каждая команда получила доступ к разным аккаунтам и системам, нам понадобилась система для управления ~/.aws/config каждой команды. Нашей системе также нужен способ обновить доступ, который работники быстро получили при создании новых учетных записей и ролей.

    Мы решили интегрировать данное решение близко к предшествующему методу, который Сегмент создал. Каждая настройка команды хранится в git repo, в которой находится dotfiles нашей компании. Каждая команда может инициализировать их конфигурацию aws при помощи нашего внутреннего инструмента, названного robo, который является инструментом для совместного использования полезных команд между сотрудниками.

    $ SEGMENT_TEAM=foundation robo config.aws
    ✔ : Your old aws config has been backed up in /tmp/awsconfig-318c16acc2b25bed2eb699e611462744
    ✔ : Your aws config was successfully updated.
    $ shasum ~/.aws/config                   
    c2734b78e470c51a26d8c98e178d4ec2ed1b1b06  /Users/ejcx/.aws/config
    
    $ SEGMENT_TEAM=platform robo aws.config
    ✔ : Your old aws config has been backed up in /tmp/awsconfig-d5688401634de0e8b2f48b11377d0749
    ✔ : Your aws config was successfully updated.
    
    $ shasum ~/.aws/config                 
    283053d6f5a23ca79f16c69856df340b631d3cdf  /Users/ejcx/.aws/config

    Это было только возможно добавить, потому что у всех инженеров Сегмента уже была переменная среды, названная SEGMENT_TEAM, которая обозначает команду, частью которой является инженер. Выполнение robo aws.config клонирует dotfiles repo, сохранит старый ~/.aws/config и инициализирует новую конфигурацию для их команды.

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

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

    После ответа на уведомление о нажатии Duo aws-okta откроет браузер и войдет в систему указанной роли всего через несколько секунд. Эта функция поддерживается функцией AWS Custom Federated Login, но по ощущениям больше похоже на волшебство при его использовании, что упрощает вход.

    За пределами 100 учетных записей

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

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

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

    Такое или подобное решение, можем реализовать для вашей задачи, обращайтесь office@itfb.com.ua

  • Чем лучше платный VPN

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

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

    Почему стоит купить VPN?

    Интернет-юзер, решивший воспользоваться “бесплатной” или условно-бесплатной VPN, быстро обнаружит критические недостатки такого решения:

    1. Обилие рекламы, которой беспощадно “нагружает” пользователей провайдер.
    2. Вредоносное ПО, которое легко “подхватить” в малозащищенной среде таких впн.
    3. Ограничения скорости по соединения и объемам трафика.
    4. Отсутствие прозрачных и понятных пользователю механизмов защиты. Все условно-бесплатные VPN подкупают своей якобы финансовой выгодностью, но оставляют за собой возможность логировать и мониторить абсолютно все, чем обмениваются пользователи. Причем, без их ведома. Проверить же, насколько честны провайдеры, которые обещают “отсутствие логов”, на практике невозможно.
    5. Сервера “бесплатных” VPN-провайдеров вполне доступны для блокирующих механизмов в сети. Они легко вычисляются в рамках масштабных блокировок и вносятся в черный список, потому большинство “бесплатников” просто не работают.

    Почему вам нужно купить VPN у нас?

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

    Преимущества платного VPN:

    1. Отсутствие рекламы.
    2. Отсутствие ограничений по скорости и объему трафика.
    3. Надежные алгоритмы защиты трафика.

    Приобрести VPN у нас – значит:

    1. получить комплексное решение с оптимальной защитой при передаче шифрованных данных;
    2. получить бесперебойно работающую VPN, без багов и технических проблем;
    3. заплатить только один раз – и использовать продукт неограниченное время, без платных продлений.

    Важный факт: купить VPN у нас – значит также быть защищенным от “шантажа” провайдеров, которые терроризируют рекламой и побуждениями приобрести другие IT-продукты, выдвигают какие-либо финансовые требования по обновлению и настройке продукта, ограничивают функционал.

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

    Множество клиентов на практике убедились в выгодности и практичности нашего предложения. Станьте одним из них, не рискуйте безопасностью ваших данных! Обращайтесь office@itfb.com.ua

  • Сценарии взломов и атак

    Опишем основные виды сценариев попыток взлома корпоративных сетей.

    Преодоление периметра

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

    • Уязвимости содержания учетных записей, а также паролей;
    • Уязвимости web-приложений;
    • Недостатки фильтрования трафика;
    • Недостатки координации слабых мест и обновлений;
    • Недостаточная информированность пользователей в вопросах безопасности;
    • Изъяны конфигурации и разграничения доступов.

    Каждый из этих видов обособлено или в комбинации позволял достичь поставленной цели.

    Схема 1 – Сопоставление учетных данных. Интерфейсы управления и доступа удаленно

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

    Трудности могут возникнуть с фильтрацией по IP адресам. Но и в этом случае, злоумышленник найдет другие пути – дискредитирует иные узлы в сети и начнет атаку не со своего адреса, а с дискредитированных узлов. Иногда доступ с максимальными правами можно получить без ввода пароля. Иногда в качестве пароля от SSH и Telnet встречаются такие комбинации: root: root, root:toor, admin:admin, test:test.

    Для доступа по RDP используются локальные или доменные учетные данные: Administrator:P@ssw0rd, Administrator:123456, Administrator:qwerty123 или гостевая учётка Guest с пустым паролем.

    Советы по защите

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

    Интерфейсы администрирования web- серверов и СУБД

    В случае с SSH и Telnet нужно прописывать (задавать) пароль, а для СУБД и web-серверов обычно пароли настроены. На практике не все администраторы меняют эти пароли либо меняют на простые.

    СУБД: sa:sa, sa:P@ssw0rd, oracle:oracle, postgres: postgres, mysql:mysql, с пустым паролем;

    А для серверов Tomcat – tomcat:tomcat, tomcat:admin. Посредством Tomcat web Application Manager можно загрузить в виде архива файлы типа War и это может быть web приложение или web программка командной строки для выполнения команд ОС.

    Доступы к базе данных так же открывает массу возможностей в том числе выполнять на сервере команды с правами СУБД. И этого хватит для атак на другие блоки сети.

    Иной вариант развития событий – использование уязвимостей в ОС. Например, некий пользователь NT service\MSSQLSERVER обладал правами Selmpersonate Privilege, которые позволяют ему с помощью «токена делегирования» (impersonationtoken) завладеть правами любого пользователя из доступных.

    Советы по защите

    • Мониторинг уровня прав и привилегий для использования пользователями и системами;
    • Строгая парольная политика и ограничение доступа из интернета;
    • Ограничение количества IP адресов, с которых можно подключиться к администрированию Web-сервера.

    Схема 2 – Использование web- уязвимостей

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

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

    Советы по защите

    • Применение строгой парольной политики;
    • Белые списки для проверки файлов, загружаемых на сервер;
    • Установка фильтров на передаваемые пользователями данные на уровне кода приложения;
    • Применение web application firewall.

    Схема 3 – Применение известных уязвимостей

    Атака на уязвимый протокол

    Атака на компонент системы Java Platform Debug Architecture (JPDA). Он не обеспечивает опознавание и шифрование трафика. Нарушитель может этим воспользоваться и взять доступный ресурс для выполнения команд ОС. Так же, служба, использующая JDWP, обычно имеет максимальные права, что открывает доступ нарушителю для получения контроля.

    Советы по защите

    • Отладочные интерфейсы не должны быть открыты для внешних сетей.

    Атака на уязвимое программное обеспечение

    Применение устаревших версий ПО является самым популярным изъяном в безопасности. Приведем основные версии систем и их уязвимостей:

    • Windows Server 2003 SP1, SP2 (CVE-2012-0002);
    • Nginx 1.3 11 (CVE-2013-2028);
    • PHP 5.3.8, 5.3.28, 5.5.1 и другие версии (CVE-214-3515, CVE-2011-3379, CVE-2013-6420), ProFTPD FTP Server 1.3.3a (CVE-2011-4130, CVE-2010-4221), OpenSSH Server 4.3 (CVE-2006-5051, CVE-2006-5052).

    Советы по защите

    • Своевременное обновление ПО и безопасности для ОС;
    • Не оглашать версии используемых систем.

    Схема 4 – Социальная инженерия

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

    Советы по защите

    • Проявление бдительности!
    • Никогда не сообщать свои учетные данные;
    • Применение антивирусных решений;
    • Повышение осведомленности среди работников.

    Схема 5 – Открытые данные

    На страницах web- приложений можно выявить ценную информацию, доступную в открытом виде – учетные записи пользователей, версии ПО и сервера и даже исходные коды web- приложений. Нарушитель может получить доступ к данным, например, к протоколу SSH, для подключения к СУБД или интерфейсу администратора Web приложения.

    Советы по защите

    • Администраторы должны мониторить данные доступные на страницах web-ресурсов;
    • Обеспечить разделение доступа к данным и директориям на серверах, которые доступны извне.

    Схема 6 – Выход из песочницы

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

    Советы по защите

    • Пересмотр вопроса о размещении корпоративных ресурсов на периметре сети;
    • Введение строгой парольной политики;
    • Разграничить доступ к директориям с минимальными правами.

    Получение контроля над КИС

    Атаки на данные сетей производятся от двух типов злоумышленников:

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

    Схема 1 – Подбор доменной учетной записи

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

    Советы по защите

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

    Схема 2 – Атаки на протоколы сетевого и канального уровней

    В случае, когда не получилось подобрать учетные данные либо список идентификаторов пользователей домена, то производится анализ протоколов сети. Проводят схему действий – «человек посередине» для перехвата трафика или атака на протоколы NBNS и LLMNR для перехвата идентификаторов и хешей паролей. Результатом атаки «человек посередине» может быть перехвачены значения Challenge-Response для пользователей домена и по значениям подобрать пароль. В случае успеха, нарушитель сможет прослушивать и изменять трафик, а также получать опознавательные данные пользователей и с их помощью проходить аутентификацию в других узлах.

    Советы по защите

    • Если в этих протоколах нет необходимости, то отключить их;
    • Использовать статические ARP- записана шлюзах, функции систем обнаружения атак или утилиты arpwatch;
    • Использовать функции Dynamic ARP Inspection коммутаторов Cisco.

    Схема 3 – Атака SMB Realy

    В отличии от схемы 2, есть известная атака SMB Realy. Данная схема позволяет злоумышленнику перехватить идентификационные данные, которые передаются от одного узла к другому, в процессе обмена данными NTLM Chellenge-Response. Эта схема давно известна и компания Microsoft в 2008 году выпустила бюллетень безопасности MS08-068, но возможность атак в домене останется, если на них не реализована подпись SMB пакетов – SMB Signing.

    Советы по защите

    • Реализация подписи SMB пакетов – SMB Signing на всех узлах;
    • Отключение протоколов NBNS и LLMNR;
    • Регулярные обновления безопасности ОС.

    Cхема 4 – Чтение памяти процесса

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

    Советы по защите

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

    Схема 5 – Групповые полититки

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

    Советы по защите

    • Рекомендуется отказаться от такого метода создания политик;
    • В случае применения, воспользоваться на ограниченное время, понимая весь риск.

    Схема 6 – Золотой билет Kerberos

    Этот вариант очень опасен. Он основан на генерации билета доступа Kerberos пользователя на основе NTLM хеша служебной записи krbtgt и возможна из-за исключительности протокола Kerberos и операционных систем Windows. Этот протокол базируется на tiket системе – на предоставлении билетов доступа к ресурсам доменной структуры. Т.е речь идет о получении максимальных прав.

    Советы по защите

    • Обеспечить защиту привилегированных учетных записей;
    • Обеспечить защиту резервных копий службы каталогов;
    • Обеспечить защиту рабочих станций и серверов от атак с использованием утилит для получения учетных данных в открытом виде (Mimikatz).

    Схема 7 – Атака на двухфакторную идентификацию

    Двухфакторная идентификация сама по себе не рецепт от взлома, но одна из необходимых условий. В основе двухфакторной идентификации лежит принцип наличия у пользователя, например, смарт карты, пин-кода или пароля. Когда в конфигурации учетной записи домена устанавливается элемент, отвечающий за идентификацию по смарт карте, этой учетной записи присваивается NT –хеш. Так вот, его значение вычисляется случайно и не меняется. Опасность состоит в том, что нарушитель может получить этот NT –хеш и использовать для идентификации (иметь смарт карту и знать пароль уже не нужно).

    Советы по защите

    • Применение системы Remote Credential Guard.

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

    Наша компания, может реализовать защиту ваших систем и сетевого окружения, обращайтесь office@itfb.com.ua

  • Дефрагментация MySQL

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

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

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

    Есть несколько вариантов дефрагментации баз данных в том числе и таблиц INNODB в MySQL:

    Первый вариант так называемых бэкап-восстановление:

    • выполняется резервное копирование базы данных с помощью mysqldump
    • удаление БД, drop database
    • создание новой БД с таким же именем
    • восстановление из бэкапа данные

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

    Выполнить дефрагментацию базы данных MySQL.

    По умолчанию MyIsam применима процедура дефрагментации, а вот для InnoDB должна быть включена опция  innodb_file_per_table, после чего мы с легкостью можем использовать данную команду

    OPTIMIZE TABLE <table_name>

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

    OPTIMIZE TABLE, рекомендовано использовать при удалении, обновлении и добавлении большого количества записей в таблицы баз.

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

    Третий вариант использовать команду mysqlcheck, можно использовать с такими параметрами

    mysqlcheck -A -o

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

    Размер одной таблицы в базе ДО – 212,6 Гб. ПОСЛЕ – 113,8 Гб.

    Нужна помощь в поддержке баз данных и оптимизации производительности сервера, обращайтесь office@itfb.com.ua

  • Оркестровка Kubernetes, часть 2

    Продолжение статьи

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

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

    За время, прошедшее с тех пор, платформа оркестровки Kubernetes обрела богатую экосистему, куда входят компании, положившие Kubernetes в основу своей деятельности. Как это происходило?

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

    Теперь о втором факторе, который, на мой взгляд, во многом способствовал успеху. Мы создали надежную организацию по разработке Cloud Native Computing Foundation. Многие положения ее документов гарантировали, что после вхождения Kubernetes в состав этой организации она не ограничится работой с Kubernetes. Ее цель состояла в создании действительно богатой экосистемы проектов с открытым исходным кодом, которые могли бы объединяться вокруг нее и заполнять оперативные бреши, не закрытые платформой Kubernetes.

    Наверное, когда вы работали в Google, вам и в голову не приходило, что по прошествии столь длительного времени платформа Kubernetes будет по-прежнему приносить вам средства к существованию?

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

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

    Помощь разработчикам в деле внедрения кода в производство — это как раз то, чем компания Heptio занимается сейчас, верно?

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

    На конференции Container World вы выступили с одним из основных докладов. А ваш коллега по компании Heptio Райан Шнейдер провел семинар по теме «Введение в Kubernetes»?

    Да. Одно из направлений нашей работы в Heptio — обеспечивать учебными материалами людей, которые находятся на разных участках своего пути к званию «кьюбернавтов». Так вот, Райан провел семинар, в ходе которого пользователи, действительно желающие вникнуть в новую технологию и понять, в чем ее преимущества, надеюсь, узнали много нового.

  • Безопасное подключение к серверам

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

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

    ЗАДАЧА:

    • Обеспечить контроль доступа пользователей (администраторов) к серверам. Выполнить разграничения прав. Полный доступ к серверу предоставить ограниченной группе.
    • Настроить логирования действий пользователей (администраторов) на каждом сервере.
    • Реализовать гибкое управление доступом ко всем серверам, т.е. предоставление доступа ко всем серверам и лишение прав пользователя в одной точке входа.

    ВАРИАНТ РЕАЛИЗАЦИИ

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

    Для реализации поставленной задачи предлагаем использовать LDAP сервер для разграничения и управления правами пользователей

     LDAP означает легковесный протокол доступа к каталогу (Lightweight Directory Access Protocol). Каталог — это специализированная база данных, созданная для частых запросов, но нечастых обновлений. LDAP обеспечит централизованное управление пользователями, хранение всех учетных записей пользователей в одном местонахождении. Так же на нем возможно более гибкое управление группами пользователей, группами серверов, sudo и командами, которые могут выполнять пользователи.
    В качестве LDAP сервера можно использовать OpenLDAP. 

    • Выполняем установку и настройку OpenLDAP сервера (здесь будет выполняться подключение и отключение пользователей)
    • Настройка входов по ключу. В случае если LDAP сервер не будет доступен, сервера клиенты LDAP хранят в кеше, информацию о доступе пользователей.
    • Логирование действий пользователя на сервере будет производится в стандартном файле ~/.bash_history на клиент серверах

    РЕАЛИЗАЦИЯ:

    1. Установка OpenLDAP на сервер с CentOS, который будет выступать в роли сервера аутентификации, настройка LDAP сервера и установка FusionDirectory (fork Gosa) для управления пользователями через WEB интерфейс.
    2. Подключаем доменное имя для LDAP сервера. Можно не использовать реальное доменное имя.
    3. Установка и настройка серверов-клиентов, подключение к LDAP, установка asciinema, /etc/ssh/sshd_config ForceCommand asciinema rec – данная система позволит сразу после логина пользователя в ssh – сохранять все что он вводил в консоли в json формате (настройка займет на каждого клиента по 25-30 минут).
    4. Тестирование работы установленных сервисов, дополнительная настройка системы.
    5. Разработка процедуры настройки клиента на сервере, для возможности дальнейшего применения на новых серверах.

    Возникли вопросы? В таком случае, вы можете написать нам office@itfb.com.ua

  • Оркестровка Kubernetes, часть 1

    На конференции Container World один из последних докладов, «Контейнеры и оркестраторы: как обойти блокировки и получить максимальную отдачу от решений, базирующихся на программах с открытым исходным кодом», сделал Крейг МакЛаки, один из основателей и главный управляющий Heptio, начинающей компании, которая специализируется на разработке платформы оркестровки Kubernetes.

    Что такое Kubernetes, Маклаки знает не понаслышке. Некогда он вместе с Джо Беда, вторым сооснователем Heptio, а также с Бренданом Бернсом, ныне занимающим важную инженерную должность в Microsoft, работали в компании Google. И вот лет пять назад они совместными усилиями разработали Kubernetes и выпустили его как продукт с открытым исходным кодом. До этого Маклаки вместе с Беда разработал Google Compute Engine, поставляемый корпорацией Google продукт категории Infrastructure-as-a-Service. Кроме того. Маклаки инициировал создание фондом Linux Foundation организации Cloud Native Computing Foundation, которая сегодня считается колыбелью платформы оркестровки Kubernetes. Недавно редакции ITPro Today представилась возможность встретиться с Маклаки, и мы расспросили его о тех днях, когда он работал в Google, а платформа Kubernetes делала только первые шаги.

    Представители Google впервые упомянули о Kubernetes в 2014 году, но вы, Джо Беда и Брендан Бернс в то время уже работали над проектом. Могли бы вы подробнее рассказать о том, как все начиналось?

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

    У нас был продукт Compute Engine, который мы построили, а также Арр Engine, современное изделие категории Platform-as-a-Service (PaaS), включающее парадигмы Twelve-Factor Арр. Но между ними явно существовал разрыв, и мы занялись поисками некоего объединяющего компонента, который имел бы достаточно высокий уровень для того, чтобы устранить неопределенность инфраструктуры, но достаточно низкий для того, чтобы потребители могли выполнять на нем практически любые программы.

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

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

    Помимо прочего, нас попросили подготовить демонстрационные материалы для этакого массового интерактивного собрания в Интернете, где мы могли бы рассказать о том, что происходит сейчас в отрасли, и поделиться с аудиторией некоторыми идеями. Брендан менее чем за день соорудил необходимый дсмоматсриал с использованием технологии Docker для выполнения рабочих нагрузок в коллекции инфраструктурных виртуальных машин Google. Я посмотрел его и сразу понял: это именно то, что нам нужно. Получился такой персональный миникластер из виртуальных машин, и в нем подкупало то, что он не обязательно следовал за определенными технологиями, как, скажем, Mesos. Это решение давало пользователям возможность найти свой вариант более прогрессивного подхода к медленному выполнению рабочих нагрузок, я бы сказал, по чайной ложке, сшивая ряд виртуальных машин так, чтобы в итоге получалась почти идеальная компьютерная ткань.
    Вот здесь-то и зародилась исходная идея Kubcrnctcs. Когда Джо, Брендан и я рассуждали об этом, рассматривали подходы, главная мысль заключалась в том, что мы не будем использовать гигантские горизонтальные пристройки, подобные тем, что применяются в Mesos. Мы пойдем другим путем, основываясь на прецедентах, которые используют традиционные средства управления программной средой, такие как Puppet, Chef и Ansible. И на этих прецедентах будем строить систему. Здесь мы взяли паузу: нужно было убедиться, что все расчеты правильны.

    А трудно было заручиться поддержкой руководства Google?

    Скажем так — непросто. Надо сказать, что мы хотели реализовать этот проект не совсем так, как все прочие проекты. Естественно, подход компании Google был такой: давайте создадим нечто, напоминающее Borg, и предъявим свой продукт миру. В нашей компании, где работали специалисты вроде Брайана Гранта, Тима Хокинса и другие эксперты инженерного дела, создавшие два поколения программ на базе технологии управления контейнерами, была наработана масса потрясающей ДНК. А что хотели сделать мы? Не помню, кто первым высказал это предложение, но идея состояла в том, чтобы выпустить продукт как технологию с открытым исходным кодом. Начать с технологии открытого исходного кода, и это позволило бы нам подпитываться из такого мошною источника, как мир открытого исходного кода. Мы видели, как Docker получил в сообществе несоразмерный объем внимания и поддержки, и все потому, что его исходный код был общедоступным. Мы хотели повторить этот ход, но уже на следующем уровне стека, где было недостаточно просто расставить контейнеры. По-настоящему интересно было то, как вы управляете ими, как развертываете их, как обновляете приложения, где они выполняются. Наша цель состояла в том, чтобы с самого начала реализовать принцип «открытый код прежде всего». Разумеется, в руководстве Google это не всем пришлось по душе. Мы приложили немало усилий в беседах с Урсом Холзли, старшим вице-президентом Google, прежде чем он дал нам добро. Это, собственно, сделал другой человек, довольно известный, — Эрик Брюер, и в беседах с ним мы тоже провели немало времени. Так вот, он воспринял наши идеи и помог нам создать внутри компании модель проекта с целью подтверждения его обоснованности, а также оснастить нашу идею технологией открытого кода.

    Продолжение в следующей статье.

    Внедрение и поддержка различного ПО для оркестровки, обращайтесь office@itfb.com.ua

  • Проблемы Office 365

    Начало читайте в этой статье.

    Разрастание профиля и «облако»

    Администраторы Exchange привыкли к разнообразным проблемам, возникающим из-за особенностей работы OST-файлов. Каждый OST-файл содержит cookie-строку, связанную с определенным профилем Outlook на конкретном компьютере. Некоторые изменения на сервере могут привести к тому, что Exchange потребует полной ресинхронизации OST-файла, и, конечно, полная ресинхронизация обязательна, если пользователь удаляет OST-файл (или он испорчен). OST-файл хранится как часть перемещаемого профиля, и это вызывает проблемы, когда пользователь выполняет авторизацию на новом компьютере. Дожидаться, пока многогигабайтный OST-файл будет синхронизирован с новым компьютером, не слишком приятно. В еще большей степени это относится к ситуации, когда вы используете общую среду и не знаете, что ваш рабочий стол предоставляется виртуальной средой, в которой должен быть синхронизирован профиль. Это особенно неудобно в непостоянной виртуальной настольной среде, где попытки ресинхронизи-ровать весь кэш Outlook будут предприниматься при каждом процессе авторизации.

    Microsoft постаралась смягчить эту проблему несколькими способами. Один — ползунок синхронизации Sync Slider; другой — повышение качества функций «облачной» архивации в Office 365 (цены тоже были скорректированы в сторону уменьшения). Третий способ — улучшение функциональности поиска Exchange с целью упростить работу, когда локально в OST-файле находится лишь часть содержимого почтового ящика.

    На стороне OneDrive большинство усилий Microsoft сосредоточено на улучшении синхронизации перемещаемых клиентов; например, OneDrive может обнаружить сеть с учетом трафика (в частности, Wi-Fi в самолете) и позволяет задать предельную пропускную способность при передаче и загрузке данных. Появление Files On-Demand означает, что пользователи могут работать без обязательной синхронизации каждого файла в библиотеке OneDrive, но при этом требуется развернуть новейшую версию Windows 10 — тот случай, когда лекарство может оказаться опасней болезни.

    Борьба с чрезмерным разрастанием профиля

    Существует несколько превентивных мер, которые помогут уменьшить разрастание профиля.

    • Вы можете заставить всех пагьзо-вателей запускать Outlook в режиме подкиочения к сети. Это полностью исключает использование OST-файлов, но также означает, что пользователи целиком зависят от сетевого подключения между экземпляром Outlook и сервером почтовых ящиков. Сетевые проблемы быстро становятся очевидными, когда пользователи видят непонятные и временные ошибки Outlook. Это не самое лучшее решение для большинства компаний.
    • Можно задействовать параметры групповой политики, чтобы задать стоимость Sync Slider для /стентов. Это ограничивает возраст элементов в OST-файлах пользователя, но не ограничивает их размера. Кроме того, у пользователей могут возникнуть неудобства из-за трудностей работы с более старыми элементами: в зависимости от должностных обязанностей, некоторым пользователям может потребоваться доступ к элементам, возраст которых превышает заданный предел. Поскольку эти параметры применяются к пользователю независимо от того, откуда он выполняет авторизацию, может возникнуть нежелательный побочный эффект сужения возможностей на компьютерах (например, домашнем компьютере), на которых размер профиля или время синхронизации не имеют значения.
    • Вы можете активно применять политики хранения, чтобы записывать больше почтовых сообщений в архив сети, уменьшая размер OST-файла. У этого подхода те же недостатки, что и у ограничения применения Sync Slider: пользователям не удастся получить старые сообщения, не создавая дополнительного трафика к серверу.

    Решить проблему разрастания профиля для OneDrive несколько труднее. У администраторов нет централизованного способа выбрать папки для синхронизации отдельными пользователями, и большинство пользователей с удовольствием принимают вариант синхронизации всех папок. Если отключить клиент синхронизации OneDrive, пользователи могут продолжать работать с файлами OneDrive, но это более сложный процесс, чем при установленном клиенте синхронизации, и вам придется объяснить пользователям, как это делается. Переход большинства компаний на выпуск Windows 10 Fall Creators Edition, чтобы получить функцию Files On-Demand, произойдет нс ранее чем через год, так что этот вариант тоже не самый удачный.

    Расширенное управление профилем для современного «облака»

    Идеальное решение — предоставить пользователям гибкие и мощные возможности инструментария Microsoft при сохранении удобных процедур входа и синхронизации для пользователей. Лучший способ достичь этой цели — воспользоваться современным инструментарием управления профилем, например ProfileUnity (http://www.liquidware. com/products/profileunity) компании Liquidware. ProfileUnity — набор инструментов управления пользовательской средой, который вводит в перемещаемые профили компонент ProfileDisk, механизм на основе контейнеров. С его помощью можно заранее подготовить для пользователя OST-файлы Outlook, документы OneDrive и т. д. в виде файлов VHD и VMDK. независимо от того, где пользователь выполняет авторизацию. Благодаря ProfileUnity можно полностью удовлетворить ожидания пользователей: синхронизация профиля обеспечивает доступ к данным в сочетании с мощной функциональностью пакетов Microsoft Outlook и OneDrive.

    Услуги по поддержке и администрированию Office 365, обращайтесь office@itfb.com.ua

  • Как усилить SSL

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

    Пример подключения сертификата в конфигурационном файле

    server {
    
        listen              443 ssl;
    
        server_name         www.example.com;
    
        ssl_certificate     www.example.com.crt;
    
        ssl_certificate_key www.example.com.key;
    
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    
        ssl_ciphers         HIGH:!aNULL:!MD5;
    
    …..
    
    }

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

    Существуют директивы, которые позволяют ввести ограничения на версии шифров SSL/TLS. Из примера выше в конфигурации nginx по умолчанию \испольуется протоколы  TLSv1 TLSv1.1 TLSv1.2 и алгоритмы шифрования  HIGH:!aNULL:!MD5

    Улучшаем безопасность

    Что бы исключить слабые шифры применим следующие параметры

    ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

    Далее необходимо закрыть уязвимость DH This server supports weak Diffie-Hellman (DH) key exchange parameter.

    Необходимо сгенерировать ключ

    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096

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

    ssl_dhparam /etc/ssl/certs/dhparam4096.pem;

    Оптимизируем работу

    SSL использует ресурсы сервера, сессии SSL сохраняются в своем кэше, разделенном по рабочим процессам. 1 мегабайт содержит порядка 4тыс сессий. 5 минут – по умолчанию значение таймаута для кэша. Эти параметры можно менять и регулировать.

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    Подключение и настройка SSL сертификата, обращайтесь office@itfb.com.ua

  • Про Битрикс24: как выполнить мониторинг силами трех человек

    Про Битрикс24: как выполнить мониторинг силами трех человек

    Битрикс24 использует стандартные системы мониторинга: Nagios, Shinken, Munin, Zabbix. Преимущества этого подхода в том, что когда используешь стандартные – легче обучить и найти персонал. Задача мониторить всё, но аккуратно. Выделены и технические и бизнес метрики. Пороги для алертов устанавливаются опытным путем.

    Мониторинг

    Что мониторится:

    • Физические сервера (их мало): рейды, S.M.A.R.T. и др.
    • Сеть: загрузка канала, связность узлов, потери пакетов, SpeedTest и др.
    • OS: memory, load average, swap и др.
    • Критический софт: кол-во процессов, потребление ими %CPU, memory и т. д.
    • Базы данных: Буферный пул, hit rate, количество медленных и очень медленных запросов и др.
    • Нетипичные метрики: наличие бэкапов, срок делегирования доменов, баланс у провайдера смс-уведомлений, отсутствие в блэк-листах почтовиков, срок действия SSL сертификатов и др.

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

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

    Был опыт работы с мониторингом каждого пользователя. В результате треть нагрузки вызывала только система мониторинга.

    Система мониторинга так же мониторится.

    «Бизнес»-метрики Битрикс24:

    • Количество регистраций (в большую и меньшую сторону).
    • Ошибки в регистрациях.
    • Пул предподготовленных болванок регистраций в разных регионах.
    • Количество процессов, ответственных за регистрации.

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

    Сбор данных со стороны пользователя

    Реализован механизм сбора данных со стороны пользователя. Имплементация на JavaScript из приложения через Navigation Timing API.

    отслеживание работы сайта

    Для этого со стороны пользователя собираются данные: время ответа back end, время рендеринга страницы и др. Это помогает выявлять проблемы со стороны пользователя. Плюс это дает данные скорости загрузки по разным регионам. Эти дополнительные данные помогают выяснить проблемные участки по back-end, front-end, rendering и объяснить, например, что у пользователя есть проблемы с провайдером.

    Визуализация мониторинга

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

    Аналитика

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

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

    Уведомления

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

    Каналы оповещения:

    • SMS – от двух операторов. Для разных проблем настроены разные списки адресатов. Повторность – через 15 миинут, через 2 часа. Контроль прямо через смс – на случай когда скрипты сами решают проблемы.
    • E-mail – шлется «дайджест» проблем вместо одного сообщения на каждый алерт.

    hints: Ссылки на iphone и на android парсятся по разному. Если на первом они активны даже без http, то на android нет, должны быть написаны полностью

    Алгоритм поиска причин проблем

    Чтобы выявить причину проблем нужно собрать данные с мониторинга, логов, графиков.

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

    Графики анализируются в сравнении с предыдущими периодами. По необходимости используются инструменты поиска проблемных мест с учетом предыдущих периодов.

    Инструменты, которые помогают выявить источник проблем:

    • server-status от Apache
    • Логи медленных запросов php-fpm, apache, nginx, MySQL
    • Pinba
    • Xhprof

    Другие утилиты, которые могут помочь:

    • unix: netstat, lsof, strace, gdb
    • grep, awk, sort, uniq и т.п.
    • команды для MySQL: EXPLAIN, SHOW ENGINE, SHOW PROCESSLIST, InnoDB STATUS и т. п.

    hints:

    Быстрое решение проблем – перезапуск Apache / nginx / PHP-FPM

    Автоматизация

    Типовые решения Битрикс24 автоматизируются. Все алерты анализируются и группируются по способу решения проблемы. Проблемы, которые можно решить одинаковым образом, автоматизируются.

    Примеры автоматизации:

    • Критическое изменение load average – запускаются или останавливаются сервера и происходит автоматическое масштабирование
    • Автоматический рестарт проблемных сервисов, например, при утечке памяти.
    • Автоматическое «удаление» проблемных машин
    • Автоматическое восстановление репликации
    • Автоматическое переключение трафика в случае аварии на уровне целого ДЦ

    Реализуют автоматизацию с помощью простого иснтрумента event handler, который есть и в Nagios, и в Shinken. По сути, это срабатывание определенных скриптов на определенные алерты.

    Пример скрипта:

    мониторинг сайта

    Для типовых решений, которые нельзя полностью автоматизировать, заведены готовые playbooks. Они реализованы с помощью Ansible. Пример playbook: в mysql есть переменные, которые нельзя изменять в runtime. Playbook делает всё. Он переключает трафик на один дата-центр, останавливает mysql, меняет переменные и запускает его обратно, отслеживает репликацию между дата-центрами и выполняет все тоже самое в другом дата-центре.

    Про команду

    В начале работы сервиса Битрикс24 взаимодействие сотрудников проходило под лозунгом “слабоумие и отвага”. С того времени многое было сделано, но плакат до сих пор вдохновляет.

    подключение мониторинга

    Коммуникация

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

    Сотрудники данные по работе сервиса могут получить самостоятельно . Для этого все логи доступны через Elasticserch в Kibana. Таким образом, разработчики получают данные сами. Это значительно снижает нагрузку на мониторинг.

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

    Поиск, обучение и работа персонала

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

    Для документирования используются своя wiki, где описываются все вопросы. Это помогает быстро включить сотрудников в работу.

    Дежурства организованы по неделям. Для планирования используется календарь Битрикс24. Задача дежурного за день сделать так, чтобы ночью он спал спокойно. Основная задача – обработка алертов. Для координации работы есть планёрки.

    Итог

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

    Битрик24 в цифрах:

    • Около 300 виртуальных серверов и прочих сервисов.
    • 14 дата-центров практически по всему миру.
    • До 135 000 хитов в минуту в пике.
    • 100М хитов к динамике в сутки.

    Хотите подобную систему мониторинга своего продукта, обращайтесь office@itfb.com.ua