NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🔒 Безопасность Python-скриптов: как защитить код и данные

Python - язык простой и удобный, но в плане безопасности исходников у него есть слабое место: скрипты легко читаются, модифицируются и анализируются. Если ты разрабатываешь утилиту, обрабатываешь конфиденциальные данные или просто хочешь защититься от «любопытных», стоит продумать меры защиты. Разберём основные подходы:

1️⃣ Компиляция в байткод

Python автоматически компилирует .py в .pyc, но и их можно дизассемблировать. Более надёжный способ - сборка в .pyd/.so (динамическую библиотеку):


pip install cython
cythonize -i mynoscript.py


На выходе - скомпилированный бинарник. Исходный код спрятан, но не полностью защищён от реверса.

2️⃣ Шифрование и упаковка. Можно шифровать скрипты и расшифровывать их только в момент выполнения:

Использовать PyArmor, который шифрует байткод:


pip install pyarmor
pyarmor obfuscate mynoscript.py


Использовать Nuitka или PyInstaller - обфускация + упаковка в исполняемый файл:


pyinstaller --onefile mynoscript.py


3️⃣ Изоляция через виртуальное окружение. Размещай код в venv, где минимум привилегий и стороннего ПО.

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

4️⃣ Безопасное хранение секретов. Не храни API-ключи и пароли в коде:

📍 Используй .env файл + библиотеку python-dotenv
📍 Храни секреты в HashiCorp Vault, AWS SSM или аналогах
📍 Шифруй конфиги с GPG, если нужно хранить локально


Полной защиты от реверса не будет - Python не компилируемый в машинный код язык. Но затруднить анализ, защитить данные и повысить безопасность вполне реально.

#python #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥1
⭐️ Полезные трюки с grep и регулярками в unix-консоли

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

1️⃣ Символ ^ - начало строки

