Задать вопрос
  • Как выяснить, что пользователь не бот, а реальный человек?

    Видел работу бота, который даёт новым вступившим 60 сек нажать кнопку.
    Т.е. в ответ на событие вступления в группу, бот пишет что-то типа
    "Вася, у вас есть 60 секунд подтвердить, что вы не бот, нажав кнопку под этим сообщением" и с сообщением идет callback button.

    Если не жмёт – аккаунт банится.

    Наверное, можно и чуть усложнить:
    предлагать несколько кнопок с единственной правильной, и варьировать тексты кнопок. В т.ч. в сообщении загадывать простую загадку типа "Пять плюс десять это сколько?" и кнопки 3, 10, 15, 25. Или "Число делится на три. Неправильный ответ" - 9, 10, 12, 15.

    Но всё это не поможет, если вступает реальный человек, а потом, чуть пообщавшись, запускает под этим же аккаунтом Tg-клиента бота.
    Ответ написан
    1 комментарий
  • Как удалить лишний текст в Python скрипте?

    akelsey
    @akelsey
    что-то вроде:
    match = re.search(r'<([^<>]+)>', sys.argv[1])
    имейл можно забрать из match.group(1)
    Ответ написан
    1 комментарий
  • Как удалить лишний текст в Python скрипте?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    data = '"mail@xxx.com" <mail@xxx.com>'
    print(data.split('<')[1].split('>')[0])
    Ответ написан
    Комментировать
  • Как искать роутеры, которые сотрудники приносят на работу?

    CityCat4
    @CityCat4 Куратор тега Сетевое оборудование
    Дома с переломом ноги
    Вопрос скорее не технический, а организационный. Хотя техническая часть в нем есть.
    Технически:
    - привязка mac к порту
    - укладка провода так, чтобы просто так не добраться (человек ленив, если надо лезть под стол - точно не полезет)
    - отобрать админские права на винду у тех, кому они не нужны
    - arpwatch всюду

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

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

    В 2015-м вроде как один такой чел у нас решил "попробовать" Tor. Ну, директор по безопасности вызвал его и его начальника, поговорил... Челу как бабка отшептала что-то пробовать, до сих пор у нас работает...
    Ответ написан
  • Как искать роутеры, которые сотрудники приносят на работу?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Настраивать авторизацию, хоть тот же 802.1X.
    Ответ написан
    3 комментария
  • Для чего нужен Docker?

    @spotifi
    Внутри Docker только Linux, и, экспериментально, FreeBSD. Запускается нативно под Linux и, экспериментально, под FreeBSD. Под MacOSX, Windows - через виртуальную машину.

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

    Это почти виртуальная машина. Почти, да не совсем.


    Есть такое понятие "ад зависимостей". Любое ПО устанавливаемое на компьютер, тянет за собой зависимости (конфигурационные файлы, статические файлы называемые обычно asset, вспомогательные утилиты/сервисы, библиотеки и пр.). Ряд из этих библиотек/утилит/сервисов несовместим друг с другом. А с учетом того, что каждая из этих библиотек/утилит/сервисов имеет и свои зависимости - ситуация еще хуже.

    Например, мы используем Yandex.Cocaine, которая нормально компилируется только на Ubuntu 14.04 (и, вроде, на Debian 7). Но не под CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16 и пр. - скомпилировать его невозможно. Запускаем в этих операционных системах в Докере.

    С другой стороны, и одновременно с этим, вам необходимо установить другое, более современное ПО. И одновременно более старое. Причем речь даже не идет об серьезно отличающихся версиях Linux. Например, одно ПО требует не менее Ubuntu 14.10, а другое не более Linux 14.04.

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

    Таким образом, мы имеем бинарный файл запускаемый как бы в своей операционной системе.

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

    Но виртуальные машины с Докером используются только для разработки. Для запуска в production виртуальные машины с Докер не используются.

    Докер использует контейнеры операционной системы. LXC в Linux, Jails в FreeBSD. Контейнер - это область операционной системы, изолированная от основной части операционной системы. В контейнере свое дерево каталогов (включая системные /dev, /bin, /sbin и пр.), свои сетевые порты и пр. и пр.

    Но при этом не используется полная виртуализация. Что существенно экономит ресурсы. Запустить 100 полноценных виртуальных машин вряд ли получится даже на мощном сервере. А вот запустить 100 контейнеров Docker даже на слабом домашнем компьютере - возможно.

    Правда использование не полной виртуализации ограничивает использование операционных систем внутри контейнеров. Как правило, это специально подготовленные версии Linux или FreeBSD. Именно специально подготовленные. Windows - в принципе в контейнере запустить невозможно.

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

    Зачем это используется?

    Ребята из всяческих Dropbox, Facebook и и пр. гигантах, запускающие по 1 млн. различных программ в своих сервисах, столкнулись, что невозможно везде гарантировать идентичные настройки операционной системы. А это критично.

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

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

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

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

    До этого люди мучались, придумывали хитрые инсталяторы...

    Потом плюнули на попытки упорядочить окружение в ОС - и сейчас концепция такова - устанавливать программы на сервера вместе со своими индивидуально настроенными под них операционными системами - то есть внутри контейнеров. 1 контейнер = 1 настройка ОС = 1 программа внутри.

    Другими словами:
    • Докер-контейнер нужно использовать для отладки.
    • Тот же Докер-контейнер нужно использовать и на сервере.


    Это позволяет не трудиться с настройками "под сервер" локально на машине разработчика. Это позволяет разрабатывать на машине разработчика совершенно разные программы одновременно, которые требует несовместимых настроек операционной системы. Это позволяет давать гораздо больше гарантий, что программа на сервере будет вести себя также как и на машине разработчика. Это позволяет разрабатывать под Windows/MacOSX с удобным "прозрачным" тестированием под Linux.

    Докер применим к созданию/настройке только серверного программного обеспечения под Linux (экспериментально под FreeBSD). Не для смартфонов. А если десктопов - то только программное обеспечение без GUI.

    Посколько Докер позволил одним махом упростить работу разработчикам и админам и повысить качество результата - сейчас бум на Докер. Придумано огромная гора инструментов для управления развертыванием приложений созданных с Докером. Если раньше чтобы запустить 10 000 программ на 1000 серверах нужно было как минимум 3 высококвалифицированнейших девопса, которые писали кучу описаний как это сделать на Puppet, Salt, Chef, Ansible, да и то не было гарантий, это все тестилось месяцами. То сейчас с Докер даже один квалифицированных девопс может рулить миллионами программ на десятках тысяч серверов. С куда как большей гарантией, что все это заведется нормально.

    UPD:

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

    Разработчик отдает весь свой результат в систему CI (обычно через git)
    CI на каждый новый коммит делает с помощью Docker образ для тестирования.
    Если тесты проходят успешно, то этот же самый Docker образ, отправляется на развертывание в production.
    Или, чуть иначе в компилируемых системах, где исходники не нужны в production: в Docker производится развертывание среды для компиляции, а для тестирования разворачивается второй образ с уже откомпилированным добром, который уже отправляется в production.

    То есть при правильной огранизации дела разработчик не может/не должен влиять на то, какой будет образ.
    А вот в тестовой среде (запускаемом на сервер, недоступном разработчику в больших командах) и в production как раз используется один и тот же образ.

    Основная идея - что тестировали, ровно то и запускаем на боевом сервере. Один-в-один, включая те же самые файлы (не такие же, а именно те же самые).
    Ответ написан
    16 комментариев
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

    1) Есть одна физическая машина. Вы устанвливаете софт, разные приложухи, базы, web сервера, заходят тестовые юзеры, что-то запускают. Первая проблема - вы не понимаете кому что надо, кто владелец файлов, приложух, зачем висят демоны и кто за это ответственнен. Как выход, вы решаете это разделить на виртуалки.

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

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

    LenovoId
    @LenovoId
    svg, css,js
    ну как бы - сайт то не ваш.
    а в своём огороде хочу помидоры рощу а хочу кактусы
    Ответ написан
    2 комментария
  • Где можно реально практиковать навыки по системному администрированию?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Берешь:
    - либо сервак с авито за копейки
    - либо VPS за еще большие копейки
    (сервак выйдет подороже - тк памяти нужно больше)
    и начинаешь решать задачи, которые приходят в голову.
    Ну например, поднять на серваке прокси и vpn и настроить выход своего компа через этот прокси так, чтобы канал от тебя до vps был защищен (то есть прокси имел адрес типа 10.0.0.1)
    Или например взять мусорный домен на .xyz, поднять на этом серваке почту в этом домене, настроить к почте DKIM, SPF, DMARC, greylist, антивирь бесплатный какой-нибудь, сделать так, чтобы письма с адреса (предположим) bigboss@blabla.xyz проходили и нормально отображались в гугле и яндексе (причем mxtoolbox должен показывать, что записи spf, dmarc валидны)
    Ответ написан
    6 комментариев
  • Как отформатировать вывод cmd?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вариантов много. Например, весь вывод разбить на строки и выводить в цикле только те, которые содержат нужную подстроку. Или воспользоваться библиотекой re, там есть несколько вариантов.
    Но если вам это сложно - обращайтесь на фриланс.
    Ответ написан
    Комментировать
  • Почему 2 или более модулей оперативной памяти быстрее, чем 1?

    Из-за двух и реже четырёх-канального режима.
    Если твоя МП и процессор поддерживают двухканальный режим (а это считай что все актуальные процессоры), у тебя два одинаковых модуля (одинаковая частота, тайминги, объём итд), и ты корректно их вставил в МП (смотри в инструкцию), то тогда будет использоваться двухканальный режим, который по сути в 2 раза умножает пропускную способность памяти.
    Ответ написан
    Комментировать
  • Как решить Задачу Линейного Программирования методом Динамического программирования?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Задача решается в уме.
    x1 при росте целевой функции на 4 даёт рост ограничивающей функции на 16, то есть 0.25 к 1.
    x2 даёт 2.(6) к 1
    x3 даёт 1.5 к 1
    Вывод - максимально выгодно поднимать x2 не трогая остальные переменные.
    x1 = 0
    x2 = 24 / 6 = 4
    x3 = 0
    f(x1, x2, x3) = 4 * 0 + 16 * 4 + 6 * 0 = 64
    Ответ написан
    Комментировать
  • Почему бот не может первым отправить сообщение пользователя в личку?

    @drunken_ikarus Автор вопроса
    1. У бота есть 300 секунд на отправку сообщения после подачи запроса.
    2. Сообщение должно быть отправлено ДО принятия запроса, иначе будет ошибка.
    3. Если юзер не отвечает в течение 5 минут, то бот "блочится серверно" по отношению к этому юзеру. Повторная отправка сообщения позднее 5 минут — получит 403 ошибку: Forbidden: bot can't initiate conversation with a user.
    Ответ написан
    Комментировать
  • Регулярные визиты с Biterika Grupp, с чем связаны?

    @Hecktosaurus
    Люблю писать код под специфические задачи
    Недавно банил их, столкнулся с тем же самым, тематика сайта отличается от автора. В итоге забанил этим диапазоном в htaccess, и собрал инструмент для автосбора сбора и блока по ip/подсети

    Изначально создавался для отсева вредителей - спаммеров, накрутчиков - в Метрике
    https://github.com/HDDen/MetrikaSypexGeo

    RewriteCond %{REMOTE_ADDR} ^109\.248\. [OR]
    RewriteCond %{REMOTE_ADDR} ^176\.53\.186\. [OR]
    RewriteCond %{REMOTE_ADDR} ^185\.181\. [OR]
    RewriteCond %{REMOTE_ADDR} ^188\.130\. [OR]
    RewriteCond %{REMOTE_ADDR} ^193\.53\. [OR]
    RewriteCond %{REMOTE_ADDR} ^194\.32\. [OR]
    RewriteCond %{REMOTE_ADDR} ^194\.34\. [OR]
    RewriteCond %{REMOTE_ADDR} ^194\.35\. [OR]
    RewriteCond %{REMOTE_ADDR} ^194\.156\. [OR]
    RewriteCond %{REMOTE_ADDR} ^212\.115\.49\. [OR]
    RewriteCond %{REMOTE_ADDR} ^213\.226\.101\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.11\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.134\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.135\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.139\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.140\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.142\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.144\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.145\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.15\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.81\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.84\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.86\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.87\. [OR]
    RewriteCond %{REMOTE_ADDR} ^45\.90\. [OR]
    RewriteCond %{REMOTE_ADDR} ^46\.8\. [OR]
    RewriteCond %{REMOTE_ADDR} ^77\.83\. [OR]
    RewriteCond %{REMOTE_ADDR} ^77\.94\. [OR]
    RewriteCond %{REMOTE_ADDR} ^92\.119\.193\. [OR]
    RewriteCond %{REMOTE_ADDR} ^94\.158\.190\. [OR]
    RewriteCond %{REMOTE_ADDR} ^95\.182\. [OR]
    RewriteCond %{REMOTE_ADDR} ^31\.40\.203\.
    RewriteRule . - [F]
    Ответ написан
    Комментировать
  • Регулярные визиты с Biterika Grupp, с чем связаны?

    @GoGetSky
    Думаю, что именно такая причина и есть - накрутка ПФ. Возможно - ломают ПФ, возможно "нагуливают" профили на вашем сайте.
    По поводу блока - по диапазону в штакете можно блочить, но есть шанс отрезать и реальных юзеров.
    Ответ написан
    3 комментария
  • Регулярные визиты с Biterika Grupp, с чем связаны?

    @Cliffe Автор вопроса
    Дизайнер, веб разработчик
    Кому Битерика досаждает до сих пор, я выкатил решение: https://cliffe.ru/statyi/biterika_spam_resheniye/
    Ответ написан
    Комментировать
  • Почему не работает JSON.parse?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    - let text = `{"content":"<svg width=\"133\" height=\"510\" viewBox=\"0 0 133 510\">"}`
    + let text = '{"content":"<svg width=\\"133\\" height=\\"510\\" viewBox=\\"0 0 133 510\\">"}'

    Как получить правильный JSON:
    console.log(JSON.stringify({content: '<svg width="133" height="510" viewBox="0 0 133 510">'}))
    // '{"content":"<svg width=\\"133\\" height=\\"510\\" viewBox=\\"0 0 133 510\\">"}'
    Ответ написан
    2 комментария
  • Как и от каких атак защитить свой сервер, находящийся на чужом гипервизоре?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Дома с переломом ноги
    Необходимо защитить его так, чтобы клиент не мог войти в него и завладеть моим ПО.

    Невозможно.

    Чтобы войти, ему нужен логин/пароль, он их не знает.
    Чтобы их взломать, ему нужно, как минимум, сервер перезагрузить.

    Неверно. Ему не нужно их ломать. Ему достаточно поменять initramfs, добавив туда логгер - и от отправит ему введенный Вами самим ключ :)

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

    @rPman
    Универсально защититься нельзя. Но некоторые атаки будут стоить дорого, на столько что не будут иметь смысла.

    Все же дешевле будет приобрести отдельный компьютер, разместить его в сейфе с пломбами и добавить контроль за целостностью корпуса - при вскрытии выключать компьютер... и да, оперативную памяти перед выключением нужно очищать, в linux вроде помню можно было даже при панике это сделать, а в windows хз (потому что содержимое ram можно восстановить если заморозить его и оперативно извлечь из компьютера). Кстати про оперативную память, если запустить свой гипервизор, в котором есть поддержка шифрования памяти (в современные процессоры эту фичу уже встроили AMD SME/SEV, Intel TME/MKTME) то это защитит от атаки извечения памяти.

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

    upd. компьютеры с поддержкой TPM 2.0 поддерживают шифрование на уровне биос, т.е. загрузчик можно зашифровать, ключи залить в биос, и никто даже реверсить не сможет. Пример как это с дебианом сделали
    Ответ написан
    Комментировать