Записки IT специалиста
8.81K subscribers
2.33K photos
57 videos
16 files
2.52K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
Download Telegram
Настраиваем сервер Pure-FTPd в контейнере Docker

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

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

В нашем случае возникла потребность быстро настроить новый сервер для сети розничных магазинов, работающих на базе 1С:Предприятие. Проанализировав все за и против мы выбрали вариант с Docker.

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

Нами был выбран образ stilliard/pure-ftpd:hardened, это популярный, поддерживаемый образ с уже внесенными из коробки настройками безопасности.

Допустим наш проект будет располагаться в /opt/exch, поэтому первым делом создадим папки пользователей и служебный каталог для хранения базы паролей:

mkdir -p /opt/exch/data/{user1,user2,user3,user4,user5}
mkdir -p /opt/exch/pure-ftpd


Сразу установим на них нужные права:

chown  -R 1000:1000 /opt/exch/data /opt/exch/pure-ftpd


Затем создадим docker-compose.yml следующего содержимого:

services:
pure-ftpd:
image: stilliard/pure-ftpd:hardened
container_name: pure-ftpd
restart: unless-stopped

ports:
- "21:21"
- "60000-60499:60000-60499"

environment:
PUBLICHOST: exch.example.com
FTP_PASSIVE_PORTS: 60000:60499
ADDED_FLAGS: "-d -p 60000:60499"
TZ: "Europe/Moscow"

volumes:
- /opt/exch/data:/home/ftpusers
- /opt/exch/pure-ftpd:/etc/pure-ftpd

logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"


После запуска контейнера создадим пользователей командой:

docker exec -it pure-ftpd pure-pw useradd user1 \
-u ftpuser -d /home/ftpusers/user1


Создав всех пользователей, скомпилируем базу паролей:

docker exec pure-ftpd pure-pw mkdb


Теперь сервер полностью готов принимать соединения.

Сразу поясним несколько моментов. Кроме управляющего порта 21 мы указываем порты для передачи данных в пассивном режиме 60000-60499, активный режим работы сервера не предусмотрен.

Количество портов выбирайте исходя из количества активных клиентов, по умолчанию сервер допускает до пяти одновременных соединений. Таким образом указав диапазон в 500 портов, мы можем полноценно обслуживать до 100 клиентов.

Флаг -d включает режим визуализиции лога в режиме отладки, вы будете видеть все команды клиента, пароль в целях безопасности заменяется в логе звездочкой. Если вы хотите видеть еще и ответы сервера – добавьте второй флаг -d.

Переменная окружения PUBLICHOST: exch.example.com указывает на публичное имя сервера (или его IP-адрес), который будет передаваться клиенту для подключения, используйте для этого реальное внешнее имя или адрес хоста.

Переменная FTP_PASSIVE_PORTS: 60000:60499 и флаг -p 60000:60499 на первый взгляд дублируют друг друга, но на самом деле это разные опции. Флаг запускает службу на прослушивание указанных портов, а переменная говорит службе какой диапазон портов можно сообщать клиентам для подключения. Для нормальной работы их значения должны совпадать.
👍142
Coreutils for Windows
 
Компания Microsoft представила порт набора утилит Coreutils для платформы Windows. В состав входит несколько десятков утилит, включая sort, cat, chmod, chown, cp, find, sleep, sort, tee, echo, uptime и ls. Инструментарий позволяет напрямую использовать в Windows типовые утилиты, доступные в Linux и macOS, без использования прослойки WSL.
 
Целью проекта заявлено упрощение перехода между Unix-подобными системами, WSL, контейнерами и Windows, и предоставление единого набора команд, флагов и методов, позволяющих переносить существующие скрипты из других систем без переписывания. Код написан на Rust и PowerShell, и распространяется под лицензией MIT.
 
