• Что лучше, Website Protection L7 или Reverse Proxy for Websites?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    https://my.blazingfast.io/cart/firewall/

    Кратко:
    1. L7 - поведенческий фильтр (уровень Apllication)
    2. Reverse Proxy - горизонтальное шардирование нагрузки (возможно и канала) на "внутренние" (за основным IP для домена!) сервера.

    Если делать грамотно - можно сделать фильтр L7 у себя своими силами в коде скрипта (ну, никто не говорил, что просто)), а чтобы "не забили" трафиком канал (в случае чего) - Reverse Proxy взять.
    В итоге - у Вас будет сразу 2 фильтра:
    1. Ваш личный: L7
    2. Купленный у хостера: Reverse Proxy
    Ответ написан
    Комментировать
  • Как поставить Ubuntu 16.04.1 LTS на раздел диска C:/ не повредив D:/?

    slo_nik
    @slo_nik
    Доброе утро.
    Вот ссылка
    Ответ написан
    Комментировать
  • Как поставить Ubuntu 16.04.1 LTS на раздел диска C:/ не повредив D:/?

    orsinium
    @orsinium
    ИБ, Python, Web
    При установке выбираете manual partition, выбираете sda3 как точку монтирования для / (root), указываете, что нужно форматировать данный раздел. Другие разделы можете не трогать, а можете примонтировать куда-нибудь в /mnt (например, sda4 в /mnt/data/). Просто не нужно менять файловую систему раздела или форматировать раздел, и всё будет в порядке :)

    У меня дружно сосуществуют win, mint, kali и общий раздел с данными, так что проблем быть не должно. Хотя в любом случае данные лучше забэкапить. Если нет внешнего харда, лучше в облако на mega или mail.
    Ответ написан
    Комментировать
  • Что на сайте нужно обязательно кэшировать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Обязательно - не надо ничего кэшировать.
    Дополнение от dimasmagadan : Не забываем про настройку сервера для того, чтобы браузер клиента мог сам кэшировать страницы.

    В идеале, кэшировать надо данные ВСЕХ функциональных блоков, зависящих от входных параметров.
    К ним относятся:
    1. SQL-запросы и ответы
    2. поиск по любой структуре данных и результат этого поиска
    3. файловая структура, находящаяся по определённому пути
    4. данные, полученные для каждого из блоков представления ("список", "выборка", "статистика" и т.д.)
    5. сформированный шаблонизатором контент на основе GET-параметров

    Всегда кэшируйте первым тот блок, который занимает больше времени при обработке данных и т.д. по нисходящей.
    Первые претенденты на кэширование, как правило: блоки с пунктами 2, 3 и 5.

    Дополнение от Алексей Уколов :
    Кеширование - это большая боль для разработчика, на самом деле. И "не надо кешировать" - это именно с этой точки зрения. Любой кеш усложняет приложение в разы, потому что его нужно инвалидировать, обрабатывать ошибки и т.п. Но часто без него не обойтись, это факт.
    Ответ написан
    7 комментариев
  • Как узнать почему падает сайт?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    99% бед подобных зависят от хостера. Некоторые вроде timeweb вообще тупо завышают показатели нагрузок! Что бы меняли тарифы на более дорогие.
    Ответ написан
    Комментировать
  • Что на сайте нужно обязательно кэшировать?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Тяжёлые места, которые могут повесить сайт при повышенной нагрузке.
    Например, данные на главной странице, или динамический контент, отображаемый без регистрации.

    Представьте, что на сайт зайдёт 1000 человек одновременно, просто на главную страницу сайта. Во что именно упрётся загрузка в такой системе - то и стоит по возможности кешировать, чтобы загрузка этих данных упиралась не в БД или диск, а подгружалась, например, в готовом виде из RAM.
    Ответ написан
    Комментировать
  • Как открыть порты с Virtual Box на Windows 10 и с него на роутере?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Через режим сетевого адаптера "NAT":
    1. Откройте параметры сетевого адаптера, жмакните выкидушку "Дополнительно".
    2. Откройте "Проброс портов".
    3. Добавьте проброс порта, указав здесь порт хоста, который будет транслироваться в указанный порт гостя. Адреса можно оставить пустыми.
    4. Добавьте проброс на роутере до порта хоста.


    Через режим сетевого адаптера "Сетевой мост":
    1. Добавьте проброс на роутере до опубликованного порта гостя.
    Ответ написан
    Комментировать
  • Почему в php и java получаются разные md5?

    @bizon2000
    Java-программист
    Вот здесь: utf8_string.getBytes() не задана явно кодировка UTF-8, поэтому используется дефолтная кодировка платформы. Если нужно, чтобы PHP-скрипт выдавал такую же сумму, как java, задайте в нем соответствующую вашей платформе кодировку, в вашем случае это "ISO-8859-1"
    Ответ написан
    2 комментария
  • Как отправить смайл через Telegram Bot?

    @hps5mf
    Пример решения, для питона вы сможете найти тут )
    https://github.com/mustafababil/Telegram-Weather-B...

    Код смайлов тут:
    apps.timwhitlock.info/emoji/tables/unicode
    Ответ написан
    1 комментарий
  • Как создать fail2ban regex выражение?

    @Fess
    Моя версия fail2ban
    #fail2ban-server -V
    Fail2Ban v0.9.3

    в файл /etc/fail2ban/jail.local добавить:
    [minecraft]
    filter   = minecraft
    enabled  = true
    logpath  = full_path_to_minecraft_logs
    bantime  = 3600
    findtime  = 60
    maxretry = 3

    [minecraft] - название файла-фильтра (minecraft.conf), либо (если назвали секцию как-нибудь произвольно), используем директиву filter;
    filter - указывает название файла-фильтра( в нашем случае minecraft.conf) без расширения;
    findtime и bantime в секундах;
    maxretry - количество вхождений строки в лог;
    logpath - полный путь к файлам логов. Можно использовать * и ? как знаки-подстановки.

    В файле-фильтре /etc/fail2ban/filter.d/minecraft.conf пишем следующее:
    [Definition]
    failregex = \[INFO\] \[\/<HOST>:\d+\] <-> InitialHandler has connected$
    ignoreregex =

    -----------------------------------------------
    Правила, используемые вашей версией fail2ban зависят от версии питона, используемого на системе.
    #python -V
    Python 2.6.6

    Документация на модуль регулярных выражений python 2.7: https://docs.python.org/2/library/re.html
    Учитывайте, что флаг re.MULTILINE уже используется в fail2ban. Т.е. знаки ^ и $ матчат начало и конец строки.

    Нюансы написания фильтров для fail2ban: www.fail2ban.org/wiki/index.php/MANUAL_0_8#Filters

    Инструменты для проверки регулярный выражений:
    https://regex101.com/#python
    https://www.debuggex.com/
    Рекомендую первую ссылку.

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


    Для примера(на первом ресурсе):
    • в поле текста забейте свои логи
    • в поле gmixsu напишите gm (это аналог служебных флагов для выражения, вроде re.MULTILINE в python'е)
    • в поле регулярки забиваем [0-9] - выделит все цифры как отдельные элементы. Значения элементов выражения смотрим в подсказках.
    • Добиваем регулярку до вида: [0-9]+ - имеем 4 цифры как отдельные элементы: т.е. ip 192.168.0.1 разбивается на элементы 192, 168, 0 и 1
    • Точка в регулярках - спец. символ. Мапится в любой один знак. Экранируем его, ибо ищем точку, а не любой символ, иначе символ _ в строке 192_ так же попадёт под выражение.
    • Итого, приведём выражение к виду [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+. Сразу понятно будет, что этим выражением выделим все ip адреса в логах.

    Снимите флаг g в примере(поле gmixsu ;)) и напишите регулярное выражение заново. По мере набора, будет понятно, зачем конструкция [0-9]+\. повторяется несколько раз в итоговой регулярке.

    Данное выражение можно построить и более изящно, но на первом этапе важно понимание работы регулярок. Потом можно будет строить и более сложные выражения.
    Ответ написан
    7 комментариев
  • Авторизация пользователей на Symfony 2?

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    проверяйте авторизацию как угодно, а потом делайте вот так

    $session = $this->client->getContainer()->get('session');
    
    $firewall = 'secured_area';
    $token = new UsernamePasswordToken('username', null, $firewall, array('ROLE_USER'));
    $session->set('_security_'.$firewall, serialize($token));
    $session->save();
    
    $cookie = new Cookie($session->getName(), $session->getId());
    $this->client->getCookieJar()->set($cookie);


    или делайте свой провайдер аутентификации

    symfony.com/doc/current/cookbook/security/custom_a...
    Ответ написан
    1 комментарий
  • Как быстро перенести домен на новый IP?

    ivnik
    @ivnik
    Как вариант, можно уменьшить TTL зоны до нескольких минут. Недостаток этого подхода в том, что вырастет количество запросов на DNS сервера и возможно увеличится время открытия страниц у пользователей.
    Ответ написан
    2 комментария
  • Rinetd и трансляция реальных ip. Возможно ли?

    ivnik
    @ivnik
    Вам должно помочь использование iptables/DNAT:

    # iptables -t nat -A PREROUTING -d x.x.x.x -j DNAT --to-destination y.y.y.y
    
    Ответ написан
    8 комментариев
  • Закрыть все кроме 22, 80, 5432 портов через iptables?

    ForeverYoung
    @ForeverYoung
    1. закрыть все входящие порты
    iptables -P INPUT DROP
    2. открыть все исходящие порты
    iptables -P OUTPUT ACCEPT
    3. открыть порт 80 для всех входящих соединений
    iptables -A INPUT --dport 80 -j ACCEPT
    4. открыть 22 и 5432 порты только для конкретного IP
    iptables -A INPUT -m multiport --dports 22,5432 -s IP_ADDRESS -j ACCEPT
    Ответ написан
    9 комментариев