Python - язык простой и удобный, но в плане безопасности исходников у него есть слабое место: скрипты легко читаются, модифицируются и анализируются. Если ты разрабатываешь утилиту, обрабатываешь конфиденциальные данные или просто хочешь защититься от «любопытных», стоит продумать меры защиты. Разберём основные подходы:
Python автоматически компилирует .py в .pyc, но и их можно дизассемблировать. Более надёжный способ - сборка в .pyd/.so (динамическую библиотеку):
pip install cython
cythonize -i mynoscript.py
На выходе - скомпилированный бинарник. Исходный код спрятан, но не полностью защищён от реверса.
Использовать PyArmor, который шифрует байткод:
pip install pyarmor
pyarmor obfuscate mynoscript.py
Использовать Nuitka или PyInstaller - обфускация + упаковка в исполняемый файл:
pyinstaller --onefile mynoscript.py
Для чувствительных задач - запускай скрипты через Docker, изолируя переменные окружения и доступ к файловой системе.
📍 Используй .env файл + библиотеку python-dotenv📍 Храни секреты в HashiCorp Vault, AWS SSM или аналогах📍 Шифруй конфиги с GPG, если нужно хранить локально
Полной защиты от реверса не будет - Python не компилируемый в машинный код язык. Но затруднить анализ, защитить данные и повысить безопасность вполне реально.
#python #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Сегодня расскажу про несколько простых приемов, которые помогут вам эффективнее работать с текстом и конфигами в терминале. Речь пойдёт о символах ^ и $ - они обозначают начало и конец строки в регулярных выражениях.
Очень удобно, когда нужно исключить строки, начинающиеся с комментариев (#), но оставить те, где # идёт в середине строки:
grep -E -v '^#' nginx.conf
Если комментарий начинается с табуляции, команда выше его не отфильтрует. Чтобы учесть таб, нужно ввести его "вручную":
1. Наведите курсор после ^
2. Нажмите Ctrl + V, затем Tab
Получится поиск по строкам с табом и # в начале:
grep -E -v '^ #' nginx.conf
(Скопированная команда не сработает — таб символ нужно вставить вручную в консоли!)
Также ^ помогает искать по началу имени файла:
ls | grep ^error
Допустим, в директории есть файлы *.png и *.png.webp. Если сделать:
ls | grep .png
Вы получите оба варианта. А чтобы отфильтровать только те, что заканчиваются на .png:
ls | grep .png$
Можно объединить два условия:
ls | grep ^error | grep .png$
Очень удобно, если хотите вычистить конфиг от пустых строк и комментариев:
grep -E -v '^#|^$' nginx.conf
Эти трюки работают с любой текстовой утилитой (grep, sed, awk) и экономят кучу времени при разборе логов, конфигов и вывода в терминале.
#linux #grep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Forwarded from Карьера в Bell Integrator
Оптимизируем работу в Linux 🚀
Linux — сердце цифровой инфраструктуры 21 века. Эта ОС лежит в основе облаков, дата-центров и серверов. А для ИТ-специалистов Linux — стандарт де-факто: мощный инструмент для автоматизации, кибербезопасности и администрирования.
Совместно с каналом NetworkAdmin.ru подготовили дельные лайфхаки для облегчения и ускорения работы с Linux — читайте в карточках! На канале есть много другой полезной информации для специалистов в области сетевого администрирования, посмотреть можете здесь.
#BellintegratorTeam #советыBell
Linux — сердце цифровой инфраструктуры 21 века. Эта ОС лежит в основе облаков, дата-центров и серверов. А для ИТ-специалистов Linux — стандарт де-факто: мощный инструмент для автоматизации, кибербезопасности и администрирования.
Совместно с каналом NetworkAdmin.ru подготовили дельные лайфхаки для облегчения и ускорения работы с Linux — читайте в карточках! На канале есть много другой полезной информации для специалистов в области сетевого администрирования, посмотреть можете здесь.
#BellintegratorTeam #советыBell
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2🤔1😡1
Несколько раз сталкивался с неприятной проблемой: при наборе или вставке текста в PowerShell внезапно "пропадают" заглавные буквы. Особенно заметно, если набираете команды в кириллической раскладке - PowerShell просто не реагирует на Shift.
Проблема возникает из-за сбоя в модуле PSReadLine, который отвечает за подсветку, автодополнение, историю команд и другие удобства в CLI.
# Проверим установленную версию
Get-Module | Where-Object Name -eq "PSReadLine" | Select-Object Name, Path
# Удалим старую версию
Remove-Module PSReadLine
Remove-Item "C:\Program Files\WindowsPowerShell\Modules\PSReadLine\*" -Recurse -Force
# Установим последнюю версию из PSGallery
Install-Module PSReadLine -Force
Модуль будет установлен в актуальной версии, и проблема с заглавными буквами исчезнет. После установки перезапустите PowerShell.
#powershell #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1😁1
Auditd - это система аудита в Linux, входящая в состав auditd (Audit Daemon), которая позволяет детально отслеживать действия пользователей и системные события: от попыток доступа к файлам до изменений в правах и запусков команд. Она полезна как для соблюдения требований безопасности, так и для расследования инцидентов.
На большинстве дистрибутивов:
sudo apt install auditd # Debian/Ubuntu
sudo yum install audit # RHEL/CentOS
Проверьте, что служба активна:
sudo systemctl enable --now auditd
/etc/passwd):
auditctl -w /etc/passwd -p war -k passwd-watch
-w - путь к файлу
-p war - права: write, attribute change, read
-k - метка (key) для фильтрации в логах
auditctl -l
auditctl -W /etc/passwd
ausearch -k passwd-watch
aureport -f # по файлам
aureport -au # по пользователям
Добавьте правило для аудита всех выполненных команд:
auditctl -a always,exit -F arch=b64 -S execve -k exec-track
Это даст полную картину того, какие команды запускаются (через ausearch -k exec-track).
Не злоупотребляйте количеством правил - это может замедлить систему и засорить логи. Используйте
audit.rules или /etc/audit/rules.d/*.rules для постоянных правил.#linux #auditd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2
Не все знают, но в линукс удаление большого количества файлов - задача не из простых. Особенно когда речь идет о сотнях тысяч или миллионах объектов в одной директории. Часто встречаешь ошибку
Argument list too long, а даже если команда и запускается, она может висеть часами. Сегодня про то, а какой же способ удаления самый быстрый.
rm -r test/
rm -r test/*
find test/ -type f -delete
cd test && ls . | xargs -n 100 rm
rsync -a --delete empty/ test/
Последний способ - rsync с пустой директорией - оказался самым быстрым. Суть: создаёте пустой каталог empty/ и синхронизируете его с целевым test/:
mkdir empty
rsync -a --delete empty/ test/
mkdir test
count=1
while [ $count -le 10 ]; do
touch test/file$count-{000..50000}
count=$(( count + 1 ))
done
Вывод: rsync уничтожил всё быстрее всех. rm -r test/* вылетает с ошибкой при большом числе файлов.
count=1
while [ $count -le 10 ]; do
mkdir -p test/dir$count-{000..500}
touch test/dir$count-{000..500}/file-{000..100}
count=$(( count + 1 ))
done
Вывод: в этом случае почти все методы сработали одинаково. Но если файлов ещё больше -
rsync снова выигрывает.#linux #rsync
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤2
Хотите быть уверены, что критические обновления безопасности устанавливаются автоматически? Тогда стоит взглянуть на
unattended-upgrades - инструмент для автоматического применения обновлений в debian/ubuntu системах.unattended-upgrades - это пакет, который автоматически скачивает и устанавливает обновления безопасности и другие пакеты по заданным правилам.
sudo apt update
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
При конфигурации утилита предложит включить автообновления - согласитесь. После установки основной конфигурационный файл будет находиться здесь:
/etc/apt/apt.conf.d/50unattended-upgrades
В нём можно указать, какие типы пакетов обновлять (только security, или всё подряд), включить автоудаление ненужных пакетов, настроить отправку уведомлений и пр.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer
Можно изменить расписание, если нужно.
/var/log/unattended-upgrades/unattended-upgrades.log
/var/log/apt/history.log
#linux #update
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Иногда пользователи не могут сменить истекающий пароль - особенно если подключаются к домену через VPN, RDP или веб-интерфейс, где просто нет соответствующих инструментов. Вариант «поставить галку на бессрочный пароль» выглядит заманчиво, но так легко забыть отключить её, и в итоге у пользователя остается пароль без ограничений.
В AD есть специальный атрибут
pwdLastSet, который хранит дату последней смены пароля. Редактировать его напрямую нельзя, но можно «обновить» его:
# Сначала сбрасываем атрибут
Set-ADUser petrov.pa -Replace @{pwdLastSet=0}
# Затем задаём текущую дату как дату смены пароля
Set-ADUser petrov.pa -Replace @{pwdLastSet=-1}
#ActiveDirectory #PowerShell
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27
Три базовых, но эффективных подхода, которые стоит внедрить в любом API:
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
app.use("/api/", limiter);
const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));
Не забудьте запретить * в production - это дырка в безопасности.
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
Итого:
Rate Limiting - спасает от злоупотреблений.
CORS - управляет доступом между доменами.
Token-based доступ - дает безопасность и гибкость.
Правильная комбинация этих механизмов - основа для защиты любого публичного API.
#API #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Инструменты трассировки маршрута и диагностики сети - незаменимая часть работы администратора. Ниже собран краткий обзор утилит для Linux и Windows, которые помогают понять, где тормозит или обрывается соединение.
traceroute -I ya.ru
tracepath ya.ru
mtr ya.ru
tracert ya.ru
pathping ya.ru
tracetcp ya.ru:443
Полезна, когда ICMP или UDP заблокированы, а нужно проверить доступность TCP-сервиса. Показывает, где именно по пути блокируется соединение. Ставится отдельно (ищите на сайте разработчика). Аналога на Linux, увы, нет, но было бы очень кстати.
📍 Используйте mtr и tracetcp, если нужно точечно диагностировать проблемы.📍 tracepath удобен для анализа MTU.📍 На Windows pathping даст больше инфы, чем tracert.
#network #diagnostic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3
Начиная с версии Windows 10 1809, Microsoft отключила автоматическое создание бэкапов реестра - якобы ради экономии места (всего 100–200 МБ). Но вместе с этой "оптимизацией" пользователи лишились простого способа восстановить систему, заменив повреждённые файлы реестра на рабочие копии из RegBack.
Хотя используется эта функция нечасто, иметь резервную копию всегда лучше, чем её отсутствие.
Создайте параметр EnablePeriodicBackup в реестре:
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Configuration Manager" /v EnablePeriodicBackup /t REG_DWORD /d 1 /f
Теперь задание планировщика RegIdleBackup будет выполняться в рамках автоматического обслуживания системы (раз в сутки), и сохранять резервные копии реестра в папку:
%windir%\System32\config\RegBack
Start-ScheduledTask -TaskName "RegIdleBackup"
#windows #registry
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
NAT (Network Address Translation) - это технология трансляции сетевых адресов, которая позволяет устройствам локальной сети выходить в Интернет через один общий внешний IP. Она лежит в основе почти каждого домашнего роутера и многих корпоративных решений. Но под капотом у NAT есть разные виды — разберёмся, в чём их суть и где применять.
NAT подменяет исходные или целевые IP-адреса (и порты) в IP-пакетах. Это позволяет:📍 Скрывать внутреннюю адресацию;📍 Пробрасывать доступ к локальным сервисам извне;📍 Повышать безопасность, не раскрывая реальную структуру сети
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5
Используется, когда у сервера постоянный внешний IP.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Отличный выбор для нестабильного внешнего интерфейса.
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
Удобно для проброса SSH, HTTP, RDP и других сервисов внутрь локальной сети.
#NAT #iptables
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤6🔥4
Когда возникает подозрение на проблемы с сетью - падение скорости, потери пакетов или просто "тормозит" - важно уметь быстро локализовать причину. В Linux есть три утилиты, которые закрывают основные потребности в диагностике: ethtool, iperf3 и nload.
Скорость подключения и режим дуплекса:
ethtool eth0
Есть ли сбои на интерфейсе:
ethtool -S eth0 | grep -E 'err|drop'
Настроить автосогласование, отключить Wake-on-LAN, изменить параметры offload'инга.
Удобно для диагностики "битых" линков и проблем с драйверами.
На одном узле запускаем сервер:
iperf3 -s
На втором - клиент:
iperf3 -c 192.168.1.1
Показывает скорость, потери, джиттер. Можно использовать TCP и UDP, настраивать количество потоков и длительность теста.
Пример теста в 5 потоков:
iperf3 -c 192.168.1.1 -P 5
Хорошо подходит для поиска узких мест между хостами.
nload eth0
Выведет в реальном времени график входящего и исходящего трафика. Можно переключаться между интерфейсами, видеть пики, общую статистику и скорость.
Особенно удобен, когда нужно на лету оценить нагрузку и понять, кто грузит канал.
ethtool - диагностика интерфейса;
iperf3 - замер скорости и качества канала;
nload - визуальный мониторинг трафика
#linux #network
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4
В Linux, как и в классическом Unix, существует особый тип межпроцессного взаимодействия - Unix Domain Sockets (UDS). Многие админы сталкиваются с ними при настройке сервисов вроде php-fpm, MySQL, PostgreSQL, nginx, не всегда понимая, зачем выбирать между TCP и сокетом.
/run/mysqld/mysqld.sock
Основное отличие от TCP: не используется сетевой стек, что делает работу чуть быстрее (в теории), особенно при высоких нагрузках.
📍 Доступ к сервису нужен только локально.📍 Нет необходимости открывать порт и рисковать безопасностью.📍 Можно ограничить доступ к сокету правами на файл.
На обычном сервере с веб-сайтами разницы между 127.0.0.1:3306 и mysqld.sock вы, скорее всего, не заметите. Но с точки зрения безопасности и практики - предпочтительно использовать сокеты.
Через netcat:
nc -U /run/mysqld/mysqld.sock
Аналогичный запрос по TCP:
telnet 127.0.0.1 3306
Результат будет одинаковый, только путь разный.
#linux #unixsocket
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4