Реализация основана на коде проекта uutils (Rust Coreutils), развивающего вариант GNU Coreutils на языке Rust, а также реализациях утилит find и grep на Rust. Утилиты собраны в виде одного универсального исполняемого файла "C:\Program Files\coreutils\coreutils.exe", отдельные команды к которому привязаны при помощи жёстких ссылок в NTFS.
 
Из-за конфликта с имеющимися штатными утилитами Windows или привязки к специфичным возможностям из поставки исключены утилиты dd, dir, dircolors, shred, sync, uname, expand, kill, more, paste, timeout и whoami. Из состава также исключены утилиты, завязанные на не поддерживаемые в Windows концепции POSIX: chcon, chgrp, chmod, chown, chroot, groups, hostid, id, install, logname, mkfifo, mknod, nice, nohup, pathchk, pinky, runcon, stdbuf, stty, tty, users, who.
 
Из ограничений и особенностей отмечается необходимость использовать NUL вместо /dev/null, отсутствие поддержки сигналов (SIGHUP, SIGPIPE, SIGUSR), возможность создания символических ссылок только после включения режима для разработчика, недоступность некоторых операций с правами доступа. При работе с каталогами принимаются как пути с символом "/", так и c "\".
 
По материалам: https://www.opennet.ru/opennews/art.shtml?num=65609
👍16🤮6🤣3🤔21
Записки IT специалиста
​​По этой теме не утихают холивары, поэтому повторим данный материал. Папка, каталог или директория? Данный вопрос давно занимает умы коллег и является предметом частых споров на счет того, какой из этих терминов является единственно правильным. Сегодня…
Папка, каталог или директория?

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

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

Начнем с языковых трудностей. В английском языке есть два слова: directory и catalog, которые переводятся на русский как каталог.

Но имеют различный смысл, directory, по сути, ближе к справочнику, это список однотипных данных, предназначенный для поиска по нему. Например: телефонный или адресный справочник.

Но встречаются и варианты со словом каталог, скажем, каталог запчастей. Хотя на английском все это будет directory (Parts Directory).

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

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

Каталог представлял и представляет специальный файл с набором записей о принадлежащих ему файлах и подкаталогах, которые содержат имя объекта и ссылку на место файловой системы (кластер, inode) где он хранится.

В английском языке данная структура однозначно попадает под понятие directory и на русский переводится как каталог. И литературно правильно использовать именно этот термин.

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

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

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

За рубежом же никакого разночтения не было и повсеместно использовался термин directory, что нашло отражение в командах: cd, dir, mkdir и т.д.

Иногда встречается ошибочное мнение, что директории – это в UNIX/Linux, а каталоги в DOS/Windows, однако это не так. Достаточно взять англоязычные версии и убедиться, что кроме directory никаких иных терминов не используется.

Шло время, компьютеры становились все более распространенными и все чаще работать с ними начинали обычные пользователи, далекие от всех этих технических терминов.

Чтобы облегчить им работу была придумана концепция рабочего стола, который логически повторял обычный рабочий стол. Файлы представлялись как документы, а каталоги как папки (folder) с этими документами.

С тех пор повелось файлы изображать преимущественно в виде близком бумажным документам, а каталоги в виде канцелярских папок. Такой подход впервые был внедрен в Apple в Mac System Software, предшественнице Mac OS.

Начиная с Windows 95 папки стали использоваться в ОС Microsoft, а также перекочевали в графические оболочки Linux, первоначально в KDE и GNOME.

Со временем термин стал общеупотребительным и стал употребляться наравне с directory (каталогом). В русском языке появилось сразу три термина обозначающие одно и то же: каталог, папка и директория.

Существует еще одно заблуждение, что термин папка можно применять только в графической среде. Однако это не так. Каталог – это объект файловой системы и его свойства не меняются в зависимости от наличия или отсутствия графической оболочки. И поэтому мы можем называть его любым из этих трех терминов.
👍272👀2
Squid - жив, курилка

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

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

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

А что же сейчас? А сейчас Squid все еще жив, заметив в новостях заметку о выходе новой версии 7.6 я решил посмотреть, чем живет и дышит популярный проект.

