-Поиск по дневнику

Поиск сообщений в rss_rss_hh_full

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.03.2011
Записей:
Комментариев:
Написано: 1

Habrahabr








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://habrahabr.ru/rss/.
Данный дневник сформирован из открытого RSS-источника по адресу http://feeds.feedburner.com/xtmb/hh-full, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Security Week 37: Дружно выключаем Bluetooth, дыра в Tor на миллион, ботнеты на серверах Elasticsearch

Пятница, 15 Сентября 2017 г. 19:16 + в цитатник
Kaspersky_Lab сегодня в 19:16 Разработка

Security Week 37: Дружно выключаем Bluetooth, дыра в Tor на миллион, ботнеты на серверах Elasticsearch

    BlueBorne. Запомните это название. Это даже не уязвимость, это — целая пачка дыр в реализациях Bluetooth в Windows, Linux, Android и даже немножко в iOS. Вскрыли этот нарыв исследователи из Armis Labs, они же и оценили число потенциальных жертв в… 5,3 миллиарда устройств.

    Словом, дело нешуточное. BlueBorne позволяет атаковать девайс с поддержкой Bluetooth с другого «голубозубого» устройства. Причем, оба аппарата не обязательно должны быть спарены. Более того, жертве даже не нужно быть «на радарах» Bluetooth-собратов в округе. Иными словами, если у тебя есть голубой зуб, ты под угрозой.

    Кулек обнаруженных уязвимостей выглядит так:

    • CVE-2017-1000251. RCE в ядре Linux;
    • CVE-2017-1000250. Уязвимость утечки данных в стеке Bluetooth;
    • CVE-2017-0785. Уязвимость утечки данных в Android;
    • CVE-2017-0781. RCE в Android;
    • CVE-2017-0782. RCE в Android;
    • CVE-2017-0783. Логическая уязвимость в Android (Bluetooth Pineapple);
    • CVE-2017-8628. Логическая уязвимость в Windows (Bluetooth Pineapple);
    • Такая лютая, что пока без CVE. RCE-уязвимость проприетарного протокола Apple Low Energy Audio Protocol.

    Вон те два блютус-ананаса названы так не случайно. Это отсылка к известному хакерскому (официально, конечно, пентестерскому, но мы-то все понимаем;) девайсу Wi-Fi Pineapple. Эту штуку можно оставить в любом публичном месте, где она мимикрирует под любимые домашние сети всех доступных девайсов. Те же простодушно будут цепляться к якобы родным сетям, ну а дальше случится MiTM со всеми вытекающими. Нечто подобное, только через Bluetooth позволяют провернуть CVE-2017-0783 и CVE-2017-8628.

    В оригинальном исследовании приведена очень живописная картинка с “местами гнездования” уязвимостей в Bluetooth-стеке.



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

    Парни из Armis Labs поступили ответственно и опубликовали свои открытия лишь после того, как Google, Microsoft и Apple выкатили патчи. Но надо учесть, что баг есть во всех Windows, начиная с Vista, в Linux на ядре 3.3-rc1 с BlueZ (включая Tizen) и в неназванных версиях iOS. Прорва устройств с этими операционками не получат свои патчи никогда.



    Ну, допустим, смарт-телевизоры в относительной безопасности – их из дома выносят нечасто (хотя как насчет продвинутого соседа за стеной, который не прочь понаблюдать за твоими буднями через веб-камеру?..). А вот за мобильные девайсы как-то совсем тревожно.

    Zerodium предлагает миллион долларов за зеродей в Tor

    Новость. Поставщик эксплойтов Zerodium снова объявил красивую семизначную награду за эксплойт нулевого дня – на этот раз в браузере Tor. Полностью функциональный эксплойт для доселе неизвестной уязвимости в Tor под Tails Linux и Windows обойдется конторе в миллион долларов.

    $250 тыс. будет выплачено за комбинированный эксплойт RCE плюс эскалация привилегий в Tails и Windows, и $200 тыс., если эксплойт окажется только RCE или если он работает только когда включен JavaScript в браузере. Эксплойт принимается с полной документацией, причем вектором атаки обязательно должен быть веб-сайт.

    Zerodium демонстрирует такую щедрость, очевидно, не за свой счет – есть конкретный заказ. Причем, если верить компании, это заказ от неких госорганов, которые желают добраться до ужасных преступников, скрывающихся при помощи Tor. Государства не названы, но в августе Zerodium уже заявлял о пике запросов от «демократических государств, а также государств, не находящихся под санкциями». То есть круг сужается – это точно не КНДР и не Mother Russia. Так или иначе, а у кого-то серьезно подгорает по поводу Tor, о чем свидетельствуют и суммы, и срок: повышенные баунти действуют только до 30 ноября, так что торопитесь.

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

    Тысячи серверов Elasticsearch заражены POS-троянцем

    Новость. Исследование. Исследователь из Kromtech решил прощупать публичные сервера Elasticsearch – свободной поисковой системы. Нашел он там нечто очень любопытное – панель управления POS-троянцами JackPOS и AlinaPOS. Это довольно старая малварь, наделавшая много шуму несколько лет назад.

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



    Как оказалось, кто-то разжился исходниками этих старых троянцев (AlinaPOS – 2012 год, JackPOS – 2014 год) и выставил на продажу. Соответственно, понадобилась и командная инфраструктура, которую в итоге вскрыли Kromtech. Сканирование при помощи Shodun нашло в Сети 15 тысяч серверов Elasticsearch, четыре тысячи из которых были захвачены POS-ботоводами.

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

    Древности


    «Pentagon»

    Опасный вирус, методом «Brain» поражает Boot-сектор флоппи-дисков при обращении к ним. Если при этом дискета уже была поражена вирусом «Brain», то «Pentagon» лечит Boot-сектор этого диска, изменяет его метку и затем заражает своей копией. На заражаемом диске создается файл PENTAGON.TXT. Вирус «выживает» при теплой перезагрузке. Часть вируса зашифрована. Перехватывает int 9 и int 13h. Содержит тексты «© 1987 The Pentagon, Zorell Group», «first sector in segment».

    Цитата по книге «Компьютерные вирусы в MS-DOS» Евгения Касперского. 1992 год. Страницa 102.

    Disclaimer: Данная колонка отражает лишь частное мнение ее автора. Оно может совпадать с позицией компании «Лаборатория Касперского», а может и не совпадать. Тут уж как повезет.
    Original source: habrahabr.ru (comments, light).

    https://habrahabr.ru/post/338050/


    Метки:  

    Security Week 37: Дружно выключаем Bluetooth, дыра в Tor на миллион, ботнеты на серверах Elasticsearch

    Пятница, 15 Сентября 2017 г. 19:16 + в цитатник
    Kaspersky_Lab сегодня в 19:16 Разработка

    Security Week 37: Дружно выключаем Bluetooth, дыра в Tor на миллион, ботнеты на серверах Elasticsearch

      BlueBorne. Запомните это название. Это даже не уязвимость, это — целая пачка дыр в реализациях Bluetooth в Windows, Linux, Android и даже немножко в iOS. Вскрыли этот нарыв исследователи из Armis Labs, они же и оценили число потенциальных жертв в… 5,3 миллиарда устройств.

      Словом, дело нешуточное. BlueBorne позволяет атаковать девайс с поддержкой Bluetooth с другого «голубозубого» устройства. Причем, оба аппарата не обязательно должны быть спарены. Более того, жертве даже не нужно быть «на радарах» Bluetooth-собратов в округе. Иными словами, если у тебя есть голубой зуб, ты под угрозой.

      Кулек обнаруженных уязвимостей выглядит так:

      • CVE-2017-1000251. RCE в ядре Linux;
      • CVE-2017-1000250. Уязвимость утечки данных в стеке Bluetooth;
      • CVE-2017-0785. Уязвимость утечки данных в Android;
      • CVE-2017-0781. RCE в Android;
      • CVE-2017-0782. RCE в Android;
      • CVE-2017-0783. Логическая уязвимость в Android (Bluetooth Pineapple);
      • CVE-2017-8628. Логическая уязвимость в Windows (Bluetooth Pineapple);
      • Такая лютая, что пока без CVE. RCE-уязвимость проприетарного протокола Apple Low Energy Audio Protocol.

      Вон те два блютус-ананаса названы так не случайно. Это отсылка к известному хакерскому (официально, конечно, пентестерскому, но мы-то все понимаем;) девайсу Wi-Fi Pineapple. Эту штуку можно оставить в любом публичном месте, где она мимикрирует под любимые домашние сети всех доступных девайсов. Те же простодушно будут цепляться к якобы родным сетям, ну а дальше случится MiTM со всеми вытекающими. Нечто подобное, только через Bluetooth позволяют провернуть CVE-2017-0783 и CVE-2017-8628.

      В оригинальном исследовании приведена очень живописная картинка с “местами гнездования” уязвимостей в Bluetooth-стеке.



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

      Парни из Armis Labs поступили ответственно и опубликовали свои открытия лишь после того, как Google, Microsoft и Apple выкатили патчи. Но надо учесть, что баг есть во всех Windows, начиная с Vista, в Linux на ядре 3.3-rc1 с BlueZ (включая Tizen) и в неназванных версиях iOS. Прорва устройств с этими операционками не получат свои патчи никогда.



      Ну, допустим, смарт-телевизоры в относительной безопасности – их из дома выносят нечасто (хотя как насчет продвинутого соседа за стеной, который не прочь понаблюдать за твоими буднями через веб-камеру?..). А вот за мобильные девайсы как-то совсем тревожно.

      Zerodium предлагает миллион долларов за зеродей в Tor

      Новость. Поставщик эксплойтов Zerodium снова объявил красивую семизначную награду за эксплойт нулевого дня – на этот раз в браузере Tor. Полностью функциональный эксплойт для доселе неизвестной уязвимости в Tor под Tails Linux и Windows обойдется конторе в миллион долларов.

      $250 тыс. будет выплачено за комбинированный эксплойт RCE плюс эскалация привилегий в Tails и Windows, и $200 тыс., если эксплойт окажется только RCE или если он работает только когда включен JavaScript в браузере. Эксплойт принимается с полной документацией, причем вектором атаки обязательно должен быть веб-сайт.

      Zerodium демонстрирует такую щедрость, очевидно, не за свой счет – есть конкретный заказ. Причем, если верить компании, это заказ от неких госорганов, которые желают добраться до ужасных преступников, скрывающихся при помощи Tor. Государства не названы, но в августе Zerodium уже заявлял о пике запросов от «демократических государств, а также государств, не находящихся под санкциями». То есть круг сужается – это точно не КНДР и не Mother Russia. Так или иначе, а у кого-то серьезно подгорает по поводу Tor, о чем свидетельствуют и суммы, и срок: повышенные баунти действуют только до 30 ноября, так что торопитесь.

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

      Тысячи серверов Elasticsearch заражены POS-троянцем

      Новость. Исследование. Исследователь из Kromtech решил прощупать публичные сервера Elasticsearch – свободной поисковой системы. Нашел он там нечто очень любопытное – панель управления POS-троянцами JackPOS и AlinaPOS. Это довольно старая малварь, наделавшая много шуму несколько лет назад.

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



      Как оказалось, кто-то разжился исходниками этих старых троянцев (AlinaPOS – 2012 год, JackPOS – 2014 год) и выставил на продажу. Соответственно, понадобилась и командная инфраструктура, которую в итоге вскрыли Kromtech. Сканирование при помощи Shodun нашло в Сети 15 тысяч серверов Elasticsearch, четыре тысячи из которых были захвачены POS-ботоводами.

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

      Древности


      «Pentagon»

      Опасный вирус, методом «Brain» поражает Boot-сектор флоппи-дисков при обращении к ним. Если при этом дискета уже была поражена вирусом «Brain», то «Pentagon» лечит Boot-сектор этого диска, изменяет его метку и затем заражает своей копией. На заражаемом диске создается файл PENTAGON.TXT. Вирус «выживает» при теплой перезагрузке. Часть вируса зашифрована. Перехватывает int 9 и int 13h. Содержит тексты «© 1987 The Pentagon, Zorell Group», «first sector in segment».

      Цитата по книге «Компьютерные вирусы в MS-DOS» Евгения Касперского. 1992 год. Страницa 102.

      Disclaimer: Данная колонка отражает лишь частное мнение ее автора. Оно может совпадать с позицией компании «Лаборатория Касперского», а может и не совпадать. Тут уж как повезет.
      Original source: habrahabr.ru (comments, light).

      https://habrahabr.ru/post/338050/


      Метки:  

      Как правильно вставлять SVG

      Пятница, 15 Сентября 2017 г. 19:00 + в цитатник

      Метки:  

      Как правильно вставлять SVG

      Пятница, 15 Сентября 2017 г. 19:00 + в цитатник

      Метки:  

      Приглашаем на mini ai cups

      Пятница, 15 Сентября 2017 г. 18:26 + в цитатник
      sat2707 сегодня в 18:26 Разработка

      Приглашаем на mini ai cups

        image


        Вот уже пять лет мы проводим russian ai cup, крупнейший в СНГ ежегодный чемпионат по искусственному интеллекту (а если проще — по написанию ботов для игр). И вот уже семь лет участники этого чемпионата просят либо оставлять песочницу работать весь год, либо запустить площадку, где можно было бы весь год играться в подобные же конкурсы, только чуть меньше размером.


        Мы подумали и решили опробовать второй вариант — открыли новую площадку с мини-конкурсами, связанными с искусственным интеллектом и написанием ботов для игр. Встречайте новый для нас класс чемпионатов — http://aicups.ru/.


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


        Суть задачи


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


        1. У каждого пассажира есть вес
        2. Чем больше пассажиров мы везем, тем медленнее едем
        3. При достижении определенного (критического) количества пассажиров, мы едем еще медленее

        Кроме того, задачу мультиплеерная. То есть, у нас есть две группы лифтов и каждый игрок управляет своей группой. Сами же пассажиры делятся на “своих” и “чужих” — чужого сложнее забрать с этажа. Но если смог, получил 2x очков ;)


        Подробнее обо всем этом можно прочитать ниже, в разделе “Правила”


        Этапы чемпионата


        Чемпионат открывается сегодня, 15-сентября, и продлится до 9-го октября.


        Пока что наш план таков:


        15-го сентября открывается площадка с песочницей, и у участников появляется возможность загружать свои стратегии и играть не-рейтинговые игры “на интерес” с другими своими стратегиями, с другими игроками или с бейзлайном — в песочнице живут два фейковых пользователя (“good baseline” — забирает всегда только своих пассажиров и “evil baseline” — забирает только чужих).


        В сутки можно загрузить не более 6 новых решений, и сыграть не более 30 не-рейтинговых игр.


        18 сентября в песочнице начинают работать рейтинговые игры (их система создает сама). Время от времени псевдослучайно выбирается два участника (для подбора мы используем TrueSkill, спасибо Microsoft за этот прекрасный алгоритм!). От каждого из них мы берем стратегию, которую он до этого выбрал для участия в рейтинге. Две эти стратегии играют друг с другом, победившая передвигается в лидерборде вверх, проигравшая вниз. Таким образом строится рейтинг песочницы.


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


        Призы


        Как уже давно принято в наших чемпионатах, мы награждаем TOP6. Расклад призов такой же, как и в прошедшем недавно highloadcup:


        1. Apple iPad Air 2 Cellular 16GB за первое место
        2. WD MyCloud 6TB
        3. WD MyCloud 6TB
        4. WD MyPassport Ultra 2TB
        5. WD MyPassport Ultra 2TB
        6. WD MyPassport Ultra 2TB

        Кроме того, маечки! Не будем нарушать и эту добрую традицию — TOP20 получат от нас майки с символикой чемпионата. Возможно маек будет больше — в highloadcup мы тоже начали с 20-ти штук, в результате дарим 116 :)


        Задача и правила


        Итак, подробнее о задаче.


        image


        Место появления пассажиров
        Лестница
        Кол-во пассажиров в группе
        Кол-во пассажиров на этаже
        Кол-во пассажиров в лифте
        Тики


        Описание здания:


        1. Здание содержит 2 группы лифтов, каждая группа принадлежит одному игроку
        2. Здание содержит 2 лестницы
        3. В здании 9 этажей, которые пронумерованы с 1 до 9 снизу вверх
        4. Высота каждого этажа равна 1
        5. Расстояние от центра этажа до группы лифтов равно 60 единиц
        6. Расстояние от центра этажа до места ожидания пассажиров каждой группы равно 20 единиц

        Лифты:


        1. Каждая из двух групп содержит 4 лифта
        2. Лифты в группе отстоят друг от друга на 80 единиц
        3. В начале игры все лифты стоят на 1 этаже с открытыми дверьми и готовыми к забору пассажиров
        4. После открытия дверей лифт стоит на этаже минимум 40 тиков
        5. Открытие дверей длится 100 тиков
        6. Закрытие дверей длится 100 тиков
        7. Максимальная вместимость лифта 20 пассажиров
        8. Пустой лифт преодолевает этаж за 50 тиков
        9. Лифт едет тем медленнее, чем больше пассажиров он везет
        10. Если в лифте едет более 4 пассажиров, он теряет скорость в двойном объеме
        11. Потеря скорости лифта зависит от веса пассажира

        Пассажиры:


        1. Пассажиры появляются парами раз в 20 тиков на первом этаже вплоть до 2000 тика
        2. Каждый пассажир за время игры хочет посетить от 1 до 5 случайных уникальных этажей, кроме первого (распределение количеств этажей и самих этажей равномерное) и вернуться на первый этаж ближе к концу игры
        3. Пассажиры ждут лифт 500 тиков, после чего уходят на лестницу
        4. Скорость подъема пассажира по лестнице — один этаж в 200 тиков
        5. Скорость спуска пассажира по лестнице — один этаж в 100 тиков
        6. Горизонтальная скорость пассажира 2 единицы в тик
        7. Пассажир имеет случайный вес от 1 до 1.1
        8. После выхода из лифта пассажир идет на свой этаж ровно 40 тиков
        9. Пассажир проводит на этаже 500 тиков, после чего появляется на этаже с той стороны, куда он уходил
        10. Пассажир всегда идет в ближайший назначенный ему лифт
        11. Переназначить лифт пассажиру нельзя
        12. Если лифт пассажира уехал без него, то у пассажира снимается назначенный ему лифт и он возвращается на свою начальную позицию
        13. Подобрать пассажира противника можно только лифтом, который уже простоял на этаже 40 тиков
        14. Перемещения лифтовый холл -> лестница, этаж -> лифтовый холл происходят мгновенно

        Подсчет очков:


        1. За своего пассажира игрок получает (количество этажей)*10 очков
        2. За пассажира противника игрок получает (количество этажей)102 очков

        Побеждает игрок, набравший большее кол-во очков.


        API и Baseline мы выложили в официальном репозитории с документацией, здесь. В этом же репозитории принимаются новые issue, мы обязательно будем их просматривать.


        А на чем писать?


        Сейчас у нас есть API для следующих языков:


        1. Python 2.7
        2. Python 3.6
        3. Cpp11
        4. Java1.8
        5. Nodejs
        6. PHP7

        Возможно, этот список будет пополняться. Прямо сейчас пытаемся подключить C#.


        А кому можно участвовать?


        Участвовать могут все, без ограничений! Заходите, пробуйте! Поучаствовать можно здесь, а обсудить чемпионат можно в VK и в Telegram. Удачи в чемпионате!

        Original source: habrahabr.ru (comments, light).

        https://habrahabr.ru/post/337942/


        Метки:  

        Приглашаем на mini ai cups

        Пятница, 15 Сентября 2017 г. 18:26 + в цитатник
        sat2707 сегодня в 18:26 Разработка

        Приглашаем на mini ai cups

          image


          Вот уже пять лет мы проводим russian ai cup, крупнейший в СНГ ежегодный чемпионат по искусственному интеллекту (а если проще — по написанию ботов для игр). И вот уже семь лет участники этого чемпионата просят либо оставлять песочницу работать весь год, либо запустить площадку, где можно было бы весь год играться в подобные же конкурсы, только чуть меньше размером.


          Мы подумали и решили опробовать второй вариант — открыли новую площадку с мини-конкурсами, связанными с искусственным интеллектом и написанием ботов для игр. Встречайте новый для нас класс чемпионатов — http://aicups.ru/.


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


          Суть задачи


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


          1. У каждого пассажира есть вес
          2. Чем больше пассажиров мы везем, тем медленнее едем
          3. При достижении определенного (критического) количества пассажиров, мы едем еще медленее

          Кроме того, задачу мультиплеерная. То есть, у нас есть две группы лифтов и каждый игрок управляет своей группой. Сами же пассажиры делятся на “своих” и “чужих” — чужого сложнее забрать с этажа. Но если смог, получил 2x очков ;)


          Подробнее обо всем этом можно прочитать ниже, в разделе “Правила”


          Этапы чемпионата


          Чемпионат открывается сегодня, 15-сентября, и продлится до 9-го октября.


          Пока что наш план таков:


          15-го сентября открывается площадка с песочницей, и у участников появляется возможность загружать свои стратегии и играть не-рейтинговые игры “на интерес” с другими своими стратегиями, с другими игроками или с бейзлайном — в песочнице живут два фейковых пользователя (“good baseline” — забирает всегда только своих пассажиров и “evil baseline” — забирает только чужих).


          В сутки можно загрузить не более 6 новых решений, и сыграть не более 30 не-рейтинговых игр.


          18 сентября в песочнице начинают работать рейтинговые игры (их система создает сама). Время от времени псевдослучайно выбирается два участника (для подбора мы используем TrueSkill, спасибо Microsoft за этот прекрасный алгоритм!). От каждого из них мы берем стратегию, которую он до этого выбрал для участия в рейтинге. Две эти стратегии играют друг с другом, победившая передвигается в лидерборде вверх, проигравшая вниз. Таким образом строится рейтинг песочницы.


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


          Призы


          Как уже давно принято в наших чемпионатах, мы награждаем TOP6. Расклад призов такой же, как и в прошедшем недавно highloadcup:


          1. Apple iPad Air 2 Cellular 16GB за первое место
          2. WD MyCloud 6TB
          3. WD MyCloud 6TB
          4. WD MyPassport Ultra 2TB
          5. WD MyPassport Ultra 2TB
          6. WD MyPassport Ultra 2TB

          Кроме того, маечки! Не будем нарушать и эту добрую традицию — TOP20 получат от нас майки с символикой чемпионата. Возможно маек будет больше — в highloadcup мы тоже начали с 20-ти штук, в результате дарим 116 :)


          Задача и правила


          Итак, подробнее о задаче.


          image


          Место появления пассажиров
          Лестница
          Кол-во пассажиров в группе
          Кол-во пассажиров на этаже
          Кол-во пассажиров в лифте
          Тики


          Описание здания:


          1. Здание содержит 2 группы лифтов, каждая группа принадлежит одному игроку
          2. Здание содержит 2 лестницы
          3. В здании 9 этажей, которые пронумерованы с 1 до 9 снизу вверх
          4. Высота каждого этажа равна 1
          5. Расстояние от центра этажа до группы лифтов равно 60 единиц
          6. Расстояние от центра этажа до места ожидания пассажиров каждой группы равно 20 единиц

          Лифты:


          1. Каждая из двух групп содержит 4 лифта
          2. Лифты в группе отстоят друг от друга на 80 единиц
          3. В начале игры все лифты стоят на 1 этаже с открытыми дверьми и готовыми к забору пассажиров
          4. После открытия дверей лифт стоит на этаже минимум 40 тиков
          5. Открытие дверей длится 100 тиков
          6. Закрытие дверей длится 100 тиков
          7. Максимальная вместимость лифта 20 пассажиров
          8. Пустой лифт преодолевает этаж за 50 тиков
          9. Лифт едет тем медленнее, чем больше пассажиров он везет
          10. Если в лифте едет более 4 пассажиров, он теряет скорость в двойном объеме
          11. Потеря скорости лифта зависит от веса пассажира

          Пассажиры:


          1. Пассажиры появляются парами раз в 20 тиков на первом этаже вплоть до 2000 тика
          2. Каждый пассажир за время игры хочет посетить от 1 до 5 случайных уникальных этажей, кроме первого (распределение количеств этажей и самих этажей равномерное) и вернуться на первый этаж ближе к концу игры
          3. Пассажиры ждут лифт 500 тиков, после чего уходят на лестницу
          4. Скорость подъема пассажира по лестнице — один этаж в 200 тиков
          5. Скорость спуска пассажира по лестнице — один этаж в 100 тиков
          6. Горизонтальная скорость пассажира 2 единицы в тик
          7. Пассажир имеет случайный вес от 1 до 1.1
          8. После выхода из лифта пассажир идет на свой этаж ровно 40 тиков
          9. Пассажир проводит на этаже 500 тиков, после чего появляется на этаже с той стороны, куда он уходил
          10. Пассажир всегда идет в ближайший назначенный ему лифт
          11. Переназначить лифт пассажиру нельзя
          12. Если лифт пассажира уехал без него, то у пассажира снимается назначенный ему лифт и он возвращается на свою начальную позицию
          13. Подобрать пассажира противника можно только лифтом, который уже простоял на этаже 40 тиков
          14. Перемещения лифтовый холл -> лестница, этаж -> лифтовый холл происходят мгновенно

          Подсчет очков:


          1. За своего пассажира игрок получает (количество этажей)*10 очков
          2. За пассажира противника игрок получает (количество этажей)102 очков

          Побеждает игрок, набравший большее кол-во очков.


          API и Baseline мы выложили в официальном репозитории с документацией, здесь. В этом же репозитории принимаются новые issue, мы обязательно будем их просматривать.


          А на чем писать?


          Сейчас у нас есть API для следующих языков:


          1. Python 2.7
          2. Python 3.6
          3. Cpp11
          4. Java1.8
          5. Nodejs
          6. PHP7

          Возможно, этот список будет пополняться. Прямо сейчас пытаемся подключить C#.


          А кому можно участвовать?


          Участвовать могут все, без ограничений! Заходите, пробуйте! Поучаствовать можно здесь, а обсудить чемпионат можно в VK и в Telegram. Удачи в чемпионате!

          Original source: habrahabr.ru (comments, light).

          https://habrahabr.ru/post/337942/


          Метки:  

          Краткое руководство для новичков, желающих стать комплексными (full stack) веб-разработчиками

          Пятница, 15 Сентября 2017 г. 17:47 + в цитатник
          SmirkinDA сегодня в 17:47 Разработка

          Краткое руководство для новичков, желающих стать комплексными (full stack) веб-разработчиками


            Знание веб-разработки может быть огромным преимуществом. Даже простое понимание основ может оказаться крайне полезным для представителей многих IT-профессий, в том числе основателей стартапов. В этой статье вкратце рассмотрены инструменты и технологии, которыми должен овладеть начинающий комплексный веб-разработчик. Также приведены полезные ресурсы, которые помогут вам быстро начать своё обучение. А если вы просто хотите получить базовое представление о веб-разработке, то достаточно дочитать до главы «Бэкенд-фреймворки».

            Основы (HTML/CSS/JS)



            Один из лучших способов изучения основ — пройти онлайн-курс. Например, The Web Developer Bootcamp на Udemy. Здесь вы пройдёте через весь процесс создания своего первого сайта, после чего вам будет понятнее, куда двигаться дальше.

            Фреймворки


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



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

            Лучше всего начать изучать Bootstrap и jQuery. Сегодня это самые популярные фреймворки, используемые при создании подавляющего большинства сайтов.

            Bootstrap — CSS-фреймворк, предоставляющий кучу легко адаптируемых элементов интерфейса. Он позволяет очень быстро создавать адаптивные сайты (то есть хорошо выглядящие на мобильных устройствах). Недавно вышла новая версия Bootstrap, так что можете начать изучение с этого онлайн-курса.

            jQuery — JavaScript-фреймворк, значительно упрощающий манипулирование элементами веб-страницы. Под него создана масса плагинов для любой мыслимой задачи, так что когда вам понадобится какой-то интерактивный элемент, то можете быть уверены, что найдёте способ создать его с помощью jQuery. И это будет очень легко сделать, потому что на StackOverflow уже есть решение 95% проблем, с которыми вы столкнётесь.



            Начать изучение можно с этой замечательной лекции:





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

            WordPress


            WordPress — самая популярная в мире CMS (content management system), система управления контентом. Если вы просто хотите узнать, как можно просто кастомизировать свой сайт, то установите и изучите WordPress. Этого достаточно, больше вам ничего учить не придётся. Для WordPress доступно астрономическое количество графических тем и плагинов, которые покроют не менее 90% ваших потребностей.



            Доменные имена и хостинг


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



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

            Для хостинга можете воспользоваться Bluehost, это дешёвый, очень простой в использовании сервис, с прекрасной документацией и многочисленными инструментами автоматизации. Здесь крайне просто развернуть WordPress или захостить простенькие HTML-страницы, так что если хотите быстро начать — самое оно.

            А когда наберётесь немного опыта, вам понадобится VPS — виртуальный частный сервер. По сути, это удалённый компьютер, над которым вам предоставляют полный доступ. Он будет обслуживать ваши сайты, которые вы создадите с помощью фреймворков. Я рекомендую использовать DigitalOcean, у этого сервиса хорошие цены, красивый и понятный интерфейс.

            Бэкенд-фреймворки


            Итак, вы создали несколько простых сайтов с помощью вышеупомянутых инструментов, и готовы идти дальше, чтобы стать профессиональным строителем кастомных проектов.
            В этом случае лучше всего изучить один из бэкенд-фреймворков. Эти фреймворки работают на сервере и динамически генерируют HTML для сайта каждый раз, когда пользователь обращается к URL.
            Как обычно, есть куча доступных продуктов, но я рекомендую сразу обратиться к Django, Ruby on Rails и Node/Express.



            Вы можете услышать разные мнения, какой из этих фреймворков нужно изучить в первую очередь, но я очень рекомендую начать с Django, а затем перейти к Node/Express.

            Главным преимуществом Django является то, что он написан на Python —прекрасном мощном языке, использующемся везде, где только можно представить. К тому же это лучший выбор в качестве первого языка программирования.

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

            Мой любимый курс для начинающих — Getting Started with Django, я для дальнейшего изучения рекомендую превосходную книгу Two Scoops of Django. Также не проходите мимо бесплатных видеоруководств Майка Хибберта.

            Node и Express


            Node и Express — очень мощные инструменты, которые я рекомендую изучить после Django. Для начинающих они могут показаться сложноватыми, но если вы уже знаете Django, то проблем у вас не возникнет.



            У Node много преимуществ, и лучшего всего ощутить их на собственном опыте. Зачастую этот фреймворк позволяет создавать сайты гораздо быстрее Django. Вы глубже изучите многочисленные концепции программирования бэкенда, вам будет легче создавать API, работающие в реальном времени веб-приложения (например, чаты или игры), а также универсальные веб-приложения (вы столкнётесь с ними при изучении React). Лучший из известных мне онлайн-курсов по Node.

            Фронтенд-фреймворки


            Если вы освоили HTML/CSS/JS и какой-то бэкенд-фреймворк, то вы уже весьма умелый веб-разработчик, способный создавать многие виды сайтов. И если хотите стать комплексным (full-stack) разработчиком, то добро пожаловать в мир фронтенд-фреймворков.

            Они позволяют создавать мощные одностраничные (single-page) приложения. На текущем этапе вы создаёте приложения, которые целиком выполняются в браузере, иногда обмениваясь данными с сервером (наподобие Gmail или Trello).



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

            Не стану расписывать, как они работают или каковы их преимущества (это займёт много времени), но, к счастью, существует совершенно изумительный онлайн-курс, из которого вы почерпнёте всё, что нужно — Modern React with Redux. А для изучения более продвинутой функциональности можете посмотреть вторую часть курса — Advanced React and Redux. Его автор, Стивен Грайдер, невероятный учитель. Он умеет очень хорошо и увлекательно объяснять, так что вам будет совсем не скучно изучать все премудрости этих инструментов.

            Очень рекомендую создать сайт с помощью Node и React/Redux, потому что это поможет вам уловить, как создавать и использовать REST API, а также на базе набора технологий создавать мощное и полезное ПО.

            DevOps


            Последний кусочек мозаики под названием «комплексный веб-разработчик». Вам нужно изучить DevOps. Это глубокий предмет, в котором я не являюсь экспертом, но вам не будет слишком трудно разобраться в основах развёртывания веб-сайтов.



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

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



            Лично я изучал Docker с помощью вот этого курса. Он короткий и довольно простой для понимания.

            Заключение


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

            Конечно, по мере изучения вы сможете более глубоко погружаться в какие-то технологии, полнее осваивать какие-то инструменты, но я надеюсь, что теперь ваш путь будет менее извилистым и запутанным.
            Original source: habrahabr.ru (comments, light).

            https://habrahabr.ru/post/338034/


            Метки:  

            Краткое руководство для новичков, желающих стать комплексными (full stack) веб-разработчиками

            Пятница, 15 Сентября 2017 г. 17:47 + в цитатник
            SmirkinDA сегодня в 17:47 Разработка

            Краткое руководство для новичков, желающих стать комплексными (full stack) веб-разработчиками


              Знание веб-разработки может быть огромным преимуществом. Даже простое понимание основ может оказаться крайне полезным для представителей многих IT-профессий, в том числе основателей стартапов. В этой статье вкратце рассмотрены инструменты и технологии, которыми должен овладеть начинающий комплексный веб-разработчик. Также приведены полезные ресурсы, которые помогут вам быстро начать своё обучение. А если вы просто хотите получить базовое представление о веб-разработке, то достаточно дочитать до главы «Бэкенд-фреймворки».

              Основы (HTML/CSS/JS)



              Один из лучших способов изучения основ — пройти онлайн-курс. Например, The Web Developer Bootcamp на Udemy. Здесь вы пройдёте через весь процесс создания своего первого сайта, после чего вам будет понятнее, куда двигаться дальше.

              Фреймворки


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



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

              Лучше всего начать изучать Bootstrap и jQuery. Сегодня это самые популярные фреймворки, используемые при создании подавляющего большинства сайтов.

              Bootstrap — CSS-фреймворк, предоставляющий кучу легко адаптируемых элементов интерфейса. Он позволяет очень быстро создавать адаптивные сайты (то есть хорошо выглядящие на мобильных устройствах). Недавно вышла новая версия Bootstrap, так что можете начать изучение с этого онлайн-курса.

              jQuery — JavaScript-фреймворк, значительно упрощающий манипулирование элементами веб-страницы. Под него создана масса плагинов для любой мыслимой задачи, так что когда вам понадобится какой-то интерактивный элемент, то можете быть уверены, что найдёте способ создать его с помощью jQuery. И это будет очень легко сделать, потому что на StackOverflow уже есть решение 95% проблем, с которыми вы столкнётесь.



              Начать изучение можно с этой замечательной лекции:





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

              WordPress


              WordPress — самая популярная в мире CMS (content management system), система управления контентом. Если вы просто хотите узнать, как можно просто кастомизировать свой сайт, то установите и изучите WordPress. Этого достаточно, больше вам ничего учить не придётся. Для WordPress доступно астрономическое количество графических тем и плагинов, которые покроют не менее 90% ваших потребностей.



              Доменные имена и хостинг


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



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

              Для хостинга можете воспользоваться Bluehost, это дешёвый, очень простой в использовании сервис, с прекрасной документацией и многочисленными инструментами автоматизации. Здесь крайне просто развернуть WordPress или захостить простенькие HTML-страницы, так что если хотите быстро начать — самое оно.

              А когда наберётесь немного опыта, вам понадобится VPS — виртуальный частный сервер. По сути, это удалённый компьютер, над которым вам предоставляют полный доступ. Он будет обслуживать ваши сайты, которые вы создадите с помощью фреймворков. Я рекомендую использовать DigitalOcean, у этого сервиса хорошие цены, красивый и понятный интерфейс.

              Бэкенд-фреймворки


              Итак, вы создали несколько простых сайтов с помощью вышеупомянутых инструментов, и готовы идти дальше, чтобы стать профессиональным строителем кастомных проектов.
              В этом случае лучше всего изучить один из бэкенд-фреймворков. Эти фреймворки работают на сервере и динамически генерируют HTML для сайта каждый раз, когда пользователь обращается к URL.
              Как обычно, есть куча доступных продуктов, но я рекомендую сразу обратиться к Django, Ruby on Rails и Node/Express.



              Вы можете услышать разные мнения, какой из этих фреймворков нужно изучить в первую очередь, но я очень рекомендую начать с Django, а затем перейти к Node/Express.

              Главным преимуществом Django является то, что он написан на Python —прекрасном мощном языке, использующемся везде, где только можно представить. К тому же это лучший выбор в качестве первого языка программирования.

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

              Мой любимый курс для начинающих — Getting Started with Django, я для дальнейшего изучения рекомендую превосходную книгу Two Scoops of Django. Также не проходите мимо бесплатных видеоруководств Майка Хибберта.

              Node и Express


              Node и Express — очень мощные инструменты, которые я рекомендую изучить после Django. Для начинающих они могут показаться сложноватыми, но если вы уже знаете Django, то проблем у вас не возникнет.



              У Node много преимуществ, и лучшего всего ощутить их на собственном опыте. Зачастую этот фреймворк позволяет создавать сайты гораздо быстрее Django. Вы глубже изучите многочисленные концепции программирования бэкенда, вам будет легче создавать API, работающие в реальном времени веб-приложения (например, чаты или игры), а также универсальные веб-приложения (вы столкнётесь с ними при изучении React). Лучший из известных мне онлайн-курсов по Node.

              Фронтенд-фреймворки


              Если вы освоили HTML/CSS/JS и какой-то бэкенд-фреймворк, то вы уже весьма умелый веб-разработчик, способный создавать многие виды сайтов. И если хотите стать комплексным (full-stack) разработчиком, то добро пожаловать в мир фронтенд-фреймворков.

              Они позволяют создавать мощные одностраничные (single-page) приложения. На текущем этапе вы создаёте приложения, которые целиком выполняются в браузере, иногда обмениваясь данными с сервером (наподобие Gmail или Trello).



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

              Не стану расписывать, как они работают или каковы их преимущества (это займёт много времени), но, к счастью, существует совершенно изумительный онлайн-курс, из которого вы почерпнёте всё, что нужно — Modern React with Redux. А для изучения более продвинутой функциональности можете посмотреть вторую часть курса — Advanced React and Redux. Его автор, Стивен Грайдер, невероятный учитель. Он умеет очень хорошо и увлекательно объяснять, так что вам будет совсем не скучно изучать все премудрости этих инструментов.

              Очень рекомендую создать сайт с помощью Node и React/Redux, потому что это поможет вам уловить, как создавать и использовать REST API, а также на базе набора технологий создавать мощное и полезное ПО.

              DevOps


              Последний кусочек мозаики под названием «комплексный веб-разработчик». Вам нужно изучить DevOps. Это глубокий предмет, в котором я не являюсь экспертом, но вам не будет слишком трудно разобраться в основах развёртывания веб-сайтов.



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

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



              Лично я изучал Docker с помощью вот этого курса. Он короткий и довольно простой для понимания.

              Заключение


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

              Конечно, по мере изучения вы сможете более глубоко погружаться в какие-то технологии, полнее осваивать какие-то инструменты, но я надеюсь, что теперь ваш путь будет менее извилистым и запутанным.
              Original source: habrahabr.ru (comments, light).

              https://habrahabr.ru/post/338034/


              Метки:  

              Новая серия вебинаров по SAP Cloud Platform: разработка, интеграция, мобильные приложения и многое другое за месяц

              Пятница, 15 Сентября 2017 г. 16:44 + в цитатник
              SAP вчера в 16:44 Разработка

              Новая серия вебинаров по SAP Cloud Platform: разработка, интеграция, мобильные приложения и многое другое за месяц

                Привет, Хабр! С 20 сентября мы начинаем новую серию вебинаров про SAP Cloud Platform на русском языке. В течение месяца эксперты SAP проведут 11 семинаров с углубленным погружением в тему интернета вещей и машинного обучения, а также многочисленных сервисов платформы SAP Cloud Platform.

                В частности, мы расскажем о том, как:

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

                -> Регистрация на вебинары открыта по ссылке
                Original source: habrahabr.ru (comments, light).

                https://habrahabr.ru/post/338028/


                Метки:  

                Новая серия вебинаров по SAP Cloud Platform: разработка, интеграция, мобильные приложения и многое другое за месяц

                Пятница, 15 Сентября 2017 г. 16:44 + в цитатник
                SAP вчера в 16:44 Разработка

                Новая серия вебинаров по SAP Cloud Platform: разработка, интеграция, мобильные приложения и многое другое за месяц

                  Привет, Хабр! С 20 сентября мы начинаем новую серию вебинаров про SAP Cloud Platform на русском языке. В течение месяца эксперты SAP проведут 11 семинаров с углубленным погружением в тему интернета вещей и машинного обучения, а также многочисленных сервисов платформы SAP Cloud Platform.

                  В частности, мы расскажем о том, как:

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

                  -> Регистрация на вебинары открыта по ссылке
                  Original source: habrahabr.ru (comments, light).

                  https://habrahabr.ru/post/338028/


                  Метки:  

                  Большие маневры малого бизнеса: «Альфа-Бизнес Мобайл» и его возможности

                  Пятница, 15 Сентября 2017 г. 16:07 + в цитатник
                  Сама суть малого бизнеса в маневренности и стремительном темпе работы. Многие вещи делаются на ходу, поэтому высок спрос на мобильные решения. Со своей стороны банки заинтересованы в том, чтобы сделать жизнь таких бизнесменов немного проще. Для этого разрабатываются онлайн-сервисы и мобильные приложения, отвязывающие основные операции от стационарного рабочего места. Как это происходит на практике, мы испытали сами на примере сервиса «Альфа-Бизнес Мобайл». Читать далее

                  https://habrahabr.ru/post/336548/


                  Метки:  

                  Docker, или Туда и обратно

                  Пятница, 15 Сентября 2017 г. 16:05 + в цитатник
                  NikolaySivko сегодня в 16:05 Разработка

                  Docker, или Туда и обратно

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


                    Но в какой-то момент в production у наших клиентов начал появляться докер, и наш автодетект перестал работать. Процессу, который запускается через докер, проставляются различные namespace (mnt, net, user, pid), это достаточно сильно усложняет работу извне контейнера с файлами и сетью внутри контейнера.


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


                    Нашу задачу можно условно разделить на 2 части:


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

                    Файлы в контейнерах


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


                    Дальше мы наивно пробовали делать setns на MNT namespace прямо из кода агента, но это тоже не получилось. Дело в том, что setns на mnt (и user тоже) неймспейс может делать только однотредовое приложение:


                    A process may not be reassociated with a new mount namespace if it is multithreaded

                    Наш агент написан на golang и к моменту, когда мы хотим вызывать setns, гошный runtime уже наплодил нам несколько тредов. Чтобы агент мог запускать какие-то специальные процессы типа nsenter, нужно предварительно притащить их на машину клиенту, чего нам сильно не хотелось.


                    Был вариант запускать что-то через docker exec -ti, но, во-первых, эта команда доступна только с версии 1.3, во-вторых, существует не только докер, но еще и другие сервисы контейнеризации, а в-третьих, внутри контейнера может не быть даже cat.


                    Потом нашелся интересный хак для go, который позволяет сделать setns в сишном конструкторе до запуска go runtime. В итоге мы пришли к тому, что агент запускает сам себя с определенными аргументами и может прочитать файл в нужном ns, раскрыть glob по файловой системе контейнера и тому подобное. Но так как setns должен выполняться в C коде, пришлось писать на C и обработку аргументов запуска. Причем в момент вызова


                    __attribute__((constructor))

                    argv/argc еще не проинициализированы, так что пришлось читать аргументы запуска себя из /proc/self/cmdline.


                    При запуске агента в этом режиме он вываливает результат своей работы в stdout/stderr, а агент-родитель это читает. Отдельно пришлось сделать ограничение на размер читаемого файла: чтобы не нагружать диск мы даже не пытаемся читать файлы более 200KB (часто встречаются увесистые конфиги nginx с мапингом geoip), так как это может заметно прогрузить диск на клиентском сервере.


                    Такой подход хорошо работает только когда нужно один раз прочитать файл, но не годится, если нужно например tail'ить лог. С другой стороны логи на слоеные fs контейнеров обычно не пишут. Их обычно либо заворачивают в докеровские stdout/stderr и прогоняют через dockerd, либо пишут на примонтированные разделы на хостовую fs.


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


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


                    Сеть в контейнерах


                    Первая идея относительно того, как работать по сети с сервисом в контейнере была тоже наивной: мы будем брать из docker inspect IP контейнера и будем работать с ним. Потом выяснилось, что доступа с хоста в сеть контейнера может и не быть вовсе (macvlan). К тому же есть lxc итд.


                    Мы решили двигаться в сторону setns. Cетевой namespace в отличии от mnt и user можно переопределить для одного конкретного треда приложения. В golang с этим с первого взгляда все достаточно просто:


                    • запускаем горутину
                    • блокируем для нее текущий тред runtime.LockOSThread, таким образом другие горутины в этом треде исполняться не будут
                    • делаем setns
                    • если нужно, можно сделать setns на наш предыдущий namespace и снять лок на тред runtime.UnlockOSThread

                    Но все оказалось сложнее. На самом деле при блокировке треда runtime нам не гарантирует, что исполнение данной горутины останется в этом треде. Есть хорошее описание как раз такого случае в посте "Linux Namespaces And Go Don't Mix".


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


                    Так как влиять на планировщик go у нас нет возможности, мы стали искать способ оставить в треде только код, не приводящий к порождению новых тредов.


                    Мы заметили, что если сразу после setns делать tcp коннект, то он проходит в 100% случаев, и если потом выйти из namespace и отпустить лок на тред, открытое соединение продолжает работать (я затрудняюсь объяснить, почему это работает).


                    Дальше задача свелась к тому, чтобы всем библиотеками для работы с различными сервисами, которые мы мониторим, подсунуть наш Dialer (функцию, отвечающую за TCP connect):


                    • redis:
                      client := redis.NewClient(&redis.Options{
                          Dialer: func() (net.Conn, error) {
                              return utils.DialTimeoutNs("tcp", params.Address, params.NetNs, redisTimeout)
                          },
                          ReadTimeout:  redisTimeout,
                          WriteTimeout: redisTimeout,
                          Password:     params.Password,
                      })
                    • для memcached мы не используем никаких библиотек, а работаем с ним по tcp руками, следовательно тут тоже не возникло никаких проблем
                    • в rabbitmq мы ходим по http, стандартный http клиент умеет принять кастомные Dial
                    • mysql:
                      mysql.RegisterDial("netns", func(addr string) (net.Conn, error) {
                          return utils.DialTimeoutNs("tcp", addr, params.NetNs, connectTimeout)
                      })
                      db, err = sql.Open("mysql",
                          fmt.Sprintf("netns(%s)/?timeout=%s&readTimeout=%s&writeTimeout=%s",
                              params.Address, connectTimeout, readTimeout, writeTimeout))
                    • c postgresql получилось достаточно костыльно, пришлось делать свой псевдо драйвер для database/sql:

                    func init() {
                        sql.Register("postgres+netns", &drv{})
                    }
                    
                    type drv struct{}
                    
                    type nsDialer struct {
                        netNs string
                    }
                    
                    func (d nsDialer) Dial(ntw, addr string) (net.Conn, error) {
                        return utils.DialTimeoutNs(ntw, addr, d.netNs, connectTimeout)
                    }
                    
                    func (d nsDialer) DialTimeout(ntw, addr string, timeout time.Duration) (net.Conn, error) {
                        return utils.DialTimeoutNs(ntw, addr, d.netNs, timeout)
                    }
                    
                    func (d *drv) Open(name string) (driver.Conn, error) {
                        parts := strings.SplitN(name, "|", 2)
                        netNs := ""
                        if len(parts) == 2 {
                            netNs = parts[0]
                            name = parts[1]
                        }
                        return pq.DialOpen(nsDialer{netNs}, name)
                    }

                    потом вызываем свой драйвер:


                    dsn := fmt.Sprintf("%s|postgres://%s:%s@%s/%s", 
                        p.NetNs, p.User, p.Password, p.Address, dbName)
                    db, err := sql.Open("postgres+netns", dsn)

                    Итого


                    Оглядываясь назад, мы не пожалели, что выбрали вариант с setns, так этот же код недавно прекрасно сработал у клиента с lxc.
                    Единственный незакрытый на данный момент сервис — это jvm в контейнере, но это совсем другая история.

                    Original source: habrahabr.ru (comments, light).

                    https://habrahabr.ru/post/337964/


                    Метки:  

                    Docker, или Туда и обратно

                    Пятница, 15 Сентября 2017 г. 16:05 + в цитатник
                    NikolaySivko сегодня в 16:05 Разработка

                    Docker, или Туда и обратно

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


                      Но в какой-то момент в production у наших клиентов начал появляться докер, и наш автодетект перестал работать. Процессу, который запускается через докер, проставляются различные namespace (mnt, net, user, pid), это достаточно сильно усложняет работу извне контейнера с файлами и сетью внутри контейнера.


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


                      Нашу задачу можно условно разделить на 2 части:


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

                      Файлы в контейнерах


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


                      Дальше мы наивно пробовали делать setns на MNT namespace прямо из кода агента, но это тоже не получилось. Дело в том, что setns на mnt (и user тоже) неймспейс может делать только однотредовое приложение:


                      A process may not be reassociated with a new mount namespace if it is multithreaded

                      Наш агент написан на golang и к моменту, когда мы хотим вызывать setns, гошный runtime уже наплодил нам несколько тредов. Чтобы агент мог запускать какие-то специальные процессы типа nsenter, нужно предварительно притащить их на машину клиенту, чего нам сильно не хотелось.


                      Был вариант запускать что-то через docker exec -ti, но, во-первых, эта команда доступна только с версии 1.3, во-вторых, существует не только докер, но еще и другие сервисы контейнеризации, а в-третьих, внутри контейнера может не быть даже cat.


                      Потом нашелся интересный хак для go, который позволяет сделать setns в сишном конструкторе до запуска go runtime. В итоге мы пришли к тому, что агент запускает сам себя с определенными аргументами и может прочитать файл в нужном ns, раскрыть glob по файловой системе контейнера и тому подобное. Но так как setns должен выполняться в C коде, пришлось писать на C и обработку аргументов запуска. Причем в момент вызова


                      __attribute__((constructor))

                      argv/argc еще не проинициализированы, так что пришлось читать аргументы запуска себя из /proc/self/cmdline.


                      При запуске агента в этом режиме он вываливает результат своей работы в stdout/stderr, а агент-родитель это читает. Отдельно пришлось сделать ограничение на размер читаемого файла: чтобы не нагружать диск мы даже не пытаемся читать файлы более 200KB (часто встречаются увесистые конфиги nginx с мапингом geoip), так как это может заметно прогрузить диск на клиентском сервере.


                      Такой подход хорошо работает только когда нужно один раз прочитать файл, но не годится, если нужно например tail'ить лог. С другой стороны логи на слоеные fs контейнеров обычно не пишут. Их обычно либо заворачивают в докеровские stdout/stderr и прогоняют через dockerd, либо пишут на примонтированные разделы на хостовую fs.


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


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


                      Сеть в контейнерах


                      Первая идея относительно того, как работать по сети с сервисом в контейнере была тоже наивной: мы будем брать из docker inspect IP контейнера и будем работать с ним. Потом выяснилось, что доступа с хоста в сеть контейнера может и не быть вовсе (macvlan). К тому же есть lxc итд.


                      Мы решили двигаться в сторону setns. Cетевой namespace в отличии от mnt и user можно переопределить для одного конкретного треда приложения. В golang с этим с первого взгляда все достаточно просто:


                      • запускаем горутину
                      • блокируем для нее текущий тред runtime.LockOSThread, таким образом другие горутины в этом треде исполняться не будут
                      • делаем setns
                      • если нужно, можно сделать setns на наш предыдущий namespace и снять лок на тред runtime.UnlockOSThread

                      Но все оказалось сложнее. На самом деле при блокировке треда runtime нам не гарантирует, что исполнение данной горутины останется в этом треде. Есть хорошее описание как раз такого случае в посте "Linux Namespaces And Go Don't Mix".


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


                      Так как влиять на планировщик go у нас нет возможности, мы стали искать способ оставить в треде только код, не приводящий к порождению новых тредов.


                      Мы заметили, что если сразу после setns делать tcp коннект, то он проходит в 100% случаев, и если потом выйти из namespace и отпустить лок на тред, открытое соединение продолжает работать (я затрудняюсь объяснить, почему это работает).


                      Дальше задача свелась к тому, чтобы всем библиотеками для работы с различными сервисами, которые мы мониторим, подсунуть наш Dialer (функцию, отвечающую за TCP connect):


                      • redis:
                        client := redis.NewClient(&redis.Options{
                            Dialer: func() (net.Conn, error) {
                                return utils.DialTimeoutNs("tcp", params.Address, params.NetNs, redisTimeout)
                            },
                            ReadTimeout:  redisTimeout,
                            WriteTimeout: redisTimeout,
                            Password:     params.Password,
                        })
                      • для memcached мы не используем никаких библиотек, а работаем с ним по tcp руками, следовательно тут тоже не возникло никаких проблем
                      • в rabbitmq мы ходим по http, стандартный http клиент умеет принять кастомные Dial
                      • mysql:
                        mysql.RegisterDial("netns", func(addr string) (net.Conn, error) {
                            return utils.DialTimeoutNs("tcp", addr, params.NetNs, connectTimeout)
                        })
                        db, err = sql.Open("mysql",
                            fmt.Sprintf("netns(%s)/?timeout=%s&readTimeout=%s&writeTimeout=%s",
                                params.Address, connectTimeout, readTimeout, writeTimeout))
                      • c postgresql получилось достаточно костыльно, пришлось делать свой псевдо драйвер для database/sql:

                      func init() {
                          sql.Register("postgres+netns", &drv{})
                      }
                      
                      type drv struct{}
                      
                      type nsDialer struct {
                          netNs string
                      }
                      
                      func (d nsDialer) Dial(ntw, addr string) (net.Conn, error) {
                          return utils.DialTimeoutNs(ntw, addr, d.netNs, connectTimeout)
                      }
                      
                      func (d nsDialer) DialTimeout(ntw, addr string, timeout time.Duration) (net.Conn, error) {
                          return utils.DialTimeoutNs(ntw, addr, d.netNs, timeout)
                      }
                      
                      func (d *drv) Open(name string) (driver.Conn, error) {
                          parts := strings.SplitN(name, "|", 2)
                          netNs := ""
                          if len(parts) == 2 {
                              netNs = parts[0]
                              name = parts[1]
                          }
                          return pq.DialOpen(nsDialer{netNs}, name)
                      }

                      потом вызываем свой драйвер:


                      dsn := fmt.Sprintf("%s|postgres://%s:%s@%s/%s", 
                          p.NetNs, p.User, p.Password, p.Address, dbName)
                      db, err := sql.Open("postgres+netns", dsn)

                      Итого


                      Оглядываясь назад, мы не пожалели, что выбрали вариант с setns, так этот же код недавно прекрасно сработал у клиента с lxc.
                      Единственный незакрытый на данный момент сервис — это jvm в контейнере, но это совсем другая история.

                      Original source: habrahabr.ru (comments, light).

                      https://habrahabr.ru/post/337964/


                      Метки:  

                      [Из песочницы] Немного о безопасности терминалов в МФЦ

                      Пятница, 15 Сентября 2017 г. 14:59 + в цитатник
                      gdt сегодня в 14:59 Разработка

                      Немного о безопасности терминалов в МФЦ

                      Всем привет!

                      Недавно занесла меня нелёгкая в МФЦ (для тех, кто вдруг не в курсе, МФЦ — это многофункциональный центр по предоставлению государственных и муниципальных услуг, т. е. всевозможные бумажки делаются здесь). Пока ждал своей очереди, мозг усиленно искал какой-нибудь способ провести время с интересом и с пользой. И тут мой взгляд упал на одиноко стоящие терминалы для доступа к Госуслугам:


                      (на фотографии терминал уже после моих манипуляций).

                      Лирическое отступление


                      Несколько лет я проработал в компании, основным видом деятельности которой является создание терминалов на любой вкус — начиная от корпусов и заканчивая программным обеспечением. Перед отправкой клиенту каждый терминал проходит через отдел технического контроля, который следит за тем, чтобы отправляемый товар соответствовал определённым критериям качества. Особенно строго следили за безопасностью — антивандальные корпуса и кнопки со стороны железа, настройка операционной системы (как правило, MS Windows 7 и выше), свой shell и своя настраиваемая экранная клавиатура со стороны программного обеспечения. Соответственно, я по привычке решил подойти и «пощупать их привилегии», посмотреть, что же сделали поставщики терминалов для МФЦ в плане безопасности.

                      Ничего


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



                      На клавиатуре отсутствуют клавиши Alt и Win. Таким образом, сразу отпадают такие комбинации, как Ctrl+Alt+Del, Alt+Tab, Win+D, Win+R, Win+E и им подобные. Приглядываемся повнимательнее — и замечаем, что клавиши Ctrl, Shift и Esc зачем-то решили оставить. Пробуем Ctrl+Shift+Esc — вуаля! Диспетчер задач открыт с первой попытки. Вместе с диспетчером задач появляется и панель задач с кнопкой «Пуск». При помощи тачпада открываем меню, в поиске вводим «Экранная клавиатура», запускаем при помощи тачпада или клавиши Enter:



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

                      Что с этим можно сделать


                      Запускаем редактор реестра — Win+R+regedit+Enter:



                      Запускаем internet explorer (Win+R+iexplore+Enter) и переходим на любую нужную нам страницу:



                      Смотрим информацию о системе:



                      Кстати, очень интересно, откуда у них лицензионная Windows 7. По данным с сайта Microsoft продажи Windows 7 всех редакций закончились 31 октября 2013 г.

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



                      Как говорится, нет терминала — нет проблемы.

                      Остальные терминалы я не трогал, т. к. ими всё-таки пользуются люди. По этим причинам не удалось проверить, отключен ли Long Touch (открывает контекстное меню), и скачать что-либо на терминал тоже не успел.

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





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

                      Какие можно сделать выводы


                      А вот выводы из этой ситуации можно сделать очень печальные. С большой долей вероятности терминалы подключены к внутренней сети МФЦ (я не проверял). Я далеко не специалист в сфере IT безопасности, но могу предположить следующий вектор атаки, например:

                      1. Залить shell/backdoor/rootkit/что-нибудь ещё в этом духе на любой файлообменник
                      2. Открыть на терминале браузер, скачать и запустить, вернуть всё как было.
                      3. ????
                      4. PROFIT

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

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

                      P.S. В остальном впечатления от посещения МФЦ остались отличные.
                      Original source: habrahabr.ru (comments, light).

                      https://habrahabr.ru/post/338012/


                      Метки:  

                      [Из песочницы] Немного о безопасности терминалов в МФЦ

                      Пятница, 15 Сентября 2017 г. 14:59 + в цитатник
                      gdt сегодня в 14:59 Разработка

                      Немного о безопасности терминалов в МФЦ

                      Всем привет!

                      Недавно занесла меня нелёгкая в МФЦ (для тех, кто вдруг не в курсе, МФЦ — это многофункциональный центр по предоставлению государственных и муниципальных услуг, т. е. всевозможные бумажки делаются здесь). Пока ждал своей очереди, мозг усиленно искал какой-нибудь способ провести время с интересом и с пользой. И тут мой взгляд упал на одиноко стоящие терминалы для доступа к Госуслугам:


                      (на фотографии терминал уже после моих манипуляций).

                      Лирическое отступление


                      Несколько лет я проработал в компании, основным видом деятельности которой является создание терминалов на любой вкус — начиная от корпусов и заканчивая программным обеспечением. Перед отправкой клиенту каждый терминал проходит через отдел технического контроля, который следит за тем, чтобы отправляемый товар соответствовал определённым критериям качества. Особенно строго следили за безопасностью — антивандальные корпуса и кнопки со стороны железа, настройка операционной системы (как правило, MS Windows 7 и выше), свой shell и своя настраиваемая экранная клавиатура со стороны программного обеспечения. Соответственно, я по привычке решил подойти и «пощупать их привилегии», посмотреть, что же сделали поставщики терминалов для МФЦ в плане безопасности.

                      Ничего


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



                      На клавиатуре отсутствуют клавиши Alt и Win. Таким образом, сразу отпадают такие комбинации, как Ctrl+Alt+Del, Alt+Tab, Win+D, Win+R, Win+E и им подобные. Приглядываемся повнимательнее — и замечаем, что клавиши Ctrl, Shift и Esc зачем-то решили оставить. Пробуем Ctrl+Shift+Esc — вуаля! Диспетчер задач открыт с первой попытки. Вместе с диспетчером задач появляется и панель задач с кнопкой «Пуск». При помощи тачпада открываем меню, в поиске вводим «Экранная клавиатура», запускаем при помощи тачпада или клавиши Enter:



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

                      Что с этим можно сделать


                      Запускаем редактор реестра — Win+R+regedit+Enter:



                      Запускаем internet explorer (Win+R+iexplore+Enter) и переходим на любую нужную нам страницу:



                      Смотрим информацию о системе:



                      Кстати, очень интересно, откуда у них лицензионная Windows 7. По данным с сайта Microsoft продажи Windows 7 всех редакций закончились 31 октября 2013 г.

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



                      Как говорится, нет терминала — нет проблемы.

                      Остальные терминалы я не трогал, т. к. ими всё-таки пользуются люди. По этим причинам не удалось проверить, отключен ли Long Touch (открывает контекстное меню), и скачать что-либо на терминал тоже не успел.

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





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

                      Какие можно сделать выводы


                      А вот выводы из этой ситуации можно сделать очень печальные. С большой долей вероятности терминалы подключены к внутренней сети МФЦ (я не проверял). Я далеко не специалист в сфере IT безопасности, но могу предположить следующий вектор атаки, например:

                      1. Залить shell/backdoor/rootkit/что-нибудь ещё в этом духе на любой файлообменник
                      2. Открыть на терминале браузер, скачать и запустить, вернуть всё как было.
                      3. ????
                      4. PROFIT

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

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

                      P.S. В остальном впечатления от посещения МФЦ остались отличные.
                      Original source: habrahabr.ru (comments, light).

                      https://habrahabr.ru/post/338012/


                      Метки:  

                      Hackspace Capital: от World of Tanks к технологическим инновациям

                      Пятница, 15 Сентября 2017 г. 14:39 + в цитатник
                      Пол Грэм в эссе о стартапах отлично подметил одного желания и идеи недостаточно, чтобы стартап стал успешным. Это сложная работа над собой (эмоциональные американские горки обеспечены), выполнение массы рутинных и несвойственных задач, поиск все новых пользователей и партнеров, вопросы доверия. Стартапам нужна моральная и финансовая поддержка, которую ищут в инвесторах. читать далее

                      https://habrahabr.ru/post/337954/


                      Метки:  

                      Hackspace Capital: от World of Tanks к технологическим инновациям

                      Пятница, 15 Сентября 2017 г. 14:39 + в цитатник
                      Пол Грэм в эссе о стартапах отлично подметил одного желания и идеи недостаточно, чтобы стартап стал успешным. Это сложная работа над собой (эмоциональные американские горки обеспечены), выполнение массы рутинных и несвойственных задач, поиск все новых пользователей и партнеров, вопросы доверия. Стартапам нужна моральная и финансовая поддержка, которую ищут в инвесторах. читать далее

                      https://habrahabr.ru/post/337954/


                      Метки:  

                      Пятничное: пузырь ICO

                      Пятница, 15 Сентября 2017 г. 14:25 + в цитатник

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

                      Читать дальше ->

                      https://habrahabr.ru/post/338008/


                      Метки:  

                      Пятничное: пузырь ICO

                      Пятница, 15 Сентября 2017 г. 14:25 + в цитатник

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

                      Читать дальше ->

                      https://habrahabr.ru/post/338008/


                      Метки:  

                      Sci-fi для стартапа: как связаны технологическое предпринимательство и научная фантастика

                      Пятница, 15 Сентября 2017 г. 13:47 + в цитатник

                      Метки:  

                      Поиск сообщений в rss_rss_hh_full
                      Страницы: 1824 ... 1533 1532 [1531] 1530 1529 ..
                      .. 1 Календарь