Очень удобно, когда нужно исключить строки, начинающиеся с комментариев (#), но оставить те, где # идёт в середине строки:


grep -E -v '^#' nginx.conf


Если комментарий начинается с табуляции, команда выше его не отфильтрует. Чтобы учесть таб, нужно ввести его "вручную":

1. Наведите курсор после ^
2. Нажмите Ctrl + V, затем Tab

Получится поиск по строкам с табом и # в начале:


grep -E -v '^ #' nginx.conf


(Скопированная команда не сработает — таб символ нужно вставить вручную в консоли!)

Также ^ помогает искать по началу имени файла:


ls | grep ^error


2️⃣ Символ $ - конец строки

Допустим, в директории есть файлы *.png и *.png.webp. Если сделать:


ls | grep .png


Вы получите оба варианта. А чтобы отфильтровать только те, что заканчиваются на .png:


ls | grep .png$


Можно объединить два условия:


ls | grep ^error | grep .png$


3️⃣ Комбинация ^$ - пустая строка

Очень удобно, если хотите вычистить конфиг от пустых строк и комментариев:


grep -E -v '^#|^$' nginx.conf


Эти трюки работают с любой текстовой утилитой (grep, sed, awk) и экономят кучу времени при разборе логов, конфигов и вывода в терминале.

#linux #grep

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Оптимизируем работу в Linux 🚀

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
🧠

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25
🏃 Баг с заглавными буквами в PowerShell при кириллической раскладке

Несколько раз сталкивался с неприятной проблемой: при наборе или вставке текста в PowerShell внезапно "пропадают" заглавные буквы. Особенно заметно, если набираете команды в кириллической раскладке - PowerShell просто не реагирует на Shift.

Проблема возникает из-за сбоя в модуле PSReadLine, который отвечает за подсветку, автодополнение, историю команд и другие удобства в CLI.


Решение - обновить или переустановить PSReadLine:


# Проверим установленную версию
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.

⭐️ Совет: добавьте в profile.ps1 строку Import-Module PSReadLine, если он не загружается автоматически.

#powershell #windows

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161😁1
🫂 Контроль действий пользователей с помощью auditd

Auditd - это система аудита в Linux, входящая в состав auditd (Audit Daemon), которая позволяет детально отслеживать действия пользователей и системные события: от попыток доступа к файлам до изменений в правах и запусков команд. Она полезна как для соблюдения требований безопасности, так и для расследования инцидентов.

⚙️ Установка и запуск

На большинстве дистрибутивов:


sudo apt install auditd # Debian/Ubuntu
sudo yum install audit # RHEL/CentOS


Проверьте, что служба активна:


sudo systemctl enable --now auditd


▪️ Основные команды

1️⃣ Добавить правило аудита (например, отслеживать доступ к /etc/passwd):


auditctl -w /etc/passwd -p war -k passwd-watch


-w - путь к файлу
-p war - права: write, attribute change, read
-k - метка (key) для фильтрации в логах


2️⃣ Просмотреть правила:


auditctl -l


3️⃣ Удалить правило:


auditctl -W /etc/passwd


4️⃣ Посмотреть события:


ausearch -k passwd-watch


5️⃣ Детальный вывод в человекочитаемом виде:


aureport -f # по файлам
aureport -au # по пользователям


6️⃣ Отслеживание команд пользователя

Добавьте правило для аудита всех выполненных команд:


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

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
Как быстрее всего удалить миллионы файлов в bash

Не все знают, но в линукс удаление большого количества файлов - задача не из простых. Особенно когда речь идет о сотнях тысяч или миллионах объектов в одной директории. Часто встречаешь ошибку 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/


▪️ Тест 1: 500 000 файлов в одной директории. Скрипт:


mkdir test
count=1
while [ $count -le 10 ]; do
touch test/file$count-{000..50000}
count=$(( count + 1 ))
done


Вывод: rsync уничтожил всё быстрее всех. rm -r test/* вылетает с ошибкой при большом числе файлов.

▪️ Тест 2: Иерархия: 50 000 директорий, по 100 файлов в каждой:


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 снова выигрывает.

🌟🌟🌟 Осторожно с rsync! Перепутаете местами source и destination - удалите к черту все полезное.

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

#linux #rsync

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥42
Такие маленькие, а уже шарят

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33🍾4
⌛️ Автоматизация обновлений в Linux с помощью unattended-upgrades

Хотите быть уверены, что критические обновления безопасности устанавливаются автоматически? Тогда стоит взглянуть на 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, или всё подряд), включить автоудаление ненужных пакетов, настроить отправку уведомлений и пр.

▪️ Пример: обновлять только security-патчи


Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};


▪️ Автозапуск через таймер. В новых системах используется systemd-timer:


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

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
🕘 Как продлить срок действия пароля в Active Directory без его смены

Иногда пользователи не могут сменить истекающий пароль - особенно если подключаются к домену через VPN, RDP или веб-интерфейс, где просто нет соответствующих инструментов. Вариант «поставить галку на бессрочный пароль» выглядит заманчиво, но так легко забыть отключить её, и в итоге у пользователя остается пароль без ограничений.

🔎 Что делать?

В AD есть специальный атрибут pwdLastSet, который хранит дату последней смены пароля. Редактировать его напрямую нельзя, но можно «обновить» его:


# Сначала сбрасываем атрибут
Set-ADUser petrov.pa -Replace @{pwdLastSet=0}

# Затем задаём текущую дату как дату смены пароля
Set-ADUser petrov.pa -Replace @{pwdLastSet=-1}


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

#ActiveDirectory #PowerShell

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27
👣 Как защищать API-интерфейсы

Три базовых, но эффективных подхода, которые стоит внедрить в любом API:

1️⃣ Rate Limiting - ограничение количества запросов. Ограничивает количество запросов от одного IP, токена или пользователя за определённый интервал времени. Защищает от: DDoS-атак, брутфорса, скрейпинга.

📍 В NGINX:


limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}


📍 В Express.js (Node.js):


const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});

app.use("/api/", limiter);


2️⃣ CORS (Cross-Origin Resource Sharing). Механизм безопасности браузера, позволяющий указать, какие домены могут обращаться к API.

📍 Пример настройки CORS в Express.js:


const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));


Не забудьте запретить * в production - это дырка в безопасности.

3️⃣ Token-Based Access (JWT / OAuth2). Пользователь аутентифицируется, получает токен и использует его для доступа к API. Сервер проверяет подпись токена.

📍 Пример в Express.js:


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

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
😀 Диагностика сети: traceroute, mtr, tracetcp и другие утилиты

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

🐧 Linux

▪️ traceroute - классическая утилита для трассировки. По умолчанию использует UDP, но может работать и с ICMP:


traceroute -I ya.ru


▪️ tracepath - аналог traceroute, также использует UDP, но сразу показывает MTU на каждом хопе:


tracepath ya.ru


▪️ mtr - инструмент, сочетающий в себе ping и traceroute. Поддерживает ICMP, UDP и TCP. В режиме реального времени показывает статистику потерь и задержек на каждом узле:


mtr ya.ru


🏠 Windows

▪️ tracert - стандартная утилита Windows для трассировки по ICMP:


tracert ya.ru


▪️ pathping - гибрид ping и tracert, который дает более подробную статистику. Работает только с ICMP, но часто помогает точнее понять, где теряются пакеты:


pathping ya.ru


▪️ tracetcp - сторонняя утилита для TCP SYN трассировки по конкретному порту:


tracetcp ya.ru:443


Полезна, когда ICMP или UDP заблокированы, а нужно проверить доступность TCP-сервиса. Показывает, где именно по пути блокируется соединение. Ставится отдельно (ищите на сайте разработчика). Аналога на Linux, увы, нет, но было бы очень кстати.

🌟 Выводы:

📍 Используйте mtr и tracetcp, если нужно точечно диагностировать проблемы.
📍 tracepath удобен для анализа MTU.
📍 На Windows pathping даст больше инфы, чем tracert.


#network #diagnostic

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153
🖥 Как вернуть автоматическое резервное копирование реестра в Windows 10/11

Начиная с версии 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


⚠️ Важно: если вы хотите вручную проверить, срабатывает ли задание - запустите RegIdleBackup через планировщик заданий или с помощью PowerShell:


Start-ScheduledTask -TaskName "RegIdleBackup"


#windows #registry

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Все мы немного Серега

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🔥2
🌐 Как работает NAT и чем отличаются SNAT, DNAT и MASQUERADE

NAT (Network Address Translation) - это технология трансляции сетевых адресов, которая позволяет устройствам локальной сети выходить в Интернет через один общий внешний IP. Она лежит в основе почти каждого домашнего роутера и многих корпоративных решений. Но под капотом у NAT есть разные виды — разберёмся, в чём их суть и где применять.

Что делает NAT?

NAT подменяет исходные или целевые IP-адреса (и порты) в IP-пакетах. Это позволяет:

📍 Скрывать внутреннюю адресацию;
📍 Пробрасывать доступ к локальным сервисам извне;
📍 Повышать безопасность, не раскрывая реальную структуру сети


▪️ SNAT (Source NAT). Изменяет исходный IP-адрес пакета, обычно при выходе из локальной сети в Интернет. Пример:


iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5


Используется, когда у сервера постоянный внешний IP.

▪️ MASQUERADE. Вариант SNAT для динамического IP-адреса (например, от провайдера через PPPoE). Автоматически подставляет текущий внешний IP:


iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


Отличный выбор для нестабильного внешнего интерфейса.

▪️ DNAT (Destination NAT). Меняет целевой IP-адрес. Применяется для проброса портов — когда нужно, чтобы запросы снаружи попадали на внутренние машины:


iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22


Удобно для проброса SSH, HTTP, RDP и других сервисов внутрь локальной сети.

▪️ Пример: У вас есть веб-сервер 192.168.1.10 в локалке, а внешний IP — динамический. Тогда для организации доступа из интернета:

📍 Используем MASQUERADE на исходящий трафик;
📍 Применяем DNAT для проброса порта 80 на 192.168.1.10

🌟 Важно помнить:

📍 Все правила NAT создаются в таблице nat;
📍 SNAT и MASQUERADE — в цепочке POSTROUTING;
📍 DNAT - в цепочке PREROUTING

#NAT #iptables

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍236🔥4
🖥 Анализ сети в Linux: ethtool, iperf и nload

Когда возникает подозрение на проблемы с сетью - падение скорости, потери пакетов или просто "тормозит" - важно уметь быстро локализовать причину. В Linux есть три утилиты, которые закрывают основные потребности в диагностике: ethtool, iperf3 и nload.

▪️ ethtool - работа с сетевыми интерфейсами. Это низкоуровневая утилита, с помощью которой можно узнать:

Скорость подключения и режим дуплекса:


ethtool eth0


Есть ли сбои на интерфейсе:


ethtool -S eth0 | grep -E 'err|drop'


Настроить автосогласование, отключить Wake-on-LAN, изменить параметры offload'инга.
Удобно для диагностики "битых" линков и проблем с драйверами.

▪️ iperf3 - тестирование пропускной способности. Утилита для бенчмарков канала в режиме клиент-сервер:

На одном узле запускаем сервер:


iperf3 -s


На втором - клиент:


iperf3 -c 192.168.1.1


Показывает скорость, потери, джиттер. Можно использовать TCP и UDP, настраивать количество потоков и длительность теста.

Пример теста в 5 потоков:


iperf3 -c 192.168.1.1 -P 5


Хорошо подходит для поиска узких мест между хостами.

▪️ nload - визуальный мониторинг сетевой активности. Простой и наглядный инструмент в консоли:


nload eth0


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

Особенно удобен, когда нужно на лету оценить нагрузку и понять, кто грузит канал.

▪️ Резюме:

ethtool - диагностика интерфейса;
iperf3 - замер скорости и качества канала;
nload - визуальный мониторинг трафика

#linux #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134
Что такое Unix-сокеты в Linux и зачем они нужны

В Linux, как и в классическом Unix, существует особый тип межпроцессного взаимодействия - Unix Domain Sockets (UDS). Многие админы сталкиваются с ними при настройке сервисов вроде php-fpm, MySQL, PostgreSQL, nginx, не всегда понимая, зачем выбирать между TCP и сокетом.

🌟 Сокет - это специальный тип файла, который создаётся в файловой системе и служит точкой подключения для процессов. Выглядит как обычный файл, но данные через него не записываются на диск, а обрабатываются напрямую в оперативной памяти ядром Linux.

▪️ Пример пути к сокету:


/run/mysqld/mysqld.sock


Основное отличие от TCP: не используется сетевой стек, что делает работу чуть быстрее (в теории), особенно при высоких нагрузках.

▪️ Когда использовать Unix-сокеты?

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


На обычном сервере с веб-сайтами разницы между 127.0.0.1:3306 и mysqld.sock вы, скорее всего, не заметите. Но с точки зрения безопасности и практики - предпочтительно использовать сокеты.

▪️ Как проверить работу сокета?

Через netcat:


nc -U /run/mysqld/mysqld.sock


Аналогичный запрос по TCP:


telnet 127.0.0.1 3306


Результат будет одинаковый, только путь разный.

🌟 Unix-сокеты - это быстрый, безопасный и удобный способ локального взаимодействия между сервисами. Если ваш сервис поддерживает их — используйте. Особенно когда нет нужды слушать внешний интерфейс.

#linux #unixsocket

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164