Сегодня былой популярности уже нет, разработка ведется силами 4-5 человек и особой активности в ней не наблюдается. Можно сказать, что эпоха бурного развития прошла и сегодня проект больше держится на ряде старожилов, притока молодой крови в нем нет.

Активный спад разработки начался в конце 2017 года и выглядит как достаточно резкое охлаждение проекта, как будто он внезапно перестал быть интересен или возникли какие-то иные сложности.

На самом деле тако оно и было, потому что именно с января 2017 Google стал помечать сайты без HTTPS как небезопасные в браузере и понижать их в поисковой выдаче, что завершило переход сайтов на HTTPS и практически не оставило незащищенных сайтов, на работу с которыми был ориентирован Squid.

К этому добавилось внедрение HTTP/2 и более сложных криптографических алгоритмов, что сделало инспекцию и контроль трафика сложной и дорогостоящей задачей. Да, Squid научился расшифровывать и проверять HTTPS-трафик, то технически это был совсем уже иной элемент инфраструктуры.

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

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

Все это отразилось на популярности проекта и активности разработки. А из популярного продукта, который знали все Squid превратился во что-то нишевое, о котором молодое поколение даже и не слышало.
👍8💯75🤮1
А теперь давайте все сломаем!

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

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

Заодно отсекаются различные нежизнеспособные конфигурации, которые могут красиво выглядеть на бумаге, но не позволяющие выполнить восстановление в необходимые сроки в необходимом объеме.

Заодно становится понятно, как именно надо бекапить и какие ресурсы для этого иметь.

В общем – задача непростая, но необходимая, как и учения подобного рода. Без такого тестирования вводить в эксплуатацию что-то серьезное – это очень сильно рисковать.

Но бывают и интересные случаи. У одного заказчика закончилась опытная эксплуатация новой системы. Внешний подрядчик все установил, настроил, они месяц тестировали – вроде все хорошо. Надо принимать решение.

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

Ок, дайте нам инструкцию, мы сделаем сами. Ответ – подобные инструкции это в техподдержку, а для этого сначала купите сам продукт и поддержку к нему. Занавес.

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

А вообще, подход крайне странный. Что секретного в способах резервного копирования и восстановления продукта? Разве в том, что их нет?
👍24🔥74🤔2🤮1
SRE тут? Нашли для вас подкаст, который вполне может пополнить ряд любимых.

Коллеги из Авито создали «В SREду на кухне», периодически собираются, зовут на запись гостей и обсуждают то, о чём не принято говорить в опенспейсе. Например, вот темы недавних выпусков:
— GitOps не волшебная таблетка;
— Зачем продукту бюджет ошибок;
— Роняем прод, чтобы стать сильнее: всё о Chaos Engineering;
— SRE больше не нужны. AI переписал правила.

Отвечая на вопрос «А при чём здесь комьюнити?» — все дополнительные инсайты, статьи и мысли на темы выпусков ребята выкладывают в канал «Avito SREда». И там уже собралась активная аудитория коллег-инженеров.
🤮21👍1
Как узнать зашитый в BIOS/UEFI ключ Windows?

Последние годы ноутбуки, моноблоки и часть системных блоков идет без лицензионных OEM-наклеек на корпусе, так как ключ производитель зашивает в BIOS.

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

wmic path softwarelicensingservice get OA3xOriginalProductKey


Если ключ есть, то вы его увидите, если вывод содержит пустую строку, то OEM-ключа на устройстве нет.
👍35👌31
Небольшая халява, принцип прост: кто первый встал - того и тапки.

Минздрав предупреждает: перед тем, как принять это предложение невиданной щедрости проверяйте стоимость продления.
😁11🤣7💯4🔥1🤮1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
Установка KMS сервера активации Microsoft на базе vlmcsd

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

Но есть хорошая альтернатива – пакет vlmcsd эмулирующий KMS-сервер и позволяющий активировать продукты Microsoft.

