• Повышаем безопасность закрытых ssh-ключей

    • Перевод
    Вы когда-нибудь интересовались механизмом работы ssh-ключей? Или тем, насколько безопасно они хранятся?

    Я использую ssh каждый день много раз — когда запускаю git fetch или git push, когда развертываю код или логинюсь на сервере. Не так давно я осознал, что для меня ssh стал магией, которой я привык пользоваться без понимация принципов ее работы. Мне это не сильно понравилось — я люблю разбираться в инструментах, которые использую. Поэтому я провел небольшое исследование и делюсь с вами результатами.

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

    Итак, если вам доводилось прибегать к аутентификации по ключу, то у вас, скорее всего, есть файл ~/.ssh/id_rsa или ~/.ssh/id_dsa в домашнем каталоге. Это закрытый (он же приватный) RSA/DSA ключ, а ~/.ssh/id_rsa.pub или ~/.ssh/id_dsa.pub — открытый (он же публичный) ключ. На сервере, на котором вы хотите залогиниться, должна быть копия открытого ключа в ~/.ssh/authorized_keys. Когда вы пытаетесь залогиниться, ssh-клиент подтвержает, что у вас есть закрытый ключ, используя цифровую подпись; сервер проверяет, что подпись действительна и в ~/.ssh/authorized_keys есть открытый ключ, и вы получаете доступ.

    Что же хранится внутри закрытого ключа?

    Читать дальше →
  • Инструкция по применению сисадмина в малом бизнесе

      Чтобы сисадмин справлялся со своей работой благодаря, а не вопреки помощи руководства




      Если вы руководитель небольшой компании в 30-100 сотрудников и вас не устраивает качество работы информационных систем, то замена системного администратора — это последнее с чего стоит начать. Первое же, что стоит сделать — это изменить ваш подход в работе с системным администратором. Глобально — вам нужно научиться помогать вашему системному администратору справляться со своими обязанностями.

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

      При этом я не прошу вас настраивать сервера вместе с вашим сисадмином или вникать в особенности работы программного обеспечения. От вас требуется лишь помогать системному администратору справляться с управленческими задачами, корректно информируя, направляя, контролируя и поддерживая его в работе. Как именно это делать, читайте ниже:
      Читать дальше →
    • ТЗ высокой четкости

        Я аналитик, который пишет непонятные ТЗ. Т.е. я пытаюсь писать очень понятные ТЗ. В целом, я слушаю клиентов, потом я слушаю разработчиков, потом голоса в своей голове. Зачем я говорю с ними? В общем, получается то, что получается. Ну вы поняли.



        Написать идеальное ТЗ проще простого:

        1. Договорился о минимальном этапе (на 2-4 недели).
        2. Описал юзер-стори по шагам.
        3. Составил список экранов будущей системы.
        4. Прописал названия методов API и форматы данных.
        5. Запросил тестовый контент и составил таблицы с тестовыми данными.
        6. Сформулировал из всего этого цели и задачи.
        7. Согласовал план работ и выставил задачи в таск-менеджер.

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



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

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

          Благодаря этим особенностям мышления человека, среднее время нормальной жизни коммерческих компаний составляет 15 лет, а изначальные «Империи добра», типа Гугл и Яндекс, неумолимо со временем приобретают черты «Империй зла».

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



            Александр Крижановский ( krizhanovsky, NatSys Lab.)


            По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


            Читать дальше →
          • Мониторинг системных вызовов Linux

            • Перевод


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


            1. Сколько уникальных исходящих TCP-соединений установили ваши серверы за последний час?
            2. Какие процессы и пользователи инициировали установку этих соединений?

            Если вы в состоянии ответить на оба вопроса, отлично — дальше можете не читать. А если ответа нет, то получить эту информацию поможет go-audit.

            Читать дальше →
            • +24
            • 16,2k
            • 5
          • Экзотичные заголовки HTTP

            • Перевод

            Привет Хабрахабр! В этой статье будут наглядно продемонстрирован результат применения некоторых важных и экзотичных HTTP заголовков, большинство из которых связаны с безопасностью.
            Читать дальше →
          • Ваш язык программирования — отстой

            • Перевод
            1 Почему JavaScript отстой
            • 1.1 Плохая конструкция
            • 1.2 Система типов
            • 1.3 Плохие функции
            • 1.4 Отсутствующие функции
            • 1.5 DOM
            2 Почему Lua отстой
            3 Почему PHP отстой
            • 3.1 Исправлено в поддерживаемых в настоящее время версиях
            4 Почему Perl 5 отстой
            5 Почему Python отстой
            • 5.1 Исправлено в Python 3
            6 Почему Ruby отстой
            7 Почему Flex/ActionScript отстой
            8 Почему скриптовые языки отстой
            9 Почему C отстой
            10 Почему C++ отстой
            11 Почему .NET отстой
            12 Почему C# отстой
            13 Почему VB.NET отстой
            15 Почему Objective-C отстой
            16 Почему Java отстой
            • 16.1 Синтаксис
            • 16.2 Исправлено в Java 7 (2011)
            • 16.3 Модель
            • 16.4 Библиотека
            • 16.5 Обсуждение
            17 Почему Backbase отстой
            18 Почему XML отстой
            19 Почему отстой XSLT/XPath
            20 Почему CSS отстой
            • 20.1 Исправлено в CSS3
            21 Почему Scala отстой
            22 Почему Haskell отстой
            23 Почему Closure отстой
            24 Почему Go отстой
            • 24.1 Базовые средства программирования (базовый язык)
            • 24.2 Взаимосовместимость
            • 24.3 Стандартная библиотека
            • 24.4 Набор инструментальных средств
            • 24.5 Сообщество
            25 Почему Rust отстой
            • 25.1 Безопасность
            • 25.2 Синтаксис
            • 25.3 Конструкция API и система типов
            • 25.4 Сообщество
            • 25.5 Набор инструментальных средств

            Почему JavaScript отстой


            Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

            Плохая конструкция

            • Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
            • Camel-регистр никуда не годится:

            XMLHttpRequest
            HTMLHRElement

            Читать дальше →
          • Одна простенькая задачка. Быстро, красиво или чисто?

              Я полагаю, что 99% Python разработчиков решали так или иначе эту задачу, поскольку она входит в стандартный набор задач, предлагаемый им для соискателей должности Python Developer'а в одной широко известной компании.

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

              Ниже любопытства ради я привел список проанализированных мной решений
              Читать дальше →
            • IMHO, как писать на Хабр



                Акронис на прошлой неделе попросил меня рассказать про опыт на Хабре. После семинара я обещал выложить основные тезисы. Возможно, вы найдёте что-то полезное ниже.

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

                При этом активных (голосующих) пользователей всего около 3 тысяч. Уровень знаний аудитории на входе в пост — в примерно 95% случаев низкий, в 5% — экспертный (разбиение оценочное). Проще говоря, есть люди, которые вообще не понимают, что вы хотите сказать (и их большинство), и есть те, кто разбирается в теме на голову лучше вас. Поэтому лучший пост — это тот, что проходит от ликбеза к хардкору. На площадке довольно высокий уровень агрессии (точнее, желания проверить материал на прочность). Ранее был экстремально высок. Средняя или низкая внимательность читателя (ранее была высокая).

                Разумеется, это всё моё личное мнение, и можно поспорить. Сейчас постараюсь объяснить, почему я так считаю, и как это влияет на посты. Я основываюсь на опыте примерно 1500 постов за 6 лет, которые написал сам или помогал готовить.

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


                Данные тут на конец августа, я их к другому семинару (в Хабре для владельцев блогов) готовил.
                Читать дальше →
              • О некоторых горячих клавишах в PyCharm

                  Хочу поделиться с вами горячими клавишами, которыми пользуюсь или к которым пытаюсь привыкнуть в своей повседневной работе. В современных средах их количество может просто зашкаливать, но постепенное добавление новых сочетаний в копилку, способно значительно повысить вашу продуктивноть. Приведенные сочетания относятся к редактированию, навигации, рефакторингу и справедливы только для раскладки Default for XWin (Linux).

                  Читать дальше →
                • Вечер 31 декабря



                    Админ: А давайте прошивки роутеров обновим.
                    CIO: Пятница 31 декабря, вечер. Конечно, давай, что может случиться?
                    Админ: Вот видишь, всё нормально работает. А ты пяяятница, вееечер…
                    CIO: Иди сюда.
                    Админ: Чего?
                    CIO: Иди-иди. Читай.
                    Админ: Коннекшн фаулт. Ну, отвалилось чего-то. Это чья консоль?
                    CIO: Это – продакшн-сервера.
                    Читать дальше →
                  • Настройка ssh callback на сервере в связке с Ansible

                      Всем известно, что с помощью ssh можно делать перенаправление портов (создавать туннели). Еще из мануала по ssh вы могли узнать, что OpenSSH умеет динамически открывать порты для удаленного перенаправления и выполнять строго определенные команды. Также всем известно, что для Ansible (не считая Tower) нет такого понятия как сервер и клиент (в смысле ansible-server/ansible-agent) — есть сценарий (playbook) который можно выполнить как локально, так и удаленно через ssh-соединение. Еще есть Ansible-pull, это скрипт который проверяет git-репозиторий с вашими плейбуками и при наличии изменений запускает плейбук для применения обновлений. Там где нельзя пушить в большинстве случаев можно использовать pull, но бывают исключения.

                      В статье я попробую рассказать о том как можно использовать динамическое выделение портов для ssh-туннелей в реализации подобия функции provisioning-callback для бедных на любом сервере с OpenSSH и Ansible, и как я до этого дошел.
                      Читать дальше →
                    • Gogs: легковесный git-сервис



                        В числе самых обсуждаемых последних новостей в сообществе разработчиков были новые тарифы GitHub (см., например, здесь).

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

                        Некоторые прибегают к альтернативному решению и разворачивают GitLab (или другой git-сервис) на собственном или арендованном сервере.

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

                        Из сказанного, однако, не следует, что у GitHub на сегодняшний день альтернативы нет. Об одном весьма интересном и перспективном решении мы хотели бы рассказать в этой статье. Знакомьтесь: Gogs. Этот инструмент будет интересен как для индивидуальных разработчиков, так и для небольших компаний.
                        Читать дальше →
                      • Как стать профессиональным веб-разработчиком: практическое руководство

                        • Перевод
                        • Tutorial

                        Дорога длинна и трудна, но интересна и полезна!

                        Статья задумывалась как практическое руководство для желающих стать профессиональным веб-разработчиком. Я уже более 20 лет пишу код для веба. Я ежедневно работаю с веб-разработчиками и помогаю им. В статье я опишу, что вам нужно выучить, когда вам нужно это выучить и где взять информацию (чаще всего даже бесплатно). Затем я дам совет по получению реального опыта, и что самое важное – по получению денег за написание кода.

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

                        Что нужно помнить:

                        1. Статью разрешается пролистывать

                        Руководство может помочь вам вне зависимости от вашего положения на дороге к профессиональной разработке. Прокрутите его к тому заголовку, который лучше всего описывает ваше сегодняшнее положение, и читайте оттуда. Если вы только начали этот путь, или пока размышляете об этом – последуйте совету Короля из «Алисы в стране чудес»:

                        Начните с начала, и продолжайте, пока не дойдёте до конца; и там уже остановитесь.
                        Читать дальше →
                      • Готовим Open Build Service 2.6

                          image


                          1. Привет.


                          На хабре подозрительно мало информации про Open Build Service (далее OBS) и прочие платформы.
                          А про свежесть имеющегося и говорить не хочется.
                          Недавно был релиз версии 2.7, пришли долгожданные изменения.
                          Но, для истории, хочу немного рассказать об одном варианте использования 2.6 (релиз — февраль 2015 года).


                          Пример для материала навеян недавней потребностью.
                          Итак, собирем php-ffmpeg на базе ffmpeg 3.0 для Centos (7, и даже 6*!).

                          Читать дальше →
                        • Ansible: тестируем плейбуки (часть 1)

                          • Tutorial


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

                          Читать дальше →
                        • Перенос образа виртуальной машины между облачными хостерами или устанавливаем Windows Server на Digital Ocean

                          • Tutorial
                          К примеру, Digital Ocean не предоставляет возможности загрузить свой образ виртуалки, более того, так же нельзя подключить ISO-образ для установки (правда, есть KVM — и на том спасибо).
                          Поэтому придётся пойти хитрым путём и делать всё через ssh. Основная идея — на новой виртуалке отмонтировать корневую файловую систему, залить файлы/образ от старой, обновить настройки grub, обновить настройки сети и fstab, перезагрузить.
                          Самое неочевидное в первом шаге. Можно отмонтировать / и на живой системе, это реально, хоть и муторно. Гораздо проще добавить ssh сервер и пару утилит в initramdisk и сделать всё оттуда, т.к. на этом этапе загрузки ОС корневая система еще не примонтирована.
                          Собственно, вся статья — это демонстрация утилиты для включения ssh сервера в ramdisk + два разобранных примера.

                          Читать дальше →
                          • +11
                          • 10,2k
                          • 4
                        • Тонкая настройка ACPI на примере Thinkpad X220

                            Лирика


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

                            Большую часть своего компьютерного стажа я пользуюсь лаптопами так называемой «бизнес серии»: IBM ThinkPad 600, HP-Compaq nc2400, Lenovo ThinkPad X61T, Lenovo ThinkPad X220.



                            Были кратковременные перерывы, когда приходилось перебиваться абы-чем, то бишь компьютерами потребительского сегмента: Apple ibook G4 и Acer aspire 5112 и именно в эти моменты приходило понимание того, как сильно не хватает таких очевидных и привычных вещей, как трекпоинт и док-станция.

                            Вот про док-станцию мы сейчас и поговорим.
                          • Семь советов по внедрению HTTP/2

                            • Перевод
                            Недавно вышла новая версия стандарта HTTP. В мае 2015 года был утвержден HTTP/2, который получил распространение среди браузеров и веб-серверов (включая NGINX и NGINX Plus). На данный момент более 60% используемых браузеров поддерживают HTTP/2, причем эта цифра продолжает увеличиваться с каждым месяцем.

                            Стандарт HTTP/2 основан на протоколе SPDY, разработанном компанией Google. В Google Chrome поддержка SPDY будет осуществляться до начала 2016 года. NGINX одним из первых реализовал протокол SPDY и сейчас играет ведущую роль в продвижении HTTP/2. Была опубликована статья, в которой дано подробное описание HTTP/2, приводится сравнение со SPDY и подробно описывается процесс внедрения нового протокола.
                            Читать дальше →