Задать вопрос
  • Как разрешить доступ на сервер только с определенных IP?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Все работает, но только до перезагрузки сервера. Как сохранить постоянно такие ограничения?

    Предположу, что nftables не был включен для автоматического запуска при загрузке системы, он просто был перезапущен в текущей сессии. Эта команда создаст необходимые ссылки, чтобы systemd запускал nftables при каждой загрузке, который в свою очередь, автоматически загрузит конфигурации из конфигов:
    sudo systemctl enable nftables
    Ответ написан
    2 комментария
  • Где лучше создать папку для проекта и вирутальное окружение к нему?

    @tolstoy92
    Для начала ты должен понимать, зачем вообще нужно виртуальное окружение.
    Каждое приложение как правило разворачивается в изолированной среде. Туда устанавливаются только те зависимости, которые нужны для работы этого приложения (Как правило, зависимости указываются в requirements.txt/pyproject.toml и т.д.).
    При разработке тебе ничто не мешает вообще не использовать виртуальное окружение, но рано или поздно ты столкнешься с проблемой несовместимости библиотек на разных проектах.
    Поэтому хорошей практикой является использование отдельного виртуального окружения для каждого проекта.
    При локальном запуске ты выбираешь какой именно интерпретатор python использовать (оригинальный, установленный в системе или виртуальный). Ты просто указываешь путь к нужному тебе интерпретатору в своей среде программирования или при запуске через терминал вызываешь интерпретатор по указанному пути (если не активировано виртуальное окружение).

    Весь этот спич вот к чему: ты можешь хранить виртуальные окружения где угодно.
    Хорошими практиками являются:

    - хранение виртуального окружения в корневой папке проекта (venv/. venv). !Обязательно добавлять эту папку в . gitignore!
    -создать папку для виртуальных окружений и хранить все виртуальные окружения в ней
    Ответ написан
    2 комментария
  • Альтернатива VPN для иностранной жены?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Здесь невозможно дать четкую рекомендацию. Однозначно - VDS в забугории и ходить через него. Где, в какой Забугории и через что ходить - это подбирается сугубо экспериментально.

    У меня например стабильно работает простой IPSec с vds.sh, с сервера в Амстердаме. Но вовсе не факт, что у Вас, даже если Вы повторите мою инсталляцию (а ее повторить непросто не владея темой сертификатов) - все заработает также или вообще даже просто заработает.
    Ответ написан
    1 комментарий
  • Как мне защитить файл подключения к бд?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    <?php
    $mysecret = 'supersecret';

    Минимальный совет из "PHP Правильный путь" звучит как храните свои конфиги хотя бы в виде php файлов.
    Предположим, что мы сохранили такой скрипт в корне www.
    При правильной настройке сервера посетитель увидит пустой экран по урлу //your.site/script.php
    так как в нашем файле нет команд вывода.
    В первой строке полный синтаксис, в варианте "<?" может случиться ситуация показа исходного текста, если сшорт таги отключены. И остается риск того, что php отвалиться и будет показываться исходный код.

    Обще принятой практикой сейчас считается подход, когда все исходные файлы лежат выше диретории www рут.
    В самой директории только один скрипт точки входа (index.php)

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

    Вы используете eval c данными от пользователя или на сайте можно загружать через форму файлы.
    На шаред хостинге ошиблись с разделением прав для ftp.

    У Вас используются системы контроля версий кода и конфиги не добавлены в игнорируемые.
    Ответ написан
  • Как в VS Code, быстро создать HTML шаблон?

    @inzor Автор вопроса
    ! и затем нажать enter, или ! и затем мышкой выбрать вариант emmet. Так получилось.
    Ответ написан
    1 комментарий
  • Полная разница sudo su, sudo -i, sudo -s?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Разница 1: Почти, sudo -i также меняет HOME на /root, и читает логин скрипты root юзера.
    - Разница 2: Верно, действия с sudo -i и sudo -s логгируются в журналах юзера, а sudo su - нет.
    - Разница 3: Верно, sudo позволяет настраивать ограничения для команд через sudo -i и sudo -s, но не для sudo su (так как sudo su переключает юзера в root).
    Еще не понял разницу между
    sudo su
    sudo su -

    - sudo su - переключает юзера на root, но окружение при этом не является полным root окружением.
    - sudo su - - эмулирует полный вход юзера root (login shell). Будут прочитаны все файлы конфигурации, которые обычно читаются при входе root (profile, .bash_profile, .bashrc и что-то там еще). Насколько я понимаю, это то, что нужно Вам при работе от имени юзера root.
    И где можно смотреть логи пользаков при использовании sudo -i, sudo -s?

    Viewing and monitoring log files, можно еще заюзать journalctl.
    Ответ написан
    7 комментариев
  • Что лучше поднять "свой" VPN или же купить подписку?

    opium
    @opium
    Просто люблю качественно работать
    На выходе в целом ты получаешь одно и тоже, то есть кому то три клика поднять свой так как на опыте, кому то 5 баксов заплатить и просто использовать готовый
    Если смотреть на меня и жену то мне проще поднять свой, жене проще использовать готовый
    Так что ответ зависит только от вас
    Ответ написан
    Комментировать
  • С чего начать изучать системное администрирование?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Настрой что-нибудь.

    Поставь на линуксе веб сервер. Прикрути к нему php и mysql, поставь wordpress, убедись что все работает. Вот уже что-то есть. Сделай бэкап всего, поломай и восстанови из бэкапа.

    Подними мониторинг, который будет что-нибудь мониторить, свободное место, нагрузку на CPU.

    Настрой уведомления от твоего мониторинга на почту или в телеграм.

    Ну вот уже для начала что-то будет.
    Потом можно будет почитать как єто все делается другими инструментами. Или все тоже самое но в докере.
    Ответ написан
    Комментировать
  • Какой роутер взять домой чтоб был гибкий к настройке?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Соглашусь с Drno - судя по формулировке вопроса - Вам подойдет именно Keenetik. Есть еще секта свидетелей микротика... Но там хоть и много гибкостей, но даже базовый функционал настраивается очень сложно (в сравнении с Keenetik).
    Однако судя по описанию проблемы - у вас на месте могут быть и иные проблемы, мешающие работе интернет. Независимо от роутера.
    Ответ написан
    Комментировать
  • Какой роутер выбрать для двух активных провайдеров?

    @Eaxmov1337
    Если нет особых знаний, но есть деньги, однозначно кинетик
    Ответ написан
    Комментировать
  • Альтернативы wireguard?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Ну так об этом предупреждали. Считать противника (то есть ту сторону, которая работает на блокировку VPN и прочее) глупее и ниже себя - опасно. (Тут вот на "большом" хабре - лютейший наброс, от которого во все стороны летит "ароматная" жижа - про замедление ютуба и как его победить :)
    spoiler
    )
    Идет постоянное совершенствование как самих VPN, так и средств их блокировки. К сожалению, процесс этот конечен и закончится он тогда, когда будет принято решение, что проще внедрить белый список (или вовсе Кванмен))

    Сейчас в моде X-ray vless, но следует иметь в виду, что пройдет еще полгода-год и если еще не будет белого списка, то возможно решение по блокировке x-ray уже будет :) WG тоже описывали как "недетектируемый". Ну да, на том уровне он был недетектируемый. А на этом стал :)
    Ответ написан
    1 комментарий
  • Размещать ли связанный сайт на поддомене, как QNA Habr?

    opium
    @opium
    Просто люблю качественно работать
    Зависит от вашего сеоплана, от него и надо толкаться
    Тостер один из самых грешных примеров так как он был и в директории основного сайта и на отдельном домене и теперь на субдомене, это называется горе от ума, тостеру понятное дело только плохо и до какого нибудь стековерфлоу ему надо набрать популярность в тысячи раз
    Ответ написан
    1 комментарий
  • Как исправить низкую скорость до определённых ресурсов?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    самый высокий доступный тариф - 700 Mbps

    Неверно. ДО 700 Мб. Две буквы, а какая разница :) То есть скорость может быть от нуля и ДО 700 Мб и то - до точки входа в оборудование РТК (в лучшем случае до точки выхода с оборудования РТК). А дальше - все, как повезет, никто ничего не гарантирует, тем более ресурсы в Забугории.
    Можно подключить так называемый flat rate, то есть гарантированную полосу пропускания (опять же она гарантирована только внутри РТК), но цены там соооовсем другие :)
    Ответ написан
    Комментировать
  • Как вывести надпись, если цена равна 0 Woocommerce?

    @kastembay Автор вопроса
    Русич
    Помогли решить так
    add_filter( 'woocommerce_get_price_html', 'product_price_free_zero_empty', 100, 2 );
    
    function product_price_free_zero_empty( $price, $product ){
    if ( '' === $product->get_price() || 0 == $product->get_price() ) {
        $price = '<span class="woocommerce-Price-amount amount">Цену уточняйте</span>';
    }
    return $price;
    }
    Ответ написан
    4 комментария
  • Что такое кластерный индекс в mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Кластерный индекс... это на самом деле понятие крайне виртуальное.

    Что такое обычный некластерный индекс? берём выражение индекса, считаем его значение для каждой записи, сортируем и пишем на диск. Получаем отдельную структуру, в которой выражение индекса сортировано. Когда потребуется искать заданное значение этого выражения, мы вместо просмотра от записи к записи сразу половинным делением быстренько найдём нужное значение, возьмём из него уникальный идентификатор записи, и обратимся за записью. Если в таблице 1000 записей, то для поиска заданного значения без индекса нам в среднем пришлось бы просмотреть 500 записей, а с индексом - всего 10.

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

    В MySQL (точнее, в используемом по умолчанию движке InnoDB) первичный индекс, во-первых, существует ВСЕГДА, во-вторых, определяется так (в статье, на которую дали ссылку, имеются неточности в пункте 2):
    1. Если первичный ключ задан явно, то его выражение является также и выражением кластерного индекса. Или иначе - первичный ключ и есть кластерный индекс.
    2. Если первичный ключ явно не задан, но в таблице имеется индекс, отвечающий всем следующим требованиям:
      • является уникальным
      • не является функциональным, в т.ч. не использует в выражении вычисляемые поля
      • не использует в выражении поля, которые определены как допускающие значение NULL

      то именно такой индекс используется в качестве первичного. А если таких индексов несколько, то используется первый по тексту запроса на создание таблицы
    3. Если не имеется ни того, ни другого - генерируется синтетический скрытый 6-байтовый номер записи, который и используется как первичный ключ. Следует отметить, что штатных способов доступа к этому значению не существует.


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

    Фактически - именно так.

    Создаётся ли отдельная таблица или просто упорядочивается хранение существующих данных?

    Не создаётся. Но при изменении первичного индекса таблица полностью пересоздаётся с новым физическим порядком записей.

    Если данные упорядочиваются этим индексом, допустим по ID, то почему при select без сортировки данные могут возвращаться в произвольном порядке, а не отсортированные по ID по-умолчанию?

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

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

    ===

    PS. Кстати, правило выбора индекса, который будет использоваться в качестве кластерного, имеет неприятный побочный эффект. Если у некоторых полей, входящих в какие-то индексы, изменяется свойство NULLability, то это может привести к изменению того, какой из имеющихся индексов станет использоваться в качестве первичного по пункту 2. В результате мы получим невозможность использования INSTANT / INPLACE методов, и будет использован длинный COPY. Впрочем, ситуация такая крайне редка.
    Ответ написан
    2 комментария
  • Утечка DNS или как соц. сети узнают мое местоположение?

    CityCat4
    @CityCat4 Куратор тега Сетевое оборудование
    Дома с переломом ноги
    А вы, конечно же первый раз заходите в данные учетки или всегда ходили в них через VPN :) Не? Правда, заходили когда-то без VPN и с тех пор ничего, кроме IP не поменялось? Ну, я Вас поздравляю - Вы посчитаны.

    IP поменялся, а вот слепок браузера - нет :) Все то же самое, куки-шмуки. Какой вывод - "нас предположительно дуют" :)

    Только новый профиль на новой виртуалке, работающей через VPN без утечек DNS
    Ответ написан
    Комментировать
  • Как узнать конкретный компьютер с которого подключились по rdp протоколу?

    @NortheR73
    системный инженер
    В системном журнале безопасности (Security Log) смотрим события 4624 (успешная аутентификация - An account was successfully logged on) или 4625 (ошибка аутентификации - An account failed to log on) с LogonType=10.
    В описании события имя пользователя - в поле Account Name, имя компьютера - в Workstation Name, IP-адрес - в Source Network Address
    Ответ написан
    Комментировать
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    opium
    @opium
    Просто люблю качественно работать
    Вы делаете какую то хрень без диагностики
    Для начала тупо топ в линуксе что в такие моменты жрет больше всего ресурсов и уже это как то пытаться диагностировать и решать
    А так вы на уровне у нас ни одного админа и программиста нет мы сделаем какую то хрень по советам интернета
    Ответ написан
    Комментировать
  • Как заблокировать доступ к ресурсу для конкретного региона?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    GeoIP ngx_http_geoip_module

    1. Nginx должен включать модуль ngx_http_geoip_module.
    2. Качаем БД GeoLite2 Country.
    3. Пример конфига (nginx.conf), с отправкой всех из Индии в 403 лес:
    http {
        geoip_country /path/to/GeoLite2-Country.mmdb;
        map $geoip_country_code $allowed_country {
            default yes;
            IN no; # banned india
        }
    }
    
    server {
        if ($allowed_country = no) {
            return 403;
        }
    }
    Ответ написан
    5 комментариев
  • Как по ВПН соединить две сети с одинаковым поддиапазоном 192.168.0.1/24?

    @asmelnik
    Классика говорит, что НЕТ!
    Сети НЕ ДОЛЖНЫ ПЕРЕСЕКАТЬСЯ!

    "Костыли" при определенных условиях возможны, вроде proxy arp, проброса портов и.т.д.
    Но они имеют свои ограничения и условия применимости.

    Самое правильное одну из сетей перекинуть в другой диапазон, например
    192.168.1-255.0/24
    Если так уж принципиально 192.168.0.xxx
    Можно одну сеть сделать
    192.168.0.0/25 (адреса 1-126)
    вторую
    192.168.0.128/25 (адреса 129-254)
    Если в каждой сети менее 120-ти хостов,
    и маршруты 192.168.0.0/24 указать в VPN.

    Учитывая отсутствие возможности изменения второй сети и жесткое условие сохранения адрессации -- нормального решения НЕТ!
    Узел 192.168.0.12 в сети 1 НИКОГДА не сможет связаться (по IP) с узлом 192.168.0.12 в другой сети.
    Вот СОВСЕМ!
    (Проброс портов не считаем, это несколько иное условие).
    Ответ написан
    8 комментариев