Напомним, мы крайне негативно относимся к использованию нелицензионного ПО, данный материал ни в коем случае не призывает и не поощряет его использование.

Приведенное решение полностью базируется на открытом ПО и не преследует цели нарушения норм действующего законодательства и правил лицензирования ПО.

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

Читать далее: https://interface31.ru/post/ustanovka-kms-servera-aktivacii-microsoft-na-baze-vlmcsd-v-debian-ili-ubuntu/
👍283
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤡1
Установка Aspia в Docker

Система удаленного доступа Aspia пользуется заслуженной популярностью, но при ее развертывании есть некоторые особенности – пакеты собраны для Ubuntu 20.04 или Debian 11, которые на сегодня являются устаревшими.

Также, по нашим временам, для подобного ПО хочется большей переносимости, чтобы в случае чего можно было быстро мигрировать на новое место.

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

Допустим мы разместим проект в /opt/aspia, сразу создадим там две служебные директории для хранения базы данных и конфигов:

mkdir -p /opt/aspia/data/{database,config}


Затем создадим docker-compose.yml со следующим содержимым:

services:
aspia-server:
image: paprikkafox/aspia-server:latest
container_name: aspia-server
hostname: aspia.example.com
environment:
- EXTERNAL_IP=203.0.113.6
ports:
- "8070:8070"
- "8060:8060"
volumes:
- ./data/database:/var/lib/aspia:rw
- ./data/config:/etc/aspia:rw
restart: always


Где вам потребуется указать имя хоста узла Aspia и внешний IP-адрес, по которому вы будете принимать внешние подключения.

Если вы переносите уже существующую инсталляцию сразу разместите в папках конфиги и публичный ключ в ./data/config и базу данных в ./data/database, в противном случае они будут автоматически созданы при первом запуске.

Сразу после запуска контейнер готов к работе, хотя вы можете произвести более тонкие настройки через конфигурационные файлы.

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

Останавливаем службу:

docker compose down


Устанавливаем sqlite:

apt install -y sqlite3


Подключаемся к базе и правим нужную запись:

sudo sqlite3 ./data/database/router.db3 "INSERT INTO hosts (id, key) VALUES (3000, 0x53544152544b4559);"


В нашем случае мы установили начальное значение 3000. Обратите внимание, что это нужно сделать до того, как вы начали подключать клиентов.

После чего снова запускаем службу, сервер Aspia готов к работе.
👍121
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮1
Как создать копию драйверов текущего ПК не прибегая к сторонним инструментам

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

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

Начнем с PowerShell, для выполнения данной задачи выполните с правами Администратора:

Export-WindowsDriver —Online —Destination F:\Drivers


Кроме PowerShell вы также можете использовать DISM:

dism /online /export-driver /destination: F:\Drivers


Или pnputil, что актуально для старых систем, начиная с Windows 7:

pnputil.exe /export-driver * F:\Drivers


Все три команды дадут одинаковый результат, все драйвера текущей машины будут скопированы в указанную папку (должна существовать на момент экспорта) с разбитием по подпапкам по числу драйверов.

Далее можете делать с ними все что хотите: использовать как резервную копию, внедрить в образ или выборочно забрать нужные драйвера.
👍3752
Одна точка входа может изменить все.

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

Решение ASM TRY от F6 проверит все то же самое — в безопасной среде, с гибкой настройкой параметров и расписания проверок, используя методы атакующих.

В материале разбираем, как активное сканирование помогает проверять инфраструктуру методами, приближенными к действиям реального атакующего:

▪️ 4 категории проверки: брутфорс, фаззинг, сканирование портов и эксплойт-тестирование;
▪️ как ИБ-команды могут проверять собственные гипотезы атак;
▪️ чем активное сканирование отличается от VM, BAS и пентестов;
▪️ реальные кейсы поиска точек входа.

➡️ Узнайте как безопасно проверить компанию и поддерживать процессы, связанные с требованиями регуляторов в материале
#реклама
О рекламодателе